$darkmode
Elektra 0.11.0
|
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:
To run the application, the configuration should be specified, e.g., for mylong:
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.
/usr/local
. _(René Schwaiger)_network
plugin also supports port declarations to check if a port number is valid or if the port is available to use. _(Michael Zronek)_3.3
or later. _(René Schwaiger)_the plugin currently prints an error message that looks like this:
. The inspiration for this feature was taken from the book “The Definitive ANTLR 4 Reference” by Terence Parr. _(René Schwaiger)_
Yan LR’s lexer now
end of map
instead of MAP END
). _(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)_
We fixed some compiler warnings for the plugins
reported on FreeBSD. _(René Schwaiger)_
KDB_DB_SYSTEM
and KDB_DB_SPEC
paths using ~
to refer to a home directory. _(Klemens Böswirth)_KDB_DB_SYSTEM
is set to a relative path, it is now treated as relative to CMAKE_INSTALL_PREFIX
. This ensures that KDB_DB_SYSTEM
actually points to the same location no matter the current working directory. _(Klemens Böswirth)_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:
elektraArrayValidateBaseNameString
returns the offset to the first digit of the array index instead of 1
For details of the changes see below Core
and Libease
.
elektraPluginGetGlobalKeySet()
, for communication between plugins. See Global KeySet Handle for details. _(Mihael Pranjić)_elektraWriteArrayNumber
now uses kdb_long_long_t
for array indices to be compatible with the high level API. Similarly the value of ELEKTRA_MAX_ARRAY_SIZE
was changed to match this. _(Klemens Böswirth)_elektraArrayValidateBaseNameString
now returns the offset to the first digit of the array index, if the given string represents an array element containing an index. This update enhances the behavior of the function. Now it not only tells you if a name represents a valid array element, but also the start position of the array index.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:
, please update your code to check for a valid array element name like this:
. _(René Schwaiger)_
This is a new library containing only the function elektraGetOpts
. This function can be used to parse command line arguments and environment variables and add their values to keys in the proc namespace.
You can use opt
, opt/long
and env
to specify a short, a long option and an environment variable. For more information take a look at the tutorial and the code documentation of elektraGetOpts
. _(Klemens Böswirth)_
kdb spec-mount
correctly includes type plugin to validate type
. _(Markus Raab)_kdb setmeta
reports if it removed a metakey. _(Markus Raab)_system/elektra/version
now has metadata to indicate that it cannot be edited or removed. _(Dominic Jäger)_reformat-source
now also handles filenames containing spaces correctly. _(René Schwaiger)_reformat-markdown
formats Markdown files in the repository with prettier
. _(René Schwaiger)_reformat-source
, reformat-cmake
, reformat-shfmt
and reformat-markdown
don't format files that are ignored by Git anymore. _(Klemens Böswirth)_elektraMetaArrayToKS
was fixed. It now reflects the fact that the parent key is returned as well. _(Klemens Böswirth)_system
or user
). This has the advantage that the output of these tests does not change depending on the user that executes them. Before the update these tests used cascading keys. _(René Schwaiger)_check-env-dep
does not require Bash anymore. _(René Schwaiger)_fix-spelling
to check the documentation for common spelling mistakes. _(René Schwaiger)_prettier
. _(René Schwaiger)_testscr_check_formatting
now prints instructions that show you how to fix formatting problems. _(René Schwaiger)_ELEKTRA_PLUGIN_NAME
via CMake. See #1042. _(Peter Nirschl)_ELEKTRA_PLUGIN_FUNCTION
does not require the module name as parameter any more, instead the ELEKTRA_PLUGIN_NAME
compiler definition is being used. See #1042. _(Peter Nirschl)_ELEKTRA_README
, and ELEKTRA_PLUGIN_EXPORT
do not require the module name as parameter any more, instead the ELEKTRA_PLUGIN_NAME
compiler definition is being used. See #1042. _(Peter Nirschl)_project
command. _(René Schwaiger)_2.5
or later) via Homebrew. _(René Schwaiger)_FindAugeas.cmake
does not print an error message anymore, if it is unable to locate Augeas in the pkg-config
search path. _(René Schwaiger)_FindLua.cmake
does not print an error message anymore, if it is unable to locate a Lua executable. _(René Schwaiger)_pkg-config
erroneously reports that GLIB requires linking to the library intl
(part of GNU gettext). _(René Schwaiger)_FindLibOpenSSL.cmake
does not require pkg-config
anymore. The updated code also fixes some linker problems on macOS (and probably other operating systems too), where the build system is not able to link to OpenSSL using only the name of the OpenSSL libraries. _(René Schwaiger)_FindLibgcrypt.cmake
.The update fixes problems on macOS, where the build system excluded the plugin crypto_gcrypt
, although Libgcrypt was installed on the system. _(René Schwaiger)_iconv
. This update fixes linker problems with the iconv
and filecheck
plugin on FreeBSD 12. _(René Schwaiger)_pkg-config
anymore. _(René Schwaiger)_We added
shfmt
, to the Dockerfile for Debian sid. _(René Schwaiger)_
configure
script from the top-level directory. CMake is now popular enough so that this helper-script is not needed. _(René Schwaiger)_We now use Cirrus CI to build and test Elektra on
. Both of these build jobs use -Werror
to make sure we do not introduce any code that produces compiler warnings. _(René Schwaiger)_
🍎 Clang
tests Elektra on macOS. _(René Schwaiger)_🍎 Clang ASAN
, which uses Clang with enabled AddressSanitizer to test Elektra on macOS. _(René Schwaiger)_🍎 FULL
compiles and test Elektra using the CMake options BUILD_SHARED=OFF
an BUILD_FULL=ON
. _(René Schwaiger)_🍎 MMap
, which tests Elektra using mmapstorage
as default storage module. _(René Schwaiger)_ElektraUninstall.cmake
removes all of the installed files. _(René Schwaiger)_formatting-check
now also checks the formatting of Shell scripts. _(René Schwaiger)_🍏 Clang
and 🍏 Check Shell
in favor of the Cirrus build job 🍎 Clang
. _(René Schwaiger)_🍏 Clang ASAN
in favor of the Cirrus build job 🍎 Clang ASAN
. _(René Schwaiger)_🍏 FULL
in favor of the Cirrus build job 🍎 FULL
. _(René Schwaiger)_🍏 MMap
in favor of the Cirrus build job 🍎 MMap
. _(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 e.14 7@gma il.c om |
2 | Gabriel Rauter raute r.ga briel @gma il.co m |
6 | Bernhard Denner bernh ard. denne r@gm ail.c om |
6 | Dominic Jäger domin ic.j aeger @gma il.co m |
25 | Peter Nirschl peter .nir schl@ gmai l.com |
32 | Mihael Pranjic mpran j@li mun.o rg |
66 | Michael Zronek micha el.z ronek @gma il.co m |
112 | Markus Raab elekt ra@m arkus -raa b.org |
131 | Klemens Böswirth k.boe swir th+gi t@gm ail.c om |
141 | Dominik Hofer me@do mini khofe r.co m |
464 | René Schwaiger sanss ecou rs@me .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 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