blob: 895e718941d7dfa95606ee1cca3bb26dfedef6c8 [file] [log] [blame]
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:
- `named-data/ndn-cxx-build <https://github.com/named-data/ndn-cxx/pkgs/container/ndn-cxx-build>`__
- `named-data/ndn-cxx-runtime <https://github.com/named-data/ndn-cxx/pkgs/container/ndn-cxx-runtime>`__
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)
- :ndn-cxx:`Interest::matchesData` no longer considers ``MustBeFresh`` and ``FreshnessPeriod``
(:issue:`5270`)
- Modernized several APIs to use ``std::string_view``
- Added :ndn-cxx:`Interest::setApplicationParameters(std::string_view)` and
:ndn-cxx:`Data::setContent(std::string_view)` overloads for convenience
- :ndn-cxx:`SegmentFetcher` gained an option to omit ``MustBeFresh`` from the first Interest sent
- Moved :ndn-cxx:`DummyClientFace`, :ndn-cxx:`Segmenter`, and :ndn-cxx:`SegmentFetcher` to
namespace ``ndn``
- Moved all :ndn-cxx:`Signal`-related classes to namespace ``ndn::signal``
Improvements and bug fixes
^^^^^^^^^^^^^^^^^^^^^^^^^^
- Check the TLV type when constructing :ndn-cxx:`Name` from :ndn-cxx:`Block`
- Provide relational operators for :ndn-cxx:`FaceUri`, to make it usable as a container key
- Generalize and simplify :ndn-cxx:`time::fromUnixTimestamp` and :ndn-cxx:`time::toUnixTimestamp`
- Prevent overflows in ``InterestLifetime`` and ``FreshnessPeriod`` (:issue:`4997`)
- Make HMAC signing and verification compatible with OpenSSL 3.x (:issue:`5251`)
- Better handling of large dates in :ndn-cxx:`ValidityPeriod` (:issue:`5176`)
- :ndn-cxx:`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 independently
- Fix 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()``. Use ``Face::getIoContext()`` instead.
- ``Component::fromEscapedString()``. Use :ndn-cxx:`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 (:issue:`4754`)
Removals
^^^^^^^^
- ``Block::wire()``. Use :ndn-cxx:`Block::data` instead.
- :ndn-cxx:`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 :ndn-cxx:`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 (:issue:`5163`)