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