We are proud to release Elektra 0.10.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
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 % |
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:
#
and _
keys do not work on MINGW_
globbing characterFor more information see Spec Plugin.
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.
The following text lists news about the plugins we updated in this release.
static
variables into functions to avoid global variables (@kodebach)itKs
global variable workaround, which was used to replace the now removed internal KeySet
cursor, was replaced with a custom context struct. (@kodebach)flex
lexer and bison
parser are now fully reentrant and therefore thread-safe. (@kodebach)set
and commit
functions to satisfy kdb plugin-check
(@kodebach)elektraPluginGetPhase()
instead of counting executions (@kodebach)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.
The text below summarizes updates to the C (and C++)-based libraries of Elektra.
syslog
logging code now calls openlog
before every syslog
to avoid the use of a global variable. (@kodebach)-plugin-
in dl.c
(Tomislav Makar @tmakar)go binding
(Tomislav Makar @tmakar)v
so go package versioning works (Tomislav Makar @tmakar)smount
alias (Hannes Laimer @hannes99)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.
KDBException
to only access error key at construction time. (Michael Tucek @tucek)Key#release()
, KeySet#release()
and KDBException#releaseErrorKey()
(Michael Tucek @tucek)ksIncRef
for KeySet
(Michael Tucek @tucek)ReferenceCleaner
(Michael Tucek @tucek)go-elektra
binding from repository into bindings folder of libelektra
(Tomislav Makar @tmakar)go-elektra
(Tomislav Makar @tmakar)go-elektra
module (Tomislav Makar @tmakar)go-elektra
and change module name to match github.com
(Tomislav Makar @tmakar)populate-release-notes.sh
script (Tomislav Makar @tmakar)v
correctly in release.sh
(Tomislav Makar @tmakar)v
prefix in make-source-package
script and Jenkinsfile.release
(Tomislav Makar @tmakar)git-release-stats
script (Tomislav Makar @tmakar)default
namespace to namespaces documentation (Tomislav Makar @tmakar)AUTHORS.md
(Tomislav Makar @tmakar)AUTHORS.md
(Florian Lindner @flo91)hook
to placements
contract in CONTRACT.ini (Tomislav Makar @tmakar)hook
information to hooks.mdAUTHORS.md
(Hannes Laimer @hannes99)install-webui.md
(Tomislav Makar @tmakar)install-webui.md
for newly implemented request for adding multiple metakeys for one key (Tomislav Makar @tmakar)dockerd
configuration file (daemon.json
) (Tomislav Makar @tmakar)#include
in the repo (@kodebach)linkchecker.whitelist
(Tomislav Makar @tmakar)config-manager
DNF plugin. (Maximilian Irlinger @atmaxinger)d-bus
to dbus
in macOS.yml
and .cirrus.yml
Issue-#4900 (Tomislav Makar @tmakar)The website is generated from the repository, so all information about plugins, bindings and tools are always up-to-date. Furthermore, we changed:
const
(@kodebach)We are currently working on following topics:
About 9 authors changed 309 files with 10024 insertions(+) and 4025 deletions(-) in 402 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:
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