ElektraInitiative/libelektra: 0.9.1 Release
Authors/Creators
- markus2330
- René Schwaiger
- kodebach
- tom-wa
- Mihael Pranjić
- e1528532
- Peter Nirschl1
- Daniel Bugl2
- Namoshek
- winlu
- Philipp
- Piankero
- Felix Berlakovich
- waht
- Dominic Jäger
- Manuel Mausz
- Ian Donnelly
- 0003088
- Dominik Hofer
- Bernhard Denner
- e01306821
- Gabriel Rauter
- Pino Toscano
- alexsaber
- Marcel H
- reox
- Christoph
- vLesk
- Mistreated
- Dmytro Moiseiuk
- 1. GTW Management Consulting GmbH
- 2. @TouchLay
Description
- guid: 8c64fe8a-87a5-4b72-b772-d98c8a4a5efd
- author: Mihael Pranjić
- pubDate: Tue, 26 Nov 2019 14:55:19 +0100
- shortDesc: Code Generation, Merge Library, KDE Integration
We are proud to release Elektra 0.9.1.
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- Code generation is ready for productive use. (Klemens Böswirth)
- Elektra now has a technical preview of a new merge library offering a number of merge strategies. It is written in C99 and can currently be used with
kdb cmerge. (Dominic Jäger) - We are working on integrating Elektra into KDE. A new Elektra plugin called
kconfigwas added which can read KDE's kconfig ini files. Additionally we are working on a fork of KDE'sKConfigconfiguration system and patching it to use libelektra. (Dardan Haxhimustafa and Felix Resch)
While the new kdb gen was already included in the last release, it is now fully functional and ready for productive use. To get started take a look
at the new man-page for kdb-gen(1).
If you specifically want to use it with the High-Level API take a look at this tutorial.
We also created a new CMake function that will be available, if you include Elektra via CMake's
find_package. The function is called elektra_kdb_gen and can be used to tell CMake about files
that are generated via kdb gen. (Klemens Böswirth)
The following section lists news about the modules we updated in this release.
General- We removed 12 obsolete or unfinished plugins:
boolean,cachefilter,cpptype,dini,enum,regexstore,required,haskell,simplespeclang,regexdispatcher,typechecker,struct. (Markus Raab, René Schwaiger)
- We unified the name of the config check function of the plugins to
nameOfPluginCheckConf. Before this update some plugins used the namenameOfPluginCheckConfiginstead. (René Schwaiger) - We improved the error messages in
crypto,fcrypt, andgpgmeplugins. (Peter Nirschl) - Handle return codes (error codes) of
execvin the GPG module. (Peter Nirschl) - Improved the documentation of
ksAppendKeyregarding ownership of keys. (Raphael Gruber) - We removed the experimental status of the folliwing plugins:
goptsspecload. (Klemens Böswirth)
- We added the following experimental plugins:
kconfig. (Dardan Haxhimustafa)
We removed the experimental plugin. For a plugin that is able to parse similar syntax, please take a look at the
plugins. (René Schwaiger)
GOpts- The error message, if non of the gopts variants can be compiled, was improved. (Klemens Böswirth)
- A better error, if the plugin fails to load
argvfrom the system, was added. (Klemens Böswirth) - A function to detect help mode, without invoking
elektraGetOptswas added. It simply checks, whether--helpis one of the string inargv. (Klemens Böswirth) - Increase test timeout from 120s to 240s. (Mihael Pranjić)
- We added a plugin which can be used to parse kconfig ini files into a keyset and save keysets to such files. (Dardan Haxhimustafa)
- We now store the OPMPHM inside of the mmap format. (Mihael Pranjić)
- The storage format was changed and many sanity checks were improved or added. (Mihael Pranjić)
- Enforce consistency by writing the magic file footer last. (Mihael Pranjić)
- Filter empty meta KeySets to save space. (Mihael Pranjić)
- The plugin now correctly sets the path in the
parentKey. It therefore now supports set calls. (Klemens Böswirth)
- The Markdown Shell Recorder test of the plugin now also works, if you execute it as root user. (René Schwaiger)
- There is now the config key
missing/logthat allows logging of all missingrequired keys. (Klemens Böswirth) specnow internally handles errors differently. There should be no external impact apart from better performance. (Klemens Böswirth)
- We now treat relative paths as relative to
KDB_DB_SPECinstead of the current working directory. (Klemens Böswirth) - Changes to
defaultortypemetadata are no longer supported, since they are not safe in every case. (Klemens Böswirth) - The plugin no longer has the
experimentalstatus. (Klemens Böswirth)
- We made sure that building the plugin works, if you use the latest version of CMake (
3.15.3) and Boost (1.71). (René Schwaiger)
- We added an option to disable the restoring of boolean values. This useful for storage formats like YAML that have native boolean types. (Klemens Böswirth)
- Yajl now correctly supports Elektras boolean types using the
typeplugin. For example, settingon,enableortrueall map to JSONs nativetruevalue. See the type plugin for more details about boolean types. (Philipp Gackstatter)
- We removed the plugin in favor of Yan LR. (René Schwaiger)
- We removed the plugin in favor of Yan LR. (René Schwaiger)
The text below summarizes updates to the C (and C++)-based libraries of Elektra.
CompatibilityWe introduced several incompatible changes:
- The library
libelektra, which is a collection of different elektra libraries, is now removed. Users of CMake or pkg-config should not be affected. Otherwise change-lelektrato-lelektra-core -lelektra-kdbor whatever parts of Elektra your application uses. (Markus Raab) - The conversion functions
elektraKeyTo*andelektra*ToStringare now part of theelektra-easelibrary instead of theelektra-highlevellibrary. This should not cause any breaking changes sinceelektra-highlevelalready depends onelektra-ease. In addition the headerelektra/conversion.his kept for compatibility. (Klemens Böswirth) - Fixes in documentation that might disallow some code operating in grey areas before. (Markus Raab)
- We removed
keyRelandkeyRel2since it can be easily replaced by other existing functions. (Philipp Gackstatter)
We changed the following symbols:
- ELEKTRA_PLUGIN_COMMIT
- elektraKeyToString
- elektraKeyToBoolean
- elektraKeyToChar
- elektraKeyToOctet
- elektraKeyToShort
- elektraKeyToUnsignedShort
- elektraKeyToLong
- elektraKeyToUnsignedLong
- elektraKeyToLongLong
- elektraKeyToUnsignedLongLong
- elektraKeyToFloat
- elektraKeyToDouble
- elektraKeyToLongDouble
- elektraBooleanToString
- elektraCharToString
- elektraOctetToString
- elektraShortToString
- elektraUnsignedShortToString
- elektraLongToString
- elektraUnsignedLongToString
- elektraLongLongToString
- elektraUnsignedLongLongToString
- elektraFloatToString
- elektraDoubleToString
- elektraLongDoubleToString
- kdb_octet_t
- kdb_boolean_t
- kdb_short_t
- kdb_long_t
- kdb_long_long_t
- kdb_unsigned_short_t
- kdb_unsigned_long_t
- kdb_unsigned_long_long_t
- kdb_char_t
- kdb_float_t
- kdb_double_t
- kdb_long_double_t
- A new plugin function,
kdbCommit, was implemented. The function is carried out in thecommitphase ofkdbSetand separates the commit functionality from thekdbSet()function. (Vid Leskovar) kdbconfig.his no longer included in the installed headers. This is because it could cause conflicts with otherconfig.h-type headers from applications. (Klemens Böswirth)ksAppendKey: state that it only fail on memory problems. (Markus Raab)- Fix memory leak in
kdbGet. (Markus Raab) - Implemented
kdberrors.hdirectly without generation of thespecificationfile because of drastically reduced error code count (Michael Zronek) keyIsDirectBelowwas renamed tokeyIsDirectlyBelow. (Philipp Gackstatter)keyMetawas added to provide access to a key's underlying KeySet that holds its metadata keys. (Philipp Gackstatter)- Removed the obsolete
ksLookupByStringandksLookupByBinary, as well as deprecatedKDB_O_*options. (Philipp Gackstatter) - Added
keyLockandkeyIsLocked. (Manuel Mausz) - Removed
keyVInit. (Manuel Mausz)
- The option
-his no longer used to indicate help mode. Only--help, will invoke help mode. (Klemens Böswirth)
- Removed or moved several functions of
kdbproposal.h:elektraKsToMemArraywas moved tokdbease.h,elektraLookupOptionswas moved tokdbprivate.h,keySetStringFwas moved tokdbinternal.h,- Removed
ksPrevandelektraKsPrev, - Removed
elektraRenameKeysand replaced it withksRenameKeys. (Philipp Gackstatter)
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.
- Warnings about cmake policies are avoided. (Markus Raab)
- We removed the Haskell and GI bindings. (Markus Raab)
- Avoid unnecessary copying std::string where possible (setString and setMeta only). (Manuel Mausz)
- CPP: add
Key::is{Name,Value,Meta}Locked. (Manuel Mausz) - GLIB: removed
gelektra_keyset_resize. (Manuel Mausz) - GLIB: removed
gelektra_keyset_rewind,gelektra_keyset_next,gelektra_keyset_current,gelektra_keyset_getcursor,gelektra_keyset_setcursor. (Manuel Mausz) - GLIB: renamed
gelektra_keyset_atcursortogelektra_keyset_at. (Manuel Mausz) - gsettings: adapt iterator. (Manuel Mausz)
- SWIG: Add
KeyNotFoundExceptionexception. (Manuel Mausz) - SWIG: Fix KeySet equality operators. (Manuel Mausz)
- SWIG/Python:
hash(key)will throw unless the key name is locked. (Manuel Mausz) - SWIG/Python: Add operator overloadings for
len(Key),repr(Key),str(KeySet),repr(KeySet). (Manuel Mausz) - SWIG/Python: Add alternative Key constructor
Key(name, value, [dict]). (Manuel Mausz) - SWIG/Python: Add
KeySet.extend([key1, key2,...])andKeySet.append(key1, key2, ...). (Manuel Mausz) - SWIG/Python: Add
KeySet.append(key_name, key_value, key_opts)which directly creates and appends a key. (Manuel Mausz) - SWIG/Python: Add
KeySet.unpack_names(),KeySet.unpack_basenames(),KeySet.filter(func),KeySet.filter_below(where),Key.array_elements(). (Manuel Mausz)
- Upgraded maven dependencies for Java binding (Michael Zronek)
- Completely overhauled the Java binding to be able to use Elektra plugins directly. A new PluginLoader can load Elektra plugins or a native implemented Java plugin. All Plugins now implement the new Plugin interface. For an example see the test case. (Michael Zronek)
- The java binding now supports the error codes in a native way. All exceptions contain the necessary information. (Michael Zronek)
- Further improved the java binding such as wording and documentation. (Michael Zronek)
- Add the
elektra-syscrate which contains raw bindings to libelektra for Rust. (Philipp Gackstatter) - Add the
elektracrate which contains safe wrapper methods for the raw bindings. The crate contains bindings for the low-level API, which means that the data typesKeyandKeySetcan now safely be used from Rust. The Rust version of the API has been designed to take advantage of Rust's type system and to be in accordance with the memory safety of Rust. For instance, the Key has been divided intoStringKeyandBinaryKey, to prevent type mismatches at compile time. With the binding forKDB, one can take advantage of the elektra ecosystem from Rust. See the Readme for more. (Philipp Gackstatter) - The elektra and elektra-sys crates have been published to crates.io for easier usage. (Philipp Gackstatter)
- Rewrote the
KDBErrorto follow the specification fully and in particular allow catching out of memory errors by catching resource errors. (Philipp Gackstatter) - Added a
keyset!macro to easily create a keyset with many keys in a single invocation. (Philipp Gackstatter)
KDB_EXEC_PATH, which can be used to add further external tools tokdb, now supports:to separate paths.kdb list-toolsandrun_envwere improved to take advantage of this. (Markus Raab)- Checks for
kdbCommithave been added to kdb plugin-check. (Vid Leskovar) - add PID file config setting for kdb-run-rest-frontend (Markus Raab)
- Added
kdb meta-showcommand which prints out all metadata along with its values for a given key. (Michael Zronek) - Removed
kdb vsetas it does not properly put meta-data to the spec namespace. (Michael Zronek) - Renamed kdb plugin commands following a hierarchical structure.
kdb infois nowkdb plugin-info,kdb checkis nowkdb plugin-checkandkdb listis nowkdb plugin-list. We also removed the obsoletekdb fstab. (Philipp Gackstatter) - Renamed kdb meta commands:
kdb getmetais nowkdb meta-getkdb lsmetais nowkdb meta-lskdb showmetais nowkdb meta-showkdb rmmetais nowkdb meta-rmkdb setmetais nowkdb meta-set(Philipp Gackstatter)
- Fix test tool
gen-gpg-testkeyby giving a narrower GPG key description. Fixes mismatches with existing GPG keys that contain "elektra.org" as e-mail address. (Peter Nirschl) kdb list-commandsandkdb plugins-listnow sort their output in an alphabetical order (Anton Hößl)kdb plugin-listdoes now mention in the helptext that with option-vthe output is sorted by the plugin status (Anton Hößl)kdb import,kdb exportandkdb editornow search the plugin database for suitig plugins so it's now possible to runkdb export /hello jsoninstead of having to specify the plugin for the desired format directly. (Anton Hößl)getandmount: Remove dependency onkdbprivate.h(Philipp Gackstatter)
- We structured the scripts. (Markus Raab)
Removed the scripts
scripts/elektra-merge,scripts/elektra-mount,scripts/elektra-umount,convert-fstab,convert-hosts,convert-inittab,convert-users,scripts/benchmark_libsplit.sh,scripts/zshandexample-xorg. (Markus Raab)
The script run_icheck now also work correctly, if the last entry of
icheck.suppressiondoes not end with a newline character. (René Schwaiger)- Renamed
scripts/run_dev_envtoscripts/dev/run_env. (Markus Raab) - The script
draw-all-pluginsnow also works properly, if the repository path contains space characters. (René Schwaiger) - The script
link-checkernow deduplicates the list of links before checking them. The timeout and amount of retries was also reduced. Lastly the script now supports a whitelist. Any link stored intests/linkchecker.whitelistwill not be checked. (Klemens Böswirth) - We removed a script used to compare the runtime performance of YAML plugins. (René Schwaiger)
- Cleanup: separation of dev, admin and completion scripts. (Markus Raab, Rene Schwaiger)
- Pre-commit hook
pre-commit-check-formattingnow lives inscripts/dev/pre-commit-check-formatting. (Klemens Böswirth) - The new script reformat-javascript formats the JavaScript code of the repository using the tool
prettier. (René Schwaiger) - We renamed
- the script
reformat-sourcetoreformat-c, and - the script
reformat-shfmttoreformat-shell. (René Schwaiger)
- the script
- The script cmake-format now requires
cmake-format0.6. (René Schwaiger) - The new script reformat-java formats the Java code in the repository using
clang-format. (René Schwaiger)
- Fix TODOs. (Markus Raab)
- The Markdown Shell Recorder now also works correctly on FreeBSD. (René Schwaiger)
- Added decision for array concept of warnings. (Michael Zronek)
- We updated our Doxygen configuration file, removing the outdated
PERL_PATHandMSCGEN_PATHoptions. (René Schwaiger) - Added a tutorial on how to write language bindings. Visit our new README. (Michael Zronek, Raphael Gruber, Philipp Gackstatter)
- Clarified subtyping in the language bindings tutorial. (Michael Zronek)
- A second tutorial on writing bindings for the high-level API was created as well. (Klemens Böswirth, Raphael Gruber)
- Added info on how to include xerces plugin with homebrew installation. (Anton Hößl)
- We updated links for the INI parsing library Nickel and the documentation for the ini plugin. (René Schwaiger)
- We removed links to old and disabled Jenkins build jobs. (René Schwaiger)
- The compile instructions do not assume that you use
makeorgccto build Elektra anymore. (René Schwaiger) - Add hints about reformatting with docker. (Dominic Jäger)
- Reference testing with Docker tutorial in main testing documentation. (Dominic Jäger)
- Add instructions about sourcing on FreeBSD. (Dominic Jäger)
- Add information on debuggers to main testing documentation. (Dominic Jäger)
- Added design decision for error code implementations. (Michael Zronek)
- Fixed some typos and links in the documentation and add new iterate example. (Philipp Gackstatter)
- Clarified warnings metadata in the error-handling guideline. (Michael Zronek)
- We fixed minor spelling mistakes in the documentation. (René Schwaiger)
- Corrected buildserver documentation. (Djordje Bulatovic)
- Add merge library into kdbset example. (Dominic Jäger)
- We updated links for the INI parsing library Nickel. (René Schwaiger)
- Added a new Get Started. (Hani Torabi)
- Added some informations about contributing to Elektra. (Hani Torabi)
- Further imporvement on buildserver documentation. (Djordje Bulatovic)
- Further improvement of the buildserver documentation. (Djordje Bulatovic)
- We changed how the formatting test detects code differences. This update should get rid of transient errors as reported here. (René Schwaiger)
- We disabled the test for the conversion engine. For more information, please take a look at issue #3086. (René Schwaiger)
- We disabled the test
testmod_zeromqsendfrom the commandkdb run_all, since it caused timeouts in high load scenarios. (Mihael Pranjić) - The (Markdown) Shell Recorder now prints the protocol for a failed test, even if the test modified the database permanently. (René Schwaiger)
- We rerun ctest twice to ignore temporary build failures. (Markus Raab)
kdbtypes.his now generated directly via a CMakeconfigure_filecall. (Klemens Böswirth)- The variable
ELEKTRA_STAT_ST_SIZE_Fnow contains the correct format specifier for thest_sizemember of thestatstruct on macOS. (René Schwaiger) - We simplified and unified the CMake code for the Shell Tests and the Shell Recorder. (René Schwaiger)
- CMake now prints warnings about missing man pages. (René Schwaiger)
- The build system does not update a man page in the folder doc/man any more, if ronn only changed the creation date of the man page. (René Schwaiger)
- We now have a setup for proper symbol versioning. (Klemens Böswirth)
- We do not use implicit typing in the code of the
conditionalsandyamlcppplugin any more. After this update, the code compiles without any warnings, even though we now use the compiler switch-Wconversion. (René Schwaiger) - JNA and JNI are not built concurrently anymore to avoid dependency resolution fails. (Michael Zronek)
- Added Dockerfile for Ubuntu Bionic (Djordje Bulatovic)
- We removed all Haskell packages from the Dockerfiles in the folder scripts/docker. (René Schwaiger)
- We added a basic Dockerfile for Arch Linux. (René Schwaiger)
- We updated the Dockerfile for Alpine Linux. (René Schwaiger)
- We added a Vagrantfile for a virtual machine based on FreeBSD 12. (René Schwaiger)
- The reformatting script now checks that the correct version of
cmake-formatis used. (Klemens Böswirth, René Schwaiger) - Fixed augeas crash if fopen fails. (Michael Zronek)
- Fixed no message being shown when trying to mount as non-root user. (Michael Zronek)
- Fixed no message being shown when trying to mount as non-root user. (Michael Zronek)
- The reformatting scripts now run in parallel. (Markus Raab)
- Improved various error messages and synchronized documentations. (Michael Zronek)
- Improved
rangeplugin error message. (Michael Zronek) - Improved error codes documentation to clarify the hierarchy for developers. (Michael Zronek)
- Out of memory error messages are now uniform. (Michael Zronek)
- Release notes now use git's union merge driver. (Dominic Jäger)
- Updated asciinema recording to correctly use
sudo. (Michael Zronek) - Please remove me. I'm only here for the build server. (Dominic Jäger)
- Fixed outdated docu in plugins.md. (Michael Zronek)
- I'm only here for the build server. This PR contains only fix ups. (Dominic Jäger)
- Please remove me. I'm only here for the build server. (Dominic Jäger)
- Please remove me. I'm only here for the build server. (Dominic Jäger)
- Add pkg-config file for kdbmerge. (Raphael Gruber)
- The
🔗 Checkbuild job now merges PRs before checking links. (Klemens Böswirth) - We enabled logging in the build job
🍎 Clang. This update makes sure that Elektra's logging code compiles without warnings on macOS. (René Schwaiger) - All macOS build jobs now use Xcode
11.1instead of Xcode10.1. (René Schwaiger) - We removed all non-POSIX shell code from the Cirrus configuration file. (René Schwaiger)
- The macOS build jobs now use Ruby
2.6. (René Schwaiger) - We do not call
ninjadirectly anymore. Instead we usecmake --build. This has the advantage that we do not have to care about the Generator used by CMake. (René Schwaiger) - We added the build job
😈 ASAN, which builds and executes Elektra on FreeBSD with enabled AddressSanitizer. (René Schwaiger) - We now store common commands in one place at the top of the configuration file. This makes it easier to selectively disable certain build jobs. (René Schwaiger)
The new job
📚 Checkchecks- that the man pages are up to date, and
- that building the PDF version of the Doxygen documentation works. (René Schwaiger)
The new build job
🐧 Fedorabuilds and tests Elektra on Fedora Linux. (René Schwaiger)
- We upgraded all servers to buster so that debian buster docker image work. (Markus Raab)
- We now also build Debian buster packages. (Markus Raab)
- Enable WebUI build job again. (Markus Raab)
- Improve docu. (Markus Raab)
- Jenkins does not auto cancel build jobs of the
masterbranch anymore. (René Schwaiger) - Updated xUnit plugin in Jenkinsfile. (Djordje Bulatovic)
- The build job
🍏 GCCnow uses the Travis Homebrew addon to install dependencies. (René Schwaiger) - We now build and test Elektra on Ubuntu
18.04(Bionic Beaver) instead of Ubuntu16.04(Xenial Xerus). (René Schwaiger)
The website is generated from the repository, so all information about plugins, bindings and tools are always up to date. Furthermore, we changed:
- The website now lives in the folders website-frontend and website-backend to avoid confusion with the REST backend of the Web-UI. (Markus Raab)
- Improve mainpage of website, restructure getting started. (Markus Raab)
- Renamed the sub menu Getting Started in the menu Documentation to About Elektra and removed the sub-sub-menus Compiling, Installation and Tutorials. These sub-sub-menus are now sub-menus of Documentation. A new sub menu labeled Get Started added to the menu Documentation with some newcomer-friendly informations. Renamed the Getting Started sub menu in Development to Contribute to Elektra. The green button on the main page is routed to the new Get Started page. (Hani Torabi)
- Improve main page of website, restructure getting started. (Markus Raab)
We are currently working on following topics:
- Merge tool in C99 (the same language as the core of Elektra). This is planned to supersede the existing merge tool. The goal is to reduce the number of merge conflicts in contrast to regular merge tools using the specific semantics of configuration files. (Dominic Jäger)
We closed 75 issues for this release.
About 29 authors changed 1651 files with 82267 insertions(+) and 41690 deletions(-) in 1623 commits.
Thanks to all authors for making this release possible!
Finished Thesis- Klemens Böswirth: We explore the feasibility of using Elektra in a real-world project. We focused especially on using the high-level API with code-generation. In the thesis, we implemented new versions of LCDproc, one with the low-level API and one with the high-level API. Then we did some benchmarks to compare them. Our results indicate, that Elektra is very much usable in real-world projects. However, we also found that there is still potential for further optimizations.
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:
- name: /home/mpranj/workspace/ftp/releases/elektra-0.9.1.tar.gz
- size: 7534156
- md5sum: 42ff587adb7c3f15807ac4dae6722261
- sha1: bf250260a4efa20e5444f0a7f0027430bc7aa8a0
- sha256: df1d2ec1b4db9c89c216772f0998581a1cbb665e295ff9a418549360bb42f758
The release tarball is also available signed by Mihael Pranjic 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.
For more information, see https://libelektra.org
Best regards, Elektra Initiative
Files
ElektraInitiative/libelektra-0.9.1.zip
Files
(8.9 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:3d22d61af3487805dedca3fca34317f7
|
8.9 MB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/ElektraInitiative/libelektra/tree/0.9.1 (URL)