ndn-cxx version 0.3.3
---------------------

Release date: July 1, 2015

Changes since version 0.3.2:

New features:
^^^^^^^^^^^^^

- Allow compilation of ndn-cxx as a shared library (:issue:`2243`)

  In this release, by default, only a static library is compiled.  The next release will change
  the default behavior to compile only a shared library.

- Introduce concept of PartialName (:issue:`1962`)

  Semantically, PartialName abstraction represents an arbitrary sequence of name components,
  while Name represents an absolute name.  Currently, PartialName is typedef alias to Name, but
  it can be changed in the future releases.

- Introduce generalized signing API in KeyChain (:issue:`2871`, :issue:`1705`)

  A new API in KeyChain introduces a general interface to sign interest and data packets and
  supply necessary signing information, such as signing identity name, signing key name, or
  signing certificate name.  In addition, the supplied signing information can include additional
  information that signer wants to include in the SignatureInfo of the signed packet.

- Introduce helpers to create SigningInfo for the generalized signing API (:issue:`2922`)

- Sqlite3Statement utility helper that wraps an SQLite3 statements and provide automatic memory
  cleanup

- Introduce PibSqlite3 based on PibImpl (:issue:`2807`)

- Make public interface of Pib, Identity, and Key as read-only (:issue:`2928`)

- New encoding block helpers to simplify operations with ``std::string`` (:issue:`2951`):

  * ``prependStringBlock``
  * ``makeStringBlock``
  * ``readString``

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

- Use C++11 lambda expression and smart pointers in Face implementation (:issue:`2112`)

- Fix compilation failure on OS X 10.10 with cryptopp from MacPorts

- Update client.conf manpage

- Change Name::compare to return negative, zero, or positive integer (instead of strictly -1,
  0, 1) when the first name comes before the other in canonical ordering, is equal, or comes
  after (:issue:`2445`)

- IdentityCertificate sets default FreshnessPeriod to 1 hour (:issue:`2872`)

- Unify TPM creation (:issue:`2722`)

- Allow negative start index in Name::getSubName method (:issue:`1962`)

- Improved documentation of PibImpl interfaces (:issue:`2896`, :issue:`2898`)

- Simplify CommandOptions with SigningInfo (:issue:`2893`)

- Refactor internal PIT to use scheduled events (:issue:`1372`, :issue:`2518`)

- Improve structure and documentation of block helpers (:issue:`2951`)

- Declare all move constructors as ``noexcept`` to ensure move operations are used even when a
  restrictive move operation (`move_if_noexcept`) is used (e.g., in STL library's containers)
  (:issue:`2966`)

Deprecated:
^^^^^^^^^^^

- The following ``KeyChain::sign*`` methods, in favor of generalized ``KeyChain::sign(..., SigningInfo)``

  * ``KeyChain::sign(Packet, Name)``
  * ``KeyChain::sign(uint8_t*, size_t, Name)``
  * ``KeyChain::signByIdentity(Packet, Name)``
  * ``KeyChain::signByIdentity(uint8_t*, size_t, Name)``
  * ``KeyChain::signWithSha256(Data)``
  * ``KeyChain::signWithSha256(Interest)``

- The following encoding block helper functions:

  * ``nonNegativeIntegerBlock`` (use ``makeNonNegativeIntegerBlock``)
  * ``prependBooleanBlock`` (use ``prependEmptyBlock``)
  * ``booleanBlock`` (use ``makeEmptyBlock``)
  * ``dataBlock`` (use ``makeBinaryBlock``)
  * ``nestedBlock`` (use ``makeNestedBlock``)

- The following methods of ``CommandOptions`` class, use ``setSigningInfo()`` instead (:issue:`2893`):

  * ``CommandOptions::getSigningParamsKind``
  * ``CommandOptions::getSigningIdentity``
  * ``CommandOptions::getSigningCertificate``
  * ``CommandOptions::setSigningDefault``
  * ``CommandOptions::setSigningIdentity``
  * ``CommandOptions::setSigningCertificate``

Removed:
^^^^^^^^

- Remove SCOPE from Interests and all references to it in the related code (:issue:`2345`)

- Direct FIB management in Face class (:issue:`2533`)

  ``Face::register`` and ``Face::setInterestFilter`` methods now only support NFD RIB management
  protocol.

  For special needs, FIB management can be implemented using ``nfd::Controller``
  (``start<FibAddNextHopCommand>``, and ``start<FibRemoveNextHopCommand>``)

Upcoming features (partially finished in development branches):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- NDNLPv2 (https://redmine.named-data.net/projects/nfd/wiki/NDNLPv2, :issue:`2520`,
  :issue:`2879`, :issue:`2763`, :issue:`2883`, :issue:`2841`, :issue:`2866`)

- New NDN certificate format (:issue:`2861`, :issue:`2868`)

- NDN trust schema as a description of application trust model, which can help automate data
  and interest packet signing and authentication (:issue:`2829`)

- Refactored KeyChain abstraction (:issue:`2926`)
