ndn-cxx version 0.6.0
---------------------

Release date: October 16, 2017

Changes since version 0.5.1:

New features
^^^^^^^^^^^^

- **(breaking change)** Security framework version 2 (:issue:`3098`, :issue:`3920`,
  :issue:`3644`, :issue:`4085`, :issue:`4323`, :issue:`4339`).

  This release of the library supports only the new version of the security framework
  and features a number of updates to the KeyChain and Validator interfaces.
  At the same time, management APIs for :ndn-cxx:`ValidatorConfig` remained intact;
  transition to the new framework only requires adjusting :ndn-cxx:`Validator::validate`
  calls and updating configuration files to follow the naming conventions of the new
  `Certificate format <https://docs.named-data.net/NDN-packet-spec/0.3/certificate.html>`__.

- Integration of fetching certificates using Certificate Bundle as part of specialized
  ``CertificateFetcher`` (:issue:`3891`)

- ``ForwardingHint``, ``Delegation``, and ``DelegationList``; refactoring of Interest encoding
  to include ``ForwardingHint`` instead of ``LinkObject``, following the latest NDN
  specification updates (:issue:`4054`, :issue:`4055`)

- Fine-grained signals on interface/address changes in :ndn-cxx:`NetworkMonitor`
  for all supported platforms (:issue:`3353`, :issue:`4025`, :issue:`3817`, :issue:`4024`)

- Addition of ``TxSequence`` field and ``Ack``, the first repeatable field in
  NDNLPv2 (:issue:`3931`)

- Optional ``LocalUri`` as part of ``ControlParameters`` and adjusting face creation command
  and responses to handle the new optional field (:issue:`4014`, :issue:`4015`, :issue:`3956`)

- ``LpReliability`` flag in Face management data structures (:issue:`4003`)

- Backported implementation of C++17 classes ``ostream_joiner`` and ``optional``
  (:issue:`3962`, :issue:`3753`)

Improvements and bug fixes
^^^^^^^^^^^^^^^^^^^^^^^^^^

- Removed dependency on CryptoPP library.  All cryptographic operations are now realized using
  OpenSSL library routines and/or with the help of ``security::transform`` framework
  (:issue:`3006`, :issue:`3946`, :issue:`3924`, :issue:`3886`).

- Improved APIs for NFD management data structures, including equality comparators, formatted
  output, etc.  (:issue:`3932`, :issue:`3903`, :issue:`3864`)

- FaceUri now accepts link-local IPv6 addresses (:issue:`1428`)

- Rename fields in :ndn-cxx:`FaceStatus` and :ndn-cxx:`ForwarderStatus` ('datas' => 'data')
  (:issue:`3955`)

- Improve logging framework and its uses

  * Add API to enumerate Logger modules (:issue:`4013`)

  * Advanced filtering of the logging modules (:issue:`3918`)

  * Add logging capabilities to ``Face``, ``UnixTransport``, ``TcpTransport``, and the new
    security framework (:issue:`3563`)

  To configure logging, set the environment variable :doc:`NDN_LOG </manpages/ndn-log>`.
  Examples:

  .. code-block:: sh

     export NDN_LOG="*=ALL"
     export NDN_LOG="ndn.*=ALL"
     export NDN_LOG="ndn.security=DEBUG:ndn.TcpTransport=ALL"

- Ensure that :ndn-cxx:`Face` sends a ``Nack`` only after every ``InterestCallback`` has
  responded (:issue:`4228`)

- Fix potential overflow in :ndn-cxx:`time::toIsoString` (:issue:`3915`)

- Fix potentially misaligned memory accesses (:issue:`4172`, :issue:`4097`, :issue:`4175`,
  :issue:`4190`, :issue:`4191`)

- Fix potential memory access error in ``Face/PendingInterest`` (:issue:`4228`)

- Improvements and streamlining of the ``security::transform`` framework

- Source/header reorganization (:issue:`3940`)

    * Move network-related files to ``src/net``. Note the following namespace changes:

      + ``ndn::util::FaceUri`` is now ``ndn::FaceUri``
      + ``ndn::util::ethernet`` is now ``ndn::ethernet``
      + ``ndn::util::NetworkMonitor`` and related classes are now in ``ndn::net``

    * Move signal-related files into ``src/util/signal`` directory, except for
      the main include ``signal.hpp``
    * Move :ndn-cxx:`InMemoryStorage` and related classes to ``src/ims``
    * Rename ``digest.hpp`` to ``sha256.hpp`` to match the ``Sha256`` class declared within

Removed
^^^^^^^

- Old security framework.

  * ``v1::KeyChain``; use :ndn-cxx:`KeyChain` instead.

  * ``v1::Validator`` interface and ``ValidatorRegex`` implementation of this
    interface. ``ValidatorConfig``, ``ValidatorNull`` implementation refactored to be based on
    the new validation framework.

  * ``v1::SecPublicInfo`` and its implementation (``SecPublicInfoSqlite``), ``SecTpm`` and its
    implementations (``SecTpmFile``, ``SecTpmOsx``). These classes are internal implementation
    and not intended to be used without ``v1::KeyChain``. The new :ndn-cxx:`KeyChain` internally
    uses the newly introduced :ndn-cxx:`Pib` and :ndn-cxx:`Tpm` interfaces with their
    corresponding implementations.

  * ``v1::Certificate``, ``v1::IdentityCertificate``, ``v1::CertificateExtension``,
    ``v1::CertificateSubjectDescription``; use the new :ndn-cxx:`Certificate` and
    :ndn-cxx:`AdditionalDescription` instead.

  * ``v1::SecuredBag``; use :ndn-cxx:`SafeBag` instead.

- Constant ``io::BASE_64``, use ``io::BASE64`` instead (:issue:`3741`)

- Headers ``management/nfd-*``, use ``mgmt/nfd/*`` instead (:issue:`3760`)

- ``security/cryptopp.hpp`` header

- ``security/identity-certificate.hpp`` header

- ``ndn::PublicKey``, ``ndn::Certificate``, ``ndn::IdentityCertificate``,
  ``ndn::CertificateExtension``, ``ndn::CertificateSubjectDescription``.

- ``Link`` and ``SelectedDelegation`` fields in ``Interest``, replaced by
  ``ForwardingHint`` following the latest version of NDN specification (:issue:`4055`)

- ``LocalControlHeader`` constants (:issue:`3755`)

- ``NInDatas`` and ``NOutDatas`` (:issue:`3955`)

- Overload of ``Block::Block`` that parses a ``Block`` from a ``void*`` buffer

- Duplicate ``buf()`` and ``get()`` methods from ``Buffer`` class in favor of ``data()``

- ``util/crypto.hpp``, ``crypto::sha256()``, and ``crypto::computeSha256Digest()`` in favor of
  ``Sha256::computeDigest()``

- Previously deprecated functions (:issue:`4055`)
