ElektraInitiative/libelektra: Release 0.8.21
M. Lynne Markus, Rene Schwaiger, tom-wa, Namoshek, Peter Nirschl, Felix Berlakovich, KurtMi, Daniel Bugl, E1528532, Ian Donnelly, Mausz, Manuel, 0003088, Bernhard Denner, Rauter, Gabriel, Mihael Pranjić, Pino Toscano, reox, , Christoph, Kai-Uwe Behrmann, waht · Zenodo (CERN European Organization for Nuclear Research) · 2017
0.8.21 Release We are proud to release Elektra 0.8.21. guid: 7f5de1b1-6086-47a6-9922-cac08c898ae7 author: Markus Raab pubDate: Fri, 22 Dec 2017 09:24:02 +0100 shortDesc: What is Elektra? Elektra serves as a universal and secure framework to access configuration settings in a global, hierarchical key database. For more information, visit https://libelektra.org. The news can be read rendered at our web server. Highlights In this release 8 authors created 307 commits and we changed 217 files (5227 insertions, 1914 deletions). The highlights of the release are: Fosdem Talk about Elektra was accepted CC-licensed book about Elektra published Maturing of plugins Elektra with encryption Preparation for switch to INI as default storage Fosdem Talk about Elektra in Main Track We are happy to announce that there will be a talk about Elektra in one of the main tracks of Fosdem 2018: Title: Configuration Revolution Subtitle: Why it Needed 13 Years and How it Will be Done Day: Saturday 2018-02-03 Start time: 15:00:00 Duration: 50 min Room: K.1.105 (La Fontaine) And a second talk in the Config Management DevRoom: Title: Breaking with conventional Configuration File Editing Subtitle: Puppet with a Key/Value API in a User Study Day: Sunday 2018-02-04 Start time: 30:00 Duration: 25min Room: UA2.114 (Baudoux) See you in Brussels at 3 and 4 February 2018! I will also be present in the Config Management Camp directly after Fosdem in Gent. CC-licenced Book About Vision of Elektra Published I am proud to release a book with the title "Context-aware Configuration" describing: the last 13 years of Elektra (focus on last 4 years with the questionnaire survey and code analysis), the current state of Elektra, and the long-term goals of Elektra (context-aware configuration). The Fosdem talk will cover some highlights from the book. A huge thanks to everyone involved in the questionnaire survey, without you we would not have been able to collect all the information that led to the requirements for Elektra. The LaTeX sources are available here and the compiled book can be downloaded from here. Maturing of Plugins The new Directory Value plugin supports storage plugins such as YAJL and YAML CPP . It adds extra leaf values for directories (keys with children) that store the data of their parents. This way plugins that normally are only able to store values in leaf keys are able to support arbitrary key sets. The YAML CPP plugin reads and writes YAML data using yaml-cpp. The plugin supports arrays, binary data and metadata. The Camel plugin stores data as simplified YAML flow lists containing double quoted keys and values. For proper YAML support please use the YAML CPP instead. The mINI plugin reads and writes simple property list, separated by equal (=) signs. The xerces plugin allows Elektra to read and write XML data. The plugin uses Xerces-C++ for this task. It supports both arrays and metadata. The boolean plugin normalizes boolean values such as 0, 1, true and false. The crypto plugin and fcrypt plugin are described below. Elektra With Encryption The plugins fcrypt and crypto are now considered stable. They are no longer tagged as experimental. While crypto encrypts individual values within configuration files, fcrypt encrypts and/or signs the whole configuration file. For this release Peter Nirschl prepared a demo showing Elektra's cryptographic abilities: Thanks to Peter Nirschl for this great work! Switch to INI We plan to switch to INI as default storage instead of Elektra's infamous internal dump format. As preparation work we implemented the dini plugin which transparently converts all dump files to ini files on any write attempt. Furthermore, we fixed most of the INI bugs which blocked INI to be the default storage. Due to this progress we will likely switch to INI as default starting with the next release. If you want to, you can switch now by compiling Elektra with: -DKDB_DEFAULT_STORAGE=dini Or simply switch for your installation with: sudo kdb change-default-storage dini If you are already using ini as default, changing to dini will: add some overhead because dini always checks if a file uses the dump format, unless the dump plugin is not installed. add support for binary values using the binary plugin NOTE: INI (dini) was not completely ready for 0.8.21 thus we kept dump as default. dini is currently an experimental plugin. Other New Features We added even more functionality, which could not make it to the highlights: kdb rm now supports -f to ignore non-existing keys use % as profile name to disable reading from any profile The new function elektraArrayDecName: int elektraArrayDecName (Key * key); decreases the index of an array element by one. It can be used to reverse the effect of elektraArrayIncName, thanks to René Schwaiger Documentation We improved the documentation in the following ways: We renamed our beginner friendly issues to "good first issue" as recommended by GitHub. In many parts of the documentation we already switched to American spelling thanks to René Schwaiger Added more automatic spelling corrections thanks to René Schwaiger Fixed many spelling mistakes thanks to René Schwaiger We extended the ReadMe of the jni plugin. The ReadMe now also contains information about the Java prerequisites of the jni plugin on Debian Stretch. Improved notes about testing thanks to Thomas Wahringer qt-gui: give hints which package to install The build phrases jenkins build all please and jenkins build doc please were documented thanks to René Schwaiger Documentation for libelektra-invoke was added Compatibility As always, the ABI and API of kdb.h is fully compatible, i.e. programs compiled against an older 0.8 version of Elektra will continue to work (ABI) and you will be able to recompile programs without errors (API). All unit tests of 0.8.20 run successfully with Elektra 0.8.21. There are, however, some additions and changes in rarely used interfaces: added elektraArrayDecName and elektraArrayValidateName in libease fixed kdbinvoke.h interface: make structure private and complete API fixed xmlns and xsi:schemaLocation to be https://www.libelektra.org the private header file kdbopmphm.h got nearly rewritten Notes for Maintainer These notes are of interest for people maintaining packages of Elektra: We added the following files in this release: libelektra-dini.so libelektra-directoryvalue.so testmod_directoryvalue The following plugins are not marked as experimental anymore: camel crypto mini xerces yamlcpp The binding intercept-fs is now marked more clearly as experimental The lua and jni plugins are again experimental because they do not work with some Lua/Java interpreters. Notes for Elektra's Developers These notes are of interest for people developing Elektra: From now on release notes are written as part of PRs Elektra Initiative is spelled as two words At some more places we switched to use the logger, thanks to René Schwaiger Shell Recorder got many improvements, see below in Testing. Please use it. The plugin's template now adds all placements within backends by default (must be removed accordingly). We now warn if plugins do not have any placement. Please prefer -log and -debug builds The build server now understands the build phrase jenkins build all please thanks to René Schwaiger. Please use it carefully, since it puts our build server under heavy load. Markdown Shell Recorder Syntax recommended when reporting bugs. Elektra's Dockerfile was improved and simplified, thanks to Thomas Wahringer. Add more Explanations how to do Fuzz Testing Started documenting disabled tests in doc/todo/TESTING You now can use tests/icheck.suppression to disable already checked API changes. The (hopefully) last Sourceforge references were removed and a redirection page was added, thanks to @the-Arioch for reporting. Testing AFL unveiled some crashes in INI code fix OCLint problems, thanks to René Schwaiger fix ASAN problems, thanks to René Schwaiger disabled non-working tests Shell recorder Benchmark optionally also works with OpenMP, thanks to Kurt Micheli The Shell Recorder now uses kdb-static or kdb-full if kdb is not available (BUILD_SHARED=OFF) Fixes Many problems were resolved with the following fixes: fix use of dbus_connection_unref(NULL) API thanks to Kai-Uwe Behrmann Properly include headers for std::bind thanks to Nick Sarnie qt-gui: assure active focus on appearance selection window thanks to Raffael Pancheri René Schwaiger repaired the boolean plugin: wrong metadata was used plugin configuration was missing documentation was missing logging code was added René Schwaiger repaired many problems different build agents had kdb info -l does not open KDB anymore. change-resolver-symlink and change-storage-symlink now correctly use @TARGET_PLUGIN_FOLDER@ date plugin will be removed on attempts to compile it with gcc 4.7, thanks to René Schwaiger C plugin: storage/c metadata added fix disabling documentation in CMake, thanks to Kurt Micheli Simplify elektraArrayValidateName, thanks to René Schwaiger Outlook The Order Preserving Minimal Perfect Has