Releases: named-data/ndn-cxx
0.9.0
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.sockon Linux and to/var/run/nfd/nfd.sockon all other platforms (#5304) -
On macOS, the default TPM backend is now tpm-file (the same as all other platforms)
-
Interest::matchesDatano longer considersMustBeFreshandFreshnessPeriod(#5270) -
Modernized several APIs to use
std::string_view -
Added
Interest::setApplicationParameters(std::string_view)andData::setContent(std::string_view)overloads for convenience -
SegmentFetchergained an option to omitMustBeFreshfrom the first Interest sent -
Moved
DummyClientFace,Segmenter, andSegmentFetcherto namespacendn -
Moved all
Signal-related classes to namespacendn::signal
Improvements and bug fixes
- Check the TLV type when constructing
NamefromBlock - Provide relational operators for
FaceUri, to make it usable as a container key - Generalize and simplify
time::fromUnixTimestampandtime::toUnixTimestamp - Prevent overflows in
InterestLifetimeandFreshnessPeriod(#4997) - Make HMAC signing and verification compatible with OpenSSL 3.x (#5251)
- Better handling of large dates in
ValidityPeriod(#5176) NetworkMonitornow ignore AWDL interfaces on macOS (#5074)- Avoid dependency on boost_program_options when tools are disabled (#5210)
- Add fine-grained options to
./waf configureto 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::fromUriinstead.- TPM unlock and related functionality. This includes
Tpm::isTpmLocked(),Tpm::unlockTpm(),Tpm::isTerminalMode(),Tpm::setTerminalMode(), and thendnsec-unlock-tpmcommand-line tool (#4754)
Removals
Block::wire(). UseBlock::datainstead.Componentconstructors 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::appendinstead.ndn::escape()andndn::unescape()overloads that take raw strings asconst char*+size_t. Use the correspondingstd::string_viewversions instead.ndn::optionalandndn::variant. Use C++17std::optionalandstd::variantdirectly instead.ndn::to_string(). Use the standard C++ functionstd::to_string()instead.- Previously deprecated
ndnseccommand aliases (#5163)