blob: 895e718941d7dfa95606ee1cca3bb26dfedef6c8 [file] [log] [blame]
Davide Pesavento0751bba2024-07-27 20:20:24 -04001ndn-cxx version 0.9.0
2---------------------
3
4*Release date: July 28, 2024*
5
6Important changes and new features
7^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8
9- **C++17** is now *required* to build ndn-cxx and when including any of its header files
10
11- The build dependencies have been increased as follows:
12
13 - GCC >= 9.3 or Clang >= 7.0 are strongly *recommended* on Linux; GCC 8.x is also known
14 to work but is not officially supported
15 - Xcode 13 or later is *recommended* on macOS; older versions may still work but are not
16 officially supported
17 - Boost >= 1.71.0 is *required* on all platforms
18
19- Ubuntu 24.04 (Noble), Debian 12 (Bookworm), and macOS 14 (Sonoma) are now officially supported
20
21- Added an official Dockerfile to the repository. From this Dockerfile, two images are currently
22 published to the GitHub container registry:
23
24 - `named-data/ndn-cxx-build <https://github.com/named-data/ndn-cxx/pkgs/container/ndn-cxx-build>`__
25 - `named-data/ndn-cxx-runtime <https://github.com/named-data/ndn-cxx/pkgs/container/ndn-cxx-runtime>`__
26
27 Both images are available for *linux/amd64* and *linux/arm64* platforms.
28
29- The default forwarder socket path for Unix transports changed to ``/run/nfd/nfd.sock`` on Linux
30 and to ``/var/run/nfd/nfd.sock`` on all other platforms (:issue:`5304`)
31
32- On macOS, the default TPM backend is now **tpm-file** (the same as all other platforms)
33
34- :ndn-cxx:`Interest::matchesData` no longer considers ``MustBeFresh`` and ``FreshnessPeriod``
35 (:issue:`5270`)
36
37- Modernized several APIs to use ``std::string_view``
38
39- Added :ndn-cxx:`Interest::setApplicationParameters(std::string_view)` and
40 :ndn-cxx:`Data::setContent(std::string_view)` overloads for convenience
41
42- :ndn-cxx:`SegmentFetcher` gained an option to omit ``MustBeFresh`` from the first Interest sent
43
44- Moved :ndn-cxx:`DummyClientFace`, :ndn-cxx:`Segmenter`, and :ndn-cxx:`SegmentFetcher` to
45 namespace ``ndn``
46
47- Moved all :ndn-cxx:`Signal`-related classes to namespace ``ndn::signal``
48
49Improvements and bug fixes
50^^^^^^^^^^^^^^^^^^^^^^^^^^
51
52- Check the TLV type when constructing :ndn-cxx:`Name` from :ndn-cxx:`Block`
53
54- Provide relational operators for :ndn-cxx:`FaceUri`, to make it usable as a container key
55
56- Generalize and simplify :ndn-cxx:`time::fromUnixTimestamp` and :ndn-cxx:`time::toUnixTimestamp`
57
58- Prevent overflows in ``InterestLifetime`` and ``FreshnessPeriod`` (:issue:`4997`)
59
60- Make HMAC signing and verification compatible with OpenSSL 3.x (:issue:`5251`)
61
62- Better handling of large dates in :ndn-cxx:`ValidityPeriod` (:issue:`5176`)
63
64- :ndn-cxx:`NetworkMonitor` now ignore AWDL interfaces on macOS (:issue:`5074`)
65
66- Avoid dependency on *boost_program_options* when tools are disabled (:issue:`5210`)
67
68- Add fine-grained options to ``./waf configure`` to enable/disable the compilation of
69 benchmarks, integration tests, and unit tests independently
70
71- Fix building the documentation with Python 3.12 (:issue:`5298`)
72
73- Reduce amount of debugging information produced in compiled binaries by default (:issue:`5279`)
74
75- Update waf build system to version 2.0.27
76
77- Various code cleanups, modernizations, and documentation improvements
78
79Deprecations
80^^^^^^^^^^^^
81
82- ``Face::getIoService()``. Use ``Face::getIoContext()`` instead.
83
84- ``Component::fromEscapedString()``. Use :ndn-cxx:`Component::fromUri` instead.
85
86- TPM unlock and related functionality. This includes ``Tpm::isTpmLocked()``,
87 ``Tpm::unlockTpm()``, ``Tpm::isTerminalMode()``, ``Tpm::setTerminalMode()``,
88 and the ``ndnsec-unlock-tpm`` command-line tool (:issue:`4754`)
89
90Removals
91^^^^^^^^
92
93- ``Block::wire()``. Use :ndn-cxx:`Block::data` instead.
94
95- :ndn-cxx:`Component` constructors that take a raw ``const uint8_t*``. Use the ``span``-based
96 constructors instead.
97
98- ``Component::fromImplicitSha256Digest()`` and ``Component::fromParametersSha256Digest()``
99
100- Previously deprecated overloads of ``Name::append()``
101
102- ``Name::push_back()``. Use :ndn-cxx:`Name::append` instead.
103
104- ``ndn::escape()`` and ``ndn::unescape()`` overloads that take raw strings as ``const char*`` +
105 ``size_t``. Use the corresponding ``std::string_view`` versions instead.
106
107- ``ndn::optional`` and ``ndn::variant``. Use C++17 ``std::optional`` and ``std::variant``
108 directly instead.
109
110- ``ndn::to_string()``. Use the standard C++ function ``std::to_string()`` instead.
111
112- Previously deprecated ``ndnsec`` command aliases (:issue:`5163`)