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