ndn-cxx v0.1.0 Release Notes
============================

Version 0.1.0 is the initial release of ndn-cxx, an NDN C++ library with eXperimental eXtensions.

Originally based on [ndn-cpp library](https://github.com/named-data/ndn-cpp) the ndn-cxx library
adopts a slightly different design philosophy (including an extensive use of Boost libraries to
facilitate development, as well as the use of Crypto++ library to support cryptographic operations),
and includes a number of extensions that aim to simplify NDN application development.

The current features include:

-   **Base**
    -   Fully asynchronous, event-driven communication model, which is implemented using
        [Boost.Asio](http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio.html)
    -   Single-threaded, but thread-safe Face operations

        > A single Face object can be safely used in multiple threads to express Interests and
        > publish Data packets

    -   Explicit time management for NDN operations using
        [Boost.Chrono](http://www.boost.org/doc/libs/1_48_0/doc/html/chrono.html)
    -   Simplified and extended [NDN API](doxygen/annotated.html)
    -   Extensive set of unit-tests based on [Boost.Test
        framework](http://www.boost.org/doc/libs/1_48_0/libs/test/doc/html/index.html)
        -   Continuous integration using an in-house installation of Jenkins build bots and the
            hosted [Travis CI](https://travis-ci.org/named-data/ndn-cxx) continuous integration
            service compile and verify correctness of the library for each commit

-   **Wire format**
    -   Full support of [NDN-TLV packet format v0.1](http://named-data.net/doc/NDN-TLV/0.1/)
    -   Pure C++ implementation of wire encoding/decoding with simple access to wire format of all
        NDN packet abstractions via `wireEncode` and `wireDecode` methods

        > In many cases, NDN packet abstractions are just "indices" to the wire format

-   **Communication with the forwarder**
    -   Enable connecting to local forwarder via UNIX and TCP transports and to remote forwarders
        using TCP transport
    -   Full support for communication with [Named Data Networking Forwarding Daemon
        (NFD)](https://github.com/named-data/NFD)
        -   Full support for [NFD management
            protocols](http://redmine.named-data.net/projects/nfd/wiki/Management) to NFD status
            information, create and manage NFD Faces, receive NFD Face status change notifications,
            update StrategyChoice for namespaces, and manage routes in RIB
        -   Support for
            [LocalControlHeader](http://redmine.named-data.net/projects/nfd/wiki/LocalControlHeader)
            to implement special NDN applications that need low-level control of NDN packet
            forwarding
-   **Security support**
    -   A set of security primitives to allowing implementation of secure NDN applications in a
        simplified manner
        -   **KeyChain**: provides simple interfaces of packet signing, and key and certificate
            management
        -   **ValidatorConfig**: validator that implements trust model defined in a configuration
            file
        -   **CommandInterestGenerator** and **CommandInterestValidator**: convenient helpers to
            produce and validate command interests, while preventing potential replay attacks
    -   Several implementations of trusted platform modules to securely manage private keys
        -   **SecTpmOsx**: TPM based on OSX KeyChain (OSX-specific)
        -   **SecTpmFile**: TPM that uses file-based access control to protect keys (cross-platform)
    -   Extensive set of security command-line tools to manage security identities and certificates
        -   Generating private/public keys
        -   Issuing certificates
        -   Exporting/importing identities
        -   Managing default security settings
-   **Miscellaneous tools**
    -   Scheduler to support delayed time operations
    -   NDN regular expressions
    -   Simple config file to alter various aspects of the library
    -   **tlvdump**: a simple tool to visualize TLV-encoded blocks
build: Changing the way version is managed

Now control over the version number is moved to wscript.  In addition to
that, a new NDN_CXX_VERSION_BUILD_STRING macro is set to include more
detailed information, including commit ID (e.g., "0.1.0-rc1-1-g5c86570").

Change-Id: I89ddd4e2f1248bca4f828865ec6d3c3921fa2822
4 files changed
tree: af93399de50875dbebf44278f557667d5348e632
  1. .waf-tools/
  2. docs/
  3. examples/
  4. src/
  5. tests/
  6. tests-integrated/
  7. tools/
  8. .gitignore
  9. .travis.yml
  10. AUTHORS.md
  11. client.conf.sample
  12. COPYING
  13. libndn-cxx.pc.in
  14. README-dev.md
  15. README.md
  16. waf
  17. wscript
README.md

ndn-cxx: NDN C++ library with eXperimental eXtensions

ndn-cxx is a C++ library, implementing Named Data Networking (NDN) primitives that can be used to implement various NDN applications. The library is currently being used as part of the following projects:

See the file docs/INSTALL.rst for build and install instructions.

Please submit any bugs or issues to the ndn-cxx issue tracker: http://redmine.named-data.net/projects/ndn-cxx/issues

More documentation

Extensive documentation of the library is available on the library's homepage: http://www.named-data.net/doc/ndn-cxx/

License

ndn-cxx is an open source project licensed under BSD license. For more information about the license, refer to COPYING.

While the license does not require it, we really would appreciate it if others would share their contributions to the library if they are willing to do so under the same license.