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: FOSDEM, New Book, Maturing of Plugins
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.
In this release 8 authors created 307 commits and changed 217 files (5227 insertions, 1914 deletions). The highlights of this 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
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
- 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: 12:30
- Duration: 25 min
- 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.
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.
- 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
andfalse
. - The crypto plugin and fcrypt plugin are described below.
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!
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 thedump
format, unless thedump
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.
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
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 thejni
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
andjenkins build doc please
were documented thanks to René Schwaiger - Documentation for libelektra-invoke was added
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
andelektraArrayValidateName
in libease - fixed
kdbinvoke.h
interface: make structure private and complete API - fixed
xmlns
andxsi:schemaLocation
to behttps://www.libelektra.org
- the private header file
kdbopmphm.h
got nearly rewritten
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
jni
plugin is again experimental because it does not work with some Java systems. For thelua
plugin there are also problems with some Lua systems.
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.
- 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
orkdb-full
ifkdb
is not available (BUILD_SHARED=OFF
)
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 openKDB
anymore.change-resolver-symlink
andchange-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
The Order Preserving Minimal Perfect Hash Map (OPMPHM) is ready to extend ksLookup
. The implementation of the randomized Las Vegas hash map
algorithm is in a final stage and the heuristic functions that ensure time and space optimality are backed up by benchmarks.
Thanks to Kurt Micheli, the next release will include the OPMPHM!
You can download the release from here or GitHub
The hashsums are:
- name: elektra-0.8.21.tar.gz
- size: 4712043
- md5sum: d627a01a0249fde46e80042c848d4521
- sha1: a7659a7bb1b2388d03cdf0084160de612e5c4511
- sha256: 51892570f18d1667d0da4d0908a091e41b41c20db9835765677109a3d150cd26
The release tarball is also available signed by me using GnuPG from here or GitHub
Already built API-Docu can be found online or GitHub.
Subscribe to the RSS feed to always get the release notifications.
For any questions and comments, please contact the issue tracker on GitHub or me by email using elektra@markus-raab.org.
For more information, see https://libelektra.org
Best regards, Markus Raab for the Elektra Initiative