0.10.0 Release

We are proud to release Elektra 0.10.0.

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.

You can also read the news on our website.

You can try out the latest Elektra release using our docker image elektra/elektra. This is the quickest way to get started with Elektra without compiling and other obstacles, simply run:

docker pull elektra/elektra
docker run -it elektra/elektra

Highlights

New Changetracking API

We've created a new KeySet diffing and changetracking API for both internal and external use. Several plugins already had their own implementations to detect changes made to the key database. Every implementation did something different and results varied. With this new release every plugin now uses the same shared implementation, with identical results!

To try the amazing new API yourself, take a look at the tutorial.

Elektra's internal code now also uses this new API to detect which backends to execute. This can lead to better performance in I/O bound cases, where previously certain keys would have been detected as changed when they weren't.

We ran some memory benchmarks and found a slightly increased memory usage on a stock instance of Elektra. If you're using many plugins that do changetracking, the overhead will decrease.

Number of Keys Old Implementation (bytes) New Implementation (bytes) Memory Increase (%)
50 225792 bytes 229580 bytes 1,68 %
500 383180 bytes 411238 bytes 7,32 %
5000 1992294 bytes 2306867 bytes 15,79 %
50000 18245222 bytes 21181235 bytes 16,09 %
500000 178782208 bytes 207827763 bytes 16,25 %

Apart from memory benchmark, we also ran some performance benchmarks. As the benchmark is heavily I/O bound, the biggest bottleneck is the I/O performance of the system. We could not reliably detect a real, reliably reproducible performance impact measured in seconds. Alternatively, we have measured executed instructions. There seems to be about 10 % overhead, but we don't expect it to be noticeable in real-world workloads.

Number of Keys Old Implementation (Instructions) New Implementation (Instructions) Performance Overhead (%)
50 18910449 19583227 3,56 %
500 63001911 68948096 9,44 %
5000 526801917 586344210 11,30 %
50000 5730261920 6340292587 10,65 %
500000 104614374974 110702166761 5,82 %

New spec plugin

The spec plugin was rewritten to use the standardized error handling in Elektra. It is now strictly defined that the spec plugin throws a warning on kdbGet and on any other call an error.

Default values are now created in the default namespace. The instantiated array specifications are now also created in the default namespace.

Keys with a require metakey and no default metakey do throw an error now.

Known limitations:

For more information see Spec Plugin.

Go into repo

The go binding is now inside of libelektra repository. It is now also included into our build pipeline. For more information on how to use it see go readme.

NOTE: On information how to publish new versions of go-elektra to go packages see go-publishing.

Plugins

The following text lists news about the plugins we updated in this release.

General

spec

counter

logchange

yajl

toml

multifile

c

mmapstorage

Note: The plugin is currently disabled, because it is not yet compatible with the COW data structures.

TODO: remove above note, when COW support is added.

syslog

lineendings

length

missing

unit

dbus

internalnotifications

Libraries

The text below summarizes updates to the C (and C++)-based libraries of Elektra.

Compatibility

Core

loader

go

kdb

Bindings

Bindings allow you to utilize Elektra using various programming languages. This section keeps you up-to-date with the multi-language support provided by Elektra.

jna

go-elektra

Tools

elektrad

webd

Scripts

Jenkins

Release

Documentation

Use Cases

Decisions

Tutorials

Man Pages

Tests

Build

Docker

Infrastructure

Cirrus

GitHub Actions

Website

The website is generated from the repository, so all information about plugins, bindings and tools are always up-to-date. Furthermore, we changed:

Miscellaneous

Outlook

We are currently working on following topics:

Statistics

About 9 authors changed 309 files with 10024 insertions(+) and 4025 deletions(-) in 402 commits.

Thanks to all authors for making this release possible!

Join the Initiative!

We welcome new contributors! Read here about how to get started.

As first step, you could give us feedback about these release notes. Contact us via our issue tracker.

Get the Release!

You can download the release from

The hashsums are:

The release tarball is also available signed using GnuPG from

The following GPG Key was used to sign this release: 12CC44541E1B8AD9B66AFAD55262E7353324914A

Already built API documentation can be found

Stay tuned!

Subscribe to the RSS feed to always get the release notifications.

If you also want to participate, or for any questions and comments, please contact us via our issue tracker on GitHub.

Permalink to this NEWS entry

For more information, see https://libelektra.org.

Best regards, Elektra Initiative