ndn-cxx version 0.9.0¶
Release date: July 28, 2024
Important changes and new features¶
C++17 is now required to build ndn-cxx and when including any of its header files
The build dependencies have been increased as follows:
GCC >= 9.3 or Clang >= 7.0 are strongly recommended on Linux; GCC 8.x is also known to work but is not officially supported
Xcode 13 or later is recommended on macOS; older versions may still work but are not officially supported
Boost >= 1.71.0 is required on all platforms
Ubuntu 24.04 (Noble), Debian 12 (Bookworm), and macOS 14 (Sonoma) are now officially supported
Added an official Dockerfile to the repository. From this Dockerfile, two images are currently published to the GitHub container registry:
Both images are available for linux/amd64 and linux/arm64 platforms.
The default forwarder socket path for Unix transports changed to
/run/nfd/nfd.sock
on Linux and to/var/run/nfd/nfd.sock
on all other platforms (issue #5304)On macOS, the default TPM backend is now tpm-file (the same as all other platforms)
Interest::matchesData() no longer considers
MustBeFresh
andFreshnessPeriod
(issue #5270)Modernized several APIs to use
std::string_view
Added Interest::setApplicationParameters(std::string_view) and Data::setContent(std::string_view) overloads for convenience
SegmentFetcher gained an option to omit
MustBeFresh
from the first Interest sentMoved DummyClientFace, Segmenter, and SegmentFetcher to namespace
ndn
Moved all Signal-related classes to namespace
ndn::signal
Improvements and bug fixes¶
Provide relational operators for FaceUri, to make it usable as a container key
Generalize and simplify time::fromUnixTimestamp() and time::toUnixTimestamp()
Prevent overflows in
InterestLifetime
andFreshnessPeriod
(issue #4997)Make HMAC signing and verification compatible with OpenSSL 3.x (issue #5251)
Better handling of large dates in ValidityPeriod (issue #5176)
NetworkMonitor now ignore AWDL interfaces on macOS (issue #5074)
Avoid dependency on boost_program_options when tools are disabled (issue #5210)
Add fine-grained options to
./waf configure
to enable/disable the compilation of benchmarks, integration tests, and unit tests independentlyFix building the documentation with Python 3.12 (issue #5298)
Reduce amount of debugging information produced in compiled binaries by default (issue #5279)
Update waf build system to version 2.0.27
Various code cleanups, modernizations, and documentation improvements
Deprecations¶
Face::getIoService()
. UseFace::getIoContext()
instead.Component::fromEscapedString()
. Use Component::fromUri() instead.TPM unlock and related functionality. This includes
Tpm::isTpmLocked()
,Tpm::unlockTpm()
,Tpm::isTerminalMode()
,Tpm::setTerminalMode()
, and thendnsec-unlock-tpm
command-line tool (issue #4754)
Removals¶
Block::wire()
. Use Block::data() instead.Component constructors that take a raw
const uint8_t*
. Use thespan
-based constructors instead.Component::fromImplicitSha256Digest()
andComponent::fromParametersSha256Digest()
Previously deprecated overloads of
Name::append()
Name::push_back()
. Use Name::append() instead.ndn::escape()
andndn::unescape()
overloads that take raw strings asconst char*
+size_t
. Use the correspondingstd::string_view
versions instead.ndn::optional
andndn::variant
. Use C++17std::optional
andstd::variant
directly instead.ndn::to_string()
. Use the standard C++ functionstd::to_string()
instead.Previously deprecated
ndnsec
command aliases (issue #5163)