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