blob: 104c9d5175c5722919e43a9a11019304fb7c939b [file] [log] [blame]
Alexander Afanasyevc5452c52014-04-29 17:21:51 -07001ndn-cxx v0.1.0 Release Notes
2============================
3
4Version 0.1.0 is the initial release of ndn-cxx, an NDN C++ library with eXperimental
5eXtensions.
6
7Originally based on `ndn-cpp library <https://github.com/named-data/ndn-cpp>`_ the ndn-cxx
Lixia Zhangc5fdfe72014-04-30 09:33:43 -07008library adopts a slightly different design philosophy (including an extensive use of Boost
9libraries to facilitate development, as well as the use of Crypto++ library to support
10cryptographic operations), and includes a number of extensions that aim to simplify NDN
11application development.
Alexander Afanasyevc5452c52014-04-29 17:21:51 -070012
13The current features include:
14
15- **Base**
16
Lixia Zhangc5fdfe72014-04-30 09:33:43 -070017 + Fully asynchronous, event-driven communication model, which is implemented using `Boost.Asio
Alexander Afanasyevc5452c52014-04-29 17:21:51 -070018 <http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio.html>`_
19 + Single-threaded, but thread-safe Face operations
20
21 A single Face object can be safely used in multiple threads to express Interests and
22 publish Data packets
23
24 + Explicit time management for NDN operations using `Boost.Chrono
25 <http://www.boost.org/doc/libs/1_48_0/doc/html/chrono.html>`_
26 + Simplified and extended `NDN API <doxygen/annotated.html>`_
27 + Extensive set of unit-tests based on `Boost.Test framework
28 <http://www.boost.org/doc/libs/1_48_0/libs/test/doc/html/index.html>`_
29
30 - Continuous integration using an in-house installation of Jenkins build bots and the
Lixia Zhangc5fdfe72014-04-30 09:33:43 -070031 hosted `Travis CI <https://travis-ci.org/named-data/ndn-cxx>`_ continuous
32 integration service compile and verify correctness of the library for each commit
Alexander Afanasyevc5452c52014-04-29 17:21:51 -070033
34- **Wire format**
35
36 + Full support of `NDN-TLV packet format v0.1 <http://named-data.net/doc/NDN-TLV/0.1/>`_
37 + Pure C++ implementation of wire encoding/decoding with simple access to wire format
38 of all NDN packet abstractions via ``wireEncode`` and ``wireDecode`` methods
39
40 In many cases, NDN packet abstractions are just "indices" to the wire format
41
Alexander Afanasyevc5452c52014-04-29 17:21:51 -070042- **Communication with the forwarder**
43
44 + Enable connecting to local forwarder via UNIX and TCP transports and to remote
45 forwarders using TCP transport
46 + Full support for communication with `Named Data Networking Forwarding Daemon (NFD)
47 <https://github.com/named-data/NFD>`_
48
49 - Full support for `NFD management protocols
50 <http://redmine.named-data.net/projects/nfd/wiki/Management>`_ to NFD status
51 information, create and manage NFD Faces, receive NFD Face status change
52 notifications, update StrategyChoice for namespaces, and manage routes in RIB
53 - Support for `LocalControlHeader
54 <http://redmine.named-data.net/projects/nfd/wiki/LocalControlHeader>`_ to implement
55 special NDN applications that need low-level control of NDN packet forwarding
56
Lixia Zhangc5fdfe72014-04-30 09:33:43 -070057- **Security support**
Alexander Afanasyevc5452c52014-04-29 17:21:51 -070058
Lixia Zhangc5fdfe72014-04-30 09:33:43 -070059 + A set of security primitives to allowing implementation of secure NDN applications in
60 a simplified manner
Alexander Afanasyevc5452c52014-04-29 17:21:51 -070061
62 - **KeyChain**: provides simple interfaces of packet signing, and key and certificate
63 management
64 - **ValidatorConfig**: validator that implements trust model defined in a configuration
65 file
66 - **CommandInterestGenerator** and **CommandInterestValidator**: convenient helpers to produce
67 and validate command interests, while preventing potential replay attacks
68
69 + Several implementations of trusted platform modules to securely manage private keys
70
71 - **SecTpmOsx**: TPM based on OSX KeyChain (OSX-specific)
72 - **SecTpmFile**: TPM that uses file-based access control to protect keys (cross-platform)
73
74 + Extensive set of security command-line tools to manage security identities and certificates
75
76 - Generating private/public keys
77 - Issuing certificates
78 - Exporting/importing identities
79 - Managing default security settings
80
81- **Miscellaneous tools**
82
83 + Scheduler to support delayed time operations
84 + NDN regular expressions
85 + Simple config file to alter various aspects of the library
86 + **tlvdump**: a simple tool to visualize TLV-encoded blocks