This release did not happen yet.
Please update this file within PRs accordingly. For non-trivial changes, you can choose to be part of the highlighted changes. Please make sure to add some short tutorial, asciinema, or how-to-use for highlighted items.
Please add your name to every contribution syntax: ", thanks to ".
<<scripts/generate-news-entry
>>
We are proud to release Elektra 0.8.<>.
<<scripts/git-release-stats 0.8.VERSION
>>
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 also read the FOSDEM interview given recently.
- New Logo and Website Theme
- INI as new default configuration file format
- Bindings for Asynchronous I/O
- Plugin Processes
- Lookup with the Order Preserving Minimal Perfect Hash Map
- <>
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.
As promised in the previous release notes we switched to INI as default format.
The migration will be smoothly: The dini
plugin makes sure that old dump files are still being read.
Only when writing out configuration files, configuration files are converted to INI.
TODO: write a bit about INI syntax+short guide
New bindings for asynchronous I/O called "I/O bindings" 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. For example we plan to add a notification system that facilitates I/O bindings. Plugins that send notifications will have synchronous fallbacks while receiving plugins are asynchronous only.
For more details see the preview tutorial doc/tutorials/notifications.md
This release includes an experimental I/O binding for uv. The interface for I/O bindings is currently experimental.
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 the dump plugin to orchestrate the processes.
Such a behavior this 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.
The 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
defined option 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.
We added even more functionality, which could not make it to the highlights:
- Elektra is now part of the official Homebrew repository. We still provide a tap, if you want to install Elektra together with plugins or bindings that require additional libraries.
- The building and linking of the haskell bindings and haskell plugins has been greatly improved.
- The invoke library can now report errors upon opening/closing a plugin.
- The YAML CPP plugin does not require Boost anymore, if you installed yaml-cpp 0.6.
We improved the documentation in the following ways:
- We've documented how you can setup a build node for Jenkins using a docker container We also provide an example Dockerfile based on Debian Stretch for that purpose.
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).
Furthermore:
- Added public headerfiles
kdbio.h
,kdbiotest.h
. - Added private headerfiles
kdbioprivate.h
.
- Fix bash shebang of bash scripts, thanks to Jakub Jirutka
- Remove unportable unneeded asm, thanks to Timo Teräs and Jakub Jirutka
These notes are of interest for people maintaining packages of Elektra:
dini
is no longer experimental.- BINDINGS syntax is now similar to PLUGINS.
By 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 interceptionintercept_env
.intercept
alone does not work anymore. - <>
The following files are new:
- Libs:
libelektra-io.so
,libelektra-io-uv.so
- :
These notes are of interest for people developing Elektra:
- <>
- We added a crash test for the INI plugin that feeds the plugin with problematic input data we determined using AFL
Many problems were resolved with the following fixes:
- We fixed internal inconsistency in the CMake code of the Augeas plugin
- We fixed various small bugs that could potentially cause the INI plugin to crash
- The INI plugin now converts a section to a normal key-value pair if you store a value inside it. This has the advantage that you will not lose data unexpectedly anymore.
- The INI plugin should now read most key-value pairs containing separation characters (
=
) properly. - We fixed the haskell bindings and plugins on Debian Stretch and added a new build server job to test that in the future.
We are currently working on following topics:
- <>
You can download the release from here or GitHub
The hashsums are:
<<scripts/generate-hashsums
>>
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 elektra@markus-raab.org.
For more information, see https://libelektra.org
Best regards, Elektra Initiative