$darkmode
|
Elektra 0.11.0
|
We are proud to release Elektra 0.9.8.
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:
kdb now prohibits write operations on cascading keys that miss a corresponding existing key. See the details in the Tools section below and the new subsection on cascading writes in the tutorial on cascading keys for further information. _(Alexander Firbas)_We have created a version of Redshift that uses Elektra for configuration management!
We removed and refactored Redshift's code for loading configuration files, parsing CLI options and validating configuration to use Elektra. Redshift with Elektra has about 700 fewer lines of code (-16%) and is a great example of what Elektra is all about: More applications with less code for configuration management!
To test it, take a look at our PR Refactor to use Elektra and follow the instructions provided in CONTRIBUTING.md.
Refactoring Redshift to use Elektra brings the following benefits:
*.c and *.h files exclusive of files automatically generated by Elektra).Redshift with Elektra uses the high-level API.
We have made a large number of improvements to the high-level API in the course of refactoring Redshift. The highlights are:
More improvements and details are explained in later sections of these release notes.
Thanks to Klemens Böswirth, Markus Raab and Tobias Schubert!
We are now shipping experimental releases for Windows 32- and 64-bit! They can be downloaded here.
A big success is that Redshift already works with Elektra under Windows.
The following section lists news about the plugins we updated in this release.
gopts plugin now includes deeply nested options and arguments in the generated help message. _(Tobias Schubert @qwepoizt)_gopts are now correctly reported. _(Klemens Böswirth)_gopts_win32.h. _(Tobias Schubert @qwepoizt)_range plugin now uses metakey type as fallback, if check/type is not specified. _(Tobias Schubert @qwepoizt)_range now treats all validation problems as warnings during kdbGet(). _(Tobias Schubert @qwepoizt)_spec plugin now runs before other postgetstorage plugins, so that validation can happen during kdbGet as well. This is especially relevant in combination with gopts. _(Klemens Böswirth)_ELEKTRA_PLUGIN_COMMIT export. _(Tobias Schubert @qwepoizt)_toml plugin now supports all four kinds of strings via the tomltype metadata. The plugin also remembers which kind was used and handles escape sequences properly, instead of always converting to basic strings. For details take a look at the updated README _(Klemens Böswirth)_comment/#/space metakey is now used correctly to store the actual whitespace characters from the file, instead of a number. _(Klemens Böswirth)_The text below summarizes updates to the C (and C++)-based libraries of Elektra.
ksSearchksSearchInternal is now static. Use ksSearch instead._(Michael Tucek)_
ksNeedSync function. _(Mihael Pranjić)_sprintf by snprintf and fix out of bounds array access in markdownlinkconverter. _(Mihael Pranjić)_mounted and spec-mounted. _(Tobias Schubert @qwepoizt)_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.
Key::createNameless to Key::create. To migrate to this change, just update calling code to use the new method name.KDB::open(Key)KDB::open(KeySet, Key)KDB::close(Key)KDB::get(Key)KDB::get(KeySet, Key)KDB::set(KeySet, Key), better explaining the relevance of the second argument parentKeyKeySet::remove(Key) and KeySet::remove(String)KeySet::lookup(Key, int) and KeySet::lookup(String, int) as well as accompanying flag definitions KeySet::KDB_O_NONE, KeySet::KDB_O_DEL and KeySet::KDB_O_POP. Please use KeySet::lookup(Key) and KeySet::lookup(String) instead. Instead of KeySet::KDB_O_DEL, please consider using Key::release. The proper replacement for KeySet::KDB_O_POP is KeySet::remove(Key) or KeySet::remove(String).Elektra is now package private (previously was public).whitelist (see here)Key nextMeta() to Optional<Key> nextMeta () no longer throwing NoSuchElementException for non-exceptional behaviorElektra is now package private (previously was public)whitelistKey::getBinary() and Key::setBinary(byte[])KeyBinaryTypeNotSupportedException to KeyStringValueExceptionKeyBinaryValueExceptionKey test coverageexamples/external/java/read-keys-exampleKeySetReleasedException and KeyReleasedException have been replaced by the native IllegalStateExceptionReadableKey to better reflect the limitations of metadata keys via a type hierarchy. Metadata keys are now returned as ReadableKeys:Key extends ReadableKeyKey class is now finalKey Key::nextMeta() to Optional<ReadableKey> Key::nextMeta(), no longer throwing NoSuchElementException for non-exceptional behaviorKey Key::currentMeta() to ReadableKey Key::currentMeta()Optional<Key> Key::getMeta(String) to Optional<ReadableKey> Key::getMeta(String)Key::incRef, Key::decRef and Key::getRefReadableKey/Key now implements Comparable<ReadableKey>int Key::cmp(Key) has been renamed to int Key::compareTo(Key)ReadableKey now implements equals and hashCode in line with the contract for int Key::compareTo(Key)ReadableKey/Key no longer implements Iterable<String> for iterating over the parts of a key's name - use Iterator<String> ReadableKey::keyNameIterator () insteadKey now implements Iterable<Key> to iterate over a key's metadata ReadableKeysReadableKey::isDirectBelow/Key::isDirectBelow to isDirectlyBelowKeyNameIterator and KeySetIterator are now package privateKeySetAppendException has been renamed to KeySetException and now conveys general KeySet related exceptional statesKeySet now implements SortedSet<Key> (see Java API). Previously KeySet was only implementing Iterator<Key>. Now a native key set can be used via its KeySet representation wherever one of the following Java Collection Framework interfaces is supported:IterableCollectionSetSortedSet_(Michael Tucek)_
glib binding with -Wno-pedantic for compatibility. _(Mihael Pranjić)_-DTOOLS=ALL. _(Markus Raab)_webd: update npm dependencies. _(Mihael Pranjić)_kdb set, kdb meta-set: Only allow writes to the cascading namespace if the lookup succeeds. Otherwise, the operation is ambiguous and therefore aborted. No more guessing of namespaces in case a cascading key is given (user:, system: for kdb set, spec: for kdb meta-set), _(Alexander Firbas)_kdb set, kdb meta-set: Validation of keys can no longer be bypassed by using non-cascading keys (except with the new –force (-f) option). _(Alexander Firbas)_-N/--namespace option in all kdb subcommands _(Alexander Firbas)_kdb namespace, kdb basename and kdb dirname. _(Alexander Firbas)_kdb file: Remove namespace guessing (in case a cascading key is given, it needs to resolve to an existing key). _(Alexander Firbas)_kdb editor/import: Disable the use of cascading names (and the 'validate' strategy operating on cascading keys) entirely. _(Alexander Firbas)_kdb gen: Generate specification token during code-generation and add it to generated contract. _(Tobias Schubert @qwepoizt)_kdb gen: Improve naming of variables to make code easier to understand. _(Tobias Schubert @qwepoizt)_kdb spec-mount: Improve usability by failing with helpful error messages, if the specification contains errors. _(Tobias Schubert @qwepoizt)_loadConfiguration()'s signature in release 0.9.5 _(Tobias Schubert @qwepoizt)_kdb gen. _(Tobias Schubert @qwepoizt)_testshell_markdown_tutorial_crypto on Mac OS and other OS with GnuPG version >= 2.3.1. _(Peter Nirschl @petermax2)_keytest _(@lawli3t)_keymeta _(@lawli3t)_docker build commands. _(Mihael Pranjić)_tmpfs in Docker to speed up the test suite. _(Mihael Pranjić)_The website is generated from the repository, so all information about plugins, bindings and tools are always up-to-date. Furthermore, we changed:
We are currently working on following topics:
We closed 59 issues for this release.
About 17 authors changed 396 files with 13155 insertions(+) and 8331 deletions(-) in 597 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 here or GitHub
The hashsums are:
The release tarball is also available signed using GnuPG from here or on GitHub
The following GPG Key was used to sign this release: 12CC44541E1B8AD9B66AFAD55262E7353324914A
Already built API documentation can be found here or on GitHub.
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