- guid: 518d1bdd-a8ea-48da-ab7c-6621a8670c66
- author: Maximilian Irlinger
- pubDate: Tue, 05 Sep 2023 17:10:40 +0200
- shortDesc: Session Recording, ODBC Backend
We are proud to release Elektra 0.11.0.
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
- Session Recording
- ODBC Backend
Elektra now comes with a powerful new feature that allows users to record and export changes made to the KDB: session recording. This feature enables you to easily track changes made to the configuration database over time, which helps troubleshoot issues, diagnose errors, and improve system performance. It even lets you undo the changes you've performed!
You can also export the changes as Ansible playbooks using the new Ansible storage plugin! This makes it easy to automate and reproduce system configurations. We think that this feature offers significant time savings and improved accuracy when managing complex systems.
Whether you're a system administrator, developer, or DevOps engineer, we believe that the session recording feature in Elektra will become an essential tool for managing and maintaining system configurations. Try it today and experience the benefits of streamlined configuration management.
Note: when you activate session recording, concurrency of Elektra will be somewhat limited. As long as it is active, a global lock will be created to ensure no two processes will write data simultaneously. This behavior is similar as to when multiple processes will write to the same configuration file. Applications should already handle this case gracefully, and just retry writing their configuration.
Based on the new and more versatile concept for backends, where backends are implemented as plugins, a new backend-plugin that uses ODBC data sources for storing keys has been developed. It was tested on Gentoo Linux with unixODBC using SQLite and PostgreSQL data sources. The ODBC backend-plugin can only be built if the ODBC library is available on the build system. This can be accomplished by installing e.g. unixODBC. Microsoft ODBC (on MS Windows) and iODBC should also be supported, but were not tested yet. If you use the plugin with another ODBC implementation as unixODBC, you are very welcome to update the documentation with your experiences!
The tutorial is a good place for getting started with the new ODBC backend for Elektra.
The following text lists news about the plugins we updated in this release.
- Updated target name of shared object files according to #3486
- Remove metakeys from array elements correctly #4961 (Tomislav Makar @tmakar)
- Add recorder plugin. (Maximilian Irlinger @atmaxinger)
- Fix formatting/spelling problem in README.md (Hannes Laimer @hannes99)
- Add ODBC backend (Florian Lindner @flo91)
- Add
ansible
plugin for exporting keysets as ansible-libelektra playbooks. (Maximilian Irlinger @atmaxinger)
- Fix error reporting when unsupported metakey has been encountered. (Maximilian Irlinger @atmaxinger)
- Remove experimental status. (Maximilian Irlinger @atmaxinger)
- Implemented the first revision of the Xfconf binding. (Richard Stöckl @Eiskasten)
- Make Xfconf storage plugin compatible with new backend and noresolver. (Richard Stöckl @Eiskasten)
- This allows to use elektra as a drop-in replacement for applications which use Xfconf. (Richard Stöckl @Eiskasten)
- Xfconf applications can now read and write configuration settings to elektra. (Richard Stöckl @Eiskasten)
- Use cmake variables in the replace and restore scripts. (Richard Stöckl @Eiskasten)
- Improve the c plugin: some refactoring, add documentation, extend README.md, add unit tests. (Florian Lindner @flo91)
The text below summarizes updates to the C (and C++)-based libraries of Elektra.
- Add
elektraCopyError
function to copy error from one key to another (Maximilian Irlinger @atmaxinger) - Add
elektraCopyWarnings
function to copy warnings from one key to another (Maximilian Irlinger @atmaxinger) - Add
elektraCopyErrorAndWarnings
function to copy error and warnings from one key to another (Maximilian Irlinger @atmaxinger)
- Add record library used for session recording. (Maximilian Irlinger @atmaxinger)
- Add
elektraArrayGetPrefix
function. (Maximilian Irlinger @atmaxinger)
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.
- Provide getter for the underlying C object of KDB (Maximilian Irlinger @atmaxinger)
- Add
ElektraDiff
binding for C++ (Maximilian Irlinger @atmaxinger) - The
dup
method ofKeySet
now returns a wrapped object (Maximilian Irlinger @atmaxinger) - Add an overload for
KeySet::cut
that accepts a string for the keyname (Maximilian Irlinger) - The
dup
method ofKey
now returns a wrapped object (Maximilian Irlinger @atmaxinger) - Add overloads for
Key::isBelow
,Key::isBelowOrSame
andKey::isDirectBelow
that accept a string as the key name (Maximilian Irlinger @atmaxinger) - Include the header
cstdint
inkey.hpp
. It is needed for an enum of typestd::uint8_t
(Florian Lindner @flo91)
- Added documentation about the design of the binding. (Michael Tucek @tucek)
- Add
ElektraDiff
binding (Maximilian Irlinger @atmaxinger) - The
__meta__
attribute on a key now returns a proper keyset (Maximilian Irlinger @atmaxinger) - Add new module
kdb.errors
to simplify extracting errors and warnings from keys (Maximilian Irlinger @atmaxinger) - Add new module
kdb.record
for interfacing with the session recording capabilities of Elektra (Maximilian Irlinger @atmaxinger) - Add
getConflictingKeys
method tokdb.merge.MergeResult
. (Maximilian Irlinger @atmaxinger)
- Upgrade bindgen dependency to version 0.55.1. (Maximilian Irlinger @atmaxinger)
- Implemented the first revision of the Xfconf binding. (Richard Stöckl @Eiskasten)
- This allows to use elektra as a drop-in replacement for applications which use Xfconf. (Richard Stöckl @Eiskasten)
- Xfconf applications can now read and write configuration settings to elektra. (Richard Stöckl @Eiskasten)
- Use cmake variables in the replace and restore scripts. (Richard Stöckl @Eiskasten)
- Add commands for session recording. (Maximilian Irlinger @atmaxinger)
- The
kdb mount
command will now automatically detect whether the given path is an absolute path. (Maximilian Irlinger @atmaxinger) - Fix unwanted removal of subkeys when using mv (Hannes Laimer @hannes99)
- Fix inconsistent return values in code, tests and man pages (Hannes Laimer @hannes99)
- Remove
smount
alias (Hannes Laimer @hannes99)
- Fix bug in Doxygen comment for
const char * keyName (const Key * key)
which lead to failed building of the refman.pdf on recent TeX Live releases (Florian Lindner @flo91) - Update release documentation regarding version tags. (Mihael Pranjić @mpranj)
- Add glossaries for developers and contributors (Maximilian Irlinger @atmaxinger)
- Add use cases for using the bindings. (Richard Stöckl @Eiskasten)
- Write the Xfconf tutorial. (Richard Stöckl @Eiskasten)
- Add use cases for libelektra-core (@lawli3t)
- Add end-user and developer integration use case (Hannes Laimer @hannes99)
- Add use cases for using the bindings. (Richard Stöckl @Eiskasten)
- Add use cases for libelektra-core (@lawli3t)
- Add decision for Elixir bindings. (@0x6178656c)
- Add tutorial for session recording. (Maximilian Irlinger @atmaxinger)
- Add tutorial for ODBC backend. (Florian Lindner @flo91)
- Add man pages for session recording
- Add macro
succeed_if_keyset_contains_key_with_string
to assert that a certain key with a certain value must exist. (Maximilian Irlinger @atmaxinger)
- Use openwrt/sdk instead of openwrtorg/sdk. (Richard Stöckl @Eiskasten)
- Reduce fedora docker image size (PR #4637) (@4ydan)
- Disable openwrt build until we have found a new maintainer for it. (Maximilian Irlinger @atmaxinger)
- The arch package
texlive-most
is no longer available, replaced it with other texlive packages. See https://archlinux.org/packages/?q=texlive (Florian Lindner @flo91)
We are currently working on following topics:
- Fix bugs!
- Improvements for https://opensesame.libelektra.org/
About 16 authors changed 289 files with 20238 insertions(+) and 2629 deletions(-) in 488 commits.
Thanks to all authors for making this release possible!
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.
You can download the release from
The hashsums are:
- name: elektra-0.11.0.tar.gz
- size: 9535785
- md5sum: 47e52f34507fefd3e05a399383be7353
- sha1: bc4b1393540c2f0bfbf43855c59204ba7d00d224
- sha256: 4e1f7c986010555a1d30ef2d23c0636373e993bab88e5ec238cac18a469b5cc2
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
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.
For more information, see https://libelektra.org.
Best regards, Elektra Initiative