Davide Pesavento | 0751bba | 2024-07-27 20:20:24 -0400 | [diff] [blame] | 1 | ndn-cxx version 0.9.0 |
| 2 | --------------------- |
| 3 | |
| 4 | *Release date: July 28, 2024* |
| 5 | |
| 6 | Important 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 | |
| 49 | Improvements 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 | |
| 79 | Deprecations |
| 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 | |
| 90 | Removals |
| 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`) |