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 may 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 NDN Certificate format.
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) (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.