From dee7a8e268630c6ce7b2e5b50d8c34f2e33cf7bb Mon Sep 17 00:00:00 2001 From: Olof hagsand Date: Tue, 12 May 2020 20:45:10 +0200 Subject: [PATCH] Clixon release 4.5.0 --- CHANGELOG.md | 40 +++++++++++++++++++++------------------- configure | 2 +- configure.ac | 2 +- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d85e4ce..6fbc323d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Clixon Changelog -* [4.5.0](#450) Expected: May 2020 +* [4.5.0](#450) 12 May 2020 * [4.4.0](#440) 5 April 2020 * [4.3.0](#430) 1 January 2020 * [4.3.3](#433) @@ -22,8 +22,13 @@ * [3.3.1](#331) June 7 2017 ## 4.5.0 -Expected: May 2020 +12 May 2020 +The 4.5.0 release introduces xpaths in the NACM implementation thus +completing the RPC and Data node access. There has also been several +optimizations. Note that this version must be run with CLIgen 4.5, it +cannot run with CLIgen 4.4 or earlier. + ### Major New features * NACM RFC8341 datanode read and write paths @@ -35,7 +40,7 @@ Expected: May 2020 * ca_trans_commit_done: Called when all plugin commits have been done. * Note: If you have used "end" callback and usign transaction data, you should probably use this instead. -### API changes on existing protocol/config features (For users, you may have have to change how you use Clixon) +### API changes on existing protocol/config features (For users) * Stricter validation detecting duplicate container or leaf in XML. * Eg `` is invalid if `a` is a leaf or container. @@ -49,7 +54,7 @@ Expected: May 2020 * Stricter incoming RPC sanity checking, error messages may have changed. * Changed output of `clixon_cli -G` option to show generated CLI spec original text instead of resulting parse-tree, which gives better detail from a debugging perspective. -### C-API changes on existing features (For developers: you may need to change your plugin C-code) +### C-API changes on existing features (For developers) * Length of xml vector in many structs changed from `size_t` to `int`since it is a vector size, not byte size. * Example: `transaction_data_t` @@ -61,25 +66,22 @@ Expected: May 2020 * `clicon_parse()`: Changed signature due to new cligen error and result handling: * Removed: `cli_nomatch()` -### Minor changes +### Optimzations +* Optimized namespace prefix checks at xml parse time: using many prefixes slowed down parsing considerably +* Optimized cbuf handling in parsing and xml2cbuf functions: use of new `cbuf_append()` function. +* Optimized xml scanner to read strings rather than single chars +* Identify early that trees are disjunct instead of recursively merge in `xml_merge` +* Optimizations of `yang_bind` for large lists: use a "sibling/template" to use same binding as previous element. +* Reduced memory for attribute and body objects, by allocating less memory in `xml_new()` than for elements, reducing XML storage with ca 25% +* Cleared startup-db cache after restart, slashing datastore cache with (best-case) a third. +* Removed nameserver binding cache for leaf/leaf-list objects. +* Remove xml value cache after sorting (just use cligen value cache at sorting, remove after use) +### Minor changes * Added decriptive error message when plugins produce invalid state XML. * Example: `operation-failedmystateNo such yang module. Internal error, state callback returned invalid XML: example_backend` * Such a message means there is something wrong in the internal plugins or elsewehere, ie it is not a proper end-user error. -* Compile-time option: `USE_CLIGEN44` for running clixon-45 with cligen-44. - * Temporary fix since cligen-45 have some non-backward compatible behaviour. -* Cycle optimizations - * Optimized namespace prefix checks at xml parse time: using many prefixes slowed down parsing considerably - * Optimized cbuf handling in parsing and xml2cbuf functions: use of new `cbuf_append()` function. - * Optimized xml scanner to read strings rather than single chars - * Identify early that trees are disjunct instead of recursively merge in `xml_merge` - * Optimizations of `yang_bind` for large lists: use a "sibling/template" to use same binding as previous element. -* Memory optimizations - * Reduced memory for attribute and body objects, by allocating less memory in `xml_new()` than for elements, reducing XML storage with ca 25% - * Cleared startup-db cache after restart, slashing datastore cache with (best-case) a third. - * Removed nameserver binding cache for leaf/leaf-list objects. - * Remove xml value cache after sorting (just use cligen value cache at sorting, remove after use) -* Adapted to CLIgen 4.5 API changes, eg: `cliread()` and `cliread_parse()` +* Adapted to CLIgen 4.5 API changes, eg: `cliread()` and `cliread_parse()` * Renamed utility function `clixon_util_insert()` to `clixon_util_xml_mod()` and added merge functionality. * Sanity check of duplicate prefixes in Yang modules and submodules as defined in RFC 7950 Sec 7.1.4 diff --git a/configure b/configure index 9c7dd117..a9b71732 100755 --- a/configure +++ b/configure @@ -2205,7 +2205,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. CLIXON_VERSION_MAJOR="4" CLIXON_VERSION_MINOR="5" CLIXON_VERSION_PATCH="0" -CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}.PRE\"" +CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}\"" # Check CLIgen if test "$prefix" = "NONE"; then diff --git a/configure.ac b/configure.ac index 8fe9f0e3..c75665c7 100644 --- a/configure.ac +++ b/configure.ac @@ -50,7 +50,7 @@ AC_CONFIG_AUX_DIR(aux) CLIXON_VERSION_MAJOR="4" CLIXON_VERSION_MINOR="5" CLIXON_VERSION_PATCH="0" -CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}.PRE\"" +CLIXON_VERSION="\"${CLIXON_VERSION_MAJOR}.${CLIXON_VERSION_MINOR}.${CLIXON_VERSION_PATCH}\"" # Check CLIgen if test "$prefix" = "NONE"; then