Skip to content

Releases: named-data/ndn-cxx

0.9.0

28 Jul 20:40
ndn-cxx-0.9.0
0751bba
Compare
Choose a tag to compare

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 considers MustBeFresh and FreshnessPeriod (#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 sent

  • Moved DummyClientFace, Segmenter, and SegmentFetcher to namespace ndn

  • Moved all Signal-related classes to namespace ndn::signal

Improvements and bug fixes

  • Check the TLV type when constructing Name from Block
  • 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 and FreshnessPeriod (#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(). Use Face::getIoContext() instead.
  • Component::fromEscapedString(). Use Component::fromUri instead.
  • TPM unlock and related functionality. This includes Tpm::isTpmLocked(), Tpm::unlockTpm(), Tpm::isTerminalMode(), Tpm::setTerminalMode(), and the ndnsec-unlock-tpm command-line tool (#4754)

Removals

  • Block::wire(). Use Block::data instead.
  • Component constructors that take a raw const uint8_t*. Use the span-based constructors instead.
  • Component::fromImplicitSha256Digest() and Component::fromParametersSha256Digest()
  • Previously deprecated overloads of Name::append()
  • Name::push_back(). Use Name::append instead.
  • ndn::escape() and ndn::unescape() overloads that take raw strings as const char* + size_t. Use the corresponding std::string_view versions instead.
  • ndn::optional and ndn::variant. Use C++17 std::optional and std::variant directly instead.
  • ndn::to_string(). Use the standard C++ function std::to_string() instead.
  • Previously deprecated ndnsec command aliases (#5163)