Davide Pesavento | 81de5d9 | 2022-12-30 01:08:05 -0500 | [diff] [blame] | 1 | ndn-cxx version 0.8.1 |
| 2 | --------------------- |
| 3 | |
| 4 | Release date: December 31, 2022 |
| 5 | |
| 6 | .. note:: |
| 7 | This is the last release of ndn-cxx to support the C++14 standard. |
| 8 | Future versions will require C++17 to build. |
| 9 | |
| 10 | Important changes and new features |
| 11 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 12 | |
| 13 | - The minimum build requirements have been increased as follows: |
| 14 | |
| 15 | - Either GCC >= 7.4.0 or Clang >= 6.0 is required on Linux |
| 16 | - On macOS, Xcode 11.3 or later is recommended; older versions may still work but are not |
| 17 | officially supported |
| 18 | - Boost >= 1.65.1 and OpenSSL >= 1.1.1 are required on all platforms |
| 19 | - Sphinx 4.0 or later is required to build the documentation |
| 20 | |
| 21 | - CentOS Stream 9 is now officially supported; CentOS 8 has been dropped (:issue:`5181`) |
| 22 | |
| 23 | - macOS 12 (Monterey) and 13 (Ventura) running on arm64 are now officially supported |
| 24 | (:issue:`5135`) |
| 25 | |
| 26 | - Add the initial version of a :ndn-cxx:`Segmenter` API that applications can use to simplify |
| 27 | the process of chunking a large object into multiple signed Data packets (:issue:`5247`) |
| 28 | |
| 29 | - Add ``KeyChain::makeCertificate()`` to simplify the creation of certificates |
| 30 | |
| 31 | - Put the full certificate name in the ``KeyLocator`` field, instead of just the key name |
| 32 | (:issue:`5112`) |
| 33 | |
| 34 | - NFD management commands sent by :ndn-cxx:`nfd::Controller` now use the `new signed Interest |
| 35 | format <https://named-data.net/doc/NDN-packet-spec/0.3/signed-interest.html>`__ (:issue:`4804`) |
| 36 | |
| 37 | Improvements and bug fixes |
| 38 | ^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 39 | |
| 40 | - Several enhancements and cleanups in :ndn-cxx:`Name` and :ndn-cxx:`Component` to make |
| 41 | the API more consistent and simpler to use (:issue:`5186`) |
| 42 | |
| 43 | - Various improvements in the validation framework and policies |
| 44 | |
| 45 | - Avoid redundant TLV decoding during Interest validation |
| 46 | - Fix validation of signed Interests with malformed ``InterestSignatureInfo`` |
| 47 | - More accurate validation error codes are returned in several cases |
| 48 | - Rename ``ValidationError::NO_SIGNATURE`` to ``MALFORMED_SIGNATURE`` |
| 49 | |
| 50 | - Optimize parsing of PIB and TPM locators in :ndn-cxx:`KeyChain` |
| 51 | |
| 52 | - Major cleanup and modernization of PIB implementation |
| 53 | |
| 54 | - Gracefully handle invalid or unsupported public keys stored in the PIB |
| 55 | |
| 56 | - Fix OpenSSL 3.0 deprecation warnings in private key generation routines (:issue:`5154`) |
| 57 | |
| 58 | - Change ``Certificate::getPublicKey()`` to return a ``span`` |
| 59 | |
| 60 | - Make :ndn-cxx:`Block` convertible to ``span<const uint8_t>`` |
| 61 | |
| 62 | - Avoid assertion failure in :ndn-cxx:`OBufferStream` under certain conditions (:issue:`5240`) |
| 63 | |
| 64 | - Allow customizing the FaceId in :ndn-cxx:`DummyClientFace` (:issue:`5011`) |
| 65 | |
| 66 | - Improve pretty-printing of certificates, e.g., in ``ndnsec list`` and ``ndnsec cert-dump`` |
| 67 | |
| 68 | - Relax restrictions on KeyId component type in ``ndnsec key-gen`` |
| 69 | |
| 70 | - Fix handling of ``--without-osx-keychain`` configure option (:issue:`3338`) |
| 71 | |
| 72 | - Stop using the ``gold`` linker on Linux; prefer instead linking with ``lld`` if installed |
| 73 | |
| 74 | - Update waf build system to version 2.0.24 |
| 75 | |
| 76 | - Various documentation improvements |
| 77 | |
| 78 | Deprecations |
| 79 | ^^^^^^^^^^^^ |
| 80 | |
| 81 | - ``Name::append()`` overloads and :ndn-cxx:`Component` constructors that take a |
| 82 | ``const uint8_t*``. Use the ``span``-based overloads instead. |
| 83 | |
| 84 | - ``Component::fromImplicitSha256Digest()`` and ``Component::fromParametersSha256Digest()``. |
| 85 | Use one of the constructors directly instead. |
| 86 | |
| 87 | Removals |
| 88 | ^^^^^^^^ |
| 89 | |
| 90 | - Obsolete TLV-TYPE definitions |
| 91 | |
| 92 | - Many previously deprecated functions that take raw byte buffers as ``uint8_t*`` + ``size_t``, |
| 93 | replaced by equivalent functions that take a ``span``. These include ``Data::setContent()``, |
| 94 | ``Interest::setApplicationParameters()``, ``Block::fromBuffer()``, ``verifySignature()``, |
| 95 | ``PublicKey::loadPkcs8()``, ``transform::bufferSource()``, ``random::generateSecureBytes()``, |
| 96 | ``printHex()``, ``toHex()``, and so on. |
| 97 | |
| 98 | - Previously deprecated ``Name::append(Block)`` overload |
| 99 | |
| 100 | - Previously deprecated ``Interest::setDefaultCanBePrefix()`` |
| 101 | |
| 102 | - ``ndn::any`` and related functionality |