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``.
