diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 1f0ebcc..d537ed0 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -1,4 +1,4 @@ Release Notes ============= -.. include:: release-notes/release-notes-0.7.0.rst +.. include:: release-notes/release-notes-24.08.rst diff --git a/docs/release-notes/release-notes-24.08.rst b/docs/release-notes/release-notes-24.08.rst new file mode 100644 index 0000000..5bcc74d --- /dev/null +++ b/docs/release-notes/release-notes-24.08.rst @@ -0,0 +1,49 @@ +NLSR version 24.08 +------------------ + +*Release date: August 12, 2024* + +Notable changes +^^^^^^^^^^^^^^^ + +- We have moved over to the `CalVer `__ versioning scheme to maintain + consistency with NFD going forward: 24.08 is the successor to 0.7.0 + +- The minimum build requirements have been increased as follows: + + - GCC >= 9.3 or Clang >= 7.0 are strongly *recommended* on Linux; GCC 8.x is also known + to work but is not officially supported + - Xcode 13 or later is *recommended* on macOS; older versions may still work but are not + officially supported + - Boost >= 1.71.0 and ndn-cxx >= 0.9.0 are *required* on all platforms + +- Added Dockerfile for NLSR. A prebuilt image for *linux/amd64* and *linux/arm64* platforms + is available on the `GitHub container registry `__ + +Improvements +^^^^^^^^^^^^ + +- Defined equality operator for LSA classes and simplified LSA-related code in + :nlsr:`NamePrefixList` (:issue:`4094`) +- Standardized on ``operator<<`` in LSA classes for printing rather than ``toString`` (:issue:`5308`) +- Introduced use of Boost ``bimap`` and ``multi_array`` classes to simplify implementation of + :nlsr:`NameMap` and link-state calculations for :nlsr:`RoutingTable` respectively (:issue:`5308`) +- Removed forward dependency on :nlsr:`ConfParameter` in :nlsr:`SyncLogicHandler` (:issue:`4208`) +- Split routing calculator code from main class to separate files + with shared header to allow for transparent changes to routing code +- Additional miscellaneous refactoring +- Update waf build system to version 2.0.27 +- Fix building the documentation with Python 3.12 (:issue:`5298`) +- Various miscellaneous improvements to build and CI scripts + +Bug fixes +^^^^^^^^^ + +- Prevent crashes if received segment lacks KeyLocator when LSDB is trying + to fetch a certificate +- Prevent issues from dereferencing empty optional when link state calculator + was passed a non-existent source node (:issue:`5308`) +- Hello data freshness has been dropped to 0 seconds; this prevents issues where Hellos can + be cached and cause delays in detecting link failures in certain cases (:issue:`5265`) +- Removed dead links to tarballs in docs +- Various adjustments to match ndn-cxx namespace changes diff --git a/docs/releases.rst b/docs/releases.rst index 54523c1..c0a3d3c 100644 --- a/docs/releases.rst +++ b/docs/releases.rst @@ -9,6 +9,13 @@ Release History release-notes/* +* **NLSR version 24.08** + \| :doc:`Release Notes ` + \| `GitHub `__ + \| `Source download `__ + (`checksum `__) + \| `Documentation `__ + * **NLSR version 0.7.0** (:doc:`Release Notes `, `GitHub `__, diff --git a/src/conf-parameter.hpp b/src/conf-parameter.hpp index 40eb7dd..70f5a65 100644 --- a/src/conf-parameter.hpp +++ b/src/conf-parameter.hpp @@ -531,7 +531,7 @@ class ConfParameter PUBLIC_WITH_TESTS_ELSE_PRIVATE: // must be incremented when breaking changes are made to sync - static constexpr uint64_t SYNC_VERSION = 11; + static constexpr uint64_t SYNC_VERSION = 12; AdjacencyList m_adjl; NamePrefixList m_npl; diff --git a/src/version.hpp.in b/src/version.hpp.in index 62b9936..b334b40 100644 --- a/src/version.hpp.in +++ b/src/version.hpp.in @@ -23,21 +23,13 @@ namespace nlsr { -/** NLSR version follows Semantic Versioning 2.0.0 specification - * http://semver.org/ - */ +// NLSR version version follows Calendar Versioning (https://calver.org/) +// based on the year and month of the release, followed by an optional "patch" number, +// i.e., `YY.0M[.MICRO (integer without a leading zero)]` using CalVer notation. // To change version number, modify VERSION variable in top-level wscript. -/** \brief NLSR version represented as an integer - * - * MAJOR*1000000 + MINOR*1000 + PATCH - */ -#define NLSR_VERSION @VERSION@ - -/** \brief NLSR version represented as a string - * - * MAJOR.MINOR.PATCH +/** \brief NLSR version represented as a string in the CalVer format */ #define NLSR_VERSION_STRING "@VERSION_STRING@" @@ -51,19 +43,12 @@ namespace nlsr { * * When NLSR is built not from git, NLSR_VERSION_BUILD_STRING equals NLSR_VERSION_STRING * - * MAJOR.MINOR.PATCH(-release-candidate-tag)(-(number-of-commits-since-tag)-COMMIT-HASH) + * YY.0M[.MICRO](-release-candidate-tag)(-(number-of-commits-since-tag)-COMMIT-HASH) * - * Example, 0.1.0-rc1-1-g5c86570 + * Example: 20.01.1-rc1-1-g5c86570 */ #define NLSR_VERSION_BUILD_STRING "@VERSION_BUILD@" -/// MAJOR version -#define NLSR_VERSION_MAJOR @VERSION_MAJOR@ -/// MINOR version -#define NLSR_VERSION_MINOR @VERSION_MINOR@ -/// PATCH version -#define NLSR_VERSION_PATCH @VERSION_PATCH@ - } // namespace nlsr #endif // NLSR_VERSION_HPP diff --git a/wscript b/wscript index f070b74..fbadf9f 100644 --- a/wscript +++ b/wscript @@ -23,7 +23,7 @@ import os import subprocess from waflib import Context, Logs, Utils -VERSION = '0.7.0' +VERSION = '24.08' APPNAME = 'nlsr' GIT_TAG_PREFIX = 'NLSR-' @@ -69,7 +69,7 @@ def configure(conf): conf.find_program(['pkgconf', 'pkg-config'], var='PKGCONFIG') pkg_config_path = os.environ.get('PKG_CONFIG_PATH', f'{conf.env.LIBDIR}/pkgconfig') - conf.check_cfg(package='libndn-cxx', args=['libndn-cxx >= 0.8.1', '--cflags', '--libs'], + conf.check_cfg(package='libndn-cxx', args=['libndn-cxx >= 0.9.0', '--cflags', '--libs'], uselib_store='NDN_CXX', pkg_config_path=pkg_config_path) conf.check_boost(lib='filesystem', mt=True) @@ -82,11 +82,11 @@ def configure(conf): conf.check_boost(lib='unit_test_framework', mt=True, uselib_store='BOOST_TESTS') if conf.options.with_chronosync: - conf.check_cfg(package='ChronoSync', args=['ChronoSync >= 0.5.5', '--cflags', '--libs'], + conf.check_cfg(package='ChronoSync', args=['ChronoSync >= 0.5.6', '--cflags', '--libs'], uselib_store='CHRONOSYNC', pkg_config_path=pkg_config_path) if conf.options.with_psync: - conf.check_cfg(package='PSync', args=['PSync >= 0.4.0', '--cflags', '--libs'], + conf.check_cfg(package='PSync', args=['PSync >= 0.5.0', '--cflags', '--libs'], uselib_store='PSYNC', pkg_config_path=pkg_config_path) if conf.options.with_svs: @@ -123,13 +123,7 @@ def build(bld): target='src/version.hpp', install_path=None, VERSION_STRING=VERSION_BASE, - VERSION_BUILD=VERSION, - VERSION=int(VERSION_SPLIT[0]) * 1000000 + - int(VERSION_SPLIT[1]) * 1000 + - int(VERSION_SPLIT[2]), - VERSION_MAJOR=VERSION_SPLIT[0], - VERSION_MINOR=VERSION_SPLIT[1], - VERSION_PATCH=VERSION_SPLIT[2]) + VERSION_BUILD=VERSION) bld.objects( target='nlsr-objects',