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:`v2::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``.  :ndn-cxx:`v2::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 :ndn-cxx:`v2::Certificate` and
    :ndn-cxx:`AdditionalDescription`

  * ``v1::SecuredBag``, use ``v2::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`)
