blob: 914c5de61acb6aa22018edfcd7f927d3e3494af6 [file] [log] [blame]
Alexander Afanasyev4df22302016-09-28 15:02:06 +09001ndn-cxx version 0.5.0
2---------------------
3
4Release date: October 4, 2016
5
6.. note::
7 As of version 0.5.0, ndn-cxx requires a modern compiler (gcc >= 4.8.2, clang >= 3.4) and a
8 relatively new version of Boost libraries (>= 1.54). This means that the code no longer compiles
9 with the packaged version of gcc and boost libraries on Ubuntu 12.04. ndn-cxx can still be
10 compiled on such systems, but requires separate installation of a newer version of the compiler
11 (e.g., clang-3.4) and dependencies.
12
13.. note::
14 The library now has a dependency on OpenSSL >= 1.0.1
15
16Changes since version 0.4.1:
17
Davide Pesavento933a5672020-07-03 22:32:43 -040018New features
19^^^^^^^^^^^^
Alexander Afanasyev4df22302016-09-28 15:02:06 +090020
21- New transformation API (:issue:`3009`)
22
23 * base64 and hex encoding/decoding
24 * digest calculation (SHA256)
25 * HMAC calculation
26 * block cipher operations (AES in CBC mode)
27 * public key signing/verification
28
29- Introduce environment variables to set/override transport, pib, and tpm configurations
30 (:issue:`2925`, :issue:`2514`)
31
32 * ``NDN_CLIENT_TRANSPORT``: equivalent of transport in client.conf
33 * ``NDN_CLIENT_PIB``: equivalent of pib in client.conf
34 * ``NDN_CLIENT_TPM``: equivalent of tpm in client.conf
35
36 Whenever an environment variable is set, it takes precedence over any values specified in the
37 configuration file.
38
39- Introduce logging facility based on Boost.Log (:issue:`3562`)
40
41 The logging can be enabled on selected moduled at the selected log level through ``NDN_LOG``
42 environment variable. For example,
43
44 ::
45
46 export NDN_LOG=ndn.mgmt.Dispatcher=TRACE
47
48- Introduce ``Name::deepCopy`` to allow memory optimizations when working with ``Name`` objects
49 (:issue:`3618`)
50
51- New ``ndn::security::CommandInterestValidator`` class (:issue:`2376`)
52
53- Add ``StatusDataset`` client functionality into ``ndn::nfd::Controller`` (:issue:`3329`)
54
55- New ``FaceUpdateCommand`` structure for NFD management protocols (:issue:`3232`)
56
57- **breaking change** Add Flags and Mask fields to faces/create and faces/update, add Flags field to
58 FaceStatus (:issue:`3731`, :issue:`3732`)
59
60- New ``SafeBag`` structure for private key export/import (:issue:`3048`)
61
62- ``ndn::io::loadBlock`` and ``saveBlock`` (:issue:`3741`)
63
64- Backport of C++17 ``std::clamp`` and ``std::optional`` (:issue:`3636`, :issue:`3753`)
65
66Improvements and bug fixes
67^^^^^^^^^^^^^^^^^^^^^^^^^^
68
69- **breaking change** Expose ``ControlResponse`` as part of ``Controller::CommandFailCallback``
70 (:issue:`3739`)
71
72- **breaking change** Change security constants to corresponding strongly typed enumerations
73 (:issue:`3083`)
74
75- Fix ``SegmentFetcher`` restarting from segment 0 upon Nack (:issue:`3554`)
76
77- Fix support for ``ImplicitSha256Digest`` name component in ``Exclude`` selector
78 (:issue:`3665`)
79
80- Enable ``KeyChain`` customization in ``DummyClientFace`` (:issue:`3435`)
81
82- Make ``ValidatorConfig`` to evaluate all checkers inside a rule (:issue:`3645`)
83
84- Add validation of ``StatusDataset`` and ``ControlCommand`` responses in
85 ``ndn::nfd::Controller`` (:issue:`3653`)
86
87- Enable handling of NACKs in Validator and NotificationSubscriber classes (:issue:`3332`,
88 :issue:`3662`)
89
90- Several fixes in ``Scheduler`` class (:issue:`3722`, :issue:`3691`)
91
92- Add option to override ``processEvents`` method in ``DummyClientFace`` class (:issue:`3769`)
93
94- Several other improvements, including fixes of potential segmentation faults and memory leaks
95 (:issue:`3136`, :issue:`3248`, :issue:`3723`, :issue:`3727`)
96
97Deprecated
98^^^^^^^^^^
99
100- Constant ``io::BASE_64``, use ``io::BASE64`` instead (:issue:`3741`)
101
102- Headers ``management/nfd-*``, use ``mgmt/nfd/*`` instead (:issue:`3760`)
103
104- ``ndn::crypto::sha256`` in favor of ``ndn::crypto::computeSha256Digest``
105
106- ``security/cryptopp.hpp`` header. Use ``security/v1/cryptopp.hpp`` when needed, avoid direct
Davide Pesavento933a5672020-07-03 22:32:43 -0400107 include as CryptoPP dependency will be removed from future versions of the library.
Alexander Afanasyev4df22302016-09-28 15:02:06 +0900108
109- ``security/identity-certificate.hpp`` header. Use ``security/v1/identity-certificate.hpp`` instead.
110
111- ``ndn::PublicKey``, ``ndn::Certificate``, ``ndn::IdentityCertificate``,
112 ``ndn::CertificateExtension``, ``ndn::CertificateSubjectDescription``. When necessary, use
113 ``security::v1::PublicKey``, ``security::v1::Certificate``, ``security::v1::IdentityCertificate``,
114 ``security::v1::CertificateExtension``, ``security::v1::CertificateSubjectDescription`` instead.
Davide Pesaventocad94b02021-04-09 21:23:03 -0400115 The next release will feature :doc:`a new version of the NDN Certificate format </specs/certificate>`.
Alexander Afanasyev4df22302016-09-28 15:02:06 +0900116
117Removed
118^^^^^^^
119
120- Previously deprecated LocalControlHeader (:issue:`3755`)
121
122- Previously deprecated ``makeDummyClientFace`` function, use ``DummyClientFace`` constructors
123 directly (:issue:`3383`)
124
125- Previously deprecated ``Name::set``, use constructors directly (:issue:`2506`)
126
127- Previously deprecated ``Block::fromBuffer`` and block helpers (:issue:`2950`, :issue:`2636`)
128
129 * ``Block::fromBuffer`` overloads with output parameter
130 * ``ndn::encoding::prependBlock``
131 * ``ndn::encoding::prependByteArrayBlock``
132 * ``ndn::encoding::nonNegativeIntegerBlock``
133 * ``ndn::encoding::prependBooleanBlock``
134 * ``ndn::encoding::booleanBlock``
135 * ``ndn::encoding::dataBlock``
136 * ``ndn::encoding::nestedBlock``
137
138- Previously deprecated Command Interest classes (:issue:`2008`)
139
140 * ``CommandInterestGenerator``, replaced by ``KeyChain::sign``
141 * ``ndn::util::CommandInterestValidator``, replaced by
142 ``ndn::security::CommandInterestValidator``
143
144- ndncatchunks3 and ndnputchunks3 apps. Use ndncatchunks and ndnputchunks from `NDN Essential
145 Tools (ndn-tools) <https://github.com/named-data/ndn-tools>`__ (:issue:`3547`)
146
147- ``ndn::ndn_digestSha256`` function. Use ``ndn::crypto::computeSha256Digest`` instead.
148
149- **potentially breaking change** Headers ``security/certificate-extension.hpp``,
150 ``security/certificate-subject-description.hpp``, and ``security/certificate.hpp``. When necessary,
151 use the corresponding headers in ``security/v1/*`` or ``security/v1/identity-certificate.hpp``.