Elektra  0.9.4
0.8.26 Release

We are proud to release Elektra 0.8.26 with the new high-level API.

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

The new high-level API provides an easier way for applications to get started with Elektra.

To use Elektra in an application (including proper error handling) you now only need a few self-explanatory lines of code:

ElektraError * error = NULL;
Elektra * elektra = elektraOpen ("/sw/org/myapp/#0/current", NULL, &error);
if (elektra == NULL)
{
printf ("An error occurred: %s", elektraErrorDescription (error));
return -1;
}
// Once you have an instance of `Elektra` you simply call one of the typed `elektraGet*` functions to read a value:
kdb_long_t mylong = elektraGetLong (elektra, "mylong");
printf ("got long " ELEKTRA_LONG_F "\n", mylong);
const char * mystring = elektraGetString (elektra, "mystring");
printf ("got string %s\n", mystring);
elektraClose (elektra);

To run the application, the configuration should be specified, e.g., for mylong:

sudo kdb setmeta /sw/org/myapp/#0/current/mylong type long
sudo kdb setmeta /sw/org/myapp/#0/current/mylong default 5

In the getters/setters there is no need to convert types or to specify the base path /sw/org/myapp/#0/current, as the high-level API does that for you. The API supports the CORBA types already used by the plugins. The high-level API should also be used in combination with a specification (spec-mount). When used this way, the API is designed to be error and crash free while reading values. Writing values, can of course still produce errors.

Another advantage of the new API is, that it will be much easier to write bindings for other languages now, because only a few simple types and functions have to be mapped to provide the full functionality.

Take a look at the README for more information.

Because of the high-level API, we now have the new header files elektra.h and a folder elektra in Elektra's include directory. Furthermore, we install the library libelektra-highlevel.so and the pkgconfig file elektra-highlevel.pc for easier detection.

For an example on how to build an application using this API take a look at this.

A big thanks to Klemens Böswirth for making this possible. Also big thanks to Dominik Hofer, who did all the foundation work for this API.

The following section lists news about the plugins we updated in this release.

key: - element 1
- element 2 # Incorrect Indentation!

the plugin currently prints an error message that looks like this:

config.yaml:2:1: mismatched input '- ' expecting end of map
- element 2 # Incorrect Indentation!
^^
config.yaml:2:37: extraneous input 'end of map' expecting end of document
- element 2 # Incorrect Indentation!
^

. The inspiration for this feature was taken from the book “The Definitive ANTLR 4 Reference” by Terence Parr. _(René Schwaiger)_

Enhanced the plugin to also check for concrete file or directory permissions such as rwx. For example, you can specify that a user can write to a certain directory or file which prevents applications of runtime failures once they try to access the given path (such as a log directory or file). Simply add check/path/user <user> and check/path/mode <modes> as specification (metadata) and be assured that you can safely set a path value to the key. A more detailed explanation can be found here _(Michael Zronek)_

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

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).

We have two minor incompatible changes:

For details of the changes see below Core and Libease.

// ~~^ Returns `2` (instead of `1`)
// ~~~~^ Returns `4` (instead of `1`)

If your program already used elektraArrayValidateBaseNameString and you check for a valid array element using the equality operator (== 1), then please use (>= 1) instead. For example, if you code that looks like this:

if (elektraArrayValidateBaseNameString(baseName) == 1) …;

, please update your code to check for a valid array element name like this:

if (elektraArrayValidateBaseNameString(baseName) >= 1) …;

. _(René Schwaiger)_

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

We are currently working on following topics:

and since recently:

In this release we created 986 commits in which 802 files were changed, with 21687 insertions(+) and 6912 deletions(-).

Following authors made this release possible:

Commits Author
1 Aybuke Ozdemir aybuk.nosp@m.e.14.nosp@m.7@gma.nosp@m.il.c.nosp@m.om
2 Gabriel Rauter raute.nosp@m.r.ga.nosp@m.briel.nosp@m.@gma.nosp@m.il.co.nosp@m.m
6 Bernhard Denner bernh.nosp@m.ard..nosp@m.denne.nosp@m.r@gm.nosp@m.ail.c.nosp@m.om
6 Dominic Jäger domin.nosp@m.ic.j.nosp@m.aeger.nosp@m.@gma.nosp@m.il.co.nosp@m.m
25 Peter Nirschl peter.nosp@m..nir.nosp@m.schl@.nosp@m.gmai.nosp@m.l.com
32 Mihael Pranjic mpran.nosp@m.j@li.nosp@m.mun.o.nosp@m.rg
66 Michael Zronek micha.nosp@m.el.z.nosp@m.ronek.nosp@m.@gma.nosp@m.il.co.nosp@m.m
112 Markus Raab elekt.nosp@m.ra@m.nosp@m.arkus.nosp@m.-raa.nosp@m.b.org
131 Klemens Böswirth k.boe.nosp@m.swir.nosp@m.th+gi.nosp@m.t@gm.nosp@m.ail.c.nosp@m.om
141 Dominik Hofer me@do.nosp@m.mini.nosp@m.khofe.nosp@m.r.co.nosp@m.m
464 René Schwaiger sanss.nosp@m.ecou.nosp@m.rs@me.nosp@m..com

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 by Markus Raab using GnuPG from here or on GitHub

Already built API-Docu 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.

Permalink to this NEWS entry

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

Best regards, Elektra Initiative