Elektra solves a non-trivial issue: how to abstract configuration in a way that software can be integrated and reconfiguration can be automated. Elektra solves this problem in a holistic way. Read why Elektra for an explanation of why such a solution is necessary. It can be seen as a virtual file system for configuration files.
Elektra already has an open and welcoming environment, with many interesting discussions. It is our interest that we keep it that way. To make this a bit more formal we added a code of conduct.
But without good introductions, it is easy to get lost in such a large initiative like Elektra. Thus we focused on writing great tutorials for this release!
Thanks to Armin Wurzinger for pointing to areas of improvement. A big thanks to Marvin Mall, Kurt Micheli, Christoph Weber and Thomas Waser!
If you like the tutorials, we would love to read from you. Please feel free to start a discussion or ask a question. We also added a FAQ and updated CONTRIBUTING
We now provide Ruby bindings for Elektra. The bindings are based on the C++ bindings and are generated by SWIG. A strong focus was put on a good integration with standard Ruby features and conventions, such as naming conventions, predicates, key and metadata iteration...
A short introduction shows some basic usage scenarios. More detailed examples can be found in the examples directory.
A big thanks to Bernhard Denner!
Following methods were hidden (static
) or removed:
mount*
methodstrie*
methodsbackend*
split*
keyGetParentNameSize
keyGetParentName
These are dozens of methods and it was required to adapt the unit tests to work with the hidden methods.
A big thanks to Kurt Micheli!
sudo !!
kdb set
: do not print what was not donekdb editor
handles non-modified files (will not do anything)kdb
does, can be disabled with -q
or
/sw/elektra/kdb/#0/current/quiet
.-v
now tells even more details (e.g. kdb-import
outputs
the key about to import)format=% -> %
to have key -> value
.ipv4
and
ipv6
keys.
(Thanks to Felix Berlakovich)In the perpetual effort to improve software quality, we made several improvements: (This information is mainly intended for Elektra’s developers.)
ELEKTRA_LOG
)ELEKTRA_ASSERT
prints better messages on failure and does not need &&
trick.VERBOSE
macro at many places.configure-debian-debug
and configure-debian-log
helper scriptsexternal-links.txt
to outputs
(The file is generated in the build directory and contains
all external-links. To validate them, use ./scripts/link-checker
)
(Thanks to Kurt Micheli)markdownlinkconverter
handles directories correctly (using stat
).
(Thanks to Kurt Micheli)plugin_variants
and array
.
(Thanks to Marvin Mall)infos/status
: readonly
, writeonly
, limited
(Thanks to Marvin Mall)update-infos-status
orders infos/status
and allows devs to easily add/rem
entries. (Thanks to Kurt Micheli)infos/status
: nodoc
, nodep
, unittest
, memleak
, configurable
(Thanks to Kurt Micheli)create_lib_symlink
, add PLUGIN
argument
and make it useful also for other library symlinks.ENABLE_DEBUG
.
(Thanks to Marvin Mall)ELEKTRA_
, added kdbmacros.h
ENABLE_DEBUG
also works with clang
and ENABLE_ASAN
now allows devs
to additionally enable sanitizers.
Thanks to Gabriel Rauter.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).
It is now possible to enquiry which plugins provide a specific format.
This needed changes in libtools, which got a new major revision.
Changes in the plugin's contract are fully compatible:
You can now use storage/ini
instead of storage ini
in infos/provides
which gives you the information that ini
is a storage format (and not
anything else the plugin might provide). For compatibility reasons,
the build system still adds storage ini
even if only storage/ini
is specified.
That means that kdb mount file.json /examples/json json
still will find
json
plugins even if they are not called json
but
yajl.
Another breaking change in libtools
is that appendNamespace
was renamed
to prependNamespace
.
Error messages changed a bit, so if you tried to parse them, make sure
to make the e
of error case-insensitive ([eE]
).
In the C++ binding, rewindMeta
is now const
and some methods
to check if a key is in a namespace were added.
The intercept libraries were moved to a common
folder.
They can now be included or excluded like other BINDINGS
.
For consistency reasons the libraries were also renamed
(libelektraintercept-fs.so
and libelektraintercept-env.so.0
),
but symlinks allow you to link against their old names
(lib/libelektraintercept.so
and lib/libelektragetenv.so.0
).
This information is intended for package maintainers.
BINDINGS=ALL
.
It is recommended to use SWIG
bindings instead, which
will be added with ALL
.BINDINGS
.
They will be added on glibc systems where BINDINGS=ALL
is used.TARGET_DOCUMENTATION_TEXT_FOLDER
was added for that purpose.
The files are:BIGPICTURE.md
, GOALS.md
, LICENSE.md
, METADATA.ini
, SECURITY.md
, AUTHORS
, CONTRACT.ini
, NEWS.md
, and WHY.md
Other new files are:
libelektra-base64.so
, libelektra-c.so
, libelektra-fcrypt.so
libelektra-required.so
, libelektra-simplespeclang.so
(only in EXPERIMENTAL
, not added by default, but with ALL
)site_ruby/_kdb.so
(ruby binding, only in ALL
)testcpp_keyio
, testkdb_error
, testmod_base64
,
testmod_fcrypt
(test binaries in TARGET_TOOL_EXEC_FOLDER
)Changed files are:
libelektraintercept-env.so
(renamed from libelektragetenv.so.
, but still available as symlink)libelektraintercept-fs.so
(renamed from libelektraintercept.so
, but still available as symlink)libelektratools.so.2
Elektra should work on every system that has CMake and a C/C++ compiler.
For this release we increased portability to better work with macOS, CentOS 7, and OpenSuse 42.
pkg-config
cmake
(most parts still work with version 2)A big thanks to Kai-Uwe Behrmann, Mihael Pranjić and Sebastian Bachmann.
/
from ~
paths
(Thanks to Thomas Waser)ENABLE_DEBUG
#988
(Thanks to Thomas Waser)KDB
environment variable in shell tests and fix counting of tests
for kdb run_all
.stderr
for elektrify-*
scriptsmake uninstall
(avoid @
)You can download the release from here and also here on GitHub
This release tarball now is also available signed by me using gpg
already built API documentation can be found here
Subscribe to the RSS feed to always get the release notifications.
For any questions and comments, please contact the Mailing List the issue tracker on GitHub or by email elektra@markus-raab.org.
For more information, see https://libelektra.org
Best regards, Markus