diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b551e45d..f328d39a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: - os: macos-12 xcode: '13.4' - os: macos-12 - xcode: '14.1' + xcode: '14.2' steps: - name: Set up Xcode uses: maxim-lobanov/setup-xcode@v1 diff --git a/.jenkins.d/00-deps.sh b/.jenkins.d/00-deps.sh index 9b1e073a..c114f8dd 100755 --- a/.jenkins.d/00-deps.sh +++ b/.jenkins.d/00-deps.sh @@ -21,7 +21,7 @@ set -x if [[ $ID == macos ]]; then if [[ -n $GITHUB_ACTIONS ]]; then - export HOMEBREW_NO_INSTALL_UPGRADE=1 + export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 fi brew update brew install --formula "${FORMULAE[@]}" diff --git a/.waf-tools/default-compiler-flags.py b/.waf-tools/default-compiler-flags.py index 536e3d3f..f159fdeb 100644 --- a/.waf-tools/default-compiler-flags.py +++ b/.waf-tools/default-compiler-flags.py @@ -145,9 +145,9 @@ class GccBasicFlags(CompilerFlags): flags = super(GccBasicFlags, self).getDebugFlags(conf) flags['CXXFLAGS'] += ['-Og', '-g3', - '-pedantic', '-Wall', '-Wextra', + '-Wpedantic', '-Werror', '-Wcatch-value=2', '-Wextra-semi', @@ -163,9 +163,9 @@ class GccBasicFlags(CompilerFlags): flags = super(GccBasicFlags, self).getOptimizedFlags(conf) flags['CXXFLAGS'] += ['-O2', '-g', - '-pedantic', '-Wall', '-Wextra', + '-Wpedantic', '-Wcatch-value=2', '-Wextra-semi', '-Wnon-virtual-dtor', diff --git a/AUTHORS.md b/AUTHORS.md index 13919c08..7c66d96d 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,8 +1,8 @@ # ndn-cxx Authors -The following lists maintainers, primary developers, and all much-appreciated contributors to ndn-cxx in alphabetic order. +The following lists maintainers, primary developers, and all much-appreciated contributors to ndn-cxx in alphabetical order. The specific contributions of individual authors can be obtained from the git history of the [official ndn-cxx repository](https://github.com/named-data/ndn-cxx). -If you would like to become a contributor to the official repository, please follow the recommendations in https://github.com/named-data/.github/blob/master/CONTRIBUTING.md. +If you would like to become a contributor to the official repository, please follow the recommendations in . * Sepehr Abdous * ***(Maintainer)*** Alexander Afanasyev @@ -23,7 +23,7 @@ If you would like to become a contributor to the official repository, please fol * Xiaoke Jiang * Marcin Juszkiewicz * Luca Keidel -* Spencer Lee +* Spencer Lee * Vince Lehman * Yanbiao Li * Teng Liang @@ -39,7 +39,7 @@ If you would like to become a contributor to the official repository, please fol * Arthi Padmanabhan * Ju Pan * João Pereira -* Davide Pesavento +* ***(Maintainer)*** Davide Pesavento * José Quevedo * Md Ashiqur Rahman * Niv Sardi diff --git a/COPYING.md b/COPYING.md index c428a4c8..bdcb0e30 100644 --- a/COPYING.md +++ b/COPYING.md @@ -26,18 +26,16 @@ ndn-cxx relies on third-party software, licensed under the following licenses: - The waf build system is licensed under the terms of the [BSD license](https://github.com/named-data/ndn-cxx/blob/master/waf) - The ndn-cxx library also relies on other third-party software with a GPL-incompatible free software license. The following libraries fall into the category of "System Libraries" under the GPL license definitions and are used in accordance with the GPL license exception for "System Libraries": -- (macOS platform only) The macOS Security Framework is licensed under the +- *(macOS platform only)* The macOS Security Framework is licensed under the [Apple Public Source License 2.0](https://opensource.apple.com/apsl) - The LGPL and GPL licenses are provided below in this file. For more information -about these licenses, see https://www.gnu.org/licenses/ +about these licenses, see -------------------------------------------------------------------------------- diff --git a/README.md b/README.md index 1a06ea7f..0a0dfcd9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ +
+ +[](https://named-data.net/) + # ndn-cxx: NDN C++ library with eXperimental eXtensions +
+ [![CI](https://github.com/named-data/ndn-cxx/actions/workflows/ci.yml/badge.svg)](https://github.com/named-data/ndn-cxx/actions/workflows/ci.yml) [![Docs](https://github.com/named-data/ndn-cxx/actions/workflows/docs.yml/badge.svg)](https://github.com/named-data/ndn-cxx/actions/workflows/docs.yml) ![Language](https://img.shields.io/badge/C%2B%2B-14-blue) @@ -9,15 +15,16 @@ that can be used to write various NDN applications. The library is currently being used by the following projects: -* [NFD - NDN Forwarding Daemon](https://github.com/named-data/NFD) -* [NLSR - Named-data Link-State Routing protocol](https://github.com/named-data/NLSR) -* [ndn-tools - Essential NDN command-line tools](https://github.com/named-data/ndn-tools) -* [repo-ng - Next generation NDN repository](https://github.com/named-data/repo-ng) -* [ChronoSync - Sync library for multi-user real-time applications](https://github.com/named-data/ChronoSync) -* [PSync - Partial and full synchronization library](https://github.com/named-data/PSync) -* [ndn-traffic-generator - Traffic generator for NDN](https://github.com/named-data/ndn-traffic-generator) -* [NAC - Name-based Access Control](https://github.com/named-data/name-based-access-control) -* [NDNS - Domain Name Service for NDN](https://github.com/named-data/ndns) +* [**NFD** - NDN Forwarding Daemon](https://github.com/named-data/NFD) +* [**NLSR** - Named-data Link-State Routing protocol](https://github.com/named-data/NLSR) +* [**ndn-tools** - Essential NDN command-line tools](https://github.com/named-data/ndn-tools) +* [**ndn-svs** - State Vector Sync library](https://github.com/named-data/ndn-svs) +* [**PSync** - Partial and full Sync library](https://github.com/named-data/PSync) +* [**ChronoSync** - Sync library for distributed real-time applications *(deprecated)*](https://github.com/named-data/ChronoSync) +* [**NAC** - Name-based Access Control library](https://github.com/named-data/name-based-access-control) +* [**NDNCERT** - NDN certificate management protocol](https://github.com/named-data/ndncert) +* [**repo-ng** - NDN repository implementation in C++ *(deprecated)*](https://github.com/named-data/repo-ng) +* [**ndn-traffic-generator** - Simple NDN traffic generator](https://github.com/named-data/ndn-traffic-generator) ## Documentation diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst deleted file mode 120000 index ab3c7525..00000000 --- a/RELEASE_NOTES.rst +++ /dev/null @@ -1 +0,0 @@ -docs/release-notes-latest.rst \ No newline at end of file diff --git a/docs/INSTALL.rst b/docs/INSTALL.rst index 30dadaf0..d1493dd4 100644 --- a/docs/INSTALL.rst +++ b/docs/INSTALL.rst @@ -7,14 +7,10 @@ Supported platforms ndn-cxx is built against a continuous integration system and has been tested on the following platforms: -- Ubuntu 18.04 -- Ubuntu 20.04 -- Ubuntu 22.04 +- Ubuntu 18.04 / 20.04 / 22.04 - Debian 11 - CentOS Stream 9 -- macOS 10.15 -- macOS 11 -- macOS 12 +- macOS 10.15 / 11 / 12 / 13 ndn-cxx is known to work on the following platforms, although they are not officially supported: @@ -316,5 +312,5 @@ will be treated as errors. This default behavior can be overridden by setting th .. code-block:: sh - CXXFLAGS="-O1 -g3" ./waf configure --debug --with-tests - ... + CXXFLAGS="-O1 -g3 -Wall" ./waf configure --debug --with-tests + ./waf diff --git a/docs/RELEASE_NOTES.rst b/docs/RELEASE_NOTES.rst deleted file mode 100644 index 04e2f843..00000000 --- a/docs/RELEASE_NOTES.rst +++ /dev/null @@ -1,4 +0,0 @@ -Release Notes -============= - -.. include:: release-notes-latest.rst diff --git a/docs/index.rst b/docs/index.rst index 97bf2e42..3af74fec 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,26 +1,6 @@ ndn-cxx: NDN C++ library with eXperimental eXtensions ===================================================== -**ndn-cxx** is a C++14 library implementing Named Data Networking (NDN) primitives -that can be used to write various NDN applications. The library is currently being -used by the following projects: - -* `NFD - NDN Forwarding Daemon `_ -* `NLSR - Named-data Link-State Routing protocol `_ -* `ndn-tools - Essential NDN command-line tools `_ -* `repo-ng - Next generation of NDN repository `_ -* `ChronoSync - Sync library for multiuser realtime applications `_ -* `PSync - Partial and full synchronization library `_ -* `ndn-traffic-generator - Traffic generator for NDN `_ -* `NAC - Name-based Access Control `_ -* `NDNS - Domain Name Service for NDN `_ - -Please submit any bugs or feature requests to the `ndn-cxx issue tracker -`_. - -ndn-cxx Documentation ---------------------- - .. toctree:: :hidden: :maxdepth: 3 @@ -36,34 +16,60 @@ ndn-cxx Documentation :maxdepth: 1 code-style - RELEASE_NOTES + release-notes releases +**ndn-cxx** is a C++14 library implementing Named Data Networking (NDN) primitives +that can be used to write various NDN applications. The library is currently being +used by the following projects: + +* `NFD - NDN Forwarding Daemon `_ +* `NLSR - Named-data Link-State Routing protocol `_ +* `ndn-tools - Essential NDN command-line tools `_ +* `ndn-svs - State Vector Sync library `_ +* `PSync - Partial and full Sync library `_ +* `ChronoSync - Sync library for distributed real-time applications (deprecated) `_ +* `NAC - Name-based Access Control library `_ +* `NDNCERT - NDN certificate management protocol `_ +* `repo-ng - NDN repository implementation in C++ (deprecated) `_ +* `ndn-traffic-generator - Simple NDN traffic generator `_ + +Documentation +------------- + - :doc:`INSTALL` - :doc:`examples` - :doc:`tutorials` - + `NDN Software Contributor's Guide `_ (guide for newcomers to the NDN community of software generally) + :doc:`tutorials/utils-ndn-regex` + :doc:`tutorials/security-validator-config` +- :doc:`manpages` +- :doc:`release-notes` +- :doc:`releases` + +For developers +^^^^^^^^^^^^^^ + +- `NDN Software Contributor's Guide `__ + (guide for newcomers to the NDN community of software) + - :doc:`specs` + :doc:`specs/safe-bag` + :doc:`specs/signed-interest` -- :doc:`manpages` - -Additional Documentation -^^^^^^^^^^^^^^^^^^^^^^^^ - -- `API documentation (doxygen) `_ +- `API documentation (doxygen) `__ - :doc:`code-style` -- :doc:`RELEASE_NOTES` -- :doc:`releases` + +Issues +------ + +Please submit any bugs or feature requests to the +`ndn-cxx issue tracker `__. License ------- ndn-cxx is an open source project licensed under the LGPL version 3. For more information about -the license, refer to `COPYING.md `_. +the license, refer to `COPYING.md `__. diff --git a/docs/manpages.rst b/docs/manpages.rst index 7f01d308..c378ea70 100644 --- a/docs/manpages.rst +++ b/docs/manpages.rst @@ -2,9 +2,9 @@ Man pages ========= .. toctree:: - :glob: - :maxdepth: 1 + :glob: + :maxdepth: 1 - ndn-client.conf - ndn-log: ndn-cxx logging - manpages/ndnsec* + ndn-client.conf + ndn-log: ndn-cxx logging + manpages/ndnsec* diff --git a/docs/release-notes-latest.rst b/docs/release-notes-latest.rst deleted file mode 120000 index 34c2f6b9..00000000 --- a/docs/release-notes-latest.rst +++ /dev/null @@ -1 +0,0 @@ -release-notes/release-notes-0.8.0.rst \ No newline at end of file diff --git a/docs/release-notes.rst b/docs/release-notes.rst new file mode 100644 index 00000000..1b8eeecf --- /dev/null +++ b/docs/release-notes.rst @@ -0,0 +1,4 @@ +Release Notes +============= + +.. include:: release-notes/release-notes-0.8.1.rst diff --git a/docs/release-notes/release-notes-0.8.0.rst b/docs/release-notes/release-notes-0.8.0.rst index 752fa910..1cd0260d 100644 --- a/docs/release-notes/release-notes-0.8.0.rst +++ b/docs/release-notes/release-notes-0.8.0.rst @@ -7,10 +7,10 @@ Important changes ^^^^^^^^^^^^^^^^^ - Flip default value of ``CanBePrefix`` to **false** (:issue:`4582`). This means that - Interests created without explicitly specifying ``CanBePrefix`` option, will be treaded + Interests created without explicitly specifying ``CanBePrefix`` option will be treated as Interests for exact Data name. -- Change default name component encoding convention to typed (:issue:`5044`) +- Change default name component encoding convention to ``TYPED`` (:issue:`5044`) - Update TLV-TYPE numbers to revision 3 of the `naming conventions`_ diff --git a/docs/release-notes/release-notes-0.8.1.rst b/docs/release-notes/release-notes-0.8.1.rst new file mode 100644 index 00000000..ccba1cae --- /dev/null +++ b/docs/release-notes/release-notes-0.8.1.rst @@ -0,0 +1,102 @@ +ndn-cxx version 0.8.1 +--------------------- + +Release date: December 31, 2022 + +.. note:: + This is the last release of ndn-cxx to support the C++14 standard. + Future versions will require C++17 to build. + +Important changes and new features +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- The minimum build requirements have been increased as follows: + + - Either GCC >= 7.4.0 or Clang >= 6.0 is required on Linux + - On macOS, Xcode 11.3 or later is recommended; older versions may still work but are not + officially supported + - Boost >= 1.65.1 and OpenSSL >= 1.1.1 are required on all platforms + - Sphinx 4.0 or later is required to build the documentation + +- CentOS Stream 9 is now officially supported; CentOS 8 has been dropped (:issue:`5181`) + +- macOS 12 (Monterey) and 13 (Ventura) running on arm64 are now officially supported + (:issue:`5135`) + +- Add the initial version of a :ndn-cxx:`Segmenter` API that applications can use to simplify + the process of chunking a large object into multiple signed Data packets (:issue:`5247`) + +- Add ``KeyChain::makeCertificate()`` to simplify the creation of certificates + +- Put the full certificate name in the ``KeyLocator`` field, instead of just the key name + (:issue:`5112`) + +- NFD management commands sent by :ndn-cxx:`nfd::Controller` now use the `new signed Interest + format `__ (:issue:`4804`) + +Improvements and bug fixes +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Several enhancements and cleanups in :ndn-cxx:`Name` and :ndn-cxx:`Component` to make + the API more consistent and simpler to use (:issue:`5186`) + +- Various improvements in the validation framework and policies + + - Avoid redundant TLV decoding during Interest validation + - Fix validation of signed Interests with malformed ``InterestSignatureInfo`` + - More accurate validation error codes are returned in several cases + - Rename ``ValidationError::NO_SIGNATURE`` to ``MALFORMED_SIGNATURE`` + +- Optimize parsing of PIB and TPM locators in :ndn-cxx:`KeyChain` + +- Major cleanup and modernization of PIB implementation + +- Gracefully handle invalid or unsupported public keys stored in the PIB + +- Fix OpenSSL 3.0 deprecation warnings in private key generation routines (:issue:`5154`) + +- Change ``Certificate::getPublicKey()`` to return a ``span`` + +- Make :ndn-cxx:`Block` convertible to ``span`` + +- Avoid assertion failure in :ndn-cxx:`OBufferStream` under certain conditions (:issue:`5240`) + +- Allow customizing the FaceId in :ndn-cxx:`DummyClientFace` (:issue:`5011`) + +- Improve pretty-printing of certificates, e.g., in ``ndnsec list`` and ``ndnsec cert-dump`` + +- Relax restrictions on KeyId component type in ``ndnsec key-gen`` + +- Fix handling of ``--without-osx-keychain`` configure option (:issue:`3338`) + +- Stop using the ``gold`` linker on Linux; prefer instead linking with ``lld`` if installed + +- Update waf build system to version 2.0.24 + +- Various documentation improvements + +Deprecations +^^^^^^^^^^^^ + +- ``Name::append()`` overloads and :ndn-cxx:`Component` constructors that take a + ``const uint8_t*``. Use the ``span``-based overloads instead. + +- ``Component::fromImplicitSha256Digest()`` and ``Component::fromParametersSha256Digest()``. + Use one of the constructors directly instead. + +Removals +^^^^^^^^ + +- Obsolete TLV-TYPE definitions + +- Many previously deprecated functions that take raw byte buffers as ``uint8_t*`` + ``size_t``, + replaced by equivalent functions that take a ``span``. These include ``Data::setContent()``, + ``Interest::setApplicationParameters()``, ``Block::fromBuffer()``, ``verifySignature()``, + ``PublicKey::loadPkcs8()``, ``transform::bufferSource()``, ``random::generateSecureBytes()``, + ``printHex()``, ``toHex()``, and so on. + +- Previously deprecated ``Name::append(Block)`` overload + +- Previously deprecated ``Interest::setDefaultCanBePrefix()`` + +- ``ndn::any`` and related functionality diff --git a/docs/releases.rst b/docs/releases.rst index 32356db3..7f8905e9 100644 --- a/docs/releases.rst +++ b/docs/releases.rst @@ -2,12 +2,18 @@ All ndn-cxx Releases ==================== .. toctree:: - :glob: - :hidden: - :maxdepth: 1 - :reversed: + :glob: + :hidden: + :maxdepth: 1 + :reversed: - release-notes/* + release-notes/* + +* **ndn-cxx version 0.8.1** + (:doc:`Release Notes `, `Documentation `__) + + `src (git) `__, + `src (tarball) `__ (`checksum `__) * **ndn-cxx version 0.8.0** (:doc:`Release Notes `, `Documentation `__) diff --git a/wscript b/wscript index c3686e30..029be35f 100644 --- a/wscript +++ b/wscript @@ -3,7 +3,7 @@ from waflib import Context, Logs, Utils import os, subprocess -VERSION = '0.8.0' +VERSION = '0.8.1' APPNAME = 'ndn-cxx' GIT_TAG_PREFIX = 'ndn-cxx-'