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://docs.named-data.net/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``.
