Elektra  0.9.0
0.8.<<VERSION>> Release

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 (checked by shell recorder) or asciinema for highlighted items.

Please add your name at the end of every contribution. Syntax: _(your name)_

<<scripts/generate-news-entry>>

We are proud to release Elektra 0.8.<<VERSION>>.

Possible Introduction Text

We are proud to present our largest release so far. It is the first release of the 0.9.* version series, which goal is it:

The 0.8.* version series will still be maintained but with a low priority – the highest priority will be to get Elektra 1.0.0 done. If you have maintenance requests and want 0.8.26 to be released, please contact us via busin.nosp@m.ess@.nosp@m.libel.nosp@m.ektr.nosp@m.a.org

Business Plans

To get away from a purely research-oriented approach to a mature foundation, we also need paid employees to fix problems.

We plan to introduce following ways of income:

  1. donations
  2. paid support/feature requests
  3. consultancy

If you are interested in any of these, please contact us via busin.nosp@m.ess@.nosp@m.libel.nosp@m.ektr.nosp@m.a.org

Please note, that Elektra will definitely stay 100% free software (BSD licensed).

What is Elektra?

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

Highlights

Type (New Version)

The type plugin was completely rewritten in C. The old version is now called cpptype. _(Klemens Böswirth)_

The new type plugin also provides the functionality of the enum and the boolean plugin. These plugins are now considered obsolete and you should use type instead.

A few notes on compatibility:

To switch from enum to the new type, you have to add either check/type=enum or type=enum. Without a check/type or type metakey, the type plugin will ignore the key. We now also support converting enum values to and from integer values (see README).

To switch from boolean to the new type, you don't have to do anything, if you used the default config. If you used a custom configuration please take a look at the README.

kdbEnsure

kdbEnsure is a new function in elektra-kdb. It can be used to ensure that a KDB instance meets certain clauses specified in a contract. In principle this a very powerful tool that may be used for a lot of things. For now it only supports a few clauses concerning plugins:

All changes made by kdbEnsure are purely temporary. They will only apply to the KDB handle passed to the function.

IMPORTANT: kdbEnsure only works, if the list plugin is mounted in all appropriate global positions.

Note: kdbEnsure right now ignores the infos/recommends and infos/needs metadata of plugins, so you have to explicitly take care of dependencies. _(Klemens Böswirth)_

Error Code Concept

With this release, we changed our messy error code system into a more structured and clean way. Similar to SQLStates we changed to structure of our error codes and migrated them. Have a look into the new codes. This allows us to easily extend the specification without breaking existing codes and to avoid risking duplicated errors as we had before. _(Michael Zronek)_

Plugins

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

Base64

Cache

crypto / fcrypt

CSVStorage

filecheck

gOpts

INI

macaddr

mINI

mmapstorage

multifile

Quickdump

Reference

RGBColor

semlock

removed due to:

spec

Specload

Syslog

unit

YAJL

YAMBi

key 1: - element 1
- element 2
key 2: scalar
- element 3

, the plugin prints an error message that includes the following text:

config.yaml:2:2: syntax error, unexpected start of sequence, expecting end of map or key
- element 2
^
config.yaml:4:8: syntax error, unexpected start of sequence, expecting end of map or key
- element 3
^

. _(René Schwaiger)_

YAML CPP

user/array/#0
user/array/#1
user/map/#0
user/map/key
user/map/#1

, user/array/#0 and user/array/#1 represent array elements, while user/map/#0, and user/map/#1 do not, since the key set also contains the key user/map/key. The following Markdown Shell Recorder snippet shows the new behavior of the plugin:

kdb mount config.yaml user yamlcpp
kdb set user/array/#0 one
kdb set user/array/#1 two
kdb set user/map/#0 three
kdb set user/map/key four
kdb set user/map/#1 five
kdb file user | xargs cat
#> array:
#> - one
#> - two
#> map:
#> "#0": three
#> "#1": five
#> key: four

. _(René Schwaiger)_

- ~
- - ~
- ~
- map:
- arr

. _(René Schwaiger)_

root:
- element: one
- element: two

to the key set that contains the following keys:

user/tests/yaml/root
user/tests/yaml/root/#0/element
user/tests/yaml/root/#1/element

YAML Smith

kdb mount config.yaml user/tests/yaml yaml
kdb set user/tests/yaml/common/one/#0 value
kdb set user/tests/yaml/common/two/#0 first
kdb set user/tests/yaml/common/two/#1 second
kdb export user/tests/yaml yamlsmith

now prints the following YAML data:

common:
one:
- "value"
two:
- "first"
- "second"

. _(René Schwaiger)_

Yan LR

YAwn

key: value
- element

the plugin prints an error message that contains the following text:

config.yaml:2:3: Syntax error on input “start of sequence”
- element
^

. _(René Schwaiger)_

YAy PEG

"double quoted

now includes the following text

1:14: Missing closing double quote or incorrect value inside flow scalar
"double quoted
^

. _(René Schwaiger)_

- key1: value1
key2: value2

and compact sequences:

- - element1
- element2

correctly. _(René Schwaiger)_

Libraries

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

Compatibility

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

Core

Ease

<>

<>

Bindings

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.

<>

<>

Tools

Code generation

kdb gen is now no longer an external tool implemented via python, but rather a first class command of the kdb tool. For now it only supports code generation for use with the highlevel API. Try it by running kdb gen elektra <parentKey> <outputName>, where <parentKey> is the parent key of the specification to use and <outputName> is some prefix for the output files. If you don't have your specification mounted, use kdb gen -F <plugin>:<file> elektra <parentKey> <outputName> to load it from <file> using plugin <plugin>.

.. _(Klemens Böswirth)_

Scripts

Benchmarks

benchmark_plugingetset benchmarks/data user yaypeg get

. _(René Schwaiger)_

Documentation

Style

Tutorials

Spelling Fixes

Other

filename:line:0

instead of

filename|line col 0|

to show the location data for broken links. This is also the same style that Clang and GCC use when they display location information for compiler errors. This update has the advantage, that certain tools such as TextMate are able to convert the location data, providing additional features, such as clickable links to the error source. _(René Schwaiger)_

Tests

Source Code Checks

Build

CMake

Docker

Alpine Linux

Debian

Ubuntu

Other Updates

Vagrant

Infrastructure

Cirrus

Jenkins

Restyled

Travis

Website

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

Outlook

We are currently working on following topics:

Statistics

Following authors made this release possible:

<<scripts/git-release-stats 0.8.<<VERSION>>>>

We closed 114 issues for this release.

Join the Initiative!

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.

Get the Release!

You can download the release from here or GitHub

The hashsums are:

<<scripts/generate-hashsums>>

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.

Stay tuned!

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