We are proud to release Elektra 0.8.22! In 429 commits, 8 authors changed 548 files with 60369 insertions(+), 6783 deletions(-).
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.
For a small demo see here:
You can also read the news on our website
You can read the FOSDEM interview and watch the FOSDEM main talk given recently.
Elektra is now an official part of Homebrew and Alpine Linux.
We are proud to present our new logo. It has a new shape and cooler colors.
Thanks to Philipp Frei!
We also gave the website a new look. It has the colors from the logo and new fonts (Lato and Libre Franklin) that improve readability and add to a unique look. The restructured start page contributes to the new look as well.
We also updated asciinema-player to 2.6.0.
Thanks to Thomas Wahringer.
We also fixed security issues in the Website due to an old version of jquery, thanks to Marvin Mall.
Thanks to Bernhard Denner for keeping our infrastructure running.
diniis no longer experimental anymore and adds the binary plugin.
Thanks to René Schwaiger!
Nevertheless, we did not switch to INI as default format. This has some reasons:
dumpis the better choice: e.g. with
kdb editoryou can edit any parts of Elektra with any format (e.g. INI) more safely. (With the INI plugin in some of these situations meta data is wrongly shown.)
dumpis easier (especially compared with INI) because the
dumpformat is recognisable without ambiguity. (Thus the INI file parses nearly any file, it is hard to detect that a file is not INI)
But for those who want to switch, the migration will be smooth:
dini plugin makes sure that old dump files are still being read.
Only when writing out configuration files, configuration files are converted to INI.
To change to INI during compilation, simply use:
Or simply switch for your installation with:
sudo kdb change-default-storage dini
You can also mount INI (or dini) as root:
sudo kdb mount default.ini / dini
This release contains an experimental implementation of Elektra's notification feature. This feature enables applications to get updates when configuration is changed at run-time. For more details see the preview tutorial at doc/tutorials/notifications.md
is implemented by a new library called
To use the library you need the new internalnotification plugin.
Since the plugin is experimental it needs to be enabled when building Elektra
from source (e.g. by passing
New bindings for asynchronous I/O called "I/O bindings" also have been added. These bindings allow Elektra's plugins and other parts to perform asynchronous operations. I/O bindings are opt-in for application developers. New features of Elektra that take advantage of I/O bindings will have fallbacks where viable. These fallbacks will use synchronous I/O thus keeping the status quo.
This release includes an experimental I/O binding for uv. The interface for I/O bindings is currently experimental and might change in the future.
Elektra's notification feature is not complete yet. So called "transport plugins" will be responsible for sending and receiving notifications using different protocols or libraries (like ZeroMQ or D-Bus). These plugins will make use of the new I/O bindings. We plan to introduce the first transport plugins with the next release of Elektra.
A new library called pluginprocess
has been added. This library contains functions that aid in executing plugins in
a separate process. This child process is forked from Elektra's main process
each time such plugin is used and gets closed again afterwards. It uses a simple
communication protocol based on a KeySet that gets serialized through a pipe via
dump plugin to orchestrate the processes.
Such a behavior is useful for plugins which cause memory leaks to be isolated in an own process. Furthermore this is useful for runtimes or libraries that cannot be reinitialized in the same process after they have been used.
ksLookup (...) has a new search algorithm, that acts as an alternative to the
binary search. The Order Preserving Minimal Perfect Hash Map (OPMPHM) is a non-dynamic,
randomized hash map and is very effective for mostly static configurations.
The OPMPHM can be enabled for a search by passing the in kdbproposal.h
KDB_O_OPMPHM to the lookup.
Be aware that if the KeySet changes often using the OPMPHM might not be a good
idea, read more about the OPMPHM.
When you are not sure if the OPMPHM will speed up you searches, wait for the next release, that one will include a hybrid search algorithm that combines the best properties of both search algorithms.
To disable OPMPHM (e.g. on systems with tight memory constraints), you can pass
We added even more functionality, which could not make it to the highlights:
~), and also adds the meta key
binaryfor such values automatically.
We improved the documentation in the following ways:
rlwrapmight be used for
debianbranch, thanks to Thomas Wahringer.
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).
We executed old test cases against the latest Elektra version and all tests passed.
kdbinvoke.h we changed the API so that
elektraInvokeClose can yield error messages.
check_distribution.shto allow parallel run of test cases, thanks to Armin Wurzinger.
These notes are of interest for people maintaining packages of Elektra:
diniis no longer experimental.
BINDINGSnow behaves like
PLUGINSBy default now all MAINTAINED bindings except EXPERIMENTAL and DEPRECATED are included. For more details see /doc/COMPILE.md. To include both intercept bindings, you now need to write
INTERCEPT, to only include getenv interception
interceptin lower-case does not work anymore.
The following files are new:
The following files were removed:
These notes are of interest for people developing Elektra:
clang-reformat-5.0for formatting. Please upgrade your clang.
ryzen v2was added to speed up
jenkins build all please, thanks to Armin Wurzinger.
BINDINGSwas greatly improved and the CMake functions were simplified. Bindings now also have a
README.mdwith meta data. A big thanks to Thomas Wahringer.
ELEKTRA_LOGis only for C/C++.
kdberrors.h in a C++ files now also works, if you do not add the statement
using namespace ckdb;
before you import
Many problems were resolved with the following fixes:
kdb global-umountalso removed other mountpoints
You can download the release from here or GitHub
The hashsums are:
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 email@example.com.
Permalink to this NEWS entry
For more information, see https://libelektra.org
Best regards, Elektra Initiative