ndn-cxx version 0.9.0
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 (#5304) -
On macOS, the default TPM backend is now tpm-file (the same as all other platforms)
-
Interest::matchesData
no longer considersMustBeFresh
andFreshnessPeriod
(#5270) -
Modernized several APIs to use
std::string_view
-
Added
Interest::setApplicationParameters(std::string_view)
andData::setContent(std::string_view)
overloads for convenience -
SegmentFetcher
gained an option to omitMustBeFresh
from the first Interest sent -
Moved
DummyClientFace
,Segmenter
, andSegmentFetcher
to namespacendn
-
Moved all
Signal
-related classes to namespacendn::signal
Improvements and bug fixes
- Check the TLV type when constructing
Name
fromBlock
- Provide relational operators for
FaceUri
, to make it usable as a container key - Generalize and simplify
time::fromUnixTimestamp
andtime::toUnixTimestamp
- Prevent overflows in
InterestLifetime
andFreshnessPeriod
(#4997) - Make HMAC signing and verification compatible with OpenSSL 3.x (#5251)
- Better handling of large dates in
ValidityPeriod
(#5176) NetworkMonitor
now ignore AWDL interfaces on macOS (#5074)- Avoid dependency on boost_program_options when tools are disabled (#5210)
- Add fine-grained options to
./waf configure
to enable/disable the compilation of benchmarks, integration tests, and unit tests independently - Fix building the documentation with Python 3.12 (#5298)
- Reduce amount of debugging information produced in compiled binaries by default (#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()
. UseComponent::fromUri
instead.- TPM unlock and related functionality. This includes
Tpm::isTpmLocked()
,Tpm::unlockTpm()
,Tpm::isTerminalMode()
,Tpm::setTerminalMode()
, and thendnsec-unlock-tpm
command-line tool (#4754)
Removals
Block::wire()
. UseBlock::data
instead.Component
constructors that take a rawconst uint8_t*
. Use thespan
-based constructors instead.Component::fromImplicitSha256Digest()
andComponent::fromParametersSha256Digest()
- Previously deprecated overloads of
Name::append()
Name::push_back()
. UseName::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 (#5163)