blob: aa45854d94e4e7f44da5eaa7c243159b7d2ec208 [file] [log] [blame]
Alexander Afanasyevd36dd552014-06-30 12:42:46 -07001.. _Release Notes:
Alexander Afanasyevabaab522014-04-30 20:42:11 -07002
Alexander Afanasyevd36dd552014-06-30 12:42:46 -07003ndn-cxx Release Notes
4---------------------
5
Alexander Afanasyev6fa52972015-08-30 16:28:42 -07006ndn-cxx version 0.3.4 (changes since version 0.3.3)
7+++++++++++++++++++++++++++++++++++++++++++++++++++
8
9Release date: August 31, 2015
10
11New features:
12^^^^^^^^^^^^^
13
14- By default, library is now compiled as a shared library (:issue:`2867`)
15
16- Specification for the new NDN certificate format. The reference implementation is being
17 developed and will be merged in a future release. (:issue:`2861`)
18
19- Add new ValidityPeriod abstraction into SignatureInfo (:issue:`2868`)
20
21- Add new optional AdditionalInfo abstraction for SignatureInfo (:issue:`3058`)
22
23- Implementation of basic NDNLP2 abstractions (:issue:`2875`, :issue:`2878`,
24 :issue:`2963`, :issue:`2879`)
25
26- ``Face::registerPrefix`` and ``Face::setInterestFilter`` are now unified with the use
27 of SigningInfo abstraction (:issue:`2932`)
28
29- New Dispatcher class to simplify server-side implementation of NFD management protocol
30 (:issue:`2107`)
31
32Improvements and bug fixes:
33^^^^^^^^^^^^^^^^^^^^^^^^^^^
34
35- Fix compilation error with Boost 1.59 (:issue:`3128`)
36
37- Enhance exception throwing with Boost Exception library (:issue:`2997`)
38
39- Improvements of string helpers (:issue:`3006`)
40
41- Add API in ``Block`` class to add sub-elements (:issue:`2998`)
42
43- Add constructor to create sub-elements using the underlying buffer (:issue:`3100`)
44
45- Fix bug in ``Block::remove``, so it removes all sub-elements of the specified type
46 (:issue:`2998`)
47
48- Add ability to create ``util::Digest`` object from ``std::istream&`` (:issue:`3022`)
49
50Deprecated:
51^^^^^^^^^^^
52
53- The following methods of ``CommandOptions`` class in favor of ``getSigningInfo`` and
54 ``setSigningInfo`` methods (:issue:`2893`):
55
56 * ``getSigningParamsKind``
57 * ``getSigningIdentity``
58 * ``getSigningCertificate``
59 * ``setSigningDefault``
60 * ``setSigningIdentity``
61 * ``setSigningCertificate``
62 * ``setSigningCertificate``
63
64- Overloads of ``Face::registerPrefix`` and ``Face::setInterestFilter`` that do not accept
65 SigningInfo parameter (:issue:`2932`)
66
67Upcoming features (partially implemented in development branches):
68^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
69
70- Introduce new API to simplify security transformations (:issue:`3009`)
71
72- NDN trust schema as a description of application trust model, which can help automate data
73 and interest packet signing and authentication (:issue:`2829`)
74
75- Refactored KeyChain abstraction (:issue:`2926`)
76
77****************************************************************************
78
79
Alexander Afanasyev2d6954c2015-06-26 14:30:44 -070080ndn-cxx version 0.3.3 (changes since version 0.3.2)
81+++++++++++++++++++++++++++++++++++++++++++++++++++
82
83Release date: July 1, 2015
84
85New features:
86^^^^^^^^^^^^^
87
88- Allow compilation of ndn-cxx as a shared library (:issue:`2243`)
89
90 In this release, by default, only a static library is compiled. The next release will change
91 the default behavior to compile only a shared library.
92
93- Introduce concept of PartialName (:issue:`1962`)
94
95 Semantically, PartialName abstraction represents an arbitrary sequence of name components,
96 while Name represents an absolute name. Currently, PartialName is typedef alias to Name, but
97 it can be changed in the future releases.
98
99- Introduce generalized signing API in KeyChain (:issue:`2871`, :issue:`1705`)
100
101 A new API in KeyChain introduces a general interface to sign interest and data packets and
102 supply necessary signing information, such as signing identity name, signing key name, or
103 signing certificate name. In addition, the supplied signing information can include additional
104 information that signer wants to include in the SignatureInfo of the signed packet.
105
106- Introduce helpers to create SigningInfo for the generalized signing API (:issue:`2922`)
107
108- Sqlite3Statement utility helper that wraps an SQLite3 statements and provide automatic memory
109 cleanup
110
111- Introduce PibSqlite3 based on PibImpl (:issue:`2807`)
112
113- Make public interface of Pib, Identity, and Key as read-only (:issue:`2928`)
114
115- New encoding block helpers to simplify operations with ``std::string`` (:issue:`2951`):
116
117 * ``prependStringBlock``
118 * ``makeStringBlock``
119 * ``readString``
120
121Improvements and bug fixes:
122^^^^^^^^^^^^^^^^^^^^^^^^^^^
123
124- Use C++11 lambda expression and smart pointers in Face implementation (:issue:`2112`)
125
126- Fix compilation failure on OS X 10.10 with cryptopp from MacPorts
127
128- Update client.conf manpage
129
130- Change Name::compare to return negative, zero, or positive integer (instead of strictly -1,
131 0, 1) when the first name comes before the other in canonical ordering, is equal, or comes
132 after (:issue:`2445`)
133
134- IdentityCertificate sets default FreshnessPeriod to 1 hour (:issue:`2872`)
135
136- Unify TPM creation (:issue:`2722`)
137
138- Allow negative start index in Name::getSubName method (:issue:`1962`)
139
140- Improved documentation of PibImpl interfaces (:issue:`2896`, :issue:`2898`)
141
142- Simplify CommandOptions with SigningInfo (:issue:`2893`)
143
144- Refactor internal PIT to use scheduled events (:issue:`1372`, :issue:`2518`)
145
146- Improve structure and documentation of block helpers (:issue:`2951`)
147
148- Declare all move constructors as ``noexcept`` to ensure move operations are used even when a
149 restrictive move operation (`move_if_noexcept`) is used (e.g., in STL library's containers)
150 (:issue:`2966`)
151
152Deprecated:
153^^^^^^^^^^^
154
155- The following ``KeyChain::sign*`` methods, in favor of generalized ``KeyChain::sign(..., SigningInfo)``
156
157 * ``KeyChain::sign(Packet, Name)``
158 * ``KeyChain::sign(uint8_t*, size_t, Name)``
159 * ``KeyChain::signByIdentity(Packet, Name)``
160 * ``KeyChain::signByIdentity(uint8_t*, size_t, Name)``
161 * ``KeyChain::signWithSha256(Data)``
162 * ``KeyChain::signWithSha256(Interest)``
163
164- The following encoding block helper functions:
165
166 * ``nonNegativeIntegerBlock`` (use ``makeNonNegativeIntegerBlock``)
167 * ``prependBooleanBlock`` (use ``prependEmptyBlock``)
168 * ``booleanBlock`` (use ``makeEmptyBlock``)
169 * ``dataBlock`` (use ``makeBinaryBlock``)
170 * ``nestedBlock`` (use ``makeNestedBlock``)
171
Alexander Afanasyev069db082015-07-02 13:42:22 -0700172- The following methods of ``CommandOptions`` class, use ``setSigningInfo()`` instead (:issue:`2893`):
Alexander Afanasyev2d6954c2015-06-26 14:30:44 -0700173
174 * ``CommandOptions::getSigningParamsKind``
175 * ``CommandOptions::getSigningIdentity``
176 * ``CommandOptions::getSigningCertificate``
177 * ``CommandOptions::setSigningDefault``
178 * ``CommandOptions::setSigningIdentity``
179 * ``CommandOptions::setSigningCertificate``
180
181Removed:
182^^^^^^^^
183
184- Remove SCOPE from Interests and all references to it in the related code (:issue:`2345`)
185
186- Direct FIB management in Face class (:issue:`2533`)
187
188 ``Face::register`` and ``Face::setInterestFilter`` methods now only support NFD RIB management
189 protocol.
190
191 For special needs, FIB management can be implemented using ``nfd::Controller``
192 (``start<FibAddNextHopCommand>``, and ``start<FibRemoveNextHopCommand>``)
193
194Upcoming features (partially finished in development branches):
195^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
196
197- NDNLPv2 (http://redmine.named-data.net/projects/nfd/wiki/NDNLPv2, :issue:`2520`,
198 :issue:`2879`, :issue:`2763`, :issue:`2883`, :issue:`2841`, :issue:`2866`)
199
200- New NDN certificate format (:issue:`2861`, :issue:`2868`)
201
202- NDN trust schema as a description of application trust model, which can help automate data
203 and interest packet signing and authentication (:issue:`2829`)
204
205- Refactored KeyChain abstraction (:issue:`2926`)
206
207****************************************************************************
208
Alexander Afanasyevcbf054d2015-05-11 13:02:56 -0700209ndn-cxx version 0.3.2 (changes since version 0.3.1)
210+++++++++++++++++++++++++++++++++++++++++++++++++++
211
212Release date: May 12, 2015
213
214New features:
215^^^^^^^^^^^^^
216
217- Add Link abstraction (:issue:`2587`)
218
219- Add Link and SelectedDelegation fields to the Interest abstraction (:issue:`2587`)
220
221- Initial implementation of several components for the upcoming PIB feature (:issue:`2451`):
222
223 * User-facing PIB implementation and implementation-specific PIB interface
224 * In-memory PIB implementation
225 * Define new abstraction for identity, key, and certificate
226
227Updates and bug fixes:
228^^^^^^^^^^^^^^^^^^^^^^
229
230- Enable decoding Exclude containing ImplicitSha256DigestComponent (:issue:`2629`)
231
232- Update waf build system to version 1.8.9 (:issue:`2209`, :issue:`2657`, :issue:`2792`)
233
234- Avoid duplicating output in IndentedStream (:issue:`2723`)
235
236- Fix skipping empty name component `(...)` during URI decoding (:issue:`2725`)
237
238- Enable ability to exclude empty name component (:issue:`2660`)
239
240- Fix bug with TLV-LENGTH processing in `Block::fromStream` (:issue:`2728`, :issue:`2729`)
241
242- Disable precompiled headers on OS X with clang < 6.1.0 (:issue:`2804`)
243
244Deprecated:
245^^^^^^^^^^^
246
247- `Block::fromBuffer` overloads with output parameter (:issue:`2553`)
248
249Removed:
250^^^^^^^^
251
252- Delete deprecated Controller functions:
253
254 * `Controller::start` overloads, except the overload taking CommandOptions
255 * `Controller::Sign` typedef
256 * `Controller::getDefaultCommandTimeout`
257 * `ControlCommand::getPrefix`
258 * `ControlCommand::getRequestName(ControlParameters)`
259 * `Controller::Controller(Face&)`
260
261****************************************************************************
262
263
264ndn-cxx version 0.3.1 (changes since version 0.3.0)
265+++++++++++++++++++++++++++++++++++++++++++++++++++
Alexander Afanasyeved545b32015-03-01 14:23:17 -0800266
267Release date: March 3, 2015
268
269New features:
270^^^^^^^^^^^^^
271
272- **Management**
273
274 - Add isConnected() in :ndn-cxx:`signal::Connection` and :ndn-cxx:`signal::ScopedConnection`
275 (:issue:`2308`)
276
277 - Extend :ndn-cxx:`DummyClientFace` to process :ndn-cxx:`LocalControlHeader` (:issue:`2510`)
278
279 - Add CachingPolicy to :ndn-cxx:`LocalControlHeader` (:issue:`2183`)
280
281Updates and bug fixes:
282^^^^^^^^^^^^^^^^^^^^^^
283
284- **Wire encoding**
285
286 - Refactoring of :ndn-cxx:`EncodingImpl` class template (``EncodingBuffer`` and
287 ``EncodingEstimator``) (:issue:`2494`, :issue:`2490`)
288
289 - Change :ndn-cxx:`Block::fromBuffer` return type (:issue:`2553`)
290
291- **Miscellaneous tools**
292
293 - Mark ``Digest<Hash>::operator==`` as unsuitable in a security sensitive context
294 (:issue:`2395`)
295
296 - Restrict destruction of Signal from handler (:issue:`2313`)
297
298- **Documentation**
299
300 - Correct function names in security library tutorial (:issue:`2474`)
301
302 - Remind users to reinstall ports after OSX upgrade (:issue:`2284`)
303
304- **Tests**
305
306 - Fix global buffer overflow in ``ImplicitSha256Digest`` test case (:issue:`2307`)
307
308 - Change naming conventions for unit test files and test suite names (:issue:`2497`)
309
310- **Build**
311
312 - Explicitly define ``_GLIBCXX_USE_NANOSLEEP``, necessary for gcc < 4.8 in some environments
313 (:issue:`2499`)
314
315Removed:
316^^^^^^^^
317
318- Delete deprecated ``Block(std::istream&)`` constructor (:issue:`2241`)
319
320- Delete deprecated ``ndn::ptr_lib``, ``ndn::func_lib`` (:issue:`2110`)
321
322- Delete deprecated ``MetaInfo::TYPE_*`` (:issue:`2170`)
323
324****************************************************************************
325
Alexander Afanasyevcbf054d2015-05-11 13:02:56 -0700326ndn-cxx version 0.3.0 (changes since version 0.2.0)
327+++++++++++++++++++++++++++++++++++++++++++++++++++
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800328
329Release date: February 2, 2015
330
331New features:
332^^^^^^^^^^^^^
333
334- **Build**
335
336 + The code now requires C++11. The minimum supported gcc version is 4.6, as earlier versions
337 do not have proper support for C++11 features.
338
339- **Base**
340
341 + Enable detailed version information when built from shallow clone or tarball
342 (:issue:`1915`)
343
344 + Make default transport configurable (:issue:`2189`)
345
346 + Add ability to do partial Name comparison (:issue:`2090`)
347
348- **Security**
349
350 + Add support for KeyDigest key locator (:issue:`1426`)
351
352 + Add a method to get KeyDigest from a PublicKey instance (:issue:`1964`)
353
354 + Add support for KeyChain to sign Interest using SHA256 digest (:issue:`2218`)
355
356 + Add ``ndnsec-dsk-gen`` tool to generate a pair of Data-Signing-Key (DSK) for the specified
357 identity (:issue:`2246`)
358
359 + Pair-up PIB and TPM in KeyChain: PIB remembers the last used TPM type/location, which is
360 used during KeyChain construction (unless overriden) (:issue:`2242`)
361
362- **Wire encoding**
363
364 + Add support for application-defined meta information blocks (:issue:`2021`)
365
366 + Introduce new ``name::Component::is*`` methods to allow checking if the name component
367 follows the specific naming convention without relying on the exception handling
368 (:issue:`2088`)
369
370 + Add definition of producer-generated NACK (:issue:`2111`)
371
372 + Add ``std::hash<Name>`` specialization to support ``unordered_map`` container
373 (:issue:`2147`)
374
375 + Add support for ImplicitSha256DigestComponent (:issue:`1640`)
376
377 + Allow tagging Interest and Data packets with arbitrary information (:issue:`2336`)
378
379- **Management**
380
381 + Support NFD face query operation (:issue:`2085`)
382
383- **Miscellaneous tools**
384
385 + Add a new helper to calculate digests over dynamic inputs (:issue:`1934`)
386
387 + Add DNS resolver helper (:issue:`1918`)
388
389 + Import and re-license Ethernet and FaceUri classes from NFD codebase, add FaceUri
390 canonization support for ``udp``, ``tcp``, and ``ether`` schemas (:issue:`1994`)
391
392 + Add per-application in-memory storage with LRU, LFU, and FIFO replacement policies
393 (:issue:`1940`)
394
395 + Add ability to specialize system and steady clocks (e.g., for unit tests and simulation
396 purposes) (:issue:`2158`)
397
398 + Expose DummyClientFace as public API
399
400 + New IndentedStream helper class to simplify writing to streams with the specified indents
401 or prefixes (:issue:`2238`)
402
403 + New Signal class template as an enhanced version of the deprecated EventEmitter
404 (:issue:`2279`)
405
406 + New scheduler::ScopedEventId helper to automatically cancel scheduled events upon
407 destruction (:issue:`2442`)
408
409 + New NetworkMonitor helper to detect network state changes (:issue:`2443`)
410
411Updates and bug fixes:
412^^^^^^^^^^^^^^^^^^^^^^
413
414- **Base**
415
416 + Prevent flags being set for rib/unregister command (:issue:`1945`)
417
418 + Fix segfault caused by Face::unregisterPrefix when registeredPrefixId does not exist
419
420 + Add explicit internal KeyChain to Face class. KeyChain previously existed in the Face as
421 part of NFD controller class. (:issue:`2039`)
422
423 + Properly disable assertions in release builds (:issue:`2135`)
424
425 + Connect to Transport during construction of Face instance (:issue:`2318`)
426
427- **Wire encoding**
428
429 + Fix segfault when decoding empty Exclude element (:issue:`1970`)
430
431 + Provide EqualityComparable concept for Exclude element
432
433 + Correct Marker in Name::appendVersion() (:issue:`2086`)
434
435 + Ensure that wire-encoding errors are inherited from ``tlv::Error`` (:issue:`1983`)
436
437- **Management**
438
439 + Replace FaceFlags with individual fields in face management data structures (:issue:`1992`)
440
441 + ``ndn::nfd::Controller`` extended to allow generating ControlCommand for remote prefix
442 registration (:issue:`2039`)
443
444 + Change ``ForwarderStatus.NfdVersion`` to string (:issue:`2003`)
445
446- **Security**
447
448 + Fix ``ndnsec-cert-gen`` to correctly infer prefix before KEY component (:issue:`2052`)
449
450 + Help message corrections in ``ndnsec-cert-dump``, ``ndnsec-cert-gen``, and
451 ``ndnsec-key-gen`` (:issue:`2052`)
452
453 + Accept ``--sign-id`` and ``--cert-prefix`` in ``ndnsec-cert-revoke`` (:issue:`2058`)
454
455 + Changes output format of ``ndnsec-cert-revoke`` to base64 encoding (:issue:`2059`)
456
457 + Add a new (safer) option to ``ndnsec-cert-gen`` allowing inclusion of additional
458 information blocks into the certificate. The new ``--signed-info`` parameter makes minimum
459 assumptions, treating text before first space as OID and the rest as the associated string
460 with this OID.
461
462 + Make Face optional in Validator class (:issue:`2124`)
463
464 + Display signature information when printing a certificate (:issue:`2196`)
465
466 + Handle certificate decoding error in validation process (:issue:`2212`)
467
468 + Fix segmentation fault in ``ndnsec-sign-req`` (:issue:`2211`)
469
470 + Allow verbose option in ``ndnsec-list`` (:issue:`2197`)
471
472 + Allow generation of DSK using ``ndnsec-key-gen`` (:issue:`2247`)
473
474 + Allow ``ndnsec-key-gen`` to generate ECDSA keys (:issue:`2248`)
475
476 + Fix memory leak in SecPublicInfoSqlite3 (:issue:`2253`)
477
478 + Properly report status of ``ndnsec-delete`` execution (:issue:`2275`)
479
480- **Miscellaneous tools**
481
482 + Fix incorrect tag map in ``tlvdump`` tool
483
484 + Change to default resolver behavior in util::dns::Resolver (:issue:`2415`)
485
486- **Documentation**
487
488 + Update of tutorials and installation instructions
489
490 + Rename manpage of ``client.conf`` to ``ndn-client.conf`` (:issue:`1967`)
491
492 + Updated and extended ndn-cxx code style:
493
494 - add rules for some C++11 constructs
495 - prefer ``BOOST_ASSERT`` and ``static_assert``
496
497 + Improve example applications (:issue:`1976`)
498
499- **Tests**
500
501 + Improve security unit test cases (:issue:`1683`)
502
503 + Embedding CI build and test running scripts into the repository
504
505 + Partial unit test coverage for Face class (previously covered only by integration tests)
506 (:issue:`1947`)
507
508 + Improve stability of unit tests by using UnitTestTime (wall clock independent time)
509 (:issue:`2152`)
510
511- **Build**
512
513 + Redesign the way default compiler flags are determined (:issue:`2209`)
514
515 + Support tools and examples with multiple translation units (:issue:`2344`)
516
517 + Disable installation of internal headers and headers of the disabled components
518 (:issue:`2266`, and :issue:`2269`)
519
520 + Enable conditional compilation based on presence of ``getpass()`` function
521
522- Other minor fixes and corrections
523
524Deprecated:
525^^^^^^^^^^^
526
527- ``ndn::ptr_lib`` and ``ndn::func_lib`` namespace aliases
528
529- The following ``nfd::Controller`` methods:
530
531 + ``Controller::start`` overloads, except the overload taking ``CommandOptions``
532 + ``Controller::Sign`` typedef
533 + ``Controller::getDefaultCommandTimeout``
534 + ``ControlCommand::getPrefix``
535 + ``ControlCommand::getRequestName(ControlParameters)``
536 + ``Controller::Controller(Face&)``
537
538- ``MetaInfo::TYPE_*`` constants
539
540- ``EventEmitter`` is deprecated in favor of ``Signal``
541
542Removed:
543^^^^^^^^
544
545- FaceFlags APIs (:issue:`1992`)
546
547- ``ControlCommand::makeCommandInterest`` (:issue:`2008`)
548
549- namespace ``ndn::Tlv`` (:issue:`2079`)
550
551- ``shared_ptr<io_service>`` constructor and getter in Face class
552
553- ``tlv::ConentType`` (typo in the name)
554
555- ``Selectors::Selectors(int, int, Exclude, int, bool)`` constructor
556
557- ``Interest::Interest(Name, int, int, Exclude, int, bool, int, time::milliseconds, uint32_t)``
558 constructor
559
560- ``signature-sha256.hpp`` file
561
562- unused ``encryption-manager.hpp`` file
563
564- unused ``openssl`` dependency
565
Alexander Afanasyeved545b32015-03-01 14:23:17 -0800566****************************************************************************
567
Alexander Afanasyevcbf054d2015-05-11 13:02:56 -0700568ndn-cxx version 0.2.0 (changes since version 0.1.0)
569+++++++++++++++++++++++++++++++++++++++++++++++++++
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700570
571Release date: August 25, 2014
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700572
573New features:
574^^^^^^^^^^^^^
575
576- **Base**
577
578 + The license under which the library is released is changed to **Lesser GNU Public
579 License version 3.0**.
580
581 + New ways to use incoming Interest dispatching:
582
583 * New :ndn-cxx:`InterestFilter` abstraction that supports filtering based on name
584 prefixes and regular expressions.
585
586 * Separated :ndn-cxx:`Face::registerPrefix()` and :ndn-cxx:`Face::setInterestFilter()`
587 methods allow distinct operations of registering with the local NDN forwarder and setting
588 up application-specific ``OnInterest`` call dispatch using InterestFilters.
589
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700590 + Add support for new `NDN naming conventions
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800591 <http://named-data.net/doc/tech-memos/naming-conventions.pdf>`_ (:issue:`1761`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700592
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700593- **Security**
594
Alexander Afanasyev6fa52972015-08-30 16:28:42 -0700595 + Add ``type dir`` :ref:`trust-anchor in ValidatorConfig <validator-conf-trust-anchors>`
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700596 to add all certificates under the specified directory as trust anchors.
597 The new option also allow periodic reloading trust anchors, allowing dynamic trust
598 models.
599
600 + Added support for multiple signature types to :ndn-cxx:`PublicKey`,
601 :ndn-cxx:`SecPublicInfo` abstractions
602
603 + New :ndn-cxx:`SignatureSha256WithEcdsa` signature type
604
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700605 + Updates in :ndn-cxx:`Signature` data structure to reflect changes in `NDN-TLV spec
606 0.1.1 <http://named-data.net/doc/NDN-TLV/0.1.1/>`_
607
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700608- **Wire encoding**
609
610 + :ndn-cxx:`Data::getFullName() <getFullName()>` method to get :ndn-cxx:`Data` packet
611 name with implicit digest
612
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800613 + New :ndn-cxx:`Name::getSuccessor()` method to get name successor (:issue:`1677`)
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700614
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800615 + New in-wire refreshing of Interest's nonce (:issue:`1758`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700616
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700617- **Management**
618
619 + Support for :ndn-cxx:`ChannelStatus`, :ndn-cxx:`StrategyChoice` datasets
620
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800621 + Defining new common Route Origins for NFD RIB management protocol (:issue:`1719`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700622
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800623 + New RibEntry and Route data structures for RIB management protocol (:issue:`1764`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700624
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800625 + Add support for RIB flags for setInterestFilter and registerPrefix (:issue:`1842`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700626
627- **Miscellaneous tools**
628
629 + Introduce :ndn-cxx:`Scheduler::cancelAllEvents` to cancel all previously scheduled events
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800630 (:issue:`1757`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700631
632 + Introduce :ndn-cxx:`util::EventEmitter`, :ndn-cxx:`util::NotificationSubscriber`,
633 :ndn-cxx:`util::NotificationStream`, and :ndn-cxx:`nfd::FaceMonitor` utility classes
634
635 + Introduce :ndn-cxx:`util::SegmentFetcher` helper class to fetch multi-segmented data
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800636 (:issue:`1879`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700637
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700638- **Build**
639
640 + enabled support of precompiled headers for clang and gcc compilers to speed up compilation
641
642Updates and bug fixes:
643^^^^^^^^^^^^^^^^^^^^^^
644
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700645- **Base**
646
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800647 + Serialization of socket write operations (:issue:`1707`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700648
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800649 + Enforcing limit on Interest and Data packet size in :ndn-cxx:`Face::expressInterest` and
650 :ndn-cxx:`Face::put` methods (:issue:`1774`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700651
652 + Cleaning up transport state on communication failure, so Face can try to reconnect
653 in the future.
654
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800655 + Fix bug with Face::removePendingInterest (:issue:`1917`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700656
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700657- **Wire encoding**
658
659 + Nonce field is now encoded as 4-byte uint8_t value, as defined by NDN-TLV spec.
660
661 + Optimized Data packet signing
662
663 :ndn-cxx:`KeyChain::sign` method now pre-allocates :ndn-cxx:`EncodingBuffer`, requests
664 unsigned portion of :ndn-cxx:`Data` using ``Data::wireEncode(EncodingBuffer, true)``,
665 and then appends the resulting signature and prepends :ndn-cxx:`Data` packet header.
666 This way there is no extra memory allocation after :ndn-cxx:`Data` packet is signed.
667
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700668 + Optimized implicit digest calculation in :ndn-cxx:`Interest::matchesData` method
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800669 (:issue:`1769`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700670
671- **Management**
672
Alexander Afanasyev5946ed12015-01-19 23:41:39 -0800673 + Add link-layer byte counts in FaceStatus data structure (:issue:`1765`)
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700674
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700675- **Security**
676
677 + Allow user to explicitly specify the cert name prefix before 'KEY' component in
678 ``ndnsec-certgen``
679
680 + ``SignatureSha256`` has been renamed to :ndn-cxx:`DigestSha256` to conform with
681 `NDN-TLV specification <http://named-data.net/doc/ndn-tlv/>`_.
682
683 + Add checking of ``Timestamp`` and ``Nonce`` fields in signed Interest within
684 :ndn-cxx:`ValidatorConfig`
685
686 + Allow validator customization using hooks:
687
688 Sub-classes of :ndn-cxx:`Validator` class can use the following hooks to fine-tune the
689 validation process:
690
691 * :ndn-cxx:`Validator::preCertificateValidation <preCertificateValidation>` to
692 process received certificate before validation.
693 * :ndn-cxx:`Validator::onTimeout <onTimeout>` to process interest timeout
694 * :ndn-cxx:`Validator::afterCheckPolicy <afterCheckPolicy>` to process validation requests.
695
Yingdi Yu4e99f532014-08-25 19:40:57 -0700696 + Fix memory issues in :ndn-cxx:`SecPublicInfoSqlite3`
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700697
698- **Miscellaneous tools**
699
700 + Redefine method for random number generation: ``random::generateWord*`` and
701 ``random::generateSecureWord*`` to generate cryptographically non-secure (fast) and
702 secure (slow) random numbers.
703
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700704- Other minor fixes and corrections
705
706Deprecated:
707^^^^^^^^^^^
708
709- ``SignatureSha256`` class, use :ndn-cxx:`DigestSha256` instead.
710
711- All :ndn-cxx:`Face` constructors that accept ``shared_ptr<io_service>``.
712
713 Use versions that accept reference to ``io_service`` object.
714
715- ``Face::ioService`` method, use :ndn-cxx:`Face::getIoService` instead.
716
717- :ndn-cxx:`Interest` constructor that accepts name, individual selectors, and individual
718 guiders as constructor parameters.
719
720 Use ``Interest().setX(...).setY(...)`` or use the overload taking ``Selectors``
721
722- ``name::Component::toEscapedString`` method, use :ndn-cxx:`name::Component::toUri` instead.
723
724- ``SecPublicInfo::addPublicKey`` method, use :ndn-cxx:`SecPublicInfo::addKey` instead.
725
726- ``Tlv::ConentType`` constant (typo), use ``Tlv::ContentType`` instead.
727
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700728- ``CommandInterestGenerator`` and ``CommandInterestValidator`` utility classes.
729 :ndn-cxx:`ValidatorConfig` should be used instead.
730
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700731Removed:
732^^^^^^^^
733
734- support of ndnd-tlv (only NFD management protocol is supported now)
735
736- ``SecPublicInfoMemory`` and ``SecTpmMemory`` classes that were no longer used
737
738- Removing concept of periodic event from :ndn-cxx:`Scheduler`.
739
740 In applications, periodic events should be just re-scheduled within the callback for
741 single-shot events.
742
Alexander Afanasyeved545b32015-03-01 14:23:17 -0800743****************************************************************************
Alexander Afanasyevd36dd552014-06-30 12:42:46 -0700744
Alexander Afanasyevcbf054d2015-05-11 13:02:56 -0700745ndn-cxx version 0.1.0
746+++++++++++++++++++++
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700747
Alexander Afanasyevec0499f2014-07-30 12:11:01 -0700748Release date: May 7, 2014
749
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700750Version 0.1.0 is the initial release of ndn-cxx, an NDN C++ library with eXperimental
751eXtensions.
752
753Originally based on `ndn-cpp library <https://github.com/named-data/ndn-cpp>`_ the ndn-cxx
Lixia Zhangc5fdfe72014-04-30 09:33:43 -0700754library adopts a slightly different design philosophy (including an extensive use of Boost
755libraries to facilitate development, as well as the use of Crypto++ library to support
756cryptographic operations), and includes a number of extensions that aim to simplify NDN
757application development.
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700758
759The current features include:
760
761- **Base**
762
Lixia Zhangc5fdfe72014-04-30 09:33:43 -0700763 + Fully asynchronous, event-driven communication model, which is implemented using `Boost.Asio
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700764 <http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio.html>`_
765 + Single-threaded, but thread-safe Face operations
766
767 A single Face object can be safely used in multiple threads to express Interests and
768 publish Data packets
769
770 + Explicit time management for NDN operations using `Boost.Chrono
771 <http://www.boost.org/doc/libs/1_48_0/doc/html/chrono.html>`_
772 + Simplified and extended `NDN API <doxygen/annotated.html>`_
773 + Extensive set of unit-tests based on `Boost.Test framework
774 <http://www.boost.org/doc/libs/1_48_0/libs/test/doc/html/index.html>`_
775
776 - Continuous integration using an in-house installation of Jenkins build bots and the
Lixia Zhangc5fdfe72014-04-30 09:33:43 -0700777 hosted `Travis CI <https://travis-ci.org/named-data/ndn-cxx>`_ continuous
778 integration service compile and verify correctness of the library for each commit
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700779
780- **Wire format**
781
782 + Full support of `NDN-TLV packet format v0.1 <http://named-data.net/doc/NDN-TLV/0.1/>`_
783 + Pure C++ implementation of wire encoding/decoding with simple access to wire format
784 of all NDN packet abstractions via ``wireEncode`` and ``wireDecode`` methods
785
786 In many cases, NDN packet abstractions are just "indices" to the wire format
787
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700788- **Communication with the forwarder**
789
790 + Enable connecting to local forwarder via UNIX and TCP transports and to remote
791 forwarders using TCP transport
792 + Full support for communication with `Named Data Networking Forwarding Daemon (NFD)
793 <https://github.com/named-data/NFD>`_
794
795 - Full support for `NFD management protocols
796 <http://redmine.named-data.net/projects/nfd/wiki/Management>`_ to NFD status
797 information, create and manage NFD Faces, receive NFD Face status change
798 notifications, update StrategyChoice for namespaces, and manage routes in RIB
799 - Support for `LocalControlHeader
800 <http://redmine.named-data.net/projects/nfd/wiki/LocalControlHeader>`_ to implement
801 special NDN applications that need low-level control of NDN packet forwarding
802
Lixia Zhangc5fdfe72014-04-30 09:33:43 -0700803- **Security support**
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700804
Lixia Zhangc5fdfe72014-04-30 09:33:43 -0700805 + A set of security primitives to allowing implementation of secure NDN applications in
806 a simplified manner
Alexander Afanasyevc5452c52014-04-29 17:21:51 -0700807
808 - **KeyChain**: provides simple interfaces of packet signing, and key and certificate
809 management
810 - **ValidatorConfig**: validator that implements trust model defined in a configuration
811 file
812 - **CommandInterestGenerator** and **CommandInterestValidator**: convenient helpers to produce
813 and validate command interests, while preventing potential replay attacks
814
815 + Several implementations of trusted platform modules to securely manage private keys
816
817 - **SecTpmOsx**: TPM based on OSX KeyChain (OSX-specific)
818 - **SecTpmFile**: TPM that uses file-based access control to protect keys (cross-platform)
819
820 + Extensive set of security command-line tools to manage security identities and certificates
821
822 - Generating private/public keys
823 - Issuing certificates
824 - Exporting/importing identities
825 - Managing default security settings
826
827- **Miscellaneous tools**
828
829 + Scheduler to support delayed time operations
830 + NDN regular expressions
831 + Simple config file to alter various aspects of the library
832 + **tlvdump**: a simple tool to visualize TLV-encoded blocks