0.9.0 Release

What is Elektra?

Elektra serves as a universal and secure framework to access configuration settings in a global, hierarchical key database.

You can also read this document on our website.

We wrote a new article describing our vision from configuration management perspective.

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

0.9.*

We are proud to present our largest release so far. It is the first release of the 0.9.* version series, which goal is it:

Business Plans

To get away from a purely research-oriented approach to a mature foundation, we also need paid employees to fix problems.

We plan to introduce following ways of income:

  1. donations
  2. paid support/feature requests
  3. consultancy

If you are interested in any of these, please contact us via business@libelektra.org

The 0.8.* version series will be maintained on paid requests. If you have maintenance requests and want 0.8.27 to be released, please contact us via business@libelektra.org

Please note, that Elektra will definitely stay 100% free software (BSD licensed). We do not plan to make any part proprietary. We only introduce a way for paid customers to get desired features or help more quickly.

Highlights

Cache

Cache is a new global caching plugin. It uses mmapstorage as its storage backend and lazily stores the whole configuration from previous configuration accesses.

With large or many configuration files, the cache brings amazing performance improvements: Let us say, you have 649 INI configuration files mounted with the multifile resolver, completely specified (which means that the specification must be copied to all the configuration settings). Before the cache, retrieving the whole configuration would take 6 or even 13 seconds. With the cache, the whole operation now takes less than 0.5 seconds after the first access.

This is an important step towards the goal of Elektra to integrate all configuration files present on a system.

Limitations:

By default, the cache will automatically enable itself once the cache plugin is installed. The cache can be found in ~/.cache/elektra.

We also added tools for enabling, disabling and clearing the cache (kdb cache {enable,disable,default,clear}).

A big thanks to (Mihael Pranjić) for the excellent work.

Command-line Options

Gopts is a new plugin that integrates support for command-line options to applications:

This means, that using the plugin, you do not need to call elektraGetOpts yourself anymore.

kdbEnsure is a new function in elektra-kdb. It can be used to ensure that a KDB instance meets certain clauses specified in a contract. In principle this a very powerful tool that may be used for a lot of things. All changes made by kdbEnsure are purely within the KDB handle passed to the function.

For example, kdbEnsure can be used, to ensure the availability of command-line options for your application.

Limitations:

A big thanks to (Klemens Böswirth) for the excellent work.

Error Codes

With this release, we changed our messy error code system into a more structured and clean way. Similar to SQLStates we changed to structure of our error codes and migrated them. Have a look into the new codes. This allows us to easily extend the specification without breaking existing codes and to avoid risking duplicated errors as we had before. (Michael Zronek)

We were able to reduce the former 214 to now only 9 error codes.

For background information read:

A big thanks to (Michael Zronek) for the excellent work.

Plugins

The following section lists news about the plugins we updated in this release. In total, we added 9 plugins and removed 2 plugins.

Type (New Version)

The type plugin was completely rewritten in C. The old version is now called cpptype. (Klemens Böswirth)

The new type plugin also provides the functionality of the enum and the boolean plugin. These plugins are now considered obsolete and you should use type instead.

A few notes on compatibility:

To switch from enum to the new type, you have to add either check/type=enum or type=enum. Without a check/type or type metakey, the type plugin will ignore the key. We now also support converting enum values to and from integer values (see README).

To switch from boolean to the new type, you don't have to do anything, if you used the default config. If you used a custom configuration please take a look at the README.

Base64

Crypto and Fcrypt

CSVStorage

Filecheck

INI

Macaddr

mINI

Mmapstorage

Multifile

Quickdump

Reference

RGBColor

Semlock

Removed due to:

Spec

Specload

Syslog

Unit

YAJL

The YAJL plugin which parses JSON files:

YAMBi

YAML CPP

YAML Smith

Yan LR

YAwn

YAy PEG

Libraries

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

Compatibility

We introduced several incompatible changes:

We changed following symbols:

Core

Ease

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.

Tools

Code generation

kdb gen is now no longer an external tool implemented via python, but rather a first class command of the kdb tool. For now it only supports code generation for use with the highlevel API. Try it by running kdb gen elektra <parentKey> <outputName>, where <parentKey> is the parent key of the specification to use and <outputName> is some prefix for the output files. If you don't have your specification mounted, use kdb gen -F <plugin>:<file> elektra <parentKey> <outputName> to load it from <file> using plugin <plugin>.

. (Klemens Böswirth)

Scripts

Benchmarks

Documentation

Style

Tutorials

Spelling Fixes

Other

Tests

Source Code Checks

Build

CMake

Docker

Alpine Linux

Debian

Ubuntu

Other Updates

Vagrant

Infrastructure

Cirrus

Jenkins

Restyled

Travis

Website

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

Outlook

We are currently working on following topics:

Statistics

About 40 authors changed 1278 files with 49409 insertions(+) and 13883 deletions(-) in 2025 commits.

We closed 114 issues for this release.

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 here or GitHub

The hashsums are:

The release tarball is also available signed by Markus Raab using GnuPG from here or on GitHub

Already built API documentation can be found here or on GitHub.

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