blob: 6c6a750c83be0897bd100e05e94f3a1874f8eaa1 [file] [log] [blame]
ndn-cxx version 0.5.0
---------------------
Release date: October 4, 2016
.. note::
As of version 0.5.0, ndn-cxx requires a modern compiler (gcc >= 4.8.2, clang >= 3.4) and a
relatively new version of Boost libraries (>= 1.54). This means that the code no longer compiles
with the packaged version of gcc and boost libraries on Ubuntu 12.04. ndn-cxx can still be
compiled on such systems, but requires separate installation of a newer version of the compiler
(e.g., clang-3.4) and dependencies.
.. note::
The library now has a dependency on OpenSSL >= 1.0.1
Changes since version 0.4.1:
New features
^^^^^^^^^^^^
- New transformation API (:issue:`3009`)
* base64 and hex encoding/decoding
* digest calculation (SHA256)
* HMAC calculation
* block cipher operations (AES in CBC mode)
* public key signing/verification
- Introduce environment variables to set/override transport, pib, and tpm configurations
(:issue:`2925`, :issue:`2514`)
* ``NDN_CLIENT_TRANSPORT``: equivalent of transport in client.conf
* ``NDN_CLIENT_PIB``: equivalent of pib in client.conf
* ``NDN_CLIENT_TPM``: equivalent of tpm in client.conf
Whenever an environment variable is set, it takes precedence over any values specified in the
configuration file.
- Introduce logging facility based on Boost.Log (:issue:`3562`)
The logging can be enabled on selected moduled at the selected log level through ``NDN_LOG``
environment variable. For example,
::
export NDN_LOG=ndn.mgmt.Dispatcher=TRACE
- Introduce ``Name::deepCopy`` to allow memory optimizations when working with ``Name`` objects
(:issue:`3618`)
- New ``ndn::security::CommandInterestValidator`` class (:issue:`2376`)
- Add ``StatusDataset`` client functionality into ``ndn::nfd::Controller`` (:issue:`3329`)
- New ``FaceUpdateCommand`` structure for NFD management protocols (:issue:`3232`)
- **breaking change** Add Flags and Mask fields to faces/create and faces/update, add Flags field to
FaceStatus (:issue:`3731`, :issue:`3732`)
- New ``SafeBag`` structure for private key export/import (:issue:`3048`)
- ``ndn::io::loadBlock`` and ``saveBlock`` (:issue:`3741`)
- Backport of C++17 ``std::clamp`` and ``std::optional`` (:issue:`3636`, :issue:`3753`)
Improvements and bug fixes
^^^^^^^^^^^^^^^^^^^^^^^^^^
- **breaking change** Expose ``ControlResponse`` as part of ``Controller::CommandFailCallback``
(:issue:`3739`)
- **breaking change** Change security constants to corresponding strongly typed enumerations
(:issue:`3083`)
- Fix ``SegmentFetcher`` restarting from segment 0 upon Nack (:issue:`3554`)
- Fix support for ``ImplicitSha256Digest`` name component in ``Exclude`` selector
(:issue:`3665`)
- Enable ``KeyChain`` customization in ``DummyClientFace`` (:issue:`3435`)
- Make ``ValidatorConfig`` to evaluate all checkers inside a rule (:issue:`3645`)
- Add validation of ``StatusDataset`` and ``ControlCommand`` responses in
``ndn::nfd::Controller`` (:issue:`3653`)
- Enable handling of NACKs in Validator and NotificationSubscriber classes (:issue:`3332`,
:issue:`3662`)
- Several fixes in ``Scheduler`` class (:issue:`3722`, :issue:`3691`)
- Add option to override ``processEvents`` method in ``DummyClientFace`` class (:issue:`3769`)
- Several other improvements, including fixes of potential segmentation faults and memory leaks
(:issue:`3136`, :issue:`3248`, :issue:`3723`, :issue:`3727`)
Deprecated
^^^^^^^^^^
- Constant ``io::BASE_64``, use ``io::BASE64`` instead (:issue:`3741`)
- Headers ``management/nfd-*``, use ``mgmt/nfd/*`` instead (:issue:`3760`)
- ``ndn::crypto::sha256`` in favor of ``ndn::crypto::computeSha256Digest``
- ``security/cryptopp.hpp`` header. Use ``security/v1/cryptopp.hpp`` when needed, avoid direct
include as CryptoPP dependency will be removed from future versions of the library.
- ``security/identity-certificate.hpp`` header. Use ``security/v1/identity-certificate.hpp`` instead.
- ``ndn::PublicKey``, ``ndn::Certificate``, ``ndn::IdentityCertificate``,
``ndn::CertificateExtension``, ``ndn::CertificateSubjectDescription``. When necessary, use
``security::v1::PublicKey``, ``security::v1::Certificate``, ``security::v1::IdentityCertificate``,
``security::v1::CertificateExtension``, ``security::v1::CertificateSubjectDescription`` instead.
The next release will feature `a new version of the NDN Certificate format
<https://named-data.net/doc/NDN-packet-spec/0.3/certificate.html>`__.
Removed
^^^^^^^
- Previously deprecated LocalControlHeader (:issue:`3755`)
- Previously deprecated ``makeDummyClientFace`` function, use ``DummyClientFace`` constructors
directly (:issue:`3383`)
- Previously deprecated ``Name::set``, use constructors directly (:issue:`2506`)
- Previously deprecated ``Block::fromBuffer`` and block helpers (:issue:`2950`, :issue:`2636`)
* ``Block::fromBuffer`` overloads with output parameter
* ``ndn::encoding::prependBlock``
* ``ndn::encoding::prependByteArrayBlock``
* ``ndn::encoding::nonNegativeIntegerBlock``
* ``ndn::encoding::prependBooleanBlock``
* ``ndn::encoding::booleanBlock``
* ``ndn::encoding::dataBlock``
* ``ndn::encoding::nestedBlock``
- Previously deprecated Command Interest classes (:issue:`2008`)
* ``CommandInterestGenerator``, replaced by ``KeyChain::sign``
* ``ndn::util::CommandInterestValidator``, replaced by
``ndn::security::CommandInterestValidator``
- ndncatchunks3 and ndnputchunks3 apps. Use ndncatchunks and ndnputchunks from `NDN Essential
Tools (ndn-tools) <https://github.com/named-data/ndn-tools>`__ (:issue:`3547`)
- ``ndn::ndn_digestSha256`` function. Use ``ndn::crypto::computeSha256Digest`` instead.
- **potentially breaking change** Headers ``security/certificate-extension.hpp``,
``security/certificate-subject-description.hpp``, and ``security/certificate.hpp``. When necessary,
use the corresponding headers in ``security/v1/*`` or ``security/v1/identity-certificate.hpp``.