ElektraInitiative/libelektra
Elektra serves as a universal and secure framework to access configuration settings in a global, hierarchical key database.
π Changes
- guid: e0a2b6f4-b18d-47d8-b642-e27907255666
- author: Tomislav Makar
- pubDate: Tue, 23 May 2023 13:33:52 +0200
- shortDesc: New Changetracking API, New spec plugin, Go into repo
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.10.0-release).
- You can try out the latest Elektra release using our docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run:
- ```sh
- docker pull elektra/elektra
- docker run -it elektra/elektra
- + 1 more
π¦ Highlights
- New Changetracking API
- New spec plugin
- Go into repo
β¨ New Changetracking API
- We've created a new KeySet diffing and changetracking API for both internal and external use.
- Several plugins already had their own implementations to detect changes made to the key database.
- Every implementation did something different and results varied.
- With this new release every plugin now uses the same shared implementation, with identical results!
- To try the amazing new API yourself, take a look at [the tutorial](../tutorials/changetracking.md).
- Elektra's internal code now also uses this new API to detect which backends to execute.
- This can lead to better performance in I/O bound cases, where previously certain keys would have been detected as changed when they weren't.
- We ran some memory benchmarks and found a slightly increased memory usage on a stock instance of Elektra.
- + 20 more
β¨ New spec plugin
- The spec plugin was rewritten to use the standardized error handling in Elektra.
- It is now strictly defined that the `spec` plugin throws a warning on `kdbGet` and on any other call an error.
- Default values are now created in the `default` namespace.
- The instantiated array specifications are now also created in the `default` namespace.
- Keys with a require metakey and no default metakey do throw an error now.
- Known limitations:
- `#` and `_` keys do not work on MINGW
- No defaults for `_` globbing character
- + 1 more
π¦ Go into repo
- The go binding is now inside of `libelektra` repository.
- It is now also included into our build pipeline.
- For more information on how to use it see [go readme](../../src/bindings/go-elektra/README.md).
- > NOTE: On information how to publish new versions of `go-elektra` to go packages see [go-publishing](https://go.dev/doc/modules/publishing).
π¦ Plugins
- The following text lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ General
- Updated target name of shared object files according to [#3486](https://issues.libelektra.org/3486)
π¦ spec
- Rewrite spec plugin, fix bugs and use correct error handling _(Tomislav Makar @tmakar)_
- Remove info metakey from spec plugin _(Tomislav Makar @tmakar)_
π¦ counter
- Move `static` variables into functions to avoid global variables _(@kodebach)_
π logchange
- Utilize new changetracking API _(Maximilian Irlinger @atmaxinger)_
- Add Maximilian Irlinger as maintainer _(Maximilian Irlinger @atmaxinger)_
π¦ yajl
- The `itKs` global variable workaround, which was used to replace the now removed internal `KeySet` cursor, was replaced with a custom context struct. _(@kodebach)_
π¦ toml
- The `flex` lexer and `bison` parser are now fully reentrant and therefore thread-safe. _(@kodebach)_
π¦ multifile
- Remove multifile plugin as it is unmaintained and conflicts with the new backend architecture _(Maximilian Irlinger @atmaxinger)_
π¦ c
- Add Florian Lindner as maintainer _(Florian Lindner @flo91)_
- Use separate symbols for `set` and `commit` functions to satisfy `kdb plugin-check` _(@kodebach)_
- Use new `elektraPluginGetPhase()` instead of counting executions _(@kodebach)_
π¦ mmapstorage
- > Note: The plugin is currently disabled, because it is not yet compatible with the COW data structures.
- TODO: remove above note, when COW support is added.
- The magic data structures are now fully compile-time constants.
- The magic number to detect endianness is generated in CMake instead of at runtime. _(@kodebach)_
π¦ syslog
- Convert to hook plugin _(Maximilian Irlinger @atmaxinger)_
- Utilize new changetracking API _(Maximilian Irlinger @atmaxinger)_
π¦ lineendings
- Add Florian Lindner as maintainer _(Florian Lindner @flo91)_
π¦ length
- Add Florian Lindner as maintainer _(Florian Lindner @flo91)_
π¦ missing
- Add Florian Lindner as maintainer _(Florian Lindner @flo91)_
π¦ unit
- Add Florian Lindner as maintainer _(Florian Lindner @flo91)_
π¦ dbus
- Utilize new changetracking API _(Maximilian Irlinger @atmaxinger)_
- Add Maximilian Irlinger as maintainer _(Maximilian Irlinger @atmaxinger)_
π¦ internalnotifications
- Utilize new changetracking API _(Maximilian Irlinger @atmaxinger)_
- Add Maximilian Irlinger as maintainer _(Maximilian Irlinger @atmaxinger)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Core
- The `syslog` logging code now calls `openlog` before every `syslog` to avoid the use of a global variable. _(@kodebach)_
- Fix memleak in kdb.c, #4925 _(@hannes99)_
π¦ loader
- Adapt target rename with `-plugin-` in `dl.c` _(Tomislav Makar @tmakar)_
π¦ go
- Golang is now included to build `go binding` _(Tomislav Makar @tmakar)_
- From now on we use tags which are prefixed with `v` so go package versioning works _(Tomislav Makar @tmakar)_
π¦ kdb
- Add new changetracking API _(Maximilian Irlinger @atmaxinger)_
- Fix unwanted removal of subkeys when using mv _(Hannes Laimer @hannes99)_
- Fix inconsistent return values in code, tests and man pages _(Hannes Laimer @hannes99)_
- Remove `smount` alias _(Hannes Laimer @hannes99)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme).
- This section keeps you up-to-date with the multi-language support provided by Elektra.
π¦ jna
- Updated Java binding related dependencies. _(Michael Tucek @tucek)_
- Updated `KDBException` to only access error key at construction time. _(Michael Tucek @tucek)_
- Removed public naive resource release API. To migrate just remove calls to the affected methods `Key#release()`, `KeySet#release()` and `KDBException#releaseErrorKey()` _(Michael Tucek @tucek)_
- Enabled strict javadoc checking for Gradle build _(Michael Tucek @tucek)_
- add merging based on elektraMerge _(Maximilian Irlinger @atmaxinger)_
- Added support for `ksIncRef` for `KeySet` _(Michael Tucek @tucek)_
- Enabled `ReferenceCleaner` _(Michael Tucek @tucek)_
π¦ go-elektra
- Move `go-elektra` binding from repository into bindings folder of `libelektra` _(Tomislav Makar @tmakar)_
- Change module for `go-elektra` _(Tomislav Makar @tmakar)_
- Rename `go-elektra` module _(Tomislav Makar @tmakar)_
- Adapt README for `go-elektra` and change module name to match `github.com` _(Tomislav Makar @tmakar)_
π¦ elektrad
- Implemented new request to add multiple metakeys for one key _(Tomislav Makar @tmakar)_
- Adding bulk creation request for configuration keys _(Tomislav Makar @tmakar)_
π¦ webd
- Implemented new request to add multiple metakeys for one key _(Tomislav Makar @tmakar)_
- Adding bulk creation request for configuration keys _(Tomislav Makar @tmakar)_
π¦ Jenkins
- Use only v prefix for tags not in real version _(Tomislav Makar @tmakar)_
π¦ Release
- Exclude v prefix from `populate-release-notes.sh` script _(Tomislav Makar @tmakar)_
- Handle tag prefix `v` correctly in `release.sh` _(Tomislav Makar @tmakar)_
- Check for `v` prefix in `make-source-package` script and `Jenkinsfile.release` _(Tomislav Makar @tmakar)_
- Use correct tags for `git-release-stats` script _(Tomislav Makar @tmakar)_
π Documentation
- Adapt and remove outdated docs https://issues.libelektra.org/4882 _(Tomislav Makar @tmakar)_
- Added missing dependencies in COMPILE.md for APT-based systems _(Michael Tucek @tucek)_
- Add `default` namespace to [namespaces documentation](../tutorials/namespaces.md) _(Tomislav Makar @tmakar)_
- Added Tomislav Makar to `AUTHORS.md` _(Tomislav Makar @tmakar)_
- Added Florian Lindner to `AUTHORS.md` _(Florian Lindner @flo91)_
- .github rework _(Markus Raab)_
- Added `hook` to `placements` contract in [CONTRACT.ini](../CONTRACT.ini) _(Tomislav Makar @tmakar)_
- Added `hook` information to [hooks.md](../dev/hooks.md)
- + 8 more
π¦ Use Cases
- Add specification use case for [array-specification](../usecases/specification/array-specification.md) _(Tomislav Makar @tmakar)_
- Add specification use case for [underline-specification](../usecases/specification/underline-specification.md) _(Tomislav Makar @tmakar)_
- Add specification use case for [simple-specification](../usecases/specification/simple-specification.md) _(Tomislav Makar @tmakar)_
- Add specification use case for [enum-specification](../usecases/specification/enum-specification.md) _(Tomislav Makar @tmakar)_
- Add complete specification for `dockerd` configuration file (`daemon.json`) _(Tomislav Makar @tmakar)_
π¦ Decisions
- Decide and implement [decision process](../decisions/5_partially_implemented/decision_process.md) _(Markus Raab)_
- Decided future [library split](../decisions/4_decided/library_split.md) _(@kodebach)_
- Decided [decision process](https://www.libelektra.org/decisions/decision-process) _(Markus Raab)_
- Draft for [man pages](../decisions/0_drafts/man_pages.md) _(Markus Raab)_
- Add decision for [change tracking](../decisions/3_in_review/change_tracking.md) _(Maximilian Irlinger @atmaxinger)_
- Create [decision](../decisions/0_drafts/operation_sequences.md) for allowed and prohibited operation seqences _(Maximilian Irlinger @atmaxinger)_
- Add decisions about [location of headers](../decisions/4_decided/header_file_structure.md) and [use of `#include`](../decisions/4_decided/header_include.md) in the repo _(@kodebach)_
- Add decision about [metadata semantics](../decisions/0_drafts/metakey_semantics.md) _(@kodebach)_
- + 5 more
π¦ Tutorials
- Add basic tutorial about changetracking _(Maximilian Irlinger @atmaxinger)_
π§ͺ Tests
- Add shell test to verify correct behavior for https://github.com/ElektraInitiative/libelektra/issues/4061 _(Tomislav Makar @tmakar)_
- Add link to `linkchecker.whitelist` _(Tomislav Makar @tmakar)_
π Docker
- CentOS 8 Stream: manually install `config-manager` DNF plugin. _(Maximilian Irlinger @atmaxinger)_
π¦ Cirrus
- Rename deprecated `d-bus` to `dbus` in `macOS.yml` and `.cirrus.yml` [Issue-#4900](https://github.com/ElektraInitiative/libelektra/issues/4900) _(Tomislav Makar @tmakar)_
- Push FreeBSD 12.3 to 12.4 since 12.3 is end of life. _(Richard StΓΆckl @eiskasten)_
π¦ Website
- The website is generated from the repository, so all information about plugins, bindings and tools are always up-to-date. Furthermore, we changed:
π¦ Miscellaneous
- Many global variables that where used as constants have been made fully `const` _(@kodebach)_
π¦ Outlook
- We are currently working on following topics:
- Rewriting tools in C _(@hannes99)_
- Elektrify KDE and GNOME _(Mihael PranjiΔ @mpranj)_
- Elektrify XFCE _(Richard StΓΆckl @Eiskasten)_
- Mounting SQL databases _(Florian Lindner @flo91)_
- Recording Configuration _(Maximilian Irlinger)_
- Ansible-Elektra _(Maximilian Irlinger)_
- Configure Olimex Base Images _(Maximilian Irlinger)_
- + 2 more
π¦ Statistics
- About 9 authors changed 309 files with 10024 insertions(+) and 4025 deletions(-) in 402 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from
- [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.10.0.tar.gz) or
- [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.10.0.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.10.0.tar.gz.hashsum?raw=true)
- name: elektra-0.10.0.tar.gz
- size: 9230228
- md5sum: 39ac04c8a0b07061bea781fd73cb13aa
- sha1: 846dcfa22410403b575a4d4d87970aa4841aafdd
- + 8 more
π¦ Stay tuned!
- Subscribe to the [RSS feed](https://www.libelektra.org/news/feed.rss) 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.10.0-release)
- For more information, see [https://libelektra.org](https://libelektra.org).
- Best regards,
- [Elektra Initiative](https://www.libelektra.org/developers/authors)
π Changes
- guid: 9e1e0790-e7ae-4947-9906-2c176a4f8dd2
- author: Mihael PranjiΔ
- pubDate: Thu, 16 Mar 2023 14:43:04 +0100
- shortDesc: Bugfix Release
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.14-release).
- You can try out the latest Elektra release using our docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run:
- ```sh
- docker pull elektra/elektra
- docker run -it elektra/elektra
- + 1 more
π¦ Highlights
- The main purpose of this bugfix release is to fix regressions ([#4859](https://github.com/ElektraInitiative/libelektra/issues/4859)) introduced in Elektra 0.9.12 and 0.9.13.
- Please refer to the [Elektra 0.9.12](https://www.libelektra.org/news/0.9.12-release) release notes for a complete list of changes. Due to breaking changes since 0.9.11 we highly recommend to read the upgrade instructions.
π¦ Plugins
- The following text lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ timeofday
- Use separate symbols for `set` and `commit` functions to satisfy `kdb plugin-check` _(@kodebach)_
- Use new `elektraPluginGetPhase()` instead of counting executions _(@kodebach)_
π¦ tracer
- Use separate symbols for `set` and `commit` functions to satisfy `kdb plugin-check` _(@kodebach)_
π§ͺ Tests
- Enable more `kdb plugin-check` tests _(@kodebach)_
π Docker
- Fix conflicting Java versions in CentOS Stream 8 image _(@kodebach)_
π¦ Outlook
- We are currently working on following topics:
- 1.0 API _(Klemens BΓΆswirth @kodebach)_ and _(Stefan Hanreich)_
- Session recording and better Ansible integration _(Maximilian Irlinger @atmaxinger)_
- Change tracking _(Maximilian Irlinger @atmaxinger)_
- Rewriting tools in C _(@hannes99)_
- Elektrify KDE and GNOME _(Mihael PranjiΔ @mpranj)_
- Elektrify XFCE _(Richard StΓΆckl @Eiskasten)_
- Mounting SQL databases _(Florian Lindner @flo91)_
- + 5 more
π¦ Statistics
- We closed [2 issues](https://github.com/ElektraInitiative/libelektra/milestone/35?closed=1) for this release.
- About 4 authors changed 22 files with 299 insertions(+) and 139 deletions(-) in 14 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from
- [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.14.tar.gz) or
- [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.14.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.14.tar.gz.hashsum?raw=true)
- name: elektra-0.9.14.tar.gz
- size: 9299478
- md5sum: eb0f1d2e5d93bbae122999b5a27be343
- sha1: 8d7a44ae6b4d53c52ab4219f955d6010f87682c8
- + 8 more
π¦ Stay tuned!
- Subscribe to the [RSS feed](https://www.libelektra.org/news/feed.rss) 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.14-release)
- For more information, see [https://libelektra.org](https://libelektra.org).
- Best regards,
π Changes
- guid: e8fd116d-12ab-4281-aaf3-b6441056dd63
- author: Mihael PranjiΔ
- pubDate: Tue, 14 Mar 2023 10:05:11 +0100
- shortDesc: Bugfix, Ubuntu Packages
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.13-release).
- You can try out the latest Elektra release using our docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run:
- ```sh
- docker pull elektra/elektra
- docker run -it elektra/elektra
- + 1 more
π¦ Highlights
- The main purpose of this bugfix release is to fix a regression ([#4859](https://github.com/ElektraInitiative/libelektra/issues/4859)) introduced in Elektra 0.9.12.
- We added fresh Ubuntu Jammy Jellyfish (22.04 LTS) and Kinetic Kudu (22.10) packages.
- Please refer to the [Elektra 0.9.12](https://www.libelektra.org/news/0.9.12-release) release notes for a complete list of changes. Due to breaking changes since 0.9.11 we highly recommend to read the upgrade instructions.
π¦ Plugins
- The following text lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ spec
- Add hook placement to spec plugin in [README](../../src/plugins/spec/README.md) _(Tomislav Makar @tmakar)_
π¦ gopts
- Add hook placement to gopts plugin in [README](../../src/plugins/gopts/README.md) _(Tomislav Makar @tmakar)_
π¦ internalnotifications
- Add Maximilian Irlinger as maintainer _(Maximilian Irlinger @atmaxinger)_
π logchange
- Add Maximilian Irlinger as maintainer _(Maximilian Irlinger @atmaxinger)_
π¦ dbus
- Add Maximilian Irlinger as maintainer _(Maximilian Irlinger @atmaxinger)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ tools
- Check for hook placement on `plugin-check` _(Tomislav Makar @tmakar)_
π¦ merge
- Add Maximilian Irlinger as maintainer _(Maximilian Irilnger @atmaxinger)_
π Documentation
- .github rework _(Markus Raab)_
- Added `hook` to `placements` contract in [CONTRACT.ini](../CONTRACT.ini) _(Tomislav Makar @tmakar)_
- Added `hook` information to [hooks.md](../dev/hooks.md)
- Add correct error code in hosts readme _(Tomislav Makar)_
π¦ CMake
- Add `infos/maintainer` in plugins. _(Maximilian Irlinger @atmaxinger)_
π Docker
- Add Ubuntu Jammy Jellyfish (22.04 LTS) images. _(Mihael PranjiΔ @mpranj)_
- Add Ubuntu Kinetic Kudu (22.10) images. _(Mihael PranjiΔ @mpranj)_
π¦ Jenkins
- Add Ubuntu Jammy Jellyfish (22.04 LTS) builds and drop Bionic builds. _(Mihael PranjiΔ @mpranj)_
- Add Ubuntu Kinetic Kudu (22.10) builds. _(Mihael PranjiΔ @mpranj)_
π¦ Outlook
- We are currently working on following topics:
- 1.0 API _(Klemens BΓΆswirth @kodebach)_ and _(Stefan Hanreich)_
- Session recording and better Ansible integration _(Maximilian Irlinger @atmaxinger)_
- Change tracking _(Maximilian Irlinger @atmaxinger)_
- Rewriting tools in C _(@hannes99)_
- Elektrify KDE and GNOME _(Mihael PranjiΔ @mpranj)_
- Elektrify XFCE _(Richard StΓΆckl @Eiskasten)_
- Mounting SQL databases _(Florian Lindner @flo91)_
- + 5 more
π¦ Statistics
- We closed [5 issues](https://github.com/ElektraInitiative/libelektra/milestone/34?closed=1) for this release.
- About 7 authors changed 35 files with 1186 insertions(+) and 534 deletions(-) in 48 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from
- [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.13.tar.gz) or
- [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.13.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.13.tar.gz.hashsum?raw=true)
- name: elektra-0.9.13.tar.gz
- size: 9297899
- md5sum: 871eaaad39bc834ceb7fb42cb8de66f0
- sha1: 68984021d08500693d692c2cb61eb3409fe75226
- + 8 more
π¦ Stay tuned!
- Subscribe to the [RSS feed](https://www.libelektra.org/news/feed.rss) 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.13-release)
- For more information, see [https://libelektra.org](https://libelektra.org).
- Best regards,
- [Elektra Initiative](https://www.libelektra.org/developers/authors)
π Changes
- guid: F2193578-1773-43A9-85CA-79EA8CE48D7B
- author: Mihael PranjiΔ
- pubDate: Fri, 03 Mar 2023 08:07:28 +0100
- shortDesc: New Backend Logic, Copy-on-Write, FLOSS Course
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.12-release).
- You can try out the latest Elektra release using our docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run:
- ```sh
- docker pull elektra/elektra
- docker run -it elektra/elektra
- + 1 more
π¦ Highlights
- New Backend
- Copy-on-Write
- FLOSS
β¨ New Backend
- The entire logic for backends has been rewritten, to allow for more flexibility und an unlimited number of plugins.
- Instead of calling plugins directly, `libelektra-kdb` now only calls so-called backend plugins and special hook plugins.
- There is a [contract](../dev/backend-plugins.md) between `libelektra-kdb` and the backend plugins.
- All backend plugins must adhere to this contract.
- To achieve this goal, most backend plugins will call other plugins (like `libelektra-kdb` did previously).
- The logic previously implemented in `libelektra-kdb` was moved to the new default backend plugin `backend`.
- It works like the old system, but now also allows an unlimited number of plugins in positions where that makes sense.
- For example, you can have unlimited `postgetstorage` plugins, but only a single `getresolver`.
- + 47 more
π¦ Copy-on-Write
- Thanks to _(Maximilian Irlinger @atmaxinger)_ our `Key` and `KeySet` datastructures are now fully copy-on-write!
- This means noticeably reduced memory usage for cases where keys and keysets are copied and/or duplicated!
- We ran some very promising benchmarks, each were performed with 400,000 keys.
- All benchmarks were executed using `valgrind --tool=massif --time-unit=B --max-snapshots=200 --threshold=0.1`.
- | Benchmark | Old Implementation | Copy-on-Write | Size Reduction | Remarks |
- | :------------- | -----------------: | ------------: | -------------: | :------------------------- |
- | `createkeys.c` | 5.3 MiB | 6.5 MiB | -22 % | |
- | `deepdup.c` | 10.5 MiB | 8.2 MiB | 22 % | |
- + 25 more
π¦ FLOSS
- A Free/Libre and Open Source Software (FLOSS) Initiative couldn't survive with many small contributions fixing annoying problems.
- This release also contains all contributions done via one term of the [FLOSS course](https://tiss.tuwien.ac.at/course/courseDetails.xhtml?courseNr=194114&semester=2022W).
- The success was tremendous, as shown in the rest of the release notes.
- A big thanks to the students for their contributions!
π¦ Plugins
- The following text lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ yajl
- Fix an issue where trying to set invalid meta-keys won't show an error. _(Juri Schreib @Bujuhu)_
π¦ list
- Removed the outdated `list` plugin. _(Maximilian Irlinger @atmaxinger)_
- (Was only needed for global plugins, which are now replaced by [hooks](https://www.libelektra.org/decisions/hooks-in-kdb).)
π logchange
- Made logchange a notification-send hook plugin. _(Maximilian Irlinger @atmaxinger)_
π¦ toml
- Fix bug, where meta-keys that cannot be inserted don't report an error. _(@Bujuhu)_
π¦ uname
- Add error handling if uname call fails. _(Richard StΓΆckl @Eiskasten)_
π¦ quickdump
- elektraQuickdumpSet: don't fclose if stdout. _(@hannes99)_
π¦ blockresolver
- Add encoding test for blockresolver read. _(@dtdirect)_
- Refactor and restructure blockresolver. _(@dtdirect)_
π¦ desktop
- Add a unit test. _(Richard StΓΆckl @Eiskasten)_
π¦ mini
- Fix a bug where writing meta-keys will fail silently. _(Juri Schreib @Bujuhu)_
π¦ mmapstorage
- Remove code duplication in the data block calculation. _(Richard StΓΆckl @Eiskasten)_
π¦ network
- Add a retry mechanism. _(Richard StΓΆckl @Eiskasten)_
π¦ xfconf
- Add xfconf storage plugin with the ability to read and write to xfconf channels. _(Richard StΓΆckl @Eiskasten)_
- Make xfconf valgrind suppressions more flexible to lib updates. _(Mihael PranjiΔ @mpranj)_
π¦ date
- Fix an issue with validationg RFC 822 date-times. _(Juri Schreib @Bujuhu)_ _(Nikola Prvulovic @Dynamichost96)_
- Improve Code Coverage. _(Juri Schreib @Bujuhu)_ _(Nikola Prvulovic @Dynamichost96)_
π¦ csvstorage
- Fix a bug where writing unkown meta-keys will fail silently. _(Juri Schreib @Bujuhu)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Compatibility
- Global plugins do not work anymore, use [hooks](https://www.libelektra.org/decisions/hooks-in-kdb) instead.
π¦ Core
- The Key and KeySet datastructures are now fully copy-on-write. _(Maximilian Irlinger @atmaxinger)_
- `keyCopy` now only allocates additional memory if `KEY_CP_META` or `KEY_CP_ALL` is used. _(Maximilian Irlinger @atmaxinger)_
- Check for circular links (overrides). _(@0x6178656c)_
π¦ io
- Check file flags for `elektraIoFdSetFlags`: file flags must be exactly one of: read only, write only or read write. _(Richard StΓΆckl @Eiskasten)_
π¦ Merge
- Add methods `elektraMergeGetConflictingKeys` and `elektraMergeIsKeyConflicting` to check which keys were causing a merge conflict. _(Maximilian Irlinger @atmaxinger)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme).
- This section keeps you up-to-date with the multi-language support provided by Elektra.
π¦ intercept/env
- Remove fallback code. _(Markus Raab)_
- Command-line functionality is broken due to new-backend differences.
π¦ intercept/fs
- Use `KDB_MAX_PATH_LENGTH` for better portability. _(Markus Raab)_
π¦ jna
- Documentation: Improved build instructions. _(@Bujuhu)_
- Add validation on get for whitelist plugin. _(@Bujuhu)_
- Upgrade Gradle to 8.0.1. _(Mihael PranjiΔ @mpranj)_
π¦ rust
- Fix "feature `resolver` is required" error. _(Markus Raab)_
π¦ elixir
- Initial release of the Elixir binding. _(@0x6178656c)_
- Mark tests as `memleak`. _(@0x6178656c)_
π¦ kdb
- Removed `global-mount` and `global-umount` commands. _(Maximilian Irlinger @atmaxinger)_
- Fixed SIGSEGV when using `kdb find` without argument. _(Christian Jonak-Moechel @joni1993)_
π¦ elektrad
- Removed leftover package-lock.json file. _(stefnotch)_
π¦ Scripts
- Added [automatic spelling corrections](https://master.libelektra.org/scripts/spelling.sed) for changeset. _(Maximilian Irlinger @atmaxinger)_
- Introduce shebang-conventions. _(@0x6178656c)_
- Apply auto-fixes from shellcheck. _(@0x6178656c)_
- Use prettier 2.8.4. _(Mihael PranjiΔ @mpranj)_
- Add scripts to enable and disable pre-commit hooks. _(Juri Schreib @Bujuhu)_ _(Nikola Prvulovic @Dynamichost96)_
- Only let http links pass the check if whitelisted. _(Richard StΓΆckl @Eiskasten)_
- Link Checker: Add documentation for the usage and how it behaves. _(Richard StΓΆckl @Eiskasten)_
- Sed: Add spelling correction for "key-value storage". _(@Bujuhu)_
- + 5 more
π Documentation
- Restructured [contrib/api](/doc/contrib/api). _(Markus Raab)_.
- Improve page on compilation. _(@0x6178656c)_
- Improve page for bindings. _(@0x6178656c)_
- Improve page for getting started. _(@stefnotch)_
- Remove version number from docker README and replace it with latest. _(@Joni1993)_
- Fix grammar for `elektra-granularity.md`. _(@dtdirect)_
- Rephrase sections in `doc/dev/error-\*`. _(@dtdirect)_
- Improve Git.md. _(Juri Schreib @Bujuhu)_ _(Nikola Prvulovic @Dynamichost96)_
- + 32 more
π¦ Use Cases
- Improve use cases [Template](/doc/usecases/template.md). _(@kodebach and Markus Raab)_
- Use cases for [KDB](/doc/usecases/kdb). _(@kodebach)_
- Use cases for `libelektra-core`. _(@kodebach)_
π¦ Decisions
- Decide and implement [decision process](../decisions/5_partially_implemented/decision_process.md). _(Markus Raab)_
- Decided future [library split](../decisions/4_decided/library_split.md). _(@kodebach)_
- Decided [decision process](https://www.libelektra.org/decisions/decision-process). _(Markus Raab)_
- Draft for [man pages](../decisions/0_drafts/man_pages.md). _(Markus Raab)_
- Add decision for [change tracking](../decisions/1_problem_clear/change_tracking.md). _(Maximilian Irlinger @atmaxinger)_
- Create [decision](../decisions/0_drafts/operation_sequences.md) for allowed and prohibited operation seqences. _(Maximilian Irlinger @atmaxinger)_
- Add decisions about [location of headers](../decisions/4_decided/header_file_structure.md) and [use of `#include`](../decisions/4_decided/header_include.md) in the repo. _(@kodebach)_
- Add decision about [metadata semantics](../decisions/0_drafts/metakey_semantics.md). _(@kodebach)_
- + 14 more
π¦ Tutorials
- Add tutorial for manual installation from the AUR on Arch Linux. _(@Bujuhu)_
- Add Markdown shell recorder validation to install.webui.md. _(@deoknats861)_
- Fix the outdated array tutorial. _(Juri Schreib @Bujuhu)_ _(Nikola Prvulovic @Dynamichost96)_
- Reinstate mounting tutorial. _(@Bujuhu)_
- Make namespaces tutorial verifiable. _(@0x6178656c)_
- Move Podman-related information to a dedicated page. _(@0x6178656c)_
π¦ Man Pages
- Update man page (patch) as suggested by the CI to fix CI error on master. _(Florian Lindner @flo91)_
- Added links to the website & webui after further reading. _(Philipp Nirnberger @nirnberger)_
- Upgrade `ronn-ng` to 0.10.1.pre3. _(Mihael PranjiΔ @mpranj)_
π§ͺ Tests
- Fix an Issue where scripts/dev/fix-spelling does not work, if a resolved path contains whitespaces. _(Juri Schreib @Bujuhu)_ _(Nikola Prvulovic @Dynamichost96)_
- Rename scripts/sed to [scripts/spelling.sed](https://master.libelektra.org/scripts/spelling.sed). _(Juri Schreib @Bujuhu)_ _(Nikola Prvulovic @Dynamichost96)_
- Add `memleak` label to `test_getenv`. _(@0x6178656c)_
- Add test using shellcheck. _(@0x6178656c)_
- Remove `--rerun-failed` from `run_*` scripts. _(@kodebach)_
- Fix paths for icheck test. _(Mihael PranjiΔ @mpranj)_
π¦ Shell Recorder
- Add check if file exists. _(@0x6178656c)_
π¦ Packaging
- Add missing new `backend` plugin to components of libelektra package. _(Mihael PranjiΔ @mpranj)_
π¦ CMake
- Fix warning for CMP0115. _(0x6178656c)_
- Change Doxygen configuration for LaTeX. _(0x6178656c)_
- Fix developer warning for package DISCOUNT. _(Dennis Toth @dtdirect)_
- Pass `--stacktrace` to gradle for the JNA builds. _(Maximilian Irlinger @atmaxinger)_
- Adapt npm build flags to remove reproducability issues. _(Juri Schreib @Bujuhu)_ _(Nikola Prvulovic @Dynamichost96)_
- Fix creation of shell recorder tests. _(@0x6178656c)_
π Docker
- Update packagename `libpcrec++-dev` to `libpcrecpp0v5` in Debian Sid. _(Richard StΓΆckl @Eiskasten)_
- Add shellcheck to Debian containers. _(@0x6178656c)_
- Use `openjdk-17-jdk` in Debian Sid. _(Maximilian Irlinger @atmaxinger)_
- Add Fedora 37 images. _(Mihael PranjiΔ @mpranj)_
- Update Debian Sid image to use repository Python modules instead of installing with `pip3` due to upstream debian changes. _(Mihael PranjiΔ @mpranj)_
- Debian Bullsye: use clang 13. _(Mihael PranjiΔ @mpranj)_
- Update Alpine Linux to 3.17.2. _(Mihael PranjiΔ @mpranj)_
π¦ Gradle
- Use Gradle 7.5.1. _(Mihael PranjiΔ @mpranj)_
- Update `java-library.gradle` to use `archiveClassifier` _(Maximilian Irlinger @atmaxinger)_
π¦ Jenkins
- Add Fedora 37 builds, drop Fedora 35 builds. _(Mihael PranjiΔ @mpranj)_
- Run more tests also on Master. _(Markus Raab)_
- Move doc to main build stage. _(Markus Raab)_
- Disable parallel test runs. _(Maximilian Irlinger @atmaxinger)_
- Upgrade Jenkins node container to Debian bullseye. _(@0x6178656c)_
- Undo previous change that added automatic `ctest --rerun-failed` to Jenkins CI. _(@kodebach)_
π¦ Cirrus
- Use Fedora 37. _(Mihael PranjiΔ @mpranj)_
- Fix `macos_instance` reference, upgrade to macOS Ventura (by default), use Python 3.11 and Ruby 3.x. _(Mihael PranjiΔ @mpranj)_
- Automatically rerun `testmod_dbus*` tests on macOS. _(@kodebach)_
- Fix dbus not starting on macOS. _(Maximilian Irlinger @atmaxinger)_
π¦ GitHub Actions
- Add auto-cancellation-running action. _(Tomislav Makar @tmakar)_
- Automatically rerun `testmod_dbus*` tests on macOS. _(@kodebach)_
- Fix dbus not starting on macOS. _(Maximilian Irlinger @atmaxinger)_
- Change stale issue/PR checking to GitHub action. _(@0x6178656c)_
- Update configuration of stale issue/PR action. _(@0x6178656c)_
- Upgrade actions to recent versions and remove deprecated ruby-setup action. _(Mihael PranjiΔ @mpranj)_
π¦ Website
- The website is generated from the repository, so all information about plugins, bindings and tools are always up-to-date. Furthermore, we changed:
- Fix broken `/pythongen` link on homepage. _(@stefnotch)_
- Fix redirect logic to not cause loops. _(@stefnotch)_
- Remove duplicated link to `TESTING.md` file. _(@stefnotch)_, _(@janldeboer)_
- Restructure parts of the links on the website. _(@stefnotch)_, _(@janldeboer)_
- Removed broken links to packages for Linux distributions. _(@Dynamichost96)_
- Update npm packages. _(Mihael PranjiΔ @mpranj)_
- Change URLs to say man-page with a dash. _(@stefnotch)_ _(@janldeboer)_
π¦ Outlook
- We are currently working on following topics:
- 1.0 API _(Klemens BΓΆswirth @kodebach)_ and _(Stefan Hanreich)_
- Session recording and better Ansible integration _(Maximilian Irlinger @atmaxinger)_
- Change tracking _(Maximilian Irlinger @atmaxinger)_
- Rewriting tools in C _(@hannes99)_
- Elektrify KDE and GNOME _(Mihael PranjiΔ @mpranj)_
- Elektrify XFCE _(Richard StΓΆckl @Eiskasten)_
- Mounting SQL databases _(Florian Lindner @flo91)_
- + 5 more
π¦ Statistics
- We closed about [150 issues](https://github.com/ElektraInitiative/libelektra/milestone/33?closed=1) for this release.
- About 28 authors changed 960 files with 29400 insertions(+) and 20927 deletions(-) in 1421 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from
- [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.12.tar.gz) or
- [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.12.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.12.tar.gz.hashsum?raw=true)
- name: elektra-0.9.12.tar.gz
- size: 9297913
- md5sum: a6de9401709283b69ec211681f2a7757
- sha1: cb4e282d1346fda771de7510663652555f8e6c7d
- + 8 more
π¦ Stay tuned!
- Subscribe to the [RSS feed](https://www.libelektra.org/news/feed.rss) 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.12-release)
- For more information, see [https://libelektra.org](https://libelektra.org).
- Best regards,
- [Elektra Initiative](https://www.libelektra.org/developers/authors)
π Changes
- guid: 1390D163-9CEC-493D-839D-3930B9FFB6C4
- author: Mihael PranjiΔ
- pubDate: Wed, 05 Oct 2022 08:14:35 +0200
- shortDesc: New Backend System, Opensesame Application, FLOSS Course
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.11-release).
- You can try out the latest Elektra release using our Docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run:
- ```sh
- docker pull elektra/elektra
- docker run -it elektra/elektra
- + 1 more
π¦ Highlights
- Preparing new-backend merge
- Olimex
- Improving Elektra in FLOSS course
β¨ Preparing new-backend merge
- In a separated branch we rewrote the whole backend system.
- With this new backend system, backends are now also plugins, allowing backends also to be non-file-based, e.g., using databases.
- The main purpose of this release is to give a last stable release before master gets disrupted with a huge change set.
- The next release is not to be expected in this year.
- A huge thanks to _(Klemens BΓΆswirth @kodebach)_, _(Maximilian Irlinger @atmaxinger)_ for the many changes in the branch.
- Thanks to _(Richard StΓΆckl @Eiskasten)_ for testing.
π¦ Olimex
- Elektra is used for [server, desktop and embedded](/doc/WHO.md).
- With this release, we strengthen our embedded mainstay, specifically in [open source hardware OSHW](https://freedomdefined.org/OSHW).
- We developed a major application running on OSHW [Olimex](https://www.olimex.com/Products/OLinuXino/open-source-hardware) boards.
- The application is called [opensesame](https://opensesame.libelektra.org).
- It is heavily relying on Elektra and [ansible-libelektra](https://github.com/ElektraInitiative/ansible-libelektra).
- In the initial release [opensesame](https://opensesame.libelektra.org) already allows:
- [x] opening (garage) doors via a novel PIN entry method: you can press and release buttons in any sequence
- [x] switching on entry lights
- + 7 more
π¦ Improving Elektra in FLOSS course
- Also in the [upcoming term](https://tiss.tuwien.ac.at/course/courseDetails.xhtml?courseNr=194114&semester=2022W) Elektra will be object of study how FLOSS initiatives work.
- Students will make improvements in Elektra as part of their homework, teamwork and, if chosen, also for their project.
- Alternatively, they can also improve other self-chosen FLOSS initiatives.
π¦ Plugins
- The following text list news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
- fix unused-but-set-variable warnings. _(Markus Raab)_
π¦ csvstorage
- Remove superfluous if-conditions that lead to a build error on Debian Unstable _(Maximilian Irlinger @atmaxinger)_
π¦ specload
- fail if either the spec or parentKey parameter of elektraSpecloadSendSpec is NULL _(@hannes99)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
- fix unused-but-set-variable warnings. _(Markus Raab)_
π¦ opts
- opts: fix possible 'free(): invalid pointer' error and add test for it _(@hannes99)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme).
- This section keeps you up-to-date with the multi-language support provided by Elektra.
π¦ Python
- add merging based on elektraMerge _(Maximilian Irlinger @atmaxinger)_
π¦ Rust
- start again to publish on crates.io, used by opensesame _(Markus Raab)_
π Documentation
- Added [Documentation Guidelines](https://master.libelektra.org/doc/contrib/documentation.md) _(Markus Raab)_
- Decisions for changes to `keyIsBelow` and new `keyGetNextPart` functions _(@kodebach)_
- Apply fix spelling to more files. _(Markus Raab)_
π¦ Tutorials
- opts: use arg/help instead of arg/name _(@hannes99)_
π¦ Man Pages
- Update [FAQ](/doc/help/elektra-faq.md). _(Markus Raab)_
π§ͺ Tests
- Use GoogleTest framework v1.12.1. _(Mihael PranjiΔ @mpranj)_
π¦ CMake
- Fix build with newer libgit2 versions _(Fabian Vogt)_
- We now require at least CMake `3.12` (released in July 2018). _(Maximilian Irlinger @atmaxinger)_
π Docker
- Bump Alpine Linux to 3.16.0. _(Mihael PranjiΔ @mpranj)_
- The Docker image for building the documentation is now [based on Debian Bullseye](../../scripts/docker/debian/bullseye/doc.Dockerfile). _(Maximilian Irlinger @atmaxinger)_
- Add Fedora 36 images. _(Mihael PranjiΔ @mpranj)_
π¦ Jenkins
- We no longer build and test on Ubuntu Xenial and Debian Stretch due to outdated CMake versions _(Maximilian Irlinger @atmaxinger)_
- Add Fedora 36 builds, remove Fedora 34 builds. _(Mihael PranjiΔ @mpranj)_
π¦ Cirrus
- Update FreeBSD images to 13.1 and 12.3 and update packages before builds. _(Mihael PranjiΔ @mpranj)_
- Bump Fedora builds to Fedora 36. _(Mihael PranjiΔ @mpranj)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up-to-date.
π¦ Outlook
- We are currently working on following topics:
- 1.0 API _(Klemens BΓΆswirth @kodebach)_ and _(Stefan Hanreich)_
- Elektrify KDE and GNOME _(Mihael PranjiΔ @mpranj)_
- Elektrify XFCE _(Richard StΓΆckl @Eiskasten)_
- Mounting SQL databases _(Florian Lindner @flo91)_
- Recording Configuration _(Maximilian Irlinger)_
- Ansible-Elektra _(Lukas Hartl)_ and _(Maximilian Irlinger)_
- Configure Olimex Base Images _(Maximilian Irlinger)_
- + 3 more
π¦ Statistics
- We closed [17 issues](https://github.com/ElektraInitiative/libelektra/milestone/32?closed=1) for this release.
- About 11 authors changed 156 files with 4020 insertions(+) and 3298 deletions(-) in 134 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from
- [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.11.tar.gz) or from
- [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.11.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.11.tar.gz.hashsum?raw=true)
- name: elektra-0.9.11.tar.gz
- size: 9149900
- md5sum: 227094a7760f8faece1a7b8386d01fce
- sha1: a0d2f0d39c8360f67da96585993223b7f9cdebe6
- + 6 more
π¦ Stay tuned!
- Subscribe to the [RSS feed](https://www.libelektra.org/news/feed.rss) 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.11-release)
- For more information, see [https://libelektra.org](https://libelektra.org).
- Best regards,
- [Elektra Initiative](https://www.libelektra.org/developers/authors)
π Changes
- guid: CC66FD33-7491-4BFA-975A-36FAB67D45D6
- author: Mihael PranjiΔ
- pubDate: Sat, 09 Jul 2022 09:40:18 +0200
- shortDesc: Kotlin Binding, Remove Internal Iterators
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.10-release).
- You can try out the latest Elektra release using our docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run:
- ```sh
- docker pull elektra/elektra
- + 2 more
π¦ Highlights
- Kotlin Binding
- Remove internal iterators
π¦ Kotline Binding
- We created a new Binding for Kotlin with convenience functions and various utilities.
- There is also the possibility to convert KeySets to Kotlin data classes or collections and back.
- Read the [Kotlin Readme](../../src/bindings/jna/libelektra-kotlin/README.md) for more information.
- A big thanks to _(@Gratla and @mandoway)_ for this beautiful work.
ποΈ Remove Internal Iterators
- In Elektra there are currently two different ways to iterate over KeySets.
- The so-called "internal" iterator is, however, inferior and creates several problems, e.g. it was a side effect to be considered for every function call that involved a KeySet.
- With this release, we started removing the internal iterators by removing `keyRewindMeta`, `keyCurrentMeta`, `ksHead`, and `ksTail` functions.
- The external iterators are now the way to go, see [Iterators](/doc/dev/iterators.md).
- A huge thanks to _(Florian Lindner @flo91)_ for doing this thankless cleanup task.
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
- Overall changes:
- We changed all plugins, except `directoryvalue` to use external iteration of `KeySet`s _(Florian Lindner @flo91)_
π¦ Python
- Added `.pop()`, `.cut()`, `.head()` and `.tail()` examples to keySet example _(Lukas Hartl @lukashartl, Leonard Guelmino @leothetryhard)_
- Added a new [DNS plugin](/src/plugins/python/python/dns/README.md) fully written in Python _(Lukas Hartl @lukashartl, Leonard Guelmino @leothetryhard)_
π¦ lineendings - Plugin
- Enable emitting of warnings during kdbGet(), refactor and update methods and return values to match the conventions
- (e.g. #defined constants for return values) _(Michael Langhammer @milangs, Florian Lindner @flo91)_
π¦ date
- Exclude the tests for formats that require GNU extensions of `strptime` on non-GNU systems. _(@kodebach)_
π¦ Length
- Warnings are now added on `kdb get` _(@mandoway)_
π¦ Curlget
- Removed usages (and contents) of VERBOSE macro _(@mandoway)_
π¦ Sorted
- Added new validation plugin: Sorted. It checks whether an Elektra array is sorted by its value or a given key in a configurable direction _(@mandoway @Gratla)_
π¦ mini
- Fix usage of bitwise operator with boolean operands. _(Mihael PranjiΔ @mpranj)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Compatibility
- Remove `keyRewindMeta`, `keyCurrentMeta`, `ksHead`, and `ksTail` functions for internal iteration of `Keyset`s and Metadata of `Key`s _(Florian Lindner @flo91)_
π¦ Core
- Removed mentions of VERBOSE and replaced debug prints with the logger _(@mandoway)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up-to-date with the multi-language support provided by Elektra.
- Remove internal iterators for SWIG (Python, Lua, Ruby) and go-bindings _(Florian Lindner @flo91)_
π¦ Java
- Implement NavigableSet in JNA KeySet _(Burkhard Hampl @bhampl)_
- Added a Java example for meta keys and arrays _(@mandoway)_
- Added examples to HelloElektra.java _(Leonard Guelmino @leothetryhard, Lukas Hartl @lukashartl)_
- Added example which shows how to add a basename for a key. _(Philipp Leeb @Gratla)_
- Introduced Key#setNull, ReadableKey#isNull _(Michael Tucek @tucek)_
- Fixed Key#setBoolean, ReadableKey#isBoolean _(Michael Tucek @tucek)_
- Fixed Java Whitelist plugin tests _(Michael Tucek @tucek)_
- Fixed missing Javadoc in Java Sorted plugin _(Michael Tucek @tucek)_
π¦ Ruby
- Replace `NULL` in `rb_funcall` with `Qnil` to avoid compiler errors/warnings on some systems. _(@kodebach)_
π¦ Kotlin
- Added new JNA subproject which builds an Elektra extension library for Kotlin _(@mandoway & @Gratla)_
- Added get(), getOrNull() extension with type inference for primitive types _(@mandoway)_
- Added set() extension with type inference for primitive types _(@mandoway)_
- Added keySet serialization capabilities (to any format and data classes, with array support) _(@mandoway)_
- Added keyOf() extension and keyOf{} builder for key creation _(@Gratla)_
- Added keySetOf() extension and keySetOf{} builder for keySet creation _(@Gratla)_
- Added withKDB() extension which wraps the try block _(@Gratla)_
- Added nameParts extension value which provides a sequence of key name parts _(@mandoway)_
- + 4 more
π¦ Python
- Deleted occurrences of removed property key.fullname _(@mandoway)_
π¦ CPP
- Removed mentions of VERBOSE _(@mandoway)_
π¦ Python
- Deleted occurrences of removed property key.fullname _(@mandoway)_
π¦ CPP
- Removed mentions of VERBOSE _(@mandoway)_
π¦ elektrad
- improve logging in `elektrad` _(Lukas Hartl @lukashartl, Leonard Guelmino @leothetryhard)_
- Update `elektrad` to use last version of the `go`-bindings without internal iterators for `Keyset`s and Metadata _(Florian Lindner @flo91)_
π¦ `webui`
- fix issues from namespace-overhaul _(Lukas Hartl @lukashartl, Leonard Guelmino @leothetryhard)_
- apply non-breaking updates to packages _(Leonard Guelmino @leothetryhard, Lukas Hartl @lukashartl)_
π¦ `webd`
- fix path building for requests to `elektrad` _(Lukas Hartl @lukashartl, Leonard Guelmino @leothetryhard)_
π¦ QT GUI
- Removed mentions of VERBOSE _(@mandoway)_
- Fixed dependency for Debian packages _(Markus Raab)_
π¦ Scripts
- Fix `kdb reset`. _(Markus Raab)_
π Documentation
- Small readability improvement _(@Toniboyyy)_
- Python: add guide for Debian 11 (bullseye) _(Lukas Hartl @lukashartl)_
- Fix some errors in the tutorials `Cascading Lookups` and `Command-line Options` _(Florian Lindner @flo91)_
- Extend and update the tutorial for writing specifications,
- add section about using specs in production _(Florian Lindner @flo91)_
- Tutorial: add cleanup section to the specification tutorial _(Lukas Hartl @lukashartl)_ and _(@leothetryhard)_
- Add readme-file [Iterators](/doc/dev/iterators.md) about cm2022s project showcasing usage in various programming languages _(Florian Lindner @flo91 and Michael Langhammer @Milangs)_
- Updated elektra-web installation manual (doc/tutorials/install-webui.md) _(Leonard Guelmino @leothetryhard, Lukas Hartl @lukashartl)_
- + 7 more
π¦ Tutorials
- The tutorial for [Contributing from Windows](../tutorials/contributing-windows.md) has been updated. _(@kodebach)_
- The tutorial for [CLion](../tutorials/contributing-clion.md) now contains a section for setting up the WSL compiler _(@mandoway)_
- Rephrased sentence in code-generator.md to enhance readability _(@Gratla)_
π§ͺ Tests
- Add tests for the Error/Warnings-Factory in libtools _(Florian Lindner @flo91)_
- Add tests for keySet in the python binary _(Lukas Hartl @lukashartl, Leonard Guelmino @leothetryhard)_
- Added test for JNA KDB which checks if both get-method implementations return the same result. _(Philipp Leeb @Gratla)_
π¦ CMake
- CMake now automatically detects all JNA plugins that are added to Gradle. _(@kodebach)_
π¦ Jenkins
- make copying of artifacts much faster _(Lukas Hartl)_
- fixed several problems _(Lukas Hartl)_
π¦ Cirrus && GitHub Actions
- Fix wrong path for clang builds on macOS. _(Mihael PranjiΔ @mpranj)_
π¦ Git
- We added a `.gitattributes` file to make it easier to build Elektra with WSL. _(@kodebach)_
π¦ GitHub
- Added dependabot configuration _(Lukas Hartl @lukashartl)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up-to-date. Furthermore, we changed:
- Overhauled the `Get Started` page by adding a brief `kdb` introduction. _(@Milangs)_
π¦ Outlook
- We are currently working on following topics:
- 1.0 API _(Stefan Hanreich)_ and _(Klemens BΓΆswirth @kodebach)_
- Elektrify KDE and GNOME _(Mihael PranjiΔ @mpranj)_
- Elektrify XFCE _(Richard StΓΆckl @Eiskasten)_
- Mounting SQL databases _(Florian Lindner @flo91)_
- Recording Configuration _(Maximilian Irlinger)_
- Ansible-Elektra _(Lukas Hartl)_
- Improving Build Server Infrastructure _(Lukas Hartl)_ and _(Maximilian Irlinger)_
- + 4 more
π¦ Statistics
- We closed [51 issues](https://github.com/ElektraInitiative/libelektra/milestone/31?closed=1) for this release.
- About 25 authors changed 376 files with 39350 insertions(+) and 13609 deletions(-) in 393 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.10.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.10.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.10.tar.gz.hashsum?raw=true)
- name: elektra-0.9.10.tar.gz
- size: 9150058
- md5sum: c77f5bcf4e8202fd6d8b6ad6e7c841f4
- sha1: d63c24ea6c666b02d0bd9f059f2d73f96009496d
- sha256: ee50fb5e9814b45a8e99f39435b1461d4b7a7daa27eee240bdbfed98f2c4c0f5
- + 6 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.10-release)
- For more information, see [https://libelektra.org](https://libelektra.org).
- Best regards,
- + 1 more
π Changes
- guid: 3177C958-9473-41BA-9918-A56A18CF20E8
- author: Mihael PranjiΔ
- pubDate: Thu, 10 Mar 2022 07:40:35 +0100
- shortDesc: Bug Fixes, Java Plugins, Elektra 1.0 Decisions
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.9-release).
- You can try out the latest Elektra release using our docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run:
- ```sh
- docker pull elektra/elektra
- + 2 more
π¦ Highlights
- Bug fixing in FLOSS course
- Java plugins
- 1.0 decisions
π Bug Fixing in FLOSS Course
- As you will read in this release notes, a massive amount of bugs were fixed within this release.
- Many of them were resolved from students participating in a
- [university course about FLOSS](https://tiss.tuwien.ac.at/course/courseDetails.xhtml?courseNr=194114&semester=2021W)
- This demonstrates that homework of students can be very useful and in public service.
- In the upcoming term there will be a course about
- [configuration management](https://tiss.tuwien.ac.at/course/courseDetails.xhtml?courseNr=194030&semester=2022S)
- in which Elektra will also be used and improved upon.
π¦ Java Plugins
- The version of the `process` plugin, makes it much easier to implement plugins in Java.
- You can now call an implementation `org.libelektra.Plugin` via `process` and the `org.libelektra.process.PluginProcess` class.
- To mount Java plugins the new helper script `kdb mount-java` can be used.
- For more information take a look at [the updated tutorial](https://www.libelektra.org/tutorials/java-plugins)
- and the new [manpage for `kdb mount-java`](../help/kdb-mount-java.md).
π¦ 1.0 Decisions
- With this release we greatly updated our [decisions](/doc/decisions/) for the 1.0 release.
- This brings us one big step closer to 1.0.
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ filecheck
- Removed unused variable that threw an error in filecheck.c. _(Vaibhav Ganesh @flackojr)_
π¦ mmapstorage
- Removed unused variable that threw an error in mmapstorage.c. _(Vaibhav Ganesh @flackojr)_
π¦ csvstorage
- Add `array` meta key to the parentKey of imported Keys _(@muskater)_ _(@4ydan)_ _(@lawli3t)_
π¦ specload
- Change and move `keyCompareMeta (const Key * k1, const Key * k2)` from `src/libs/elektra/keytest.c`
- to `src/plugins/specload/specload.c` and integrate functionality of keyCompare (const Key _ key1, const Key _ key2)
- into `isChangeAllowed (Key * oldKey, Key * newKey)`, because that is the only place where it was used. _(@flo91)_
π¦ uname
- Minor improvement of source code readability in uname.c _(@lawli3t)_
π¦ quickdump
- Fixed an issue with type-limits on ARM32 (see issue #4217). _(Klemens BΓΆswirth @kodebach)_
π¦ dump
- The exported functions `serialise` and `unserialise` have been renamed to `serialize` and `unserialize`. _(Klemens BΓΆswirth @kodebach)_
- New exported functions `int fserialize(KeySet * ks, FILE * file, Key * errorKey)` and `int funserialize(KeySet * ks, FILE * file, Key * errorKey)` have been added.
- These are wrappers around `serialize` and `unserialize` that allow calling from C with a standard `FILE *`. _(Klemens BΓΆswirth @kodebach)_
π¦ process
- The plugin was completely rewritten. The new version is incompatible with the old version.
- The new plugin that uses a simple protocol to allow an external application to act as a plugin.
- This can for example be used to write plugins in Java without going through JNI. _(Klemens BΓΆswirth @kodebach)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Compatibility
- Remove the deprecated flags `KEY_NAME` and `KEY_COMMENT` (closes issue #3152) _(Florian Lindner @flo91)_
π¦ Core
- `KeySet` now also has a reference counter like `Key`. The new functions `ksIncRef` and `ksDecRef` behave like their counterparts `keyIncRef` and `keyDecRef`.
- `ksDel` also behaves like `keyDel` in regard to reference counting, i.e. it does nothing unless the reference count is 0.
- The reference counting is very useful for bindings (especially with automatic garbage collection). _(Klemens BΓΆswirth)_
- Clarified that our reference counting mechanism is more related to a shared lock than to the concept of shared ownership. _(Klemens BΓΆswirth)_
- Both the reference count for `Key` and for `KeySet` now use `uint16_t` to reduce memory usage. `Key` previously used `size_t`. _(Klemens BΓΆswirth)_
- Reorder `Key` and `KeySet` struct members to aviod padding and make space for a new `uint16_t` member, reserved for future use. _(Mihael PranjiΔ @mpranj)_
- Improve `keyReplacePrefix` by using new `keyCopy` function instead of manually copying the name of the `Key` _(@lawli3t)_
- Added else error to core for elektraGetCheckUpdateNeeded _(Aydan Ghazani @4ydan)_
- + 5 more
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up to date with the multi-language support provided by Elektra.
π¦ Java binding
- Integrated the `HelloElektra` example as Gradle sub-project to allow it to directly depend on the current binding _(Michael Tucek)_
- Extend `HelloElektra` example with cutpoint and value setting example _(@JakobWonisch)_
- Updated Gradle to 7.4. _(Mihael PranjiΔ @mpranj)_
- Added integration with the new `process` plugin. _(Klemens BΓΆswirth @kodebach)_
- Integrated the `HelloElektra` example as gradle sub-project to allow it to directly depend on the current binding _(Michael Tucek)_
- Add `LinkChecker` Java Plugin. _(@aaronabebe)_
π¦ FUSE Binding
- Added check for existence of accessed path before opening new file descriptor _(@lawli3t)_
π¦ Python Binding
- Added examples for append, extend and remove keysets in python. _(@4ydan)_
π¦ Tools
- Implement `kdb validate <key>`, collect warnings and errors while kdb.get() and kdb.set(), see #3674 _(@flo91)_, _(@JakobWonisch)_
- Remove names from kdb mount _(@JakobWonisch)_
- Add `kdb mount-java` helper script for mounting Java plugins _(Klemens BΓΆswirth @kodebach)_
π¦ Scripts
- Updated `reformat-c` script to use clang-format version 13. _(Mihael PranjiΔ @mpranj)_
- Fix bug where the PATH environment variable would get overwritten in some of the Docker images. Reduce image size _(Ivaylo Ivanov)_
- Allow JSON to be also written as json. _(@muskater)_
π Documentation
- Integrate missing pages to website _(Ivaylo Ivanov)_
- Improved compilation documentation _(Ivaylo Ivanov)_
- Fix Links in [README.md](/README.md) and small clarifications. _(Markus Raab)_
- Remove previous authors. _(Markus Raab)_
- add pre/postconditions and invariants to module keytest _(@lawli3t)_
- Updated the news template. _(Mihael PranjiΔ @mpranj)_
- Update and improve tutorial and in-code comments for high-level API _(Tobias Schubert @qwepoizt)_
- Improve documentation of opts library _(Tobias Schubert @qwepoizt)_
- + 41 more
π§ͺ Tests
- Disable Rust from buster _(Markus Raab)_
- Cleanup tests/linkchecker.whitelist and fix off-by-1 bug of the counter in the scripts/link-checker script (increase counter before printf) _(Florian Lindner @flo91)_
- add tests for the intercept/env binding _(Ivaylo Ivanov)_
- add and improve checks in scripts/sed _(Florian Lindner @flo91)_
- change the cpp Key-class (key.hpp) to check the return values of the called c-functions
- and throw exceptions if values that indicate an error are returned + add tests that
- check for this exceptions _(Florian Lindner @flo91)_
- Added more test cases for the keyCopy function _(@muskater)_
- + 5 more
π¦ Packaging
- add flatpak package. See `scripts/flatpak/README.md` and `scripts/flatpak/org.libelektra.kdb.yaml`for more info _(Ivaylo Ivanov)_
- Remove hardcoded SWIG 3.0 paths. _(Mihael PranjiΔ @mpranj)_
π¦ CMake
- Marked certain variables as advanced and separated user modifiable and unaccessable variables. _(Vaibhav Ganesh @flackojr)_
π Docker
- Add Fedora 35 images. _(Mihael PranjiΔ @mpranj)_
π¦ Jenkins
- Replace Fedora 33 builds with Fedora 34, and Fedora 34 builds with Fedora 35. _(Mihael PranjiΔ @mpranj)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date. Furthermore, we changed:
- Update npm dependencies, add forked and update angular-marked module. _(Mihael PranjiΔ @mpranj)_
- Remove links to Travis CI and replace them with Github Actions (with badge). _(Mihael PranjiΔ @mpranj)_
π¦ Other
- Make Elektra [reuse](https://reuse.software) reuse compliant _(Ivaylo Ivanov)_
π¦ Outlook
- We are working on following new topics since the last release:
- Ansible-Elektra _(Lukas Hartl)_
- Recording Configuration _(Maximilian Irlinger)_
- Furthermore, we are still working on following topics:
- 1.0 API _(Stefan Hanreich)_ and _(Klemens BΓΆswirth)_
- Improve Java Development Experience _(Michael Tucek)_
- KDB access using FUSE _(Alexander Firbas)_
- Shell completion _(Ulrike SchΓ€fer)_
- + 1 more
π¦ Statistics
- We closed [90 issues](https://github.com/ElektraInitiative/libelektra/milestone/30?closed=1) for this release.
- About 29 authors changed 491 files with 17997 insertions(+) and 6089 deletions(-) in 648 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.9.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.9.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.9.tar.gz.hashsum?raw=true)
- name: elektra-0.9.9.tar.gz
- size: 8878567
- md5sum: f5109eb0c96fb4164a5437bdebc3bf79
- sha1: a08df79301d56dd8f3711efa1b78b5a4d003d42f
- sha256: 834da360170daa632bbb46dd2e819271327dce1c51be1d7bb2ec22311ded54cb
- + 6 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.9-release)
- For more information, see [https://libelektra.org](https://libelektra.org).
- Best regards,
- + 1 more
π Changes
- guid: 0CB8C139-730C-4CCD-9FB4-0C7C4AA4DBF2
- author: Mihael PranjiΔ
- pubDate: Mon, 04 Oct 2021 00:02:45 +0200
- shortDesc: Redshift Elektrified, HL API & Java Binding Improvements
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.8-release).
- You can try out the latest Elektra release using our docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run:
- ```sh
- docker pull elektra/elektra
- + 2 more
π¦ Highlights
- `kdb` now prohibits write operations on cascading keys that miss a corresponding existing key. See the details in the `Tools` section below and the new subsection on cascading writes in the [tutorial](/doc/tutorials/cascading.md) on cascading keys for further information. _(Alexander Firbas)_
- Redshift is now elektrified. _(Tobias Schubert @qwepoizt)_
π¦ Redshift and Elektra
- We have created a version of [Redshift](https://github.com/jonls/redshift/) that uses Elektra for configuration management!
- Refactoring Redshift to use Elektra brings the following benefits:
- Fewer lines of code: reduction of ~700 LOC or 16%
- (measured across all `*.c` and `*.h` files exclusive of files automatically generated by Elektra).
- Adding new configuration settings is easier and takes less time: Validation and parsing of setting values (from configuration file and CLI options) is handled by Elektra - no custom code required!
- Clean separation of application code and the specification of supported configuration settings (including defaults and validation rules).
- Automatic generation of CLI help text.
π¦ HL API improvements
- Redshift with Elektra uses the [high-level API](https://www.libelektra.org/tutorials/high-level-api).
- We have made a large number of improvements to the [high-level API](https://www.libelektra.org/tutorials/high-level-api) in the course of refactoring Redshift. The highlights are:
- Improved detection of differences in specification between an application's compilation and runtime.
- Improved validation of CLI options.
- Early detection of errors in specification files.
- Updated and improved documentation and tutorials.
- Various other bugfixes.
- More improvements and details are explained in later sections of these release notes.
- + 1 more
π¦ Windows releases
- We are now shipping experimental releases for Windows 32- and 64-bit! They can be downloaded [here](https://build.libelektra.org/job/libelektra-release/lastSuccessfulBuild/artifact/artifacts/).
- A big success is that Redshift already works with Elektra under Windows.
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ gopts
- The `gopts` plugin now includes deeply nested options and arguments in the generated help message. _(Tobias Schubert @qwepoizt)_
- Errors from `gopts` are now correctly reported. _(Klemens BΓΆswirth)_
- Fix wrong variable names in `gopts_win32.h`. _(Tobias Schubert @qwepoizt)_
π¦ range
- The `range` plugin now uses metakey `type` as fallback, if `check/type` is not specified. _(Tobias Schubert @qwepoizt)_
- The `range` now treats all validation problems as warnings during kdbGet(). _(Tobias Schubert @qwepoizt)_
π¦ spec
- The `spec` plugin now runs before other `postgetstorage` plugins, so that validation can happen during `kdbGet` as well.
- This is especially relevant in combination with `gopts`. _(Klemens BΓΆswirth)_
- Make spec plugin (with no support for # and \_ in key names) work in mingw-w64 builds. _(Tobias Schubert @qwepoizt)_
π¦ sync
- Add support for mingw-w64 builds using fflush. _(Tobias Schubert @qwepoizt)_
π¦ wresolver
- Add missing `ELEKTRA_PLUGIN_COMMIT` export. _(Tobias Schubert @qwepoizt)_
π¦ TOML
- Improvements to the parser, comment handling and especially quoting of strings. _(Klemens BΓΆswirth)_
- The `toml` plugin now supports all four kinds of strings via the `tomltype` metadata.
- The plugin also remembers which kind was used and handles escape sequences properly, instead of always
- converting to basic strings. For details take a look at the updated [README](../../src/plugins/toml/README.md) _(Klemens BΓΆswirth)_
- The `comment/#/space` metakey is now used correctly to store the actual whitespace characters from the file,
- instead of a number. _(Klemens BΓΆswirth)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Compatibility
- Introduced public C API function `ksSearch`
- Previously public function `ksSearchInternal` is now static. Use `ksSearch` instead.
- _(Michael Tucek)_
π¦ Core
- Remove obsolete `ksNeedSync` function. _(Mihael PranjiΔ)_
- Replace various occurences of `sprintf` by `snprintf` and fix out of bounds array access in markdownlinkconverter. _(Mihael PranjiΔ)_
π¦ High-level API
- Modified High-level API to treat all warnings as errors. _(Tobias Schubert @qwepoizt)_
- Implemented support for warnings in High-level API error handling. _(Tobias Schubert @qwepoizt)_
- Fix a small bug for warnings in High-level API. _(Tobias Schubert @qwepoizt)_
- Fix resource management in High-level API error handling. _(Tobias Schubert @qwepoizt)_
- Implement a check to detect whether an application's specification was properly `mount`ed and `spec-mount`ed. _(Tobias Schubert @qwepoizt)_
- Implement a check to detect whether an application's specification was changed after installation. _(Tobias Schubert @qwepoizt)_
- Add sanity-checks to resource management. _(Tobias Schubert @qwepoizt)_
- Refactor and modularize code. _(Tobias Schubert @qwepoizt)_
- + 2 more
π¦ Ease
- Implement calculation of a specification token (=sha-256 hash). _(Tobias Schubert @qwepoizt)_
- Add [asmonier's sha-2](https://github.com/amosnier/sha-2) for sha-256 hash calculation. _(Tobias Schubert @qwepoizt)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up to date with the multi-language support provided by Elektra.
π¦ Java binding
- Upgraded Java binding gradle wrapper to 7.2.
- Java source files are formatted using the [Google Java format](https://github.com/google/google-java-format)
- Renamed zero argument static factory method `Key::createNameless` to `Key::create`. To migrate to this change, just update calling code to use the new method name.
- Updated method documentation previously publishing the error key based error handling approach to the Java binding consumer. Such arguments are now explicitly only used for returning warning information in case no error occurred. In case of an exceptional state, appropriate exceptions are thrown. Such exceptions provide access to the underlying key containing warning and error information as meta data. Please review API usage to consider the more elaborated explanation of how Elektra uses this argument's value. Affected signatures:
- Updated javadoc for `KDB::open(Key)`
- Updated javadoc for `KDB::open(KeySet, Key)`
- Updated javadoc for `KDB::close(Key)`
- Updated javadoc for `KDB::get(Key)`
- + 40 more
π¦ GLib
- Compile `glib` binding with `-Wno-pedantic` for compatibility. _(Mihael PranjiΔ)_
π¦ Tools
- Really add all tools when using `-DTOOLS=ALL`. _(Markus Raab)_
- ZeroMQ Hub: fix compilation and man page. _(Markus Raab)_
- Configure packaging for FUSE tool. _(Alexander Firbas)_
- FUSE: fix bug preventing binary writes. _(Alexander Firbas)_
- Ambiguous write operations are now disabled in kdb. _(Alexander Firbas)_
- `webd`: update npm dependencies. _(Mihael PranjiΔ)_
π¦ KDB
- `kdb set`, `kdb meta-set`: Only allow writes to the cascading namespace if the lookup succeeds. Otherwise, the operation is ambiguous and therefore aborted.
- No more guessing of namespaces in case a cascading key is given (`user:, system`: for `kdb set`, `spec:` for `kdb meta-set`), _(Alexander Firbas)_
- `kdb set`, `kdb meta-set`: Validation of keys can no longer be bypassed by using non-cascading keys (except with the new --force (-f) option). _(Alexander Firbas)_
- Disable `-N/--namespace` option in all kdb subcommands _(Alexander Firbas)_
- Implement new name part getter commands `kdb namespace`, `kdb basename` and `kdb dirname`. _(Alexander Firbas)_
- `kdb file`: Remove namespace guessing (in case a cascading key is given, it needs to resolve to an existing key). _(Alexander Firbas)_
- `kdb editor/import`: Disable the use of cascading names (and the 'validate' strategy operating on cascading keys) entirely. _(Alexander Firbas)_
- Update numerous tests to comply with changes above. _(Alexander Firbas)_
- + 4 more
π¦ Scripts
- Add script for mingw-w64 i686 build. _(Tobias Schubert @qwepoizt)_
π Documentation
- Add link and small improvements to tutorial about [writing specifications](/doc/tutorials/specification.md) and [logger](/doc/tutorials/logger.md). _(Markus Raab)_
- doc: add pre/postconditions and invariants to module key _(@lawli3t)_
- doc: add pre/postconditions and invariants to module keymeta _(@lawli3t)_
- Fix broken links _(@lawli3t)_
- Remove previous authors. _(Markus Raab)_
- add pre/postconditions and invariants to module keytest _(@lawli3t)_
- Updated the news template. _(Mihael PranjiΔ)_
- Update and improve tutorial and in-code comments for high-level API _(Tobias Schubert @qwepoizt)_
- + 5 more
π§ͺ Tests
- Fix failing `testshell_markdown_tutorial_crypto` on Mac OS and other OS with GnuPG version >= 2.3.1. _(Peter Nirschl @petermax2)_
- Use clang-format 12 for Restyled and update Restyled version. _(Mihael PranjiΔ)_
- Update all Restyled formatters to current versions. _(Mihael PranjiΔ)_
- Add additional test cases for module `keytest` _(@lawli3t)_
- Update tests for high-level API to work with new specification token mechanism. _(Tobias Schubert @qwepoizt)_
- Add tests for libease's sha-256. _(Tobias Schubert @qwepoizt)_
- Add tests for sha-256 hash calculation of a KeySet. _(Tobias Schubert @qwepoizt)_
- Add additional test cases for module `keymeta` _(@lawli3t)_
π¦ Packaging
- Add packages for openSuse Leap 15.3. _(Robert Sowula)_
π¦ CMake
- Add files generated by CMake to .gitignore. _(Tobias Schubert @qwepoizt)_
- Add support for i686 to mingw-w64 toolchains. _(Tobias Schubert @qwepoizt)_
- Add plugins type, cache, spec, gopts, sync to mingw-w64 builds. _(Tobias Schubert @qwepoizt)_
π Docker
- Add docker images for ABI tests. _(Robert Sowula)_
- Enable BuildKit features to leverage tmpfs to speed up `docker build` commands. _(Mihael PranjiΔ)_
- Bump Gradle to version 7.2. _(Mihael PranjiΔ)_
- Bump Debian Buster images to Bullseye and Stretch images to Buster. We still leave one Debian Stretch job due to upstream Debian LTS support until June 2022. _(Mihael PranjiΔ)_
- Add Dockerfiles for openSUSE Leap 15.3 and CentOS Stream 8. _(Robert Sowula)_
- Add docker image for OpenWrt package building. _(Robert Sowula)_
- Add files generated by docker when tutorial [run-all-tests-with-docker](https://www.libelektra.org/tutorials/run-all-tests-with-docker) is followed to .gitignore. _(Tobias Schubert @qwepoizt)_
π¦ Restyled
- Upgrade to latest stable restylers. _(Mihael PranjiΔ)_
- Added Google Java formatter _(Michael Tucek)_
π¦ Jenkins
- Add ABI test stage for release pipeline. _(Robert Sowula)_
- Move check stages that don't build the code to a dedicated stage, to avoid confusion when parallel builds are aborted. _(Robert Sowula)_
- Add test stages for openSUSE and CentOS. _(Robert Sowula)_
- Use `tmpfs` in Docker to speed up the test suite. _(Mihael PranjiΔ)_
- Add OpenWrt package building stage to release pipeline. _(Robert Sowula)_
- Add debian-bullseye-mingw-w64-i686 build to Jenkinsfile. _(Tobias Schubert @qwepoizt)_
π¦ Cirrus
- Bump FreeBSD images to 12.2 and 13.0 using the LLVM 12 toolchain, drop FreeBSD 11. _(Mihael PranjiΔ)_
- Fix cirrus-file parsing errors. _(Mihael PranjiΔ)_
- Redistribute CPU and memory resources and enable greedy instances. _(Mihael PranjiΔ)_
π¦ GitHub Actions
- Migrate most macOS build jobs to GitHub actions to speed up builds. _(Mihael PranjiΔ)_
- Upgrade macOS GCC build job to GCC 11. _(Mihael PranjiΔ)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date. Furthermore, we changed:
- Update npm dependencies. _(Mihael PranjiΔ)_
π¦ Outlook
- We are currently working on following topics:
- 1.0 API _(Stefan Hanreich)_ and _(Klemens BΓΆswirth)_
- KDB access using FUSE _(Alexander Firbas)_
- Improve Java Development Experience _(Michael Tucek)_
- Improve Plugin Framework _(Klemens BΓΆswirth)_
- Default TOML plugin _(Klemens BΓΆswirth)_, _(Markus Raab)_ and _(Jakob Fischer)_
- Elektrify KDE _(Dardan Haxhimustafa)_, _(Felix Resch)_ and _(Mihael PranjiΔ)_
- Elektrify GNOME _(Mihael PranjiΔ)_
- + 4 more
π¦ Statistics
- We closed [59 issues](https://github.com/ElektraInitiative/libelektra/milestone/29?closed=1) for this release.
- About 17 authors changed 396 files with 13155 insertions(+) and 8331 deletions(-) in 597 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.8.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.8.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.8.tar.gz.hashsum?raw=true)
- name: elektra-0.9.8.tar.gz
- size: 7753097
- md5sum: d978c17aae94d79f9d1f26b547bc46fe
- sha1: 9725bfd6fca832ed472290e9de3711e01e9bfe54
- sha256: b1e8908c138b84e788fdff25eab1c2b07e0b422a5fd1667814539ea02f151c58
- + 6 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.8-release)
- For more information, see [https://libelektra.org](https://libelektra.org).
- Best regards,
- + 1 more
π Changes
- guid: 39F907DA-8B5B-4984-9D19-33BAB7B71B3D
- author: Mihael PranjiΔ
- pubDate: Fri, 09 Jul 2021 10:19:29 +0200
- shortDesc: FUSE Tool, TOML Improvements, ElektraSettings GSettings Bindings
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.7-release).
- You can try out the latest Elektra release using our docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run:
- ```sh
- docker pull elektra/elektra
- + 2 more
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ [email](/src/plugins/email/README.md)
- Introduce email address validation plugin based on regex. _(a-kraschitzer)_
π¦ Resolver
- Fix invalid cache key name. _(Mihael PranjiΔ)_
π¦ Length
- Implement a plugin that validates that a string length is less or equal to given number. _(Philipp Oppel)_
π¦ Blacklist
- Implement a blacklist plugin that rejects values specified in a metadata array. _(Robert Sowula)_
- <a id="hl-1"></a>
π¦ TOML
- Fixed a bug ([#3896](https://issues.libelektra.org/3896)) that caused the `toml` plugin to swallow the first letter of
- all keys (after the namespace), if the parent key was a root key (e.g. `user:/`). _(Klemens BΓΆswirth)_
- The `type` metakey is now set for numbers on reading. _(Jakob Fischer)_
- Rewrote some error messages, to make them less technical. _(Jakob Fischer)_
- Fixed parsing of floats/empty keynames/multiline strings. _(Jakob Fischer)_
π¦ Python
- Fix format string overflow and add error checking when appending to `sys.path`. _(Mihael PranjiΔ)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Core
- A few rare bugs (mostly related to empty keyname parts `/%/`) in the keyname validation and canonicalization logic
- have been fixed. _(Klemens BΓΆswirth)_
- Fix default backend key name for cache compatibility. _(Mihael PranjiΔ)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up to date with the multi-language support provided by Elektra.
π¦ JNA
- Currently the binding's automated clean-up of native keys and key sets is deactivated until JNI segmentation fault issues are resolved in an upcoming release. After these issues have been resolved, manual clean-up of native resources will be discouraged. Therefore the `Key::get*AndRelease` convenience methods introduced with the last release have been removed. _(Michael Tucek)_
- Upgrade Gradle to 7.1.1. _(Mihael PranjiΔ)_
π¦ Gsettings
- Fix user and default (system) namespaces and key names. _(Mihael PranjiΔ)_
- Rewrite `dbus` change notification mechanism. _(Mihael PranjiΔ)_
π¦ Scripts
- Add a script that automates the process of inserting source archive hashsums and git statistics into the release notes during a release. _(Robert Sowula)_
π Documentation
- JNI docu updates and small fixes. _(Markus Raab)_
- Small updates in notification tutorial. _(Markus Raab)_
- Add [tutorial about writing specifications](/doc/tutorials/specification.md). _(Aaron Abebe <aaron.abebe@gmail.com>)_
- Change GPG keyserver for receiving the apt key from keys.gnupg.net to keyserver.ubuntu.com _(Robert Sowula)_
- The manpages now use the date of the last change recorded in git. _(Klemens BΓΆswirth)_
π§ͺ Tests
- Upgrade GoogleTest frameworks to version 1.11.0. _(Mihael PranjiΔ)_
- Add additional test cases for module `key`. _(@lawli3t)_
- Add additional test cases for module `keyname`. _(@lawli3t)_
- Add additional test cases for module `keyvalue`. _(@lawli3t)_
- Add tests for module `keyset`. _(@lawli3t)_
π¦ Packaging
- Add packages for following bindings: `glib`, `io_ev`, `io_glib` and `io_uv`. _(Robert Sowula)_
π Docker
- Upgrade Alpine Linux images to 3.14.0. _(Mihael PranjiΔ)_
π¦ Jenkins
- Add the deployment of the [website](https://www.libelektra.org) to the release pipeline, therefore removing the need to wait until the main pipeline succeeds after a release. _(Robert Sowula)_
- Restructure the release job stages to make it more failsafe and enable a re-run without any version conflict until the last stage. _(Robert Sowula)_
- Fix invalid package artifact path in release pipeline. _(Robert Sowula)_
- Clean Jenkins workspaces after builds. _(Mihael PranjiΔ)_
π¦ Outlook
- We are currently working on following topics:
- Elektrify KDE _(Dardan Haxhimustafa)_, _(Felix Resch)_ and _(Mihael PranjiΔ)_
- 1.0 API _(Stefan Hanreich)_ and _(Klemens BΓΆswirth)_
- Improve Java Development Experience _(Michael Tucek)_
- Elektrify GNOME _(Mihael PranjiΔ)_
- Continious Releases _(Robert Sowula)_
- KDB access using FUSE _(Alexander Firbas)_
- Default TOML plugin _(Jakob Fischer)_ and _(Klemens BΓΆswirth)_
- + 4 more
π¦ Statistics
- About 18 authors changed 307 files with 6547 insertions(+) and 1914 deletions(-) in 304 commits.
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.7.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.7.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.7.tar.gz.hashsum?raw=true)
- name: elektra-0.9.7.tar.gz
- size: 7712448
- md5sum: 4355e7df0dcf4178974097604f996747
- sha1: c418d344d72879dd2b3fd6fa8e9831c921cfaba5
- sha256: 12b7b046004db29317b7b937dc794abf719c400ba3115af8d41849127b562681
- + 6 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.7-release)
- For more information, see [https://libelektra.org](https://libelektra.org).
- Best regards,
- + 1 more
π Changes
- guid: ad3d9308-4019-46dc-9de0-b3b82de5302a
- author: Mihael PranjiΔ
- pubDate: Mon, 07 Jun 2021 09:48:41 +0200
- shortDesc: Java Fixes, Documentation Updates, GCC 11 and Clang 12 Compatibility
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.6-release)
- You can try out the latest Elektra release using our docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run
- `docker run -it elektra/elektra`.
π¦ Highlights
- Java fixes: JNI plugin fixed and JNA bindings improved
- Fedora 34 and Debian Bullseye packages added
- Documentation Improvements & Cleanups
- GCC 11 and Clang 12 compatibility
π JNI plugin fixed
- Note that it is currently not possible to mount plugins written in Java (see [#3881](https://github.com/ElektraInitiative/libelektra/issues/3881)).
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ JNI
- Fixed double free issues and re-enabled tests
- Updated documentation
- Increased minimum required JDK version to 9
- _(Michael Tucek)_
- Special thanks to _(Klemens BΓΆswirth)_, _(Mihael PranjiΔ)_ and _(Robert Sowula)_ for helping with the problem analysis!
π¦ Dbus, Dbusrecv and Zeromqsend
- Internal changes to ensure compatibility with the new `elektraNotificationContract`. _(Klemens BΓΆswirth)_
π¦ Xerces
- Store length of an array in metakey array according to [array decision](../decisions/array.md). _(Robert Sowula)_
π¦ YAML Smith and Yan LR
- Removed plugins. _(RenΓ© Schwaiger)_
π¦ ni
- Silence Clang 12 warnings about suspicious string literal concatenation. _(Mihael PranjiΔ)_
π¦ Lua
- Removed outdated information from docs _(@a-kraschitzer)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Core
- Remove keyCompareBy(Name)?Owner _(@a-kraschitzer)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up to date with the multi-language support provided by Elektra.
π¦ SWIG
- Remove `-Wno-shift-overflow warnings` option from SWIG bindings compile flags. _(Mihael PranjiΔ)_
- Suppress SWIG/Ruby bindings warning about `operator != ignored`. _(Mihael PranjiΔ)_
π¦ JNA
- Gradle wrapper and docker images upgraded to 7.0.2
- Minumum Gradle version decreased to 6.0
- Upgraded JNA dependency from 4.5.2 to 5.8.0
- Increased minimum required JDK version to 11
- Updated Java binding API documentation
- Migrated native resource clean-up from `finalize()` to `Cleaner`
- Please revisit the documentation for `Key::release` and `KeySet::release` for recommended resource release handling
- Currently automated native key and key set resource clean-up is deactivated due to some possible race conditions wich might result in double free errors (#3869). Manual key release is also disabled to not break current API release semantic. This leads to memory leaks, which is a known issue and will be resolved in an upcoming release.
- + 52 more
π¦ Tools
- Remove `kdb set` functionality that creates a null key. _(Robert Sowula)_
- Rename elektraStrnDup to elektraMemDup _(@a-kraschitzer)_
- Update specmount error message _(@a-kraschitzer)_
- Update `elektraMemDup` to `void *` and update the documentation. _(Mihael PranjiΔ)_
- There have been a few bugfixes for elektrad. _(Klemens BΓΆswirth)_
- Update `lodash` and `hosted-git-info` dependencies of `webd` due to security update. _(Mihael PranjiΔ)_
π¦ Scripts
- Require clang-format 12 for reformatting C and Java. _(Mihael PranjiΔ)_
- Use basename of release file in `generate-hashsums`. _(Mihael PranjiΔ)_
- Use `shfmt` v3.2.4 to reformat shell scripts. _(Mihael PranjiΔ)_
- Use `cmake-format` v0.6.13 (`cmakelang`) to reformat CMake. _(Mihael PranjiΔ)_
- Aptly repositories are now automatically created if they do not exist during a package release. _(Robert Sowula)_
π Documentation
- Added Reviews for all functions contained in the Elektra Core API _(@lawli3t)_
- Added packaging section to news template. _(Mihael PranjiΔ)_
- Minor readability improvement in [highlevel.md](/doc/tutorials/highlevel.md) _(Tobias Schubert @qwepoizt)_
- Fix examples of spec plugin. _(Robert Sowula)_
- Added Reviews for all functions contained in the Elektra Core API _(@lawli3t)_
- Document package names of plugins, bindings and tools. _(Robert Sowula)_
- Small update in API docu related to different namespaces in returned keys. _(Markus Raab)_
- improved docu of [noresolver](/src/plugins/noresolver). _(Markus Raab)_
- + 18 more
π§ͺ Tests
- Fix failing `testshell_markdown_tutorial_crypto` on Mac OS and other OS with GnuPG version >= 2.3.1. _(Peter Nirschl @petermax2)_
- Use clang-format 12 for Restyled and update Restyled version. _(Mihael PranjiΔ)_
- Update all Restyled formatters to current versions. _(Mihael PranjiΔ)_
π¦ Packaging
- We now package the Ruby bindings, ruby plugin and the gitresolver plugin. _(Robert Sowula)_
- We added Fedora 34 packages. _(Mihael PranjiΔ)_
- We added Debian Bullseye packages. _(Robert Sowula)_
π¦ CMake
- Disable binding tests when `BUILD_TESTING` is disabled. _(Robert Sowula)_
- Remove unused `FindCppCMS.cmake` CMake module and unused `Boost` variables. _(Mihael PranjiΔ)_
π Docker
- Add Fedora 34 images. _(Mihael PranjiΔ)_
- We added release images that come with pre-installed dependencies and sudo permissions for each distribution we build packages for. _(Robert Sowula)_
- Use Clang 12 and Gradle 7.0 in Debian Sid image. _(Mihael PranjiΔ)_
- Remove Boost and some unused dependencies from all Docker images. _(Mihael PranjiΔ)_
- Use Gradle 7.0 and Ronn-NG `0.10.1.pre1` in Docker images. _(Mihael PranjiΔ)_
- Remove unused Debian Buster `doc` image. _(Mihael PranjiΔ)_
π¦ Cirrus
- Use Clang 12 and Python 3.9 for macOS builds. _(Mihael PranjiΔ)_
- Pin GnuPG version to 2.2.x. _(Mihael PranjiΔ)_
- Update Fedora image to version 34. _(Mihael PranjiΔ)_
- Clean up unused dependencies in Arch Linux image and add Ronn-NG to generate man pages. _(Mihael PranjiΔ)_
π¦ GitHub Actions
- Pin GnuPG version to 2.2.x. _(Mihael PranjiΔ)_
- Enable `jni` plugin and fix `JAVA_HOME` detection. _(Mihael PranjiΔ)_
π¦ Jenkins
- We now build and test on Fedora 34 and 33. Fedora 32 was removed from the CI. _(Mihael PranjiΔ)_
- Build release documentation on Debian Sid, due to newer TeX and Doxygen packages. _(Mihael PranjiΔ)_
π¦ Travis
- Update Ubuntu to Focal, use GCC 10 and clean up travis scripts. _(Mihael PranjiΔ)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date. Furthermore, we changed:
- Update `highlight.js` due to a [ReDOS vulnerability](https://github.com/advisories/GHSA-7wwv-vh3v-89cq) and upgrade other dependencies as well. _(Mihael PranjiΔ)_
- Catch errors when code highlighting fails. _(Mihael PranjiΔ)_
- Get rid of unused code: authentication, backend, users, snippets and conversion service. _(Mihael PranjiΔ)_
- Fix docsearch sourcemap error. _(Mihael PranjiΔ)_
- Update `lodash` dependency due to security update. _(Mihael PranjiΔ)_
π¦ Outlook
- We are currently working on following topics:
- Elektrify KDE _(Dardan Haxhimustafa)_, _(Felix Resch)_ and _(Mihael PranjiΔ)_
- 1.0 API _(Stefan Hanreich)_ and _(Klemens BΓΆswirth)_
- Improve Java Development Experience _(Michael Tucek)_
- Elektrify GNOME _(Mihael PranjiΔ)_
- Continious Releases _(Robert Sowula)_
- KDB access using FUSE _(Alexander Firbas)_
- Default TOML plugin _(Jakob Fischer)_
- + 4 more
π¦ Statistics
- We closed [39 issues](https://github.com/ElektraInitiative/libelektra/milestone/27?closed=1) for this release.
- About 17 authors changed 627 files with 15988 insertions(+) and 16768 deletions(-) in 465 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.6.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.6.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.6.tar.gz.hashsum?raw=true)
- name: elektra-0.9.6.tar.gz
- size: 7650067
- md5sum: ed33e7b61f2b1ed3742f3bc6dd046d53
- sha1: fd6082ee38e31e54b66a96a50fc4d20c9c107c89
- sha256: c8e75f4d21bf3bd6b1028e776af9ff644a17a7dfbb1f2052f50392767deea197
- + 6 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.6-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- Best regards,
- + 1 more
π Changes
- guid: 8a56a045-3d2e-427d-84bb-8256635159d2
- author: Mihael Pranjic
- pubDate: Mon, 12 Apr 2021 08:43:05 +0200
- shortDesc: Java Binding Improvements, Breaking Change to `kdbOpen`
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.5-release)
- You can try out the latest Elektra release using our docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run
- `docker run -it elektra/elektra`.
π¦ Highlights
- Breaking change to `kdbOpen`. _[see below](#hl-1)_
- Ongoing improvements of Java bindings and publishing of bindings to maven central for easy dependency integrations in Java projects
- <a id="hl-1"></a>
π¦ `kdbOpen` Contracts
- The signature of `kdbOpen` has been changed from
- ```c
- KDB * kdbOpen (Key * errorKey);
- ```
- to
- ```c
- KDB * kdbOpen(const KeySet * contract, Key *parentKey);
- ```
- + 13 more
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ Cache
- The `cache` plugin now only caches the parts of the global keyset that are below `system:/elektra/cache` or below
- `system:/elektra/cached`. The part below `system:/elektra/cache` is meant for internal data of the `cache`, so you
- should put data below `system:/elektra/cached`, if you want it to be cached. _(Klemens BΓΆswirth)_
π¦ internalnotification
- Fix use of `kdb_long_double_t` on armel platforms ([#3450](https://github.com/ElektraInitiative/libelektra/issues/3450)). _(Mihael PranjiΔ)_
π¦ Dbus & Dbusrecv
- Internal changes to ensure compatibility with the new `elektraNotificationContract`. _(Klemens BΓΆswirth)_
π¦ YAML Smith & Yan LR
- Removed plugins `yamlsmith` and `yanlr`. _(RenΓ© Schwaiger)_
π¦ Zeromqsend & Zeromqrecv
- Internal changes to ensure compatibility with the new `elektraNotificationContract`. _(Klemens BΓΆswirth)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Compatibility
- `keyCopy` and `keyDup` now take an additional flag. See [below](#key-copy).
- `kdbEnsure` was removed and integrated into `kdbOpen`, which now takes an additional `KeySet * contract` parameter. See [above](#hl-1)
π¦ Core
- <a id="key-copy"></a>
- The `keyCopy` and `keyDup` functions have been changed. They now take a `flags` argument which specifies which parts
- of the `Key` should be copied.
- The API also changed slightly. Most importantly `NULL` values are handled differently. For example, `keyDup (NULL, KEY_CP_ALL)`
- returns a key similar to what `keyNew ("/", KEY_END)` produces, whereas previously `keyDup (NULL)` returned `NULl`.
- _(Klemens BΓΆswirth)_
- We added `keyReplacePrefix`, a function that allows you to easily move a key from one parent to another. _(Klemens BΓΆswirth)_
- `kdbEnsure` was removed and replaced by similar functionality added to `kdbOpen`. _[see above](#hl-1)_ _(Klemens BΓΆswirth)_
- + 3 more
π¦ Io
- `elektraSetIoBinding` has been removed. Use `elektraIoContract` instead. _(Klemens BΓΆswirth)_
π¦ Notification
- `elektraNotificationOpen` has been removed. Use `elektraNotificationContract` instead.
- `elektraNotificationClose` has also been removed. There is no replacement, cleanup now happens automatially during
- `kdbClose`. _(Klemens BΓΆswirth)_
- The contract for transport plugins has been changed. The exported functions `"openNotification"`, `"closeNotification" and`"setIoBinding"`are no longer used. Instead, plugins should retrieve the I/O binding from the key`system:/elektra/io/binding`in the global keyset. The notification callback and context that were passed to`"openNotification"`, can now be read from the global keyset as well. The keys are`system:/elektra/notification/callback`and`system:/elektra/notification/context` respectively.
- _(Klemens BΓΆswirth)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up to date with the multi-language support provided by Elektra.
π¦ JNA
- Since internal iterator support for `KeySet` is due to being dropped, the following methods have been removed:
- `Elektra::ksNext`
- `Elektra::ksCurrent`
- `Elektra::ksGetCursor`
- `Elektra::ksSetCursor`
- `KeySet::next`
- `KeySet::current`
- `KeySet::rewind`
- + 9 more
π¦ Python & Lua
- Add support for keyset.remove(key). _(Manuel Mausz)_
π¦ Tools
- `webd`: update `ini`, `y18n` and `elliptic` dependencies. _(Mihael PranjiΔ)_
- Make search for providers not skip rest of plugins on exceptions. _(Markus Raab)_
π¦ Examples
- Fix enums in examples/spec. _(Markus Raab)_
π Documentation
- Document names of different components. _(Markus Raab)_
- Update buildserver documentation _(Robert Sowula)_
- Reworked [METADATA.ini](/doc/METADATA.ini) _(Markus Raab)_
- Minor rewording in INSTALL.md _(@a-kraschitzer)_
- Write notes that `\\` are due to shell recorder, and are not to be copied _(Markus Raab)_
- Add link to [Go](https://github.com/ElektraInitiative/go-elektra) bindings _(Markus Raab)_
- Fix order of tutorials _(Markus Raab)_
- Added API-Reviews for multiple functions in the public API _(Stefan Hanreich)_
- + 6 more
π§ͺ Tests
- Added small test for jna Return plugin (`Return.java`), `KeyNameIterator.java` _(@aaronabebe)_
π¦ Packaging
- Change shlibs version compatibility policy of Debian packages to ">=". _(Robert Sowula)_
- Automate publishing of the release Elektra Docker images. _(Robert Sowula)_
π¦ CMake
- Fix issue where the library runpaths of the jni plugin could not be resolved. _(Robert Sowula)_
π Docker
- Update Alpine Linux images to version 3.13.1 and update Elektra release image. _(Mihael PranjiΔ)_
π¦ Cirrus
- Update FreeBSD images from version 12.1 to 12.2 _(Robert Sowula)_
- Update brew before installing packages and print brew config. _(Mihael PranjiΔ)_
- Restart `dbus` service before running tests and find `DBUS_LAUNCHD_SESSION_BUS_SOCKET` manually (as workaround). _(Mihael PranjiΔ)_
- Use macOS Big Sur images. _(Mihael PranjiΔ)_
π¦ GitHub Actions
- Fix issues with `dbus` and java paths, exclude `jni`. _(Mihael PranjiΔ)_
π¦ Jenkins
- Update daily job to always keep the latest Docker images containing installed Elektra packages that were build on master or during release. _(Robert Sowula)_
- Add a cleanup of the aptly database to the daily job. _(Robert Sowula)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date. Furthermore, we changed:
- It is now possible to have two links on the same line of a markdown file rendered on the website. _(Klemens BΓΆswirth)_
- The file [doc/KEYNAMES.md](../KEYNAMES.md) is now rendered on the website. _(Klemens BΓΆswirth)_
- Update `ini` dependency. _(Dependa Bot)_
- Update many dependencies (Node 14.x LTS, angular, bootstrap, ..) and fix broken RSS feed permalinks. _(Mihael PranjiΔ)_
π¦ Outlook
- We are currently working on following topics:
- Elektrify KDE _(Dardan Haxhimustafa)_, _(Felix Resch)_ and _(Mihael PranjiΔ)_
- 1.0 API _(Stefan Hanreich)_ and _(Klemens BΓΆswirth)_
- Improve Java Development Experience _(Michael Tucek)_
- Elektrify GNOME _(Mihael PranjiΔ)_
- Continious Releases _(Robert Sowula)_
- KDB access using FUSE _(Alexander Firbas)_
- Default TOML plugin _(Jakob Fischer)_
- + 4 more
π¦ Statistics
- We closed [20 issues](https://github.com/ElektraInitiative/libelektra/milestone/26?closed=1) for this release.
- About 19 authors changed 515 files with 19081 insertions(+) and 10602 deletions(-) in 375 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.5.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.5.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.5.tar.gz.hashsum?raw=true)
- name: elektra-0.9.5.tar.gz
- size: 7636892
- md5sum: 2245727ed0042645d98de34a1872fbb4
- sha1: c0181bbee212a46b5a9eda3180ff7673f657d6ed
- sha256: 0b6ee9d6bf13c3749f4d014df444606f84a2f5a797a541002f8d4e745007c3a5
- + 6 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.5-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- Best regards,
- + 1 more
π Changes
- guid: a3f66c2f-ae6a-412b-bdbd-f8950adb2334
- author: Mihael Pranjic
- pubDate: Mon, 01 Feb 2021 22:54:30 +0100
- shortDesc: Key Name Improvements, Debian and Fedora Packaging
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.4-release)
π¦ Highlights
- Important Breaking Changes to key names et al. _[see below](#hl-1)_
- Debian and Fedora Packaging with CPack _[see below](#hl-2)_
- <a id="hl-1"></a>
π₯ Important Breaking Changes
- The structure of key names has been changed. [see below](#br-1) _(Klemens BΓΆswirth)_ <br/>
- This change breaks mountpoint configurations.
- Please follow the upgrade procedure [shown below](#mountpoint-upgrade).
- The backend fallback procedure introduced in Elektra 0.8.15 has been removed and the structure of the `warnings` metadata array has been changed. [see below](#br-2) _(Klemens BΓΆswirth)_
- We removed the `ini` plugin (superseded by the TOML plugin), the `null` plugin (superseded by the base64 plugin) and the `tcl` plugin _(Markus Raab, Philipp Gackstatter)_
- <a id="br-1"></a>
- There have been significant changes to Elektra's key names:
- The most important change is that you now need a `:` after the namespace.
- + 48 more
π¦ Debian and Fedora Packaging with CPack
- We now provide DEB and RPM packages for releases and for every commit on master in our own repositories using CPack for:
- DEB packages for Debian Buster
- DEB packages for Ubuntu Bionic
- DEB packages for Ubuntu Focal
- RPM packages for Fedora 33
- A big thanks to _(Robert Sowula)_ for introducing CPack and creating the repositories.
- 1. First, you need to obtain the repository key:
- ```sh
- + 21 more
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ jni
- Fix rare memleak when the `jni` plugin is closed. _(Mihael PranjiΔ)_
π¦ mINI
- We changed the `provides` clause in the plugin contract. Now mINI offers support for the [properties format](https://en.wikipedia.org/wiki/.properties) (`storage/properties`) instead of the INI file format (`storage/ini`). This makes sense, since the plugin never supported the [section syntax][] of INI files. _(RenΓ© Schwaiger)_
- [section syntax]: https://en.m.wikipedia.org/wiki/INI_file#Sections
π¦ Quickdump
- Support for the old quickdump v1 and v2 formats has been removed. _(Klemens BΓΆswirth)_
π¦ Simple INI
- The plugin contract now correctly states that the plugin offers support for the [properties format](https://en.wikipedia.org/wiki/.properties). Before it would state that the plugin offered support for the INI file format. This is not true, since the plugin does not support the [section syntax][] of the INI file format.
π¦ YAML CPP
- We fixed an [use after free bug in the plugin](https://issues.libelektra.org/3561). _(RenΓ© Schwaiger)_
π¦ Yan LR
- The plugin now works (with and) requires [ANTLR `4.9`](https://github.com/antlr/antlr4/releases/tag/4.9). _(RenΓ© Schwaiger)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Compatibility
- <a id="br-2"></a>
- We removed the fallback procedure introduced in Elektra 0.8.15 (using `KDB_DB_FILE` (`default.ecf`) for `system:/elektra`, if the bootstrap backend `KDB_DB_INIT` (`elektra.ecf`) isn't found).
- If you still rely on this feature, either use `kdb upgrade-bootstrap` before upgrading, or manually extract `system:/elektra` into `elektra.ecf`.
- There was an update to how warnings are generated.
- For users this means that the `warnings` metadata now forms a proper array.
- Specifically, the first 100 warnings are stored below to the meta keys `warnings/#0`, `warnings/#1`, ..., `warnings/#9`, `warnings/#_10`, ..., `warnings/#_99`.
- After that, warnings will wrap around, so the 101st warning will be stored as `warnings/#0`, 102nd as `warnings/#1` etc.
π¦ Core
- `kdbSet` now properly handles, if the given `parentKey` is `NULL` or has read-only name, value or metadata. _(Klemens BΓΆswirth)_
π¦ Proposal
- Removed `elektraKeyGetMetaKeySet` and moved `keySetStringF` to the hosts plugin. _(Philipp Gackstatter)_
- Removed `ksPopAtCursor`. _(Philipp Gackstatter)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up to date with the multi-language support provided by Elektra.
π¦ Lua
- Remove ipairs support and add our own iterator to add support for Lua 5.4, since `__ipairs` was deprecated. _(Manuel Mausz)_
π¦ JNA
- Fixed allocation not correctly conveyed on key set initialization _(Michael Tucek)_
π¦ C++
- `ElektraNamespace` is the new C++ `enum class` for the Elektra's namespaces. You should prefer it to using `KEY_NS_SYSTEM` et al. directly, if you use C++.
- The array `ELEKTRA_NAMESPACES` can be used to iterate over all namespaces. _(Klemens BΓΆswirth)_
π¦ Ruby
- Enable `__declspec` attributes for Ruby 3.0. _(Mihael PranjiΔ)_
π¦ Tools
- The kdb cmd-line tool outputs better error messages on wrong names like `user` or `user:` as `user:/` is now required. _(Markus Raab)_
- The QtGUI was updated to be compatible with the new key name structure. _(Klemens BΓΆswirth)_
π¦ Scripts
- We fixed the (possibly) infinitely running function `generate-random-string` in [check-env-dep](../../scripts/check-env-dep).
- _(RenΓ© Schwaiger)_
π Documentation
- Finalize 1.0 [decisions](/doc/decisions). _(Markus Raab)_
- Update [API design document](/doc/DESIGN.md) _(Markus Raab and Stefan Hanreich)_
- Update [release instructions](../todo/RELEASE) _(Robert Sowula)_
- Changed API documentation terms [current, latest] to [latest, master].
π§ͺ Tests
- Tests that use additional executables can now be installed and run via `kdb <testname>`.
- Existing tests have been update to support this. _(Klemens BΓΆswirth)_
- Update source formatting check to clang-format 11. _(Mihael PranjiΔ)_
π¦ CMake
- Use Lua 5.4 when available. _(Mihael PranjiΔ)_
- Force `RTLD_NODELETE` on dlopen() when the `ENABLE_ASAN` CMake option is used. This enables ASAN to find symbols which otherwise might be unloaded. _(Mihael PranjiΔ)_
π Docker
- We added a Docker image for [building the documentation on Debian Sid](../../scripts/docker/debian/sid/doc.Dockerfile). _(RenΓ© Schwaiger)_
- We removed the Docker image for building the documentation on Debian Stretch. _(RenΓ© Schwaiger)_
- Add Fedora 33 Dockerfile for Cirrus and Jenkins CI. _(Mihael PranjiΔ)_
- Debian Sid: update to clang 11. _(Mihael PranjiΔ)_
π¦ Cirrus
- Upgrade Cirrus Fedora docker image to Fedora 33. _(Mihael PranjiΔ)_
- Upgrade to Ruby 3.0 for macOS builds. _(Mihael PranjiΔ)_
π¦ GitHub Actions
- We added a build job that translates Elektra with GCC on macOS. _(Mihael PranjiΔ, RenΓ© Schwaiger)_
π¦ Jenkins
- We refactored shared code between pipelines into a [Jenkins Shared Library](https://github.com/ElektraInitiative/jenkins-library). _(Robert Sowula)_
- We now use Debian Sid to build the documentation instead of Debian Stretch. The Doxygen version in Debian stretch [contains a bug](https://github.com/doxygen/doxygen/issues/6456) that causes the generation of the PDF documentation to fail. _(RenΓ© Schwaiger)_
- Use Fedora 33 and 32, drop Fedora 31 use in Jenkins. _(Mihael PranjiΔ)_
- The Main and Release Pipeline now creates packages for Debian Buster, Ubuntu Bionic, Ubuntu Focal and Fedora-33. These packages are also installed and automatically tested before they are published. To install these packages, please refer to our [Install documentation](../INSTALL.md). _(Robert Sowula)_
- We updated our Release Pipeline to push changes directly to our git repositories. _(Robert Sowula)_
π¦ Travis
- Move macOS GCC 10 build job to Github Actions. _(Mihael PranjiΔ)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date.
π¦ Outlook
- We are currently working on following topics:
- Elektrify KDE _(Dardan Haxhimustafa)_, _(Felix Resch)_ and _(Mihael PranjiΔ)_
- 1.0 API _(Stefan Hanreich)_ and _(Klemens BΓΆswirth)_
- Improve Java Development Experience _(Michael Tucek)_
- Elektrify GNOME _(Mihael PranjiΔ)_
- Continious Releases _(Robert Sowula)_
- KDB access using FUSE _(Alexander Firbas)_
- Default TOML plugin _(Jakob Fischer)_
- + 4 more
π¦ Statistics
- We closed [21 issues](https://github.com/ElektraInitiative/libelektra/milestone/25?closed=1) for this release.
- About 13 authors changed 1280 files with 26471 insertions(+) and 29959 deletions(-) in 428 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.4.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.4.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.4.tar.gz.hashsum?raw=true)
- name: elektra-0.9.4.tar.gz
- size: 7562103
- md5sum: 670a3e9ab225ef53cb2db9058225d7d9
- sha1: 2a5729462fc61694f2b81ca7dbd3620f09cbbf72
- sha256: e1f11f063ab262ce056238ca17aa60442a450a0bb6c5f57a9959df0365576bc6
- + 6 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.4-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- Best regards,
- + 1 more
π Changes
- guid: 9b9e8889-0c77-45ce-8441-8bdf26a110ac
- author: Mihael Pranjic
- pubDate: Fri, 30 Oct 2020 23:03:43 +0100
- shortDesc: TOML Storage Plugin
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.3-release)
- You can try out the latest Elektra release using our docker image [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- This is the quickest way to get started with Elektra without compiling and other obstacles, simply run
- `docker run -it elektra/elektra`.
π¦ TOML
- The highlight of this release is the [TOML plugin](https://www.libelektra.org/plugins/toml).
- The TOML plugin has a similar huge feature set as the INI plugin,
- but is written in a much cleaner and more maintainable way using flex and bison.
- Furthermore, it follows the popular [TOML spec](https://toml.io).
- It has nearly no run-time dependency, it only needs `base64` if binary values are needed.
- A huge thanks to Jakob Fischer for this amazing work!
- > Warning: In one of the following `0.9.*` releases, INI will be removed and TOML will become the
- > default plugin. If you are using INI, please migrate to TOML now.
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ xmltool
- Values of KDBStream changed to fit with elektraKeyFlags: recompilation of application is needed. _(Markus Raab)_
π¦ TOML
- Added the [TOML plugin](https://www.libelektra.org/plugins/toml), which can read and write TOML files using flex and bison. _(Jakob Fischer)_
- Removed the `null` plugin dependency of the plugin. _(Jakob Fischer)_
- The `type` metakey is now set for numbers on reading. _(Jakob Fischer)_
π¦ dump
- The `dump` plugin got a major update. The new version can read old files, but only write new files.
- The new files cannot be read by the old version of the plugin and will result in a "version error" message. _(Klemens BΓΆswirth)_
- The new version stores keynames relative to the mountpoint, so exported `dump` files can now be imported into a different mountpoint. _(Klemens BΓΆswirth)_
- `dump` no longer writes unnecessary zero-bytes into files. This means that as long as all key-values are human-readable, so is the `dump` output.
- This makes `dump` usable for tests and demo purposes, as it is a very simple format closely modelled after a KeySet's structure.
- This also makes it much easier to manually fix broken `dump` files.
- You only need a text editor most of the time. _(Klemens BΓΆswirth)_
π¦ Compatibility
- Elektra `0.9.*` does not make any compatibility promises, as we want a clean 1.0.0 release.
- In this release, we did the following changes:
- `keyswitch_t` renamed to elektraKeyFlags. _(Markus Raab)_
- `option_t` renamed to elektraLockFlags and elektraLookupFlags. _(Markus Raab)_
- `cursor_t` renamed to elektraCursor. _(Markus Raab)_
- > Note: We made this release before merging larger changes.
- > Please expect more fundamental changes in the next releases.
π¦ Errors
- Improved error messages. _(Markus Raab)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up to date with the multi-language support provided by Elektra.
π¦ JNA
- Made examples work again. _(Markus Raab)_
π¦ Scripts
- Fix googletest framework path in debian configure script. _(Mihael PranjiΔ)_
- The [fish completion script](../../scripts/completion/kdb.fish) does not fail any more, if you try to complete a simple
- command that expects a namespace. For example, completing
- ```sh
- kdb ls βΈ
- ```
- with the tab key (<kbd>β₯</kbd>) (`βΈ` represents the current cursor position) should work correctly again. _(RenΓ© Schwaiger)_
- The formatting scripts using prettier now use [`npx`](https://www.npmjs.com/package/npx), which is included in `npm`
- + 5 more
π Documentation
- Updated [GOALS.md](http://www.libelektra.org/docgettingstarted/goals). _(Markus Raab)_
- Describe hierarchy and limitations of [hosts plugin](https://www.libelektra.org/plugins/hosts). _(Markus Raab)_
- The Doxygen PDF documentation now also requires the packages
- `stix` (part of `texlive-fonts-extra`) and
- `stmaryrd` (part of `texlive-science` or `texlive-math-extra`). _(RenΓ© Schwaiger)_
- Write down some fundamental [decisions](https://www.libelektra.org/decisions/readme),
- mostly about key names and key set structure. _(Markus Raab in discussions with Klemens BΓΆswirth)_
π§ͺ Tests
- Fixed the `is_not_rw_storage` function. _(Lukas Kilian)_
- We now ensure that the `check_import` and `check_export` tests run for at least one plugin. _(Lukas Kilian)_
π¦ CMake
- `make uninstall` also uninstalls symlinks. _(Markus Raab)_
- `external-links.txt` and `extra_install_manifest.txt` are cleaned up at cmake runs. _(Markus Raab)_
- Increased CTest timeout for `testscr_check_kdb_internal_suite` due to timouts reached on slow test machines. _(Mihael PranjiΔ)_
π Docker
- Added Alpine Linux docker image with latest Elektra installed. This image is published on docker hub as [elektra/elektra](https://hub.docker.com/r/elektra/elektra).
- We will update the image for each Elektra release such that novices can easily test Elektra without compiling or installing. _(Mihael PranjiΔ)_
- Remove unused `libgtest-dev` from docker images. _(Mihael PranjiΔ)_
- Add Ubuntu Focal (20.04) docker image. _(Robert Sowula)_
- Update Alpine Linux docker image to 3.12.1. _(Mihael PranjiΔ)_
π¦ Cirrus
- Update FreeBSD images from version 11.3 to 11.4. _(Mihael PranjiΔ)_
- Increase CPU count for containers to 4. _(Mihael PranjiΔ)_
- Use Ruby 2.7 on macOS. _(Mihael PranjiΔ)_
- Export Python 3.8 path for macOS builds. _(Mihael PranjiΔ)_
π¦ Jenkins
- Temporarily resolve cyclic dependency between go-elektra and libelektra builds. _(Mihael PranjiΔ)_
- Add a new Jenkinsfile for release automation. _(Robert Sowula)_
- Our release pipeline now also builds deb packages for Ubuntu Focal (20.04). _(Robert Sowula)_
π¦ Travis
- Update macOS builds to use GCC 10, Ruby 2.7.1 and Xcode 12.2. _(Mihael PranjiΔ)_
- Increase wait time on builds to fix build timeout errors ("No output has been received in the last 10m0s"). _(Mihael PranjiΔ)_
- Export Python 3.9 path for macOS builds. _(Mihael PranjiΔ)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date. Furthermore, we changed:
- Renamed the source folder of the [website](/src/tools/website) and removed the backend. _(Markus Raab)_
- Use strict dependency injection for website modules. _(Marvin Mall)_
- Added `package-lock.json` to ensure repeatable builds. _(Marvin Mall)_
π¦ Decisions
- We are intensively working on Elektra 1.0.
- The last details of the semantics of Elektra 1.0 are in discussion.
- The decisions are [documented](/doc/decisions), but some of them
- are not finalized.
- If you are interested in the discussions, please
- [subscribe](https://issues.libelektra.org/3520).
π¦ Outlook
- We are currently working on following topics:
- Elektrify KDE _(Dardan Haxhimustafa)_, _(Felix Resch)_ and _(Mihael PranjiΔ)_
- Elektrify GNOME _(Mihael PranjiΔ)_
- Default TOML plugin _(Jakob Fischer)_
- Improve Plugin Framework _(Vid Leskovar)_
- Keyname Overhaul _(Klemens BΓΆswirth)_
- Continious Releases _(Robert Sowula)_
- FUSE Integration _(Alexander Firbas)_
- + 5 more
π¦ Statistics
- We closed [15 issues](https://github.com/ElektraInitiative/libelektra/milestone/24?closed=1) for this release.
- About 17 authors changed 533 files with 26133 insertions(+) and 15834 deletions(-) in 545 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.3.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.3.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.3.tar.gz.hashsum?raw=true)
- author: mpranj
- name: elektra-0.9.3.tar.gz
- size: 7540609
- md5sum: 649fe13100266ab0e9a4cd19b99e2049
- sha1: 02900ef5c8b24cf067930068c62f2ff09b44354d
- + 7 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.3-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- Best regards,
- + 1 more
π Changes
- guid: ea79f59e-f471-4658-a11b-1371802814c2
- author: Mihael Pranjic
- pubDate: Tue, 26 May 2020 19:33:30 +0200
- shortDesc: KDE and GNOME Integration, `elektrad` in Go
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.2-release)
π¦ Highlights
- KDE integration
- GNOME Integration
- `elektrad` rewritten in Go
π¦ KDE Integration
- Additionally, we added a new Elektra plugin called `kconfig`, which can read and write kconfig's INI files.
- The plugin enables smooth migration of existing KDE configurations. _(Dardan Haxhimustafa)_ and _(Felix Resch)_
π¦ Try out Elektra
- Get started with Elektra by running `docker run -it elektra/elektra`.
π¦ Plugins
- We removed the `maintained` status of the following [plugins](https://www.libelektra.org/plugins/readme):
- blockresolver
- csvstorage
- gitresolver
- list
- multifile
- spec
- New maintainers are very much welcomed!
π¦ Augeas
- Improved error message for Augeas to show lensPath. _(Michael Zronek)_
π¦ CCode
- The [Markdown Shell Recorder][] test of the plugin does not require Bash any more. _(RenΓ© Schwaiger)_
- [markdown shell recorder]: https://master.libelektra.org/tests/shell/shell_recorder/tutorial_wrapper
π¦ Crypto
- The crypto plugin no longer supports Botan and OpenSSL as provider of cryptographic functions. The support has been removed to improve the maintainability of the code. _(Peter Nirschl)_
- The unit test of the crypto plugin attempts to kill the gpg-agent if a regular shutdown via `connect-gpg-agent` failed. _(Peter Nirschl)_
π¦ Directory Value
- The plugin now only interprets a [KeySet](https://doc.libelektra.org/api/current/html/group__keyset.html) as [array](../tutorials/arrays.md) if the parent contains the meta key `array`. _(RenΓ© Schwaiger)_
π¦ Fcrypt
- Improve handling of temporary files after encryption and decryption by trying to perform a manual copy if the call of `rename` fails. This problem might occur if another file system is mounted at `/tmp`. _(Peter Nirschl)_
π¦ KConfig
- Write support for the KConfig INI format was added. _(Dardan Haxhimustafa)_
π¦ SWIG
- Configure line (-DBINDINGS="..") for SWIG based bindings have been changed from `swig_foo` to `foo`. _(Manuel Mausz)_
- Exclude SWIG bindings if SWIG Version is 4.0.1 and Python is >= 3.8 or Ruby is >= 2.7 due to incompatibility (#3378, #3379). _(Mihael PranjiΔ)_
π¦ SWIG/python
- Added bindings for libelektratools. _(Manuel Mausz)_
- Add test for kdbEnsure. _(Mihael PranjiΔ)_
π¦ SWIG/python2
- Removed python2 binding, as python2 support ended. _(Manuel Mausz)_
π¦ Tcl
- The [Markdown Shell Recorder][] test of the plugin now correctly requires the [`xmltool` plugin](../../src/plugins/xmltool). _(RenΓ© Schwaiger)_
π¦ YAMBi
- We removed the plugin in favor of [Yan LR](../../src/plugins/yanlr). _(RenΓ© Schwaiger)_
π¦ YAML CPP
- The plugin now always prints a newline at the end of the YAML output. _(RenΓ© Schwaiger)_
- The plugin does not interpret a key set such as
- ```
- user/example
- user/example/#0
- user/example/#1
- user/example/#2
- ```
- + 6 more
π¦ Yan LR
- The CMake code of the plugin does not print error messages produced by the tool `ldd` any more. _(RenΓ© Schwaiger)_
- The plugin now also supports ANTLR 4.8. _(RenΓ© Schwaiger)_
- We limited the scope of the logging code of the module. For more information, please take a look at the last news entry of the YAML CPP plugin. _(RenΓ© Schwaiger)_
π¦ GOpts
- The plugin now supports an offset into `argv` given by the `/offset` config key. If `/offset` is set, `gopts` will
- ignore a number of arguments at the start of `argv`. This can be used in e.g. python scripts to ignore the interpreter
- arguments. _(Klemens BΓΆswirth)_
- `gopts` now also writes help message into the key `proc/elektra/gopts/help/message` in addition to setting
- `proc/elektra/gopts/help = 1`. This is especially useful in non-C/C++ environments. _(Klemens BΓΆswirth)_
- `gopts` is also affected by the changes and improvements to the `opts` library outlined below.
π¦ Cache
- Respect `XDG_CACHE_HOME` when resolving the mmap cache directory. _(Mihael PranjiΔ)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Compatibility
- We clarified compatibility requirements for Elektra and its plugins and bindings.
- Furthermore, we renamed `system/elektra/version/constants/KDB_VERSION_MICRO`
- to `system/elektra/version/constants/KDB_VERSION_PATCH` to be compatible
- with [Semantic Versioning 2.0.0](https://semver.org/). _(Markus Raab)_
π¦ Opts
- The library function `elektraGetOpts` now supports sub-commands.
- Sub-commands are best explained by looking at an application that uses them, like `git`.
- For example `add` is a sub-command in `git add`, and interprets `-p` differently from `git`:
- `git -p add` is `git --paginate add`, but `git add -p` is `git add --patch`.
- `elektraGetOpts` now implements this notion of sub-commands.
- For more information take a look at the [tutorial for command-line-options](../tutorials/command-line-options.md).
- By extension this functionality is also available via the `gopts` plugin. _(Klemens BΓΆswirth)_
- The generated help message was improved. It now also gives details about parameter arguments, sub-commands and
- + 3 more
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up to date with the multi-language support provided by Elektra.
π¦ python2
- Removed python2 plugin, as python2 support ended. _(Manuel Mausz)_
π¦ Rust
- Published `elektra` and `elektra-sys` to crates.io. _(Philipp Gackstatter)_
π¦ Tools
- Update `kdb cache` tool synopsis to reflect man page. _(Mihael PranjiΔ)_
- Pull elektrad, webui and webd out of shared web folder to allow fine grained selection of tools. _(Raphael Gruber)_
- [webd](../../src/tools/webd/README.md) has updated dependencies. _(Mihael PranjiΔ)_
π¦ Scripts
- The [fish completion script](../../scripts/completion/kdb.fish) now recognizes the new names of subcommands (e.g. `meta-set` instead of `setmeta` ) introduced with Elektra `0.9.1`. _(RenΓ© Schwaiger)_
- The script [reformat-cmake](../../scripts/dev/reformat-cmake) now reformats the code with `cmake-format` 0.6.3. _(RenΓ© Schwaiger)_
- The scripts
- [reformat-c](../../scripts/dev/reformat-cmake), and
- [reformat-java](../../scripts/dev/reformat-java)
- now uses `clang-format` 9 to reformat the code base. _(RenΓ© Schwaiger)_
- The script [reformat-shell](../../scripts/dev/reformat-shell) now makes sure that you do not use `shfmt` 3, which formats parts of the code base slightly differently. _(RenΓ© Schwaiger)_
π Documentation
- Improved formatting of the [`validation tutorial`](../../doc/tutorials/validation.md) _(Anton HΓΆΓl)_
- We fixed some minor spelling mistakes. _(RenΓ© Schwaiger)_
- We updated the man pages of the [`web`](../tutorials/install-webui.md) tool. _(RenΓ© Schwaiger)_
- Updated documentation for Ubuntu-Bionic Packages. _(Djordje Bulatovic)_
- Fixed an old path of the reformatting script in the [`docker reformatting tutorial`](../tutorials/run_reformatting_script_with_docker.md) _(Jakob Fischer)_
π§ͺ Tests
- We now use [Google Test](https://github.com/google/googletest) version `1.10` to test Elektra. _(RenΓ© Schwaiger)_
- The C++ test code does not produce warnings about a missing macro argument for `...` any more. _(RenΓ© Schwaiger)_
- Whitelisted many broken links. _(Mihael PranjiΔ)_
- Enabled regex in link checker. _(Mihael PranjiΔ)_
- The [formatting check](../../tests/shell/check_formatting.sh) now also works correctly, if it is invoked multiple times. _(RenΓ© Schwaiger)_
- `KDB_EXEC_PATH` is not being set globally to contain the build directory any longer. _(Peter Nirschl)_
- Rewrite gpg-agent shutdown logic to use `fork` and `execv` instead of `system`. _(Peter Nirschl)_
- Removed a broken link from the link checker. _(Djordje Bulatovic)_
π¦ Compilation
- We do not use implicit typing in the code of the
- `augeas`,
- `base64`, and
- `blockresolver`
- plugin any more. After this update, the code compiles without any warnings, even though we now use the compiler switch `-Wconversion`. _(RenΓ© Schwaiger)_
π¦ Support
- Debian 9 βstretchβ (oldstable) is now the oldest supported platform. _(RenΓ© Schwaiger)_
π¦ CMake
- Generating the build system now requires CMake `3.4` (released in November 2015). _(RenΓ© Schwaiger)_
- We fixed warnings about CMake policy [CMP0078](https://cmake.org/cmake/help/latest/policy/CMP0078.html) and [CMP0086](https://cmake.org/cmake/help/latest/policy/CMP0086.html). _(RenΓ© Schwaiger)_
- The CMake functions `add_msr_test` and `add_msr_test_plugin` do not export the list of required plugins as environment variable any more. _(RenΓ© Schwaiger)_
- The CMake code of the code generation does not print warnings about unknown regex operators any more. _(RenΓ© Schwaiger)_
π Docker
- We updated some of the software in the [Dockerfile for Debian sid](../../scripts/docker/debian/sid/Dockerfile). _(RenΓ© Schwaiger)_
- Building the [documentation Dockerfile for Debian Stretch](../../scripts/docker/debian/stretch/doc.Dockerfile) works again. _(RenΓ© Schwaiger)_
- Use Python 3, SWIG 4.0 and Ruby 2.5 in the [Dockerfile for Debian sid](../../scripts/docker/debian/sid/Dockerfile). _(Mihael PranjiΔ)_
- Disable python binding on `debian-unstable-full-clang` due to upstream [issue](https://github.com/ElektraInitiative/libelektra/issues/3379). _(Mihael PranjiΔ)_
- Use current ruby-dev on Debian sid image as Ruby 2.5 has been dropped. _(Mihael PranjiΔ)_
π¦ Cirrus
- We fixed a minor problem with the package install procedure on macOS build jobs. _(RenΓ© Schwaiger)_
- We updated the startup command for D-Bus on macOS. _(RenΓ© Schwaiger)_
- We removed python2 (EOL and removed from homebrew). _(Mihael PranjiΔ)_
- Use latest macOS Catalina Xcode stable. _(Mihael PranjiΔ)_
- Use newer FreeBSD images and use image family instead of concrete image names. _(Mihael PranjiΔ)_
- Disable tcl plugin on FreeBSD images because of test failures (see #3353). _(Mihael PranjiΔ)_
- Disable curlget plugin for macOS jobs (see #3382). _(Mihael PranjiΔ)_
- Add more dependencies to Fedora image to cover many tests. _(Mihael PranjiΔ)_
- + 2 more
π¦ Jenkins
- Fixed [coveralls](https://coveralls.io/github/ElektraInitiative/libelektra) coverage report. _(Mihael PranjiΔ)_
- The build jobs `debian-unstable-clang-asan` and `debian-unstable-full-clang` now use Clang 9 to compile Elektra. _(RenΓ© Schwaiger)_
- Added the `Jenkins.monthly` in the Jenkins' scripts file. _(Djordje Bulatovic)_
- Enabled building packages for Bionic. _(Djordje Bulatovic)_
- Improve gpgme unit test stability. _(Peter Nirschl)_
- Publishing packages for Bionic to community. _(Djordje Bulatovic)_
- Added Fedora 32 image to main build stage, moved Fedora 31 to full build stage. _(Mihael PranjiΔ)_
- Fixed path for publishing in Jenkinsfile. _(Djordje Bulatovic)_
- + 1 more
π¦ Restyled
- Restyled now also checks the formatting of C, C++ and Java code in the repository. _(RenΓ© Schwaiger)_
π¦ Travis
- Use newer Xcode 11.4 and ruby 2.6.5 on macOS builds and use macOS 10.15. _(Mihael PranjiΔ)_
- Disable curlget plugin for macOS jobs (see #3382). _(Mihael PranjiΔ)_
π¦ Issue Tracker
- We now automatically close issues after one year of inactivity. _(Mihael PranjiΔ)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date. Furthermore, we changed:
- Fix and re-enable website auto-deployment. _(Mihael PranjiΔ)_
- Update docker images for website frontend and backend to debian buster. Update dependencies to newer versions. _(Mihael PranjiΔ)_
- Remove obsolete parts from the website. _(Mihael PranjiΔ)_
π¦ Outlook
- We are currently working on following topics:
- Elektrify KDE _(Dardan Haxhimustafa)_, _(Felix Resch)_ and _(Mihael PranjiΔ)_
- Elektrify GNOME _(Mihael PranjiΔ)_
- Elektrify LCDproc _(Klemens BΓΆswirth)_ and _(Jakob Fischer)_
- Packaging for popular Linux distributions _(Djordje Bulatovic)_
- Improve 3-way merge. _(Dominic JΓ€ger)_
- Go bindings and improved Web-UI _(Raphael Gruber)_
- TOML plugin as new default storage _(Jakob Fischer)_
- + 4 more
π¦ Statistics
- We closed [40 issues](https://github.com/ElektraInitiative/libelektra/milestone/22?closed=1) for this release.
- About 23 authors changed 653 files with 15221 insertions(+) and 18890 deletions(-) in 815 commits.
- Thanks to all authors for making this release possible!
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.2.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.2.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.2.tar.gz.hashsum?raw=true)
- author: mpranj
- file: elektra-0.9.2.tar.gz
- size: 7416188
- md5sum: 6e92ebcbef31cdeab91d228b61456947
- sha1: 8f874de3e7a47baa55d7c5106efbbae635fff499
- + 7 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.2-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- Best regards,
- + 1 more
π Changes
- guid: 8c64fe8a-87a5-4b72-b772-d98c8a4a5efd
- author: Mihael PranjiΔ
- pubDate: Tue, 26 Nov 2019 14:55:19 +0100
- shortDesc: KDE Integration, Rust&Go Bindings, Code Generation
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.9.1-release)
π¦ Highlights
- We are working on integrating Elektra into [KDE](https://kde.org/). A new Elektra plugin called `kconfig` was added which can read KDE's kconfig ini files. Additionally we are working on a [fork](https://github.com/ElektraInitiative/kconfig) of KDE's `KConfig` configuration system and patching it to use libelektra. _(Dardan Haxhimustafa)_ and _(Felix Resch)_
- The [elektra](https://crates.io/crates/elektra) and [elektra-sys](https://crates.io/crates/elektra-sys) crates have been published to crates.io for easier usage of our Rust binding. _(Philipp Gackstatter)_
- We improved our [Go bindings](https://github.com/ElektraInitiative/go-elektra). _(Raphael Gruber)_
- Code Generation is ready for productive use. _(Klemens BΓΆswirth)_
π¦ Code Generation
- 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)`](https://www.libelektra.org/manpages/kdb-gen).
- If you specifically want to use it with the High-Level API take a look at [this tutorial](https://www.libelektra.org/tutorials/high-level-api).
- 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)_
π¦ Further Highlights
- We migrated our [build server](https://build.libelektra.org) and [website](https://www.libelektra.org) to up-to-date hardware. _(Markus Raab and Djordje Bulatovic)_
- Elektra now has a technical preview of a new [merge library](../tutorials/cmerge.md). It is written in C99 and can currently be used with [`kdb cmerge`](../help/kdb-cmerge.md). _(Dominic JΓ€ger)_
- We make it easier for new developers to join Elektra, e.g., see new [get started](../../doc/GETSTARTED.md). _(Hani Torabi)_
- We made many cleanups, to get Elektra ready for 1.0!
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ General
- We removed 12 obsolete or unfinished plugins:
- `boolean`,
- `cachefilter`,
- `cpptype`,
- `dini`,
- `enum`,
- `regexstore`,
- `required`,
- + 14 more
π¦ Camel
- We removed the experimental plugin. For a plugin that is able to parse similar syntax, please take a look at the
- [YAJL](../../src/plugins/yajl) , and
- [YAML CPP](../../src/plugins/yamlcpp)
- 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 `argv` from the system, was added. _(Klemens BΓΆswirth)_
- A function to detect help mode, without invoking `elektraGetOpts` was added. It simply checks, whether `--help` is one
- of the string in `argv`. _(Klemens BΓΆswirth)_
- Increase test timeout from 120s to 240s. _(Mihael PranjiΔ)_
π¦ KConfig
- We added a plugin which can be used to parse kconfig INI files. _(Dardan Haxhimustafa)_
π¦ Mmapstorage
- 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Δ)_
π¦ Noresolver
- The plugin now correctly sets the path in the `parentKey`. It therefore now supports set calls. _(Klemens BΓΆswirth)_
π¦ Path
- The [Markdown Shell Recorder][] test of the plugin now also works, if you execute it as root user. _(RenΓ© Schwaiger)_
- [markdown shell recorder]: https://master.libelektra.org/tests/shell/shell_recorder/tutorial_wrapper
π¦ Spec
- There is now the config key `missing/log` that allows logging of all missing `require`d keys. _(Klemens BΓΆswirth)_
- `spec` now internally handles errors differently. There should be no external impact apart from better performance. _(Klemens BΓΆswirth)_
π¦ Specload
- We now treat relative paths as relative to `KDB_DB_SPEC` instead of the current working directory. _(Klemens BΓΆswirth)_
- Changes to `default` or `type` metadata are no longer supported, since they are not safe in every case. _(Klemens BΓΆswirth)_
- The plugin no longer has the `experimental` status. _(Klemens BΓΆswirth)_
π¦ Tcl
- 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)_
π¦ Type
- 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
- Yajl now correctly supports Elektras boolean types using the `type` plugin. For example, setting `on`, `enable` or `true` all map to JSONs native `true` value. See the [type](../../src/plugins/type/README.md) plugin for more details about boolean types. _(Philipp Gackstatter)_
π¦ YAwn
- We removed the plugin in favor of [Yan LR](../../src/plugins/yanlr/README.md). _(RenΓ© Schwaiger)_
π¦ YAy PEG
- We removed the plugin in favor of [Yan LR](../../src/plugins/yanlr/README.md). _(RenΓ© Schwaiger)_
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Compatibility
- We 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 `-lelektra` to `-lelektra-core -lelektra-kdb`
- or whatever parts of Elektra your application uses. _(Markus Raab)_
- The conversion functions `elektraKeyTo*` and `elektra*ToString` are now part of the `elektra-ease` library instead of
- the `elektra-highlevel` library. This should not cause any breaking changes since `elektra-highlevel` already depends
- on `elektra-ease`. In addition the header `elektra/conversion.h` is kept for compatibility. _(Klemens BΓΆswirth)_
- Fixes in documentation that might disallow some code operating in grey areas before. _(Markus Raab)_
- + 40 more
π¦ Core
- A new plugin function, `kdbCommit`, was implemented. The function is carried out in the `commit` phase of `kdbSet` and separates the commit functionality from the `kdbSet()` function. _(Vid Leskovar)_
- `kdbconfig.h` is no longer included in the installed headers. This is because it could cause conflicts with other
- `config.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.h` directly without generation of the `specification` file because of drastically reduced error code count _(Michael Zronek)_
- `keyIsDirectBelow` was renamed to `keyIsDirectlyBelow`. _(Philipp Gackstatter)_
- `keyMeta` was added to provide access to a key's underlying KeySet that holds its metadata keys. _(Philipp Gackstatter)_
- + 3 more
π¦ Opts
- The option `-h` is no longer used to indicate help mode. Only `--help`, will invoke help mode. _(Klemens BΓΆswirth)_
π¦ Proposal
- Removed or moved several functions of `kdbproposal.h`:
- `elektraKsToMemArray` was moved to `kdbease.h`,
- `elektraLookupOptions` was moved to `kdbprivate.h`,
- `keySetStringF` was moved to `kdbinternal.h`,
- Removed `ksPrev` and `elektraKsPrev`,
- Removed `elektraRenameKeys` and replaced it with `ksRenameKeys`. _(Philipp Gackstatter)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up to date with the multi-language support provided by Elektra.
- 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_atcursor` to `gelektra_keyset_at`. _(Manuel Mausz)_
- + 9 more
π¦ Java
- 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](../../src/bindings/jna/libelektra4j/src/main/java/org/libelektra/Plugin.java) interface.
- For an example see the [test case](../../src/bindings/jna/libelektra4j/src/test/java/org/libelektra/PluginLoaderIT.java). _(Michael Zronek)_
- Upgraded maven dependencies for Java binding _(Michael Zronek)_
- The Java binding now supports the [error codes](../decisions/error_codes.md) in a native way. All exceptions contain the necessary information. _(Michael Zronek)_
- Further improved the Java binding such as wording and documentation. _(Michael Zronek)_
π¦ Rust
- Add the `elektra-sys` crate which contains raw bindings to libelektra for Rust. _(Philipp Gackstatter)_
- Add the `elektra` crate which contains safe wrapper methods for the raw bindings. The crate contains bindings for the low-level API, which means that the data types `Key` and `KeySet` can 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 into `StringKey` and `BinaryKey`, to prevent type mismatches at compile time. With the binding for `KDB`, one can take advantage of the elektra ecosystem from Rust. See the [Readme](../../src/bindings/rust/README.md) for more. _(Philipp Gackstatter)_
- Rewrote the `KDBError` to 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)_
π¦ Tools
- `KDB_EXEC_PATH`, which can be used to add further external tools to `kdb`, now supports `:` to separate paths.
- `kdb list-tools` and `run_env` were improved to take advantage of this. _(Markus Raab)_
- Checks for `kdbCommit` have been added to [kdb plugin-check](../help/kdb-plugin-check.md). _(Vid Leskovar)_
- Added PID file config setting for kdb-run-rest-frontend _(Markus Raab)_
- Added `kdb meta-show` command which prints out all metadata along with its values for a given key. _(Michael Zronek)_
- Removed `kdb vset` as it does not properly put meta-data to the spec namespace. _(Michael Zronek)_
- Renamed kdb plugin commands following a hierarchical structure. `kdb info` is now `kdb plugin-info`, `kdb check` is now `kdb plugin-check` and `kdb list` is now `kdb plugin-list`. We also removed the obsolete `kdb fstab`. _(Philipp Gackstatter)_
- Renamed kdb meta commands:
- + 10 more
π¦ Scripts
- We structured the [scripts](/scripts). _(Markus Raab)_
- Removed the scripts
- `scripts/elektra-merge`,
- `scripts/elektra-mount`,
- `scripts/elektra-umount`,
- `convert-fstab`,
- `convert-hosts`,
- `convert-inittab`,
- + 18 more
π Documentation
- Added a tutorial on how to write language bindings. Visit our new [README](../tutorials/language-bindings.md).
- _(Michael Zronek, Raphael Gruber, Philipp Gackstatter)_
- Clarified subtyping in the language bindings tutorial. _(Michael Zronek)_
- A [second tutorial](../tutorials/highlevel-bindings.md) on writing bindings for the high-level API was created as well. _(Klemens BΓΆswirth, Raphael Gruber)_
- Added [info](../../src/plugins/xerces/README.md) on how to include xerces plugin with homebrew installation. _(Anton HΓΆΓl)_
- The [compile instructions](../COMPILE.md) do not assume that you use `make` or `gcc` to build Elektra anymore. _(RenΓ© Schwaiger)_
- Add hints about reformatting with docker. _(Dominic JΓ€ger)_
- Add instructions about sourcing on FreeBSD. _(Dominic JΓ€ger)_
- + 9 more
π§ͺ Tests
- We changed how the `formatting test` detects code differences. This update should get rid of transient errors as [reported here](https://issues.libelektra.org/2927#issuecomment-528058641). _(RenΓ© Schwaiger)_
- We disabled the test for the conversion engine. For more information, please take a look at [issue #3086](https://issues.libelektra.org/3086). _(RenΓ© Schwaiger)_
- We disabled the test `testmod_zeromqsend` from the command `kdb run_all`, since it caused timeouts in high load scenarios. _(Mihael PranjiΔ)_
- The (Markdown) [Shell Recorder](../../tests/shell/shell_recorder/README.md) 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)_
π¦ CMake
- `kdbtypes.h` is now generated directly via a CMake `configure_file` call. _(Klemens BΓΆswirth)_
- The variable `ELEKTRA_STAT_ST_SIZE_F` now contains the correct format specifier for the `st_size` member of the `stat` struct on macOS. _(RenΓ© Schwaiger)_
- We simplified and unified the CMake code for the Shell Tests and the [Shell Recorder](../../tests/shell/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](../man) any more, if ronn only changed the creation date of the man page. _(RenΓ© Schwaiger)_
π¦ Compilation
- We now have a [setup for proper symbol versioning](../dev/symbol-versioning.md). _(Klemens BΓΆswirth)_
- We do not use implicit typing in the code of the `conditionals` and `yamlcpp` plugin 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](https://jira.apache.org/jira/browse/MDEP-518). _(Michael Zronek)_
π Docker
- Added [Dockerfile for Ubuntu Bionic](../../scripts/docker/ubuntu/bionic/Dockerfile) _(Djordje Bulatovic)_
- We removed all Haskell packages from the Dockerfiles in the folder [scripts/docker](../../scripts/docker). _(RenΓ© Schwaiger)_
- We added a basic [Dockerfile for Arch Linux](../../scripts/docker/arch/Dockerfile). _(RenΓ© Schwaiger)_
- We updated the [Dockerfile for Alpine Linux](../../scripts/docker/alpine). _(RenΓ© Schwaiger)_
π¦ Vagrant
- We added a [Vagrantfile](../../scripts/vagrant/freebsd/README.md) for a virtual machine based on FreeBSD 12. _(RenΓ© Schwaiger)_
π¦ Other
- The reformatting script now checks that the correct version of `cmake-format` is used. _(Klemens BΓΆswirth, RenΓ© Schwaiger)_
- Improved various error messages and synchronized documentations. _(Michael Zronek)_
- Improved `range` plugin error message. _(Michael Zronek)_
- Improved error codes documentation to clarify the hierarchy for developers. _(Michael Zronek)_
- Release notes now use git's union merge driver. _(Dominic JΓ€ger)_
- Updated asciinema recording to correctly use `sudo`. _(Michael Zronek)_
- Add pkg-config file for kdbmerge. _(Raphael Gruber)_
π¦ Cirrus
- The `π Check` build 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.1` instead of Xcode `10.1`. _(RenΓ© Schwaiger)_
- We removed all non-POSIX shell code from the [Cirrus configuration file](../../.cirrus.yml). _(RenΓ© Schwaiger)_
- The macOS build jobs now use Ruby `2.6`. _(RenΓ© Schwaiger)_
- We do not call `ninja` directly anymore. Instead we use `cmake --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](https://github.com/google/sanitizers/wiki/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)_
- + 4 more
π¦ Jenkins
- We upgraded all servers to Buster. _(Markus Raab)_
- Jenkins does not auto cancel build jobs of the `master` branch anymore. _(RenΓ© Schwaiger)_
- Updated xUnit plugin in Jenkinsfile. _(Djordje Bulatovic)_
π¦ Restyled
- [Restyled](https://restyled.io) now also formats Markdown files with [`prettier`](https://prettier.io). _(RenΓ© Schwaiger)_
π¦ Travis
- The build job `π GCC` now uses the [Travis Homebrew addon](https://docs.travis-ci.com/user/installing-dependencies/#installing-packages-on-macos) to install dependencies. _(RenΓ© Schwaiger)_
- We now build and test Elektra on Ubuntu `18.04` (Bionic Beaver) instead of Ubuntu `16.04` (Xenial Xerus). _(RenΓ© Schwaiger)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date. Furthermore, we changed:
- 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)_
- The website now lives in the folders [website-frontend](/src/tools/website-frontend) and [website-backend](/src/tools/website-backend) to avoid confusion with the REST backend of the Web-UI. _(Markus Raab)_
- Improve main page of website, restructure getting started. _(Markus Raab)_
π¦ Outlook
- We are currently working on following topics:
- Elektrify KDE _(Dardan Haxhimustafa)_ and _(Felix Resch)_
- Elektrify LCDproc _(Klemens BΓΆswirth)_ and _(Jakob Fischer)_
- Reduce the number of merge conflicts in 3-way merge. _(Dominic JΓ€ger)_
- Go bindings and improved Web-UI _(Raphael Gruber)_
- Improved Error handling _(Michael Zronek)_
- New default storage _(RenΓ© Schwaiger)_ and _(Jakob Fischer)_
- Shell completion _(Ulrike SchΓ€fer)_
- + 3 more
π¦ Statistics
- We closed [75 issues](https://github.com/ElektraInitiative/libelektra/milestone/21?closed=1) 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](https://www.libelektra.org/ftp/elektra/publications/boeswirth2019highlevel.pdf):
- 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.
- Mihael PranjiΔ:
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.1.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.1.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.1.tar.gz.hashsum?raw=true)
- author: mpranj
- file: elektra-0.9.1.tar.gz
- size: 7534156
- md5sum: 42ff587adb7c3f15807ac4dae6722261
- sha1: bf250260a4efa20e5444f0a7f0027430bc7aa8a0
- + 6 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.1-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- Best regards,
- + 1 more
π Changes
- guid: e8c753c0-74af-410b-9f66-77c3ce194717
- author: Markus Raab
- pubDate: Tue, 06 Aug 2019 12:09:02 +0200
- shortDesc: Cache, Command-line Options, Error Codes
π¦ What is Elektra?
- Elektra serves as a universal and secure framework to access
- configuration settings in a global, hierarchical key database.
- You can also read this document [on our website](https://www.libelektra.org/news/0.9.0-release).
- We wrote a new article [describing our vision from
- configuration management perspective](https://www.libelektra.org/docgettingstarted/vision).
- For more information, visit [https://libelektra.org](https://libelektra.org).
π¦ 0.9.\*
- 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:
- To prepare Elektra for [version 1.0.0](https://github.com/ElektraInitiative/libelektra/milestone/12),
- which includes incompatible changes like new error codes
- (which are already part of this release, hence 0.9.0).
- When 0.9.\* is mature enough, we will call it 1.0.0.
- To make Elektra future-proof so that during 1.\*.
- + 3 more
π¦ 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
- + 8 more
π¦ Highlights
- Cache
- Command-line Options
- Error Codes
π¦ Cache
- [Cache](https://www.libelektra.org/plugins/cache) is a new global caching plugin.
- It uses [mmapstorage](https://www.libelektra.org/plugins/mmapstorage)
- as its storage backend and lazily stores the whole configuration from previous
- configuration accesses.
- With large or many configuration files, the cache brings amazing performance improvements:
- Let us say, you have 649 [INI](https://www.libelektra.org/plugins/ini) configuration files mounted with
- the [multifile resolver](https://www.libelektra.org/plugins/multifile), completely
- specified (which means that the specification must be copied to all the configuration settings).
- + 12 more
π¦ Command-line Options
- [Gopts](https://www.libelektra.org/plugins/gopts) is a new plugin that integrates support for command-line options to applications:
- The [gopts](https://www.libelektra.org/plugins/gopts) plugin retrieves the values of `argc`, `argv` and `envp` needed for
- [`elektraGetOpts`](https://www.libelektra.org/tutorials/command-line-options) and then makes the call. It is intended to be used as a
- global plugin, so that command-line options are automatically parsed when `kdbGet` is called. _(Klemens BΓΆswirth)_
- The plugin works under WIN32 (via `GetCommandLineW` and `GetEnvironmentString`), MAC_OSX (`_NSGetArgc`, `_NSGetArgv`) and any system that
- either has a `sysctl(3)` function that accepts `KERN_PROC_ARGS` (e.g. FreeBSD) or when `procfs` is mounted and either `/proc/self` or
- `/proc/curproc` refers to the current process. If you need support for any other systems, feel free to add an implementation.
- This means, that using the plugin, you do not need to call `elektraGetOpts` yourself anymore.
- + 9 more
π¦ Error Codes
- With this release, we changed our messy error code system into a more structured and clean way.
- Similar to [SQLStates](https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_0809.htm)
- we changed to structure of our error codes and migrated them. Have a look into
- the new [codes](../../src/error/specification). This allows us to easily extend the specification without breaking existing
- codes and to avoid risking duplicated errors as we had before. _(Michael Zronek)_
- We were able to reduce the former 214 to now only 9 error codes.
- For background information read:
- [about error codes](../../doc/decisions/error_codes.md)
- + 2 more
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
- In total, we added 9 plugins and removed 2 plugins.
β¨ 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:
- the new `type` does not support the full feature set of `enum` and `boolean`, but it supports the features we consider useful.
- the new `type` doesn't support `FSType` and `empty`. These have been deprecated for a long time and there are good alternatives available.
- the new `type` supports `enum`, `wchar` and `wstring` as types, whereas the old `cpptype` would throw an error for these. In most cases
- this won't be a problem, but you should be aware of this breaking change.
- + 6 more
π¦ Base64
- We fixed some warnings about implicit type conversions reported by [UBSan][] in the [base64](https://www.libelektra.org/plugins/base64) plugin. _(RenΓ© Schwaiger)_
- [ubsan]: https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html
π¦ Crypto and Fcrypt
- Empty GPG key IDs in the plugin configuration are being ignored by the [crypto](https://www.libelektra.org/plugins/crypto) plugin and the [fcrypt](https://www.libelektra.org/plugins/fcrypt) plugin. Adding empty GPG key IDs would lead to an error when `gpg` is being invoked. _(Peter Nirschl)_
- Apply Base64 encoding to the master password, which is stored within the plugin configuration. This fixes a problem that occurs if ini is used as default storage (see [2591](https://github.com/ElektraInitiative/libelektra/issues/2591)). _(Peter Nirschl)_
- Fix compilation without deprecated OpenSSL APIs. Initialization and deinitialization is not needed anymore. _(Rosen Penev)_
π¦ CSVStorage
- Support DOS newlines for the [csvstorage](https://www.libelektra.org/plugins/csvstorage) plugin. _(Vlad - Ioan Balan)_
π¦ Filecheck
- We fixed some warnings about implicit type conversions reported by [UBSan][]. _(RenΓ© Schwaiger)_
π¦ INI
- Fixed [INI](https://www.libelektra.org/plugins/ini) plugin when only the root key needs to be written. _(Mihael PranjiΔ)_
- Plugin writes to INI files without spaces around '=' anymore. Reading is still possible with and without spaces.
- _(Oleksandr Shabelnyk)_
β¨ Macaddr
- Added a plugin to handle MAC addresses. `kdbGet` converts a MAC address into a decimal 64-bit integer (with the most significant 16 bits always set to 0), if the format is supported. `kdbSet` restores the converted values back to there original form. _(Thomas Bretterbauer)_
π¦ mINI
- We fixed compiler warnings reported by GCC 9 in the [unit test code](../../src/plugins/mini/testmod_mini.c) of the plugin. _(RenΓ© Schwaiger)_
π¦ Mmapstorage
- [mmapstorage](https://www.libelektra.org/plugins/mmapstorage) is now able to persist the Global KeySet, which is used by the `cache` plugin. _(Mihael PranjiΔ)_
- Fixed support for `kdb import` and `kdb export`. _(Mihael PranjiΔ)_
π¦ Multifile
- Fixed segmentation fault in `kdbError()` function. _(Mihael PranjiΔ)_
- Added Global Keyset handle to storage plugin. _(Mihael PranjiΔ)_
- Fixed use of wrong resolver handle in the `kdbError()` function. _(Mihael PranjiΔ)_
π¦ Quickdump
- [quickdump](https://www.libelektra.org/plugins/quickdump) is a new storage plugin. It implements a more concise form of the
- [dump](https://www.libelektra.org/plugins/dump) format, which is also quicker too read. Contrary to dump, quickdump only stores
- keynames relative to the parent key. This allows easy relocation of configurations. _(Klemens BΓΆswirth)_
- quickdump now also uses an variable length integer encoding to further reduce file size. _(Klemens BΓΆswirth)_
π¦ Reference
- Fixed missing Metadata in README and METADATA.ini. _(Michael Zronek)_
- Update README.md web tool to show, how to test REST API on localhost. _(Dmytro Moiseiuk)_
π¦ RGBColor
- [New plugin](https://www.libelektra.org/plugins/rgbcolor) to validate hex formatted colors (e.g. #fff or #abcd) and normalize them to rgba (4294967295 (= 0xffffffff) and 2864434397 (= 0xaabbccdd) respectively). It also has support for named colors according to the [extended color keywords](https://www.w3.org/TR/css-color-3/#svg-color) from CSS3.
- _(Philipp Gackstatter)_
π¦ Semlock
- Removed due to:
- constant pain
- never worked properly
- poor design
- no time in future to maintain
- _(Kurt Micheli)_
π¦ Spec
- The spec plugin was partly rewritten to better support specifications for arrays. This includes some breaking changes concerning the less
- used (and also less functional) parts of the plugin. To find out more about these changes take a look at the
- [README](../../src/plugins/spec/README.md). It now better reflects the actually implemented behaviour. _(Klemens BΓΆswirth)_
π¦ Specload
- The [specload](https://www.libelektra.org/plugins/specload) plugin is a special storage plugin. Instead of using a storage file
- it calls an external application to request its specification. For the transfer it relies on the
- [quickdump](https://www.libelektra.org/plugins/quickdump) plugin. _(Klemens BΓΆswirth)_
- Currently changing the specification is only allowed in a very limited way. However, in future the plugin should allow overriding a
- specification in all cases where this can be done safely. NOTE: While the plugin technically allows some modifications, because of a
- problem with the resolver this cannot be used right now (see [limitations](https://www.libelektra.org/plugins/specload)).
- We also export `elektraSpecloadSendSpec` to abstract over the `quickdump` dependency. _(Klemens BΓΆswirth)_
π¦ Syslog
- We fixed an incorrect format specifier in a call to the `syslog` function. _(RenΓ© Schwaiger)_
π¦ Unit
- [New plugin](https://www.libelektra.org/plugins/unit) to validate units of memory and normalize them into bytes. E.g. 20 KB (normalized to 20000 Byte).
- _(Marcel Hauri)_
π¦ YAJL
- The [YAJL](https://www.libelektra.org/plugins/yajl) plugin which parses JSON files:
- now allows setting a value to the mountpoint. This is represented as a top level value in JSON if no other key is present. _(Philipp Gackstatter)_
- no longer lists empty parent keys with `kdb ls`. _(Philipp Gackstatter)_
- signifies arrays with the metakey array according to the [array decision](../../doc/decisions/array.md). _(Philipp Gackstatter)_
- no longer produces additional `___dirdata` entries for empty array keys. See also issue [#2477](https://github.com/ElektraInitiative/libelektra/issues/2477). _(Philipp Gackstatter)_
π¦ YAMBi
- [YAMBi](https://www.libelektra.org/plugins/yambi) is now able detect multiple syntax errors in a file. _(RenΓ© Schwaiger)_
- The error message now includes more information about the location of syntax errors. For example, for the incorrect YAML input `config.yaml`:
- ```yaml
- key 1: - element 1
- element 2
- key 2: scalar
- element 3
- ```
- + 14 more
π¦ YAML CPP
- The plugin now handles keys that are part of a map, but use a basename ending with [array syntax](../tutorials/arrays.md) correctly. For example, in a key set that contains keys with the following names:
- ```
- user/array/#0
- user/array/#1
- user/map/#0
- user/map/key
- user/map/#1
- ```
- + 37 more
π¦ YAML Smith
- <!-- prettier-ignore-start -->
- [YAML Smith](https://www.libelektra.org/plugins/yamlsmith) now converts keys that shares a common prefix correctly. For example, the last command in the script:
- ```sh
- 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
- + 13 more
π¦ Yan LR
- The build system now disables the plugin, if you installed a version of ANTLR 4 that does not support ANTLRβs C++ runtime (like ANTLR
- `4.5.x` or earlier). _(RenΓ© Schwaiger)_
- We fixed an ambiguity in the [YAML grammar](https://master.libelektra.org/src/plugins/yanlr/YAML.g4). _(RenΓ© Schwaiger)_
- The build system now regenerates the modified parsing code, every time we update the grammar file. _(RenΓ© Schwaiger)_
- The plugin now reports the location of syntax errors correctly. _(RenΓ© Schwaiger)_
- The lexer for the plugin now emits start tokens for maps at the correct location inside the token stream. This update fixes a problem, where the plugin sometimes reported incorrect error messages for the _first_ syntax error in a YAML file. _(RenΓ© Schwaiger)_
- The plugin now stores the end position of map start tokens correctly. Before this update the plugin would sometimes not show the markers (`^`) that point to the error positions inside the input. _(RenΓ© Schwaiger)_
- [Yan LR](https://www.libelektra.org/plugins/yanlr) now supports Elektraβs [boolean data type](../decisions/bool.md). _(RenΓ© Schwaiger)_
- + 3 more
π¦ YAwn
- [YAwn][] is now able to print error messages for multiple syntax errors. _(RenΓ© Schwaiger)_
- We also improved the error messages of YAwn, which now also contain the input that caused a syntax error. For example, for the input
- ```yaml
- key: value
- element
- ```
- the plugin prints an error message that contains the following text:
- ```
- + 10 more
π¦ YAy PEG
- [YAy PEG][] now also supports [PEGTL 2.8](https://github.com/taocpp/PEGTL/releases/tag/2.8.0). _(RenΓ© Schwaiger)_
- The plugin now includes the input that could not be parsed in error messages. _(RenΓ© Schwaiger)_
- We improved the error messages for certain errors slightly. For example, the error message for the input
- ```yaml
- "double quoted
- ```
- now includes the following text
- ```
- + 20 more
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) of Elektra.
π¦ Compatibility
- We introduced several incompatible changes:
- different error codes are returned
- INI and YAJL plugins might write different files with the same KeySets
- We changed following symbols:
- elektraIsReferenceRedundant
- elektraResolveReference
- elektraPluginFindGlobal
- kdbEnsure
π¦ Core
- `kdbGet` now calls global postgetstorage plugins with the parent key passed to `kdbGet`, instead of a random mountpoint. _(Klemens BΓΆswirth)_
- Fixed a double cleanup error (segmentation fault) when mounting global plugins. _(Mihael PranjiΔ)_
- Logging in Elektra was changed with this release. If Elektra is compiled with `ENABLE_LOGGER` enabled, we now log warnings and errors to
- stderr and everything except debug messages to syslog. If `ENABLE_DEBUG` is also enabled, debug messages are logged to syslog as well.
- Previously you had to make some manual changes to the code, to see most of the logging messages. _(Klemens BΓΆswirth)_
- The logger does not truncate the file name incorrectly anymore, if `__FILE__` contains a relative (instead of an absolute) filepath. _(RenΓ© Schwaiger)_
- Disabled any plugin execution when we have a cache hit or no update from backends. The old behaviour can be enabled for testing using `ENABLE_DEBUG` and adding the `"debugGlobalPositions"` meta key to the parentKey of the kdbGet invocation. _(Mihael PranjiΔ)_
- Removed `ingroup` from error messages to reduce verbosity. _(Michael Zronek)_
- + 3 more
π¦ Ease
- The functions for reference resolving used in the [reference plugin](https://www.libelektra.org/plugins/reference) have been extracted
- into libease. This lets other parts of Elektra easily use references and ensures a consistent syntax for them. _(Klemens BΓΆswirth)_
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up to date with the multi-language support provided by Elektra.
- JNA is now not experimental anymore. _(Markus Raab)_
- gsettings is not default anymore when installed. _(Markus Raab)_
- Add fix for creating the Key and KeySet objects in the HelloElektra.java file. _(Dmytro Moiseiuk)_
- We fixed a [warning about a deprecated default constructor](https://issues.libelektra.org/2670) in the C++ binding reported by GCC 9.0. _(RenΓ© Schwaiger)_
π¦ Tools
- `kdb get -v` now displays if the resulting value is a default-value defined by the metadata of the key. _(Thomas Bretterbauer)_
- `kdb cp` now succeeds if the target-keys already have the same values as the source-keys. _(Thomas Bretterbauer)_
- `web-ui` does not show empty namespace anymore _(Josef Wechselauer)_
- `kdb import` does not fail anymore if executed more than once with the same target in the spec-namespace. _(Thomas Bretterbauer)_
- `kdb mount` avoid adding sync if sync is already provided. _(Markus Raab)_
- `kdb list-tools` now supports `KDB_EXEC_PATH` environment variables that contain spaces. _(RenΓ© Schwaiger)_
- `gen-gpg-testkey` is added to the default tools list (see [#2668](https://github.com/ElektraInitiative/libelektra/issues/2668))._(Peter Nirschl)_
- `kdb getenv` now executed correctly from within tests _(Markus Raab)_
- + 2 more
π¦ 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
- The `reformat-source` script now also formats `tests/shell/include_common.sh.in`. Additionally it ensures that the file is 1000 lines long,
- so that line numbers of files using it are easier to read. _(Klemens BΓΆswirth)_
- The [clang-format wrapper script](../../scripts/reformat-source) now also checks the supported maximum version of Clang-Format. _(RenΓ© Schwaiger)_
- The script [`reformat-shfmt`](https://master.libelektra.org/scripts/reformat-shfmt) now also reformats shell support files (`*.in`) in the [`scripts`](https://master.libelektra.org/scripts) folder. _(RenΓ© Schwaiger)_
- The `reformat-*` scripts now allow you to specify a list of files that should be formatted. Only files actual suitable for the reformat script,
- will reformat. So e.g. calling `reformat-cmake src/include/kdbprivate.h` doesn't change any files. _(Klemens BΓΆswirth)_
- The script `scripts/reformat-all` is a new convenience script that calls all other `reformat-*` scripts. _(Klemens BΓΆswirth)_
- The script `scripts/pre-commit-check-formatting` can be used as a pre-commit hook, to ensure files are formatted before committing. _(Klemens BΓΆswirth)_
- + 9 more
π¦ Benchmarks
- The benchmarking tool [`benchmark_plugingetset`](https://master.libelektra.org/benchmarks/plugingetset.c) now also supports only executing the `get` method for the specified plugin. For example, to convert the data stored in the file `benchmarks/data/yaypeg.test.in` with the [YAy PEG plugin](https://www.libelektra.org/plugins/yaypeg) to a key set you can now use the following command:
- ```sh
- benchmark_plugingetset benchmarks/data user yaypeg get
- ```
- . _(RenΓ© Schwaiger)_
π¦ Style
- The documentation now uses [fenced code blocks](https://help.github.com/en/articles/creating-and-highlighting-code-blocks#syntax-highlighting) to improved the syntax highlighting of code snippets. _(RenΓ© Schwaiger)_
- We added recommendations about the style of Markdown headers to our [coding guidelines](../CODING.md). _(RenΓ© Schwaiger)_
- We now use [title case](https://en.wiktionary.org/wiki/title_case) for most headings in the documentation. _(RenΓ© Schwaiger)_
- We added instructions on how to reformat code with
- [Clang-Format](https://clang.llvm.org/docs/ClangFormat.html),
- [cmake format](https://github.com/cheshirekow/cmake_format),
- [Prettier](https://prettier.io), and
- [shfmt](https://github.com/mvdan/sh)
- + 1 more
π¦ Tutorials
- We added a basic tutorial that tells you [how to write a (well behaved) storage plugin](../tutorials/storage-plugins.md). _(RenΓ© Schwaiger)_
- Improved the `checkconf` section in the plugin tutorial. _(Peter Nirschl)_
- We added a [tutorial](../tutorials/benchmarking.md) on how to benchmark the execution time of plugins using [`benchmark_plugingetset`](../../benchmarks/README.md) and [hyperfine](https://github.com/sharkdp/hyperfine). _(RenΓ© Schwaiger)_
- The new [profiling tutorial](../tutorials/profiling.md) describes how to determine the execution time of code using
- [Callgrind](http://valgrind.org/docs/manual/cl-manual.html), and
- [XRay](https://llvm.org/docs/XRay.html)
- . _(RenΓ© Schwaiger)_
- For beginners we added a [tutorial](https://www.libelektra.org/tutorials/contributing-with-clion) that guides them through the process of contributing to libelektra. _(Thomas Bretterbauer)_
- + 6 more
π Spelling Fixes
- Write Elektra with capital letter in cascading tutorial. _(Vlad - Ioan Balan)_
- Add typo fix to the hello-elektra tutorial. _(Dmytro Moiseiuk)_
- Add typo fix to the Java kdb tutorial. _(Dominik Hofmann)_
- Fixed capitalization of the initial letter in Readme. _(Miruna Orsa)_
- Improved readability in README. _(Philipp Gackstatter)_
- We fixed some spelling mistakes in the documentation. _(RenΓ© Schwaiger)_
- Fix typo in root README.md and 'build-in' => 'built-in' in several places _(Raphael Gruber)_
- Fixed typos in `cassandra.ini` _(arampaa)_
π¦ Other
- The [Markdown Link Converter][] now uses the style
- ```
- filename:line:0
- ```
- instead of
- ```
- filename|line col 0|
- ```
- + 19 more
π§ͺ Tests
- We now test the [Directory Value Plugin](https://www.libelektra.org/plugins/directoryvalue) with additional test data. _(RenΓ© Schwaiger)_
- The variables:
- `SPEC_FOLDER`
- `SYSTEM_FOLDER`
- `USER_FOLDER`
- in the [inclusion file for shell test](../../tests/shell/include_common.sh.in) were set incorrectly, if the repository path contained space characters. _(RenΓ© Schwaiger)_
- The [CFramework](https://master.libelektra.org/tests/cframework) now also compares the names of meta keys. _(RenΓ© Schwaiger)_
- The [release notes check](../../scripts/run_check_release_notes) does not report an illegal number anymore, if the release notes were not updated at all. _(RenΓ© Schwaiger)_
- + 8 more
π¦ Source Code Checks
- The formatting instructions printed by [`check_formatting`](https://master.libelektra.org/tests/shell/check_formatting.sh) now also work correctly, if
- the `diff` output does not start with the test number added by CTest, and
- you use a non-POSIX shell such as [`fish`](https://fishshell.com)
- . _(RenΓ© Schwaiger)_
- We reformatted the CMake source code with cmake format `0.5.4` and also [check the style of CMake code](../../tests/shell/check_formatting.sh) with this new version of the tool. _(RenΓ© Schwaiger)_
- We now check the source code of the repository with [LGTM][]. _(RenΓ© Schwaiger)_
- We fixed various warnings about
- missing or duplicated include guards,
- + 7 more
π¦ CMake
- We now disable the option `INSTALL_SYSTEM_FILES` by default. This change makes it possible to install Elektra using [Homebrew](https://brew.sh) on Linux without any changes to [Elektraβs Linuxbrew formula](https://github.com/Homebrew/linuxbrew-core/blob/master/Formula/elektra.rb). _(RenΓ© Schwaiger)_
- Add `-DINSTALL_SYSTEM_FILES=ON` for previous behavior.
- The build system now rebuilds the [JNA binding](https://www.libelektra.org/bindings/jna) with Maven, if you change any of the Java source files of the binding. _(RenΓ© Schwaiger)_
- `testshell_markdown_tutorial_crypto` is not compiled and executed if `gen-gpg-testkey` is not part of TOOLS. _(Peter Nirschl)_
- Plugin tests are now only added, if `BUILD_TESTING=ON`. _(Klemens BΓΆswirth)_
- The symbol list for the static version is now exported directly from a CMake function. _(Klemens BΓΆswirth)_
- Building Elektra with enabled [`io_glib`](../../src/bindings/io/glib) binding does not require libuv anymore. _(RenΓ© Schwaiger)_
π Docker
- Our [Docker image for Alpine Linux](../../scripts/docker/alpine) now uses the base image for Alpine Linux 3.9. _(RenΓ© Schwaiger)_
- We added [PEGTL](https://github.com/taocpp/PEGTL) to the [Alpine Docker image](../../scripts/docker/alpine). _(RenΓ© Schwaiger)_
- We now use the default JDK on Debian sid, since the package `openjdk-8-jdk` is not available in the official unstable repositories anymore. _(RenΓ© Schwaiger)_
- We added
- [Bison](https://www.gnu.org/software/bison/), and
- [YAEP](https://github.com/vnmakarov/yaep)
- to the [image for Debian sid](../../scripts/docker/debian/sid/Dockerfile). _(RenΓ© Schwaiger)_
- We now offer images for the latest stable version of Debian codenamed [βbusterβ](../../scripts/docker/debian/buster). _(RenΓ© Schwaiger)_
- + 5 more
π¦ Vagrant
- The [Vagrant file for Ubuntu Artful Aardvark](../../scripts/vagrant/ubuntu/artful32/Vagrantfile) now installs the Python YAML library recommended by [cmake format](https://github.com/cheshirekow/cmake_format). _(RenΓ© Schwaiger)_
π¦ Cirrus
- We added the build job `π Check`, which checks the documentation for broken links. _(RenΓ© Schwaiger)_
π¦ Jenkins
- We disabled the tests:
- `testmod_crypto_botan`,
- `testmod_crypto_openssl`,
- `testmod_dbus`,
- `testmod_dbusrecv`,
- `testmod_fcrypt`,
- `testmod_gpgme`, and
- `testmod_zeromqsend`
- + 6 more
π¦ Restyled
- We added a [configuration file](../../.restyled.yaml) for [Restyled][]. Currently [Restyled][] monitors changes to Shell code in pull requests and fixes code that does not fit the [coding guideline](../CODING.md), by adding additional formatting commit to PRs. _(RenΓ© Schwaiger)_
- [restyled]: https://restyled.io
π¦ Travis
- We removed the build job for the [Haskell binding](../../src/bindings/haskell/README.md) and [Haskell plugin](../../src/plugins/haskell/README.md). For more information, please take a look [here](https://issues.libelektra.org/2751). _(Klemens BΓΆswirth)_
- We always use GCC 9 for the build job `π GCC`. This update makes sure that the build job succeeds, even if Homebrew
- adds a new major version of the compiler. _(RenΓ© Schwaiger)_
- We simplified our [Travis configuration file](../../.travis.yml), removing various unnecessary and unused code. In this process we also got rid of the caching directives, we previously used to speed up the Haskell build job `π Haskell`. _(RenΓ© Schwaiger)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date. Furthermore, we changed:
- Our entry for Elektra has been approved in the Free Software Directory: https://directory.fsf.org/wiki/Elektra
- Added github build status badges to website _(hesirui)_
- We updated part of a test for the [snippet converter](https://www.libelektra.org/conversion). _(RenΓ© Schwaiger)_
- Fixed anchor links on the website _(hesirui)_
- Added Docsearch in top-bar of website _(hesirui)_
π¦ Outlook
- We are currently working on following topics:
- Go bindings and improved Web-UI _(Raphael Gruber)_
- semantic 3-way merging _(Dominic Jaeger)_
- improved error handling _(Michael Zronek)_
- Rust bindings _(Philipp Gackstatter)_
- elektrify LCDproc _(Klemens BΓΆswirth)_ and _(Jakob Fischer)_
- configuration upgrades _(Lukas Kilian)_
- default storage _(RenΓ© Schwaiger)_ and _(Jakob Fischer)_
- + 5 more
π¦ Statistics
- About 40 authors changed 1278 files with 49409 insertions(+) and 13883 deletions(-) in 2025 commits.
- We closed [114 issues](https://github.com/ElektraInitiative/libelektra/milestone/20?closed=1)
- for this release.
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.0.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.0.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.0.tar.gz.hashsum?raw=true)
- name: /home/markus/elektra-0.9.0.tar.gz
- size: 7390149
- md5sum: 5cf9935515aba0567d6014a3693e415a
- sha1: 05ebe99c87b89a7cac58bf45cd3aff200cc1fd8d
- sha256: fcdbd1a148af91e2933d9a797def17d386a17006f629d5146020fe3b1b51ddd8
- + 5 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.9.0-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- Best regards,
- + 1 more
π Changes
- guid: 55950e64-fa4e-4eb9-9a3a-2c73d9cd6478
- author: Markus Raab
- pubDate: Tue, 26 Feb 2019 15:31:09 +0100
- shortDesc: high-level API
π¦ 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](https://libelektra.org).
- You can also read the news [on our website](https://www.libelektra.org/news/0.8.26-release)
π¦ High-Level API
- 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:
- ```c
- ElektraError * error = NULL;
- Elektra * elektra = elektraOpen ("/sw/org/myapp/#0/current", NULL, &error);
- if (elektra == NULL)
- {
- printf ("An error occurred: %s", elektraErrorDescription (error));
- + 29 more
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ Augeas
- We changed the default [Augeas](http://augeas.net) directory prefix for the lenses directory on macOS to the one used by
- [Homebrew](https://brew.sh): `/usr/local`. _(RenΓ© Schwaiger)_
π¦ Network
- The `network` plugin also supports port declarations to check if a port number is valid
- or if the port is available to use. _(Michael Zronek)_
- We added a [Markdown Shell Recorder][] test to the [ReadMe of the plugin](https://www.libelektra.org/plugins/network). _(RenΓ© Schwaiger)_
π¦ YAMBi
- The build system does not print a warning about a deprecated directive any more, if you build the plugin with Bison `3.3` or later.
- _(RenΓ© Schwaiger)_
- [YAMBi](https://www.libelektra.org/plugins/yambi) now handles comments at the end of input properly. _(RenΓ© Schwaiger)_
π¦ YanLR
- We improved the error reporting capabilities of the plugin. It now stores all of the error message reported by ANTLR and also specifies
- the line and column number of syntax errors. We also visualize these error messages in a similar way as modern compilers like Clang or
- GCC. For example, for the following erroneous input:
- ```yaml
- key: - element 1
- element 2 # Incorrect Indentation!
- ```
- the plugin currently prints an error message that looks like this:
- + 15 more
π¦ Path
- 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](/src/plugins/path/README.md) _(Michael Zronek)_
π¦ YAwn
- The [plugin](https://www.libelektra.org/plugins/yawn) now handles comments at the end of a file properly. _(RenΓ© Schwaiger)_
- We improved the syntax error messages of the plugin. _(RenΓ© Schwaiger)_
- We fixed a memory leak that occurred, if a YAML file contained syntax errors. _(RenΓ© Schwaiger)_
π¦ YAy PEG
- The new plugin [YAy PEG](https://www.libelektra.org/plugins/yaypeg) parses a subset of YAML using a parser based on
- [PEGTL](https://github.com/taocpp/PEGTL). _(RenΓ© Schwaiger)_
π¦ Ruby
- Added some basic unit tests _(Bernhard Denner)_
π¦ Misc
- We fixed some compiler warnings for the plugins
- [`camel`](https://www.libelektra.org/plugins/camel),
- [`line`](https://www.libelektra.org/plugins/line),
- [`mini`](https://www.libelektra.org/plugins/mini) and
- [`resolver`](https://www.libelektra.org/plugins/resolver)
- reported on FreeBSD. _(RenΓ© Schwaiger)_
- The [`resolver` plugin](/src/plugins/resolver) and its tests now better support `KDB_DB_SYSTEM` and `KDB_DB_SPEC` paths
- using `~` to refer to a home directory. _(Klemens BΓΆswirth)_
- + 2 more
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) 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).
- We have two minor incompatible changes:
- we now support larger array numbers (i.e. the larger numbers are not an error anymore)
- `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`.
π¦ Core
- All plugins in the KDB now get a handle to a global keyset via `elektraPluginGetGlobalKeySet()`, for communication between plugins.
- See [Global KeySet Handle](/doc/decisions/global_keyset.md) 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)_
π¦ Libease
- The function `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.
- ```c
- elektraArrayValidateBaseNameString ("#_10");
- // ~~^ Returns `2` (instead of `1`)
- elektraArrayValidateBaseNameString ("#___1337");
- // ~~~~^ Returns `4` (instead of `1`)
- + 11 more
π¦ Libopts
- 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](/doc/tutorials/command-line-options.md) and the code documentation of `elektraGetOpts`. _(Klemens BΓΆswirth)_
π¦ Tools
- `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)_
π¦ Scripts
- The script [`reformat-source`](https://master.libelektra.org/scripts/reformat-source) now also handles filenames containing spaces
- correctly. _(RenΓ© Schwaiger)_
- The script [`reformat-markdown`](https://master.libelektra.org/scripts/reformat-markdown) formats
- [Markdown](https://daringfireball.net/projects/markdown) files in the repository with [`prettier`](https://prettier.io).
- _(RenΓ© Schwaiger)_
- The scripts [`reformat-source`](https://master.libelektra.org/scripts/reformat-source),
- [`reformat-cmake`](https://master.libelektra.org/scripts/reformat-cmake), [`reformat-shfmt`](https://master.libelektra.org/scripts/reformat-shfmt)
- and [`reformat-markdown`](https://master.libelektra.org/scripts/reformat-markdown) don't format files that are ignored by git anymore.
- + 1 more
π Documentation
- We fixed various spelling mistakes. _(RenΓ© Schwaiger)_
- The documentation for `elektraMetaArrayToKS` was fixed. It now reflects the fact
- that the parent key is returned as well. _(Klemens BΓΆswirth)_
π§ͺ Tests
- The tests for the IO bindings and notification plugins now use increased timeout values so that the test suite fails less often on
- machines with high load. _(RenΓ© Schwaiger)_
- We update most of the [Markdown Shell Recorder][] tests so they use an explicit namespace (like `system` or `user`). This has the
- advantage that the output of these tests [does not change depending on the user that executes them](https://issues.libelektra.org/1773).
- Before the update these tests used [cascading keys](https://www.libelektra.org/tutorials/namespaces). _(RenΓ© Schwaiger)_
- The [Shell Recorder][] now also works correctly on FreeBSD. _(RenΓ© Schwaiger)_
- Fix memcheck target to detect memory problems again and enabled parallel testing to speed it up. _(Mihael PranjiΔ)_
- Fix memleak in pluginprocess tests. _(Mihael PranjiΔ)_
- + 10 more
π¦ CMake
- The plugin name is now provided as compiler definition `ELEKTRA_PLUGIN_NAME` via CMake.
- See [#1042](https://issues.libelektra.org/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](https://issues.libelektra.org/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](https://issues.libelektra.org/1042). _(Peter Nirschl)_
- We now specify
- version number,
- project description, and
- homepage URL
- + 28 more
π Docker
- We added
- [ANTLR](https://packages.debian.org/sid/antlr4),
- [ANTLRβs C++ runtime](https://packages.debian.org/sid/libantlr4-runtime-dev),
- [Ninja](https://packages.debian.org/sid/ninja-build), and
- [`shfmt`](https://github.com/mvdan/sh),
- to the [Dockerfile for Debian sid](https://master.libelektra.org/scripts/docker/debian/sid/Dockerfile)
- . _(RenΓ© Schwaiger)_
π¦ Misc
- We removed the `configure` script from the top-level directory.
- CMake is now popular enough so that this helper-script is not needed. _(RenΓ© Schwaiger)_
π¦ Cirrus
- We now use [Cirrus CI](https://cirrus-ci.com) to [build and test Elektra](http://cirrus-ci.com/github/ElektraInitiative/libelektra) on
- [FreeBSD 11.2](https://www.freebsd.org/releases/11.2R/announce.html) and
- [FreeBSD 12.0](https://www.freebsd.org/releases/12.0R/announce.html)
- . Both of these build jobs use `-Werror` to make sure we do not introduce any code that produces compiler warnings. _(RenΓ© Schwaiger)_
- The new build job `π Clang` tests Elektra on macOS. _(RenΓ© Schwaiger)_
- We added the build job `π Clang ASAN`, which uses Clang with enabled [AddressSanitizer](https://en.wikipedia.org/wiki/AddressSanitizer)
- to test Elektra on macOS. _(RenΓ© Schwaiger)_
- The new build job `π FULL` compiles and test Elektra using the CMake options `BUILD_SHARED=OFF` an `BUILD_FULL=ON`. _(RenΓ© Schwaiger)_
- + 5 more
π¦ Jenkins
- We added a badge displaying the current build status to the main [ReadMe](https://master.libelektra.org/README.md). _(RenΓ© Schwaiger)_
- The build job `formatting-check` now also checks the formatting of Shell scripts. _(RenΓ© Schwaiger)_
π¦ Travis
- We now test Elektra on [Ubuntu Xenial Xerus](https://docs.travis-ci.com/user/reference/xenial). _(RenΓ© Schwaiger)_
- We removed the build jobs `π Clang` and `π Check Shell` in favor of the Cirrus build job `π Clang`. _(RenΓ© Schwaiger)_
- We removed the build jobs `π Clang ASAN` in favor of the Cirrus build job `π Clang ASAN`. _(RenΓ© Schwaiger)_
- We removed the build jobs `π FULL` in favor of the Cirrus build job `π FULL`. _(RenΓ© Schwaiger)_
- We removed the build jobs `π MMap` in favor of the Cirrus build job `π MMap`. _(RenΓ© Schwaiger)_
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date.
π¦ Outlook
- We are currently working on following topics:
- infallible high-level API: creating an API that guarantees you to return configuration values _(Klemens BΓΆswirth)_
- error handling _(Michael Zronek)_
- elektrify LCDproc _(Klemens BΓΆswirth)_ and _(Michael Zronek)_
- YAML as default storage _(RenΓ© Schwaiger)_
- misconfiguration tracker _(Vanessa Kos)_
- global mmap cache: This feature will enable Elektra to return configuration without parsing configuration files or executing other plugins as long as the configuration files are not changed. _(Mihael PranjiΔ)_
- and since recently:
- + 5 more
π¦ Statistics
- 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:
- 1 commit by Aybuke Ozdemir <aybuke.147@gmail.com>
- 2 commits by Gabriel Rauter <rauter.gabriel@gmail.com>
- 6 commits by Bernhard Denner <bernhard.denner@gmail.com>
- 6 commits by Dominic JΓ€ger <dominic.jaeger@gmail.com>
- 25 commits by Peter Nirschl <peter.nirschl@gmail.com>
- + 6 more
π¦ Join the Initiative!
- We welcome new contributors!
- Read [here](https://www.libelektra.org/devgettingstarted/ideas) about how to get started.
- As first step, you could give us feedback about these release notes.
- Contact us via our [issue tracker](https://issues.libelektra.org).
π¦ Get the Release!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.8.26.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.26.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.26.tar.gz.hashsum?raw=true)
- name: elektra-0.8.26.tar.gz
- size: 6395865
- md5sum: 4ef202b5d421cc497ef05221e5309ebc
- sha1: 94f654764bcf49d0ebc7e636f444e24ca6cfeb19
- sha256: 5806cd0b2b1075fe0d5a303649d0bd9365752053e86c684ab7c06e7f369155d3
- + 5 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- 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](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.8.26-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- Best regards,
- + 1 more
π¦ 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](https://libelektra.org).
- For a small demo see here:
- [](https://asciinema.org/a/cantr04assr4jkv8v34uz9b8r)
- You can also read the news [on our website](https://www.libelektra.org/news/0.8.25-release)
π¦ Metadata
- guid: 472392e0-cc4f-4826-a0a9-2764d90c5f89
- author: Markus Raab
- pubDate: Sun, 18 Nov 2018 21:24:34 +0100
- shortDesc: faster storage and lookup
π¦ Highlight
- This release is dedicated to drastically improve the speed of Elektra.
- Two non-trivial features facilitate most of the improvement:
- mmap storage for very fast retrieval of configuration
- Hybrid Search Algorithm for `ksLookup (...)` for very fast access of configuration
π¦ mmap storage
- We added a new, binary and fast storage plugin called [`mmapstorage`](https://libelektra.org/plugins/mmapstorage).
- It leverages the `mmap()` syscall and supports full Elektra semantics.
- We provide two compile variants: `mmapstorage` and `mmapstorage_crc`.
- The `mmapstorage_crc` variant enables CRC32 checksums for critical data,
- while the `mmapstorage` variant omits the checksum for maximum performance.
- We ran a synthetic benchmark with 257 iterations using 40k keys in a keyset,
- and compared the performance to the `dump` storage plugin.
- Median write time in microseconds:
- + 16 more
π¦ Hybrid Search Algorithm for `ksLookup (...)`
- The hybrid search algorithm is now implemented, this concludes the extension of the `ksLookup (...)` search with the
- [order preserving minimal perfect hash map (OPMPHM)](https://master.libelektra.org/doc/dev/data-structures.md#order-preserving-minimal-perfect-hash-map-aka-opmphm).
- The hybrid search combines the best properties of the binary search and the [OPMPHM](https://master.libelektra.org/doc/dev/data-structures.md#order-preserving-minimal-perfect-hash-map-aka-opmphm).
- The hybrid search decides dynamically which search algorithm to use.
- Because of the automatic decision, usually nothing needs to be done by API users to take advantage of this improvement.
- Advanced API user, however, can overrule the hybrid search by passing `KDB_O_OPMPHM` or `KDB_O_BINSEARCH` to `ksLookup (...)`.
- The constants are defined in [kdbproposal.h](https://master.libelektra.org/src/include/kdbproposal.h).
- For low-memory systems the building of the hash map can be disabled altogether at build-time by disabling the CMake variable `ENABLE_OPTIMIZATIONS` (by default enabled now).
- + 7 more
π¦ Plugins
- The following section lists news about the [plugins](https://www.libelektra.org/plugins/readme) we updated in this release.
π¦ Directory Value
- We improved the performance of the [directoryvalue plugin](https://libelektra.org/plugins/directoryvalue). *(RenΓ© Schwaiger)*
- This plugin is used for configuration file formats that do not support that directories contain values, like it is the case in JSON.
- A program manipulating a 13 MB JSON file which first did not succeed within 10 hours is now finished in 44 seconds.
π¦ Process
- There is a new, experimental plugin called [process](https://libelektra.org/plugins/process).
- This plugin utilizes the pluginprocess library in order to execute arbitrary other
- plugins in an own process, acting as a proxy itself. Therefore it is not required
- to explicitly change a plugin's implementation if it shall be executed in an own
- process. This plugin is not completely finished yet, as currently there is no way
- for it to mimic the proxied plugin's contract in Elektra. It can be used with simple
- plugins like `dump` however, check the limitations in the readme for more details. *(Armin Wurzinger)*
π¦ FSTab
- The detection of the `mntent` functions now also works correctly, if you use the compiler switch `-Werror`. *(RenΓ© Schwaiger)*
π¦ passwd
- We fixed an issue with the passwd plugin not properly setting compile flags.
- This resolves a problem with undefined functions when building with musl. *(Lukas Winkler)*
π¦ gpgme
- The experimental [gpgme plugin](https://libelektra.org/plugins/gpgme) was brought into existence to provide cryptographic functions using GnuGP via the `libgpgme` library. *(Peter Nirschl)*
π¦ network
- The `network` plugin now also allows for non-numerical hosts (i.e. "localhost") to be set and tries to resolve it via DNS. *(Michael Zronek)*
π¦ YAMBi
- This new plugin parses a subset of YAML using a parser generated by [Bison](https://www.gnu.org/software/bison). *(RenΓ© Schwaiger)*
π¦ YAML CPP
- The build system now disables the plugin automatically, if you use a GCC compiler (`6.x` or earlier) and enable the option `ENABLE_ASAN`.
- We updated the behavior, since otherwise the plugin will report memory leaks at runtime. *(RenΓ© Schwaiger)*
π¦ Yan LR
- A new plugin parsing YAML files using Yan LR.
- The plugin does not modify the (original) parent key. As a consequence, setting values at the root of a mountpoint:
- ```sh
- sudo kdb mount config.yaml user/tests/yambi yambi
- kdb set user/tests/yanlr 'Mount Point Value'
- kdb get user/tests/yanlr
- ```
- now works correctly. *(RenΓ© Schwaiger)*
- + 7 more
π¦ YAwn
- This new plugin parses a subset of YAML using the Earley Parser library [YAEP](https://github.com/vnmakarov/yaep). *(RenΓ© Schwaiger)*
π¦ Reference
- This new plugin can be used to validate that the value of a key is a reference to another key. *(Klemens BΓΆswirth)*
π¦ Libraries
- The text below summarizes updates to the [C (and C++)-based libraries](https://www.libelektra.org/libraries/readme) 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).
- This is the last release for which we have built Jessie packages:
- deb [trusted=yes] https://debian-stable.libelektra.org/elektra-stable/ jessie main
- deb-src [trusted=yes] https://debian-stable.libelektra.org/elektra-stable/ jessie main
- Obviously, we will continue to update the stretch package:
- deb [trusted=yes] https://debian-stretch-repo.libelektra.org/ stretch main
- + 1 more
π¦ Infos for Package Maintainers
- Following plugins got added:
- libelektra-gpgme.so
- libelektra-mmapstorage_crc.so
- libelektra-mmapstorage.so
- libelektra-process.so
- libelektra-reference.so
- libelektra-yambi.so
- A new library got added (should be packaged privately for now):
- + 1 more
π¦ Core
- Optimize elektraKsFilter to not duplicate keys *(Markus Raab)*
π¦ Globbing
- A new library which can be used to match keys against globbing patterns was introduced. *(Klemens BΓΆswirth)*
- The API is still experimental, so it should not be used externally for now.
π¦ Ease
- `libease` provides the function `elektraArrayValidateBaseNameString`, which can be used to validate that a
- given string is an Elektra array name. *(Klemens BΓΆswirth)*
π¦ Bindings
- Bindings allow you to utilize Elektra using [various programming languages](https://www.libelektra.org/bindings/readme). This section keeps
- you up to date with the multi-language support provided by Elektra.
π¦ Ruby
- Do not use private Elektra headers for Ruby bindings as preparation for a Ruby `libelektra` gem. *(Bernhard Denner)*
π¦ Tools
- Added benchmarks for storage plugins. The currently benchmarked plugins are `dump` and `mmapstorage`. *(Mihael PranjiΔ)*
- Avoid raw pointers in KDB tools. *(Markus Raab)*
- Improved error text of KDB tool `cp`. *(Markus Raab)*
- Document hidden feature of KDB tool `mount`. *(Markus Raab)*
- Add more tags to the KDB tools to be used with `kdb find-tools`. *(Markus Raab)*
π¦ Scripts
- We now require [`clang-format`](https://clang.llvm.org/docs/ClangFormat.html) 6.0 for formatting C and C++ code. *(RenΓ© Schwaiger)*
- The command [`reformat-source`](https://master.libelektra.org/scripts/reformat-source) now displays information about the installed
- version of `clang-format`, if it is unable to locate a supported version of the tool. *(RenΓ© Schwaiger)*
- We now also check the POSIX compatibility of our scripts with [`shfmt`][]. *(RenΓ© Schwaiger)*
- The new command [`reformat-shfmt`][https://master.libelektra.org/scripts/reformat-shfmt] reformats Shell scripts using the tool [`shfmt`](https://github.com/mvdan/sh). *(RenΓ© Schwaiger)*
- [`shfmt`]: https://github.com/mvdan/sh
π Documentation
- We fixed some minor spelling mistakes in the documentation. *(RenΓ© Schwaiger)*
- Improved the plugins documentation. *(Michael Zronek)*
- The ReadMe now includes two badges that show the latest released version of Elektra and the status of the Travis build. *(RenΓ© Schwaiger)*
- Fixed documenation error on Ruby plugin Readme. *(Bernhard Denner)*
- Go into more detail in
- [BUILDSERVER.md](https://master.libelektra.org/doc/BUILDSERVER.md).
- *(Lukas Winkler)*
π§ͺ Tests
- Fix potential parallel execution of maven tests, which write to KDB. *(Markus Raab)*
- The unit test for the [`dbus` plugin](https://www.libelektra.org/plugins/dbus) does not leak memory anymore, if it fails on macOS.
- *(Thomas Wahringer)*
- The tests `testkdb_allplugins` and `testscr_check_kdb_internal_check` do not test a plugin on an ASAN enabled build anymore, if you
- specify the status tag `memleak` in the plugin contract. *(RenΓ© Schwaiger)*
- The [CFramework](https://master.libelektra.org/doc/TESTING.md) macro `compare_key` now also checks if the meta values of keys are equal.
- *(RenΓ© Schwaiger)*
- The test `testscr_check_bashisms` does not print warnings about skipped files anymore. *(RenΓ© Schwaiger)*
- + 19 more
π¦ CMake
- We improved the detection of Python 2 and Python 3 in the CMake code of the Python bindings/plugins. *(RenΓ© Schwaiger)*
- We restructured the code of the [CMake module](https://master.libelektra.org/cmake/Modules/FindHaskell.cmake) we use to detect Haskell
- tools . *(RenΓ© Schwaiger)*
- Building the Haskell binding should now work again. *(RenΓ© Schwaiger)*
- The CMake configuration step now displays less debug messages about found libraries. *(RenΓ© Schwaiger)*
- Provide a wrapper around `check_symbol_exists` that handles issues with
- `-Werror -Wpedantic`. *(Lukas Winkler)*
- The argument `INCLUDE_SYSTEM_DIRECTORIES` of the function `add_plugin` now supports multiple include directories. *(RenΓ© Schwaiger)*
- + 6 more
π Docker
- The Docker image for Debian stretch now contains all (optional) dependencies for Elektra. *(RenΓ© Schwaiger)*
- The docker images used by our build system are now available to download from
- our systems without authentication.
- Try it out and list available images via `docker run --rm anoxis/registry-cli -r https://hub-public.libelektra.org`.
- You can search for images using `--images-like`, for example: `docker run --rm anoxis/registry-cli -r https://hub-public.libelektra.org --images-like alpine`.
- *(Lukas Winkler)*
π¦ Vagrant
- Added Vagrantfile for Ubuntu artful 32-bit. *(Mihael PranjiΔ)*
π¦ Jenkins
- We enabled tests that write to the hard disk on the build job `alpine`. *(RenΓ© Schwaiger)*
- The build jobs now print less non-relevant output. *(RenΓ© Schwaiger)*
- Enable `-Werror` in `debian-stable-full`. *(Lukas Winkler)*
- We added the compiler switch `-Werror` to the build jobs:
- `alpine`,
- `debian-stable-full-i386`,
- `debian-stable-full-mmap-asan`,
- `debian-stable-full-mmap`,
- + 14 more
π¦ Travis
- Travis now also checks the code for memory leaks in the build job `π Clang ASAN`. *(RenΓ© Schwaiger)*
- The Travis build jobs `π Clang ASAN` and `π§ GCC ASAN` now only translates a minimal set of plugins, since we had various timeout
- problems with these jobs before. We explicitly excluded plugins, to make sure that the build jobs still test newly added plugins.
- *(RenΓ© Schwaiger)*
- Added travis build job `π mmap` on macOS with `mmapstorage` as the default storage. *(Mihael PranjiΔ)*
- Travis now prints the CMake configuration for each build job. *(RenΓ© Schwaiger)*
- We now test Elektra using the latest version of Xcode (`10.0`). *(RenΓ© Schwaiger)*
- We added the build job `π Check Shell`, which only runs shell checks such as `testscr_check_oclint`. This update allows us to
- + 7 more
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date.
π¦ Outlook
- We are currently working on following topics:
- Global mmap cache: This feature will enable Elektra to return configuration without parsing configuration files or executing other plugins as long as the configuration files are not changed. *(Mihael PranjiΔ)*
- Finish high-level API. *(Klemens BΓΆswirth)*
- Validation improvements. *(Michael Zronek)*
- Improve YAML plugins. *(RenΓ© Schwaiger)*
π¦ Statistics
- Following authors made this release possible:
- 1 commit: Thomas Wahringer <thomas.wahringer@libelektra.org>
- 2 commits: Bernhard Denner <bernhard.denner@gmail.com>
- 7 commits: Kurt Micheli <e1026558@student.tuwien.ac.at>
- 12 commits: Michael Zronek <michael.zronek@gmail.com>
- 33 commits: Lukas Winkler <derwinlu+git@gmail.com>
- 28 commits: Klemens BΓΆswirth <k.boeswirth+git@gmail.com>
- 30 commits: Armin Wurzinger <e1528532@student.tuwien.ac.at>
- + 6 more
π¦ Finished Thesis
- [Daniel Bugl](https://www.libelektra.org/ftp/elektra/publications/bugl2018web.pdf), see also [the web demo](https://webdemo.libelektra.org/).
- [Thomas Wahringer](https://www.libelektra.org/ftp/elektra/publications/wahringer2018notification.pdf).
- [Kurt Micheli](https://www.libelektra.org/ftp/elektra/publications/micheli2018hybrid.pdf)
- [Armin Wurzinger](https://catalogplus.tuwien.ac.at/primo_library/libweb/action/display.do?tabs=detailsTab&ct=display&fn=search&doc=UTW_alma7181921030003336&indx=1&recIds=UTW_alma7181921030003336)
π¦ Get It!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.8.25.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.25.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.25.tar.gz.hashsum?raw=true)
- name: elektra-0.8.25.tar.gz
- size: 6233918
- md5sum: d5614b2049fb8431a80842a4909b140e
- sha1: c7dfb5fa87284d8f5ba4d4753e0e47a0e362c733
- sha256: 37829256e102e967fe3d58613a036d9fb9b8f9658e20c23fa787eac0bfbb8a79
- + 5 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- to always get the release notifications.
- If you also want to participate, or for any questions and comments
- please contact us via the issue tracker [on GitHub](http://issues.libelektra.org).
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.8.25-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- Best regards,
- + 1 more
π Changes
- guid: 889b700d-9eac-4eff-9a3d-f6fb15c3d9da
- author: Markus Raab
- pubDate: Sat, 18 Aug 2018 18:13:40 +0200
- shortDesc: Elektra Web, Notifications, Type System
π¦ 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](https://libelektra.org).
- For a small demo see here:
- [](https://asciinema.org/a/cantr04assr4jkv8v34uz9b8r)
- You can also read the news [on our website](https://www.libelektra.org/news/0.8.24-release)
π¦ Highlights
- Elektra Web
- Notifications
- KDE Workshop
- Type System Prototype
- Chef Cookbook
π¦ Elektra Web 1.6
- The new release of Elektra Web features many UX improvements from the usability test!
- [](https://www.youtube.com/watch?v=lLg9sk6Hx-E)
- Try it out now on: http://webdemo.libelektra.org/
- 1.5 changelog:
- search completely reworked - it does not act as a filter on already opened keys anymore, and instead searches the whole key database - feedback from the search was also greatly improved (pulsating while searching, glowing blue when done)
- added "abort" buttons to dialogs to revert actions
- added "create array" button to easily create arrays
- removed confirmation dialog before deletion (undo can be used instead)
- + 17 more
π¦ Notifications
- Elektra's notification feature which allows applications to keep persistent
- configuration settings in sync with the key database and other applications was
- greatly improved with this release:
- The [notification API](https://doc.libelektra.org/api/current/html/group__kdbnotification.html)
- now supports more types and has improved support for callbacks.
- With the addition of the [zeromqsend](https://www.libelektra.org/plugins/zeromqsend)
- and [zeromqrecv](https://www.libelektra.org/plugins/zeromqrecv) plugins
- together with the [hub-zeromq](https://www.libelektra.org/tools/hub-zeromq)
- + 17 more
π¦ KDE Workshop
- At [Akademy 2018](https://akademy.kde.org/2018) we had a successful
- [Config Workshop](https://community.kde.org/Akademy/2018/Config_Workshop).
- We generally agreed that misconfiguration is important and the situation
- in FLOSS needs to improve.
- We discussed how Elektra can be used in KDE and came up with the idea that
- KConfig could be moved to a Elektra plugin.
- Then KConfig could be patched to use Elektra instead.
- This would lead to the situation that KDE users would have the same user
- + 7 more
π¦ Type System Prototype
- Elektra supports specifying the semantics of keys via metakeys in the `spec`
- namespace. An example is the metakey `check/range` which can be used to specify
- that a key only holds numbers in a given range. Another metakey is `check/enum`
- which only allows specific keywords to be the content of a key. Up to now these
- semantics are only being checked at runtime. Therefore a type system was developed to
- be able to check configuration specifications statically. As an example, it
- would detect when one accidentally adds both a range and an enum check if their
- possible contents are not compatible with each other.
- + 7 more
π¦ Chef Cookbook
- Next to the [Puppet Resource Type](http://puppet.libelektra.org/)
- we now also prepared a [Chef Cookbook](https://supermarket.chef.io/cookbooks/kdb)
- which allows us to use Elektra from within Chef.
- For example, to set mount a configuration file, you can use:
- ```
- kdbmount 'system/hosts' do
- file '/etc/hosts'
- plugins 'hosts'
- + 15 more
π¦ CCode
- We fixed various warnings in the source code reported by [OCLint](http://oclint.org). *(RenΓ© Schwaiger)*
- The plugin now also encodes and decodes key names in addition to key values. *(RenΓ© Schwaiger)*
π¦ CPP Template
- We added a new [template for C++ based plugins](https://www.libelektra.org/plugins/cpptemplate). To create a plugin based on this
- template, please use the command
- ```sh
- scripts/copy-template -p pluginname
- ```
- , where `pluginname` specifies the name of your new plugin. *(RenΓ© Schwaiger)*
π¦ Crypto
- The `crypto` plugin now uses Elektra's `libinvoke` and the `base64` plugin in order to encode and decode Base64 strings. This improvement reduces code duplication between the two plugins. *(Peter Nirschl)*
π¦ CSVStorage
- Changed behaviour of export to validate the structure of exported keys only. *(Thomas Waser)*
π¦ Directory Value
- We rewrote the plugin using C++. *(RenΓ© Schwaiger)*
- [Directory Value](https://www.libelektra.org/plugins/directoryvalue) now also supports nested arrays. *(RenΓ© Schwaiger)*
- The plugin now also adds leafs for a key, if its value is null or the empty string. *(RenΓ© Schwaiger)*
π¦ fcrypt
- The `fcrypt` plugin will consider the environment variable `TMPDIR` in order to detect its temporary directory. See [#1973] *(Peter Nirschl)*
π¦ fstab
- The `fstab` plugin now passes tests on musl builds. *(Lukas Winkler)*
π¦ Haskell
- An issue when building Haskell plugins with a cached sandbox is fixed in case
- a Haskell library bundled with Elektra gets changed. *(Armin Wurzinger)*
- The [script](https://master.libelektra.org/scripts/generate-haskell-dependencies) that generates the list of haskell dependencies now also works on
- ghc8.0.1 and older cabal versions. Furthermore one can specify the build directory as
- a parameter if it is not located within the source directory. *(Armin Wurzinger)*
π¦ Interpreter Plugins
- The plugins Ruby, Python and Jni can now also be mounted as global plugin.
- Fix crashes in global Python plugin by using pluginprocess.
- Python plugin can now shutdown properly again. *(Markus Raab and Armin Wurzinger)*
π¦ JNI
- We now disable the plugin for the `BUILD_STATIC` or `BUILD_FULL` build variants, since otherwise the plugin breaks the `kdb` tool.
- *(RenΓ© Schwaiger)*
- We disabled the internal check (`testscr_check_kdb_internal_check`) for the plugin, since it always fails. *(RenΓ© Schwaiger)*
π¦ HexNumber
- The plugin [hexnumber](https://www.libelektra.org/plugins/hexnumber) has been added. It can be used
- to convert hexadecimal values into decimal when read, and back to hexadecimal when written. *(Klemens BΓΆswirth)*
π¦ List
- The [`list` plugin](http://libelektra.org/plugins/list) now allows us to pass
- common configuration for all plugins by using keys below the "config/" setting.
- The updated plugin documentation contains more information and an example. *(Thomas Wahringer)*
- The [`list` plugin](http://libelektra.org/plugins/list) which is responsible
- for global mounting had a bug which prevented globally mounted plugins from
- being configurable. *(Thomas Wahringer)*
π¦ mINI
- We fixed a memory leak in the [mINI plugin](https://libelektra.org/plugins/mini) by requiring the plugin
- [`ccode`](https://libelektra.org/plugins/ccode) instead of the βproviderβ `code`. *(RenΓ© Schwaiger)*
- Removed unused header files. *(RenΓ© Schwaiger)*
π¦ network
- Fixed an error in network plugin that prevented it from working on non-glibc
- platforms. *(Lukas Winkler)*
π¦ Type
- We extended the [Markdown Shell Recorder][] example inside the [README of the plugin](https://www.libelektra.org/plugins/type).
- *(RenΓ© Schwaiger)*
π¦ Regex Dispatcher
- The plugin [regexdispatcher](https://www.libelektra.org/plugins/regexdispatcher) has been added.
- It calculates regex representations for commonly used specification keywords to be used with the
- [typechecker](https://www.libelektra.org/plugins/typechecker). Currently the keywords `check/range`,
- `check/enum` and `default` are supported. *(Armin Wurzinger)*
π¦ Typechecker
- The plugin [typechecker](https://www.libelektra.org/plugins/typechecker), used to validate
- configuration specifications for Elektra statically, has been improved under the hood. It now
- supports a more concise and efficient typechecking process including a greatly
- improved type inference scheme that should make generated specification files and thus
- generated errors to be easier to understand. An example of such error message is shown in the
- [README](https://www.libelektra.org/plugins/typechecker). *(Armin Wurzinger)*
π¦ Tcl
- The [`tcl`](http://libelektra.org/plugins/tcl) plugin does not fail anymore, if its configuration file does not exist and you try to
- retrieve the plugin contract. *(RenΓ© Schwaiger)*
- The plugin now uses relative key names. This update addresses issue [#51](https://issues.libelektra.org/51). *(RenΓ© Schwaiger)*
π¦ YAJL
- The [YAJL Plugin](http://libelektra.org/plugins/yajl) now uses the internal logger functionality instead of `printf` statements.
- *(RenΓ© Schwaiger)*
- We fixed a problem with negative values reported by the
- [UndefinedBehaviorSanitizer](https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html). *(RenΓ© Schwaiger)*
π¦ YAML CPP
- The plugin does not save empty intermediate keys anymore. The example below shows the old and the new behavior of the plugin:
- ```sh
- kdb mount config.yaml /tests/yamlcpp yamlcpp
- kdb set /tests/yamlcpp/level1/level2/level3 value
- kdb ls /tests/yamlcpp
- kdb ls /tests/yamlcpp
- ```
- . *(RenΓ© Schwaiger)*
- + 22 more
π¦ YAML Smith
- [YAML Smith](http://libelektra.org/plugins/yamlsmith) is a plugin that converts Elektraβs `KeySet` data structure to a textual
- representation in the [YAML][] serialization format. The plugin is currently in a very early stage of development. Please be advised,
- that it is quite likely that the plugin will produce incorrect or even invalid YAML data, especially if your `KeySet` contains special
- characters.
π¦ Yan LR
- The experimental [Yan LR plugin](http://libelektra.org/plugins/yanlr) uses a parser, generated by [ANTLR](http://www.antlr.org) to read
- basic [YAML][] data. The plugin only converts YAML data to Elektraβs `KeySet` data structure. If you want to write data in the YAML
- format please take a look at the [YAML Smith plugin](http://libelektra.org/plugins/yamlsmith). *(RenΓ© Schwaiger)*
π¦ ZeroMQ transport plugins
- New notification transport plugins for [ZeroMQ](http://zeromq.org/) were added.
- The new ["zeromqsend"](https://www.libelektra.org/plugins/zeromqsend) and ["zeromqrecv"](https://www.libelektra.org/plugins/zeromqrecv) plugins use
- `ZMQ_PUB` and `ZMQ_SUB` sockets to send and receive notifications.
- The plugins can be used instead or along with the
- ["dbus"](https://www.libelektra.org/plugins/dbus) and
- ["dbusrecv"](https://www.libelektra.org/plugins/dbusrecv) transport plugins.
- Check out the
- [plugin documentation](https://www.libelektra.org/plugins/zeromqrecv) for more
- + 1 more
π¦ Misc
- The logging plugins ["syslog"](https://www.libelektra.org/plugins/syslog),
- ["journald"](https://www.libelektra.org/plugins/journald) and
- ["logchange"](https://www.libelektra.org/plugins/logchange) now have a new
- option called "get" which can be enabled to log which configuration settings
- are loaded by applications.
- The new option can be used for logging application behavior when using
- [notifications](https://www.libelektra.org/tutorials/notifications). *(Thomas Wahringer)*
- Do not exclude `simpleini` silently on non-glibc systems but output a message
- + 13 more
π¦ General
- Replaced `strdup` with `elektraStrDup` (for C99 compatibility). *(Markus Raab)*
- You can now remove the basename of a key via the C++ API by calling `key.delBaseName()`. *(RenΓ© Schwaiger)*
- The function `elektraArrayGetNextKey` now uses `NULL` instead of the empty string as init value for the returned key. *(RenΓ© Schwaiger)*
π¦ pluginprocess
- The library [`pluginprocess`](http://master.libelektra.org/src/libs/pluginprocess) that is used to
- execute plugins run inside own processes has been improved. This is useful as some plugins like
- haskell-based plugins or [`python`](http://libelektra.org/plugins/python) can only be started once
- inside a single process, while libelektra may call a plugin several times. The library now uses an
- improved communication protocol that separates between pluginprocess-related data and keysets
- passed to plugins. This avoids any possible name clashes between keys used by a plugin and keys
- used by pluginprocess.
- The documentation of the plugin has been improved as well, some mistakes were corrected and it
- + 5 more
π¦ Bindings
- A new I/O binding for [ev](https://www.libelektra.org/bindings/io_ev) has been
- added.
- It can be used to integrate the notification feature with applications based
- on [ev](http://libev.schmorp.de) main loops. *(Thomas Wahringer)*
π¦ Notifications
- The
- [notification API](https://doc.libelektra.org/api/current/html/group__kdbnotification.html)
- was extended.
- The API now supports more types: `int`, `unsigned int`,
- `long`, `unsigned long`, `long long`, `unsinged long long`, `float` and `double`.
- It also supports all of Elektra's `kdb_*_t` types defined in `kdbtypes.h`.
- Also contexts for callbacks were added and
- `elektraNotificationRegisterCallbackSameOrBelow()` allows for notifications
- + 1 more
π¦ Tools
- The new tool `kdb find` lists keys of the database matching a certain regular expression. *(Markus Raab)*
- You can now build the [Qt-GUI](https://www.libelektra.org/tools/qt-gui) using Qt `5.11`. *(RenΓ© Schwaiger)*
π¦ Scripts
- The script [`check_formatting.sh`](https://master.libelektra.org/tests/shell/check_formatting.sh) now also checks the formatting of CMake
- code if you installed [`sponge`](https://joeyh.name/code/moreutils) and [`cmake-format`][]. *(RenΓ© Schwaiger)*
- The script [`check_formatting.sh`](https://master.libelektra.org/tests/shell/check_formatting.sh) now no longer writes to stdout if clang-format5.0
- can not be found. *(Lukas Winkler)*
- The script [`check_bashisms.sh`](https://master.libelektra.org/tests/shell/check_bashisms.sh) should now work correctly again, if the
- system uses the GNU version `find`. *(RenΓ© Schwaiger)*
- The script [`reformat-cmake`](https://master.libelektra.org/scripts/reformat-cmake) now checks if `cmake-format` works before it reformats CMake files. Thank you to Klemens BΓΆswirth for the [detailed description of the problem](https://github.com/ElektraInitiative/libelektra/pull/1903#discussion_r189332987). *(RenΓ© Schwaiger)*
- `scripts/run_icheck` now no longer leaves the base directory of the project
- + 3 more
π¦ Copy Template
- The script [`copy-template`](https://master.libelektra.org/scripts/copy-template) is now location independent. It will always create a
- new plugin in `src/plugins`. *(RenΓ© Schwaiger)*
- The command now also supports the new [template for C++ based plugins](https://www.libelektra.org/plugins/cpptemplate). Please use the
- command line switch `-p` to create a new plugin based on `cpptemplate`.
- [`cmake-format`]: https://github.com/cheshirekow/cmake_format
π Documentation
- We improved the formatting of our [compilation guide](/doc/COMPILE.md). *(RenΓ© Schwaiger)*
- We fixed various minor spelling mistakes in the documentation. *(RenΓ© Schwaiger)*
- The man pages for [`kdb change-resolver-symlink`](https://www.libelektra.org/manpages/kdb-change-resolver-symlink) and
- [`kdb change-storage-symlink`](https://www.libelektra.org/manpages/kdb-change-storage-symlink) referenced the wrong command.
- *(Lukas Winkler, RenΓ© Schwaiger)*
- We added documentation for our build system in
- [BUILDSERVER.md](https://master.libelektra.org/doc/BUILDSERVER.md).
- *(Lukas Winkler)*
- + 5 more
π¦ (Markdown) Shell Recorder
- We added new [Markdown Shell Recorder][] tests for the
- [`ccode`](https://www.libelektra.org/plugins/ccode),
- [`file`](https://www.libelektra.org/plugins/file),
- [`iconv`](https://www.libelektra.org/plugins/iconv),
- [`ni`](https://www.libelektra.org/plugins/ni),
- [`rename`](https://www.libelektra.org/plugins/rename), and
- [`uname`](https://www.libelektra.org/plugins/uname)
- plugin. *(RenΓ© Schwaiger)*
- + 18 more
π¦ General
- Plugins added with the flag `SHARED_ONLY` no longer get tested in the script `check_kdb_internal_check.sh` if executed with kdb-full or kdb-static. *(Armin Wurzinger)*
- Add `compare_regex_to_line_files` which allows to compare a file made of
- regex patterns to be compared with a text file line by line.
- *(Lukas Winkler)*
- The OPMPHM has a new test case *(Kurt Micheli)*
- Do not execute `fcrypt` and `crypto` unit tests if the `gpg` binary is not available. *(Peter Nirschl)*
- Resolved an issue where tests did not cleanup properly after they ran.
- This was especially noticeable for `gpg` tests as the `gpg-agents` that were
- + 6 more
π¦ Build
- As written in the previous release notes:
- Debian Wheezy is not supported anymore.
- Jessie (oldstable) with gcc 4.8.4 is now the oldest supported platform.
- Another important change is:
- We now import the current version of [Google Test][] as external project at configuration time using
- [DownloadProject](https://github.com/Crascit/DownloadProject). If you want to use a local installation of
- [Google Test][] instead, please set the value of `GTEST_ROOT` to the path of you local copy of the
- [Google Test][] framework. *(RenΓ© Schwaiger)*
- + 2 more
π¦ CMake
- The build system no longer installs Haskell dependencies from hackage by itself, instead
- this has to be done beforehand like it is the case with all other dependencies. The main
- reason is that the build servers shouldn't compile the dependencies over and over again,
- only if something changes. See the [README](https://www.libelektra.org/bindings/haskell). *(Armin Wurzinger)*
- Plugins can be specified to be only built for `BUILD_SHARED` builds, but to be excluded
- from any `BUILD_FULL` or `BUILD_STATIC` builds using the new optional argument `ONLY_SHARED`
- for our cmake macro `add_plugin`. This way `BUILD_SHARED` can be combined with the other
- options without excluding such plugins. The cmake messages about plugin inclusion have
- + 26 more
π Docker
- `clang-5.0` is now used for clang tests by the build system *(Lukas Winkler)*
- An additional build job on Ubuntu:xenial has been added *(Lukas Winkler)*
- `withDockerEnv` Jenkinsfile helper now no longer provides stages automatically. *(Lukas Winkler)*
- [Google Test][] is installed in Docker images used by the build system. *(Lukas Winkler)*
π¦ Jenkins
- A build job checks if PRs modify the release notes. *(Markus Raab)*
- Several improvements to the build system have been implemented *(Lukas Winkler)*:
- Better Docker image handling.
- Abort of previously queued but unfinished runs on new commits.
- Document how to locally replicate the Docker environment used for tests.
- The Jenkins build server now also compiles and tests Elektra with enabled address sanitizer. *(Lukas Winkler)*
- Add `STATIC` and `FULL` linked builds. *(Lukas Winkler)*
- Ported GCC ASAN build job to new build system *(RenΓ© Schwaiger + Lukas Winkler)*
- + 29 more
π¦ Travis
- Travis now uses the latest version of GCC and Clang to translate Elektra on Linux. *(RenΓ© Schwaiger)*
- Our Travis build job now
- builds all (applicable) bindings by default again, and
- checks the formatting of CMake code via [`cmake-format`][]
- . *(RenΓ© Schwaiger)*
- Some cache issues on the Travis build job for cached haskell sandboxes have been resolved. *(Armin Wurzinger)*
- Travis caches downloaded Homebrew packages to improve the reliability of macOS build jobs. *(RenΓ© Schwaiger)*
- Travis is now using Xcode 9.4.1 on macOS 10.13 for most macOS build jobs. *(Mihael PranjiΔ)*
- + 11 more
π¦ 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).
- Following changes were made:
- The C++ API was extended with `delBaseName()`.
- This does not affect ABI compatibility, also C++ programs compiled against 0.8.24 and using `delBaseName()` will work with Elektra 0.8.23 or older.
- `kdbtypes.h` now comes with support for C99 types.
- We added the private headerfiles `kdbnotificationinternal.h`, `kdbioplugin.h`. *(Thomas Wahringer)*
- + 11 more
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date.
π¦ Outlook
- We are currently working on following topics:
- The hybrid search algorithm for the Key search `ksLookup (...)` is now in preparation.
- The preparation includes a new KeySet flag `KS_FLAG_NAME_CHANGE`, this flag will be used by the hybrid search.
- The hybrid search combines the best properties of the binary search and the [OPMPHM](https://master.libelektra.org/doc/dev/data-structures.md#order-preserving-minimal-perfect-hash-map-aka-opmphm).
- The hybrid search uses a modified branch predictor to predicts KeySet changes and decides if binary search or OPMPHM would be faster. *(Kurt Micheli)*
π¦ Statistics
- Following persons made in total 1734 commits:
- 1 commit by Mihael Pranjic <mpranj@limun.org>
- 2 commits by Thomas Waser <thomas.waser@libelektra.org>
- 7 commits by Michael Zronek <michael.zronek@gmail.com>
- 12 commits by Kurt Micheli <e1026558@student.tuwien.ac.at>
- 17 commits by Peter Nirschl <peter.nirschl@gmail.com>
- 21 commits by Klemens BΓΆswirth <k.boeswirth+git@gmail.com>
- 197 commits by Markus Raab <elektra@markus-raab.org>
- + 6 more
π¦ Get It!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.8.24.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.24.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.24.tar.gz.hashsum?raw=true)
- name: elektra-0.8.24.tar.gz
- size: 6130464
- md5sum: 2e3def7b905f94e1f9f7fa0fe4743189
- sha1: ff2a9b2d3a5e20a456e272a47fe9fd79ad410428
- sha256: 454763dd00e95e774a907b26eb59b139cfc59e733692b3cfe37735486d6c4d1d
- + 5 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- to always get the release notifications.
- For any questions and comments, please contact the
- issue tracker [on GitHub](http://issues.libelektra.org)
- or Markus Raab by email using elektra@markus-raab.org.
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.8.24-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- + 2 more
π Changes
- guid: 9a9ab08b-9ca0-4242-b617-5a8b21ea42a0
- author: Markus Raab
- pubDate: Sun, 13 May 2018 08:57:15 +0200
- shortDesc: Notification, Web UI, Build System
π¦ What is Elektra?
- Elektra serves as a universal and secure framework to access
- configuration settings in a specified, global, hierarchical key database.
- For more information, visit [https://libelektra.org](https://libelektra.org).
- For a small demo see here:
- [](https://asciinema.org/a/cantr04assr4jkv8v34uz9b8r)
- You can also read the news [on our website](https://www.libelektra.org/news/0.8.23-release)
π¦ Highlights
- Notification: New transport plugin
- Web UI greatly improved
- Overhaul of Build System and Daily Stretch Repository
β¨ Notification: New transport plugin
- To keep persistent configuration settings in sync with the configuration settings of applications, notifications are needed.
- For notifications it is important that they do not block the execution of the applications.
- In Elektra we achieve this using transport plugins.
- Elektra's notification feature has received its first transport plugin pair:
- D-Bus.
- Transport plugins provide a link between applications using Elektra.
- These plugins send and receive notifications when a key is modified within the
- key database.
- + 10 more
π¦ Web UI greatly improved
- The goal of the Web UI is to provide safe and unified access to all configuration settings of a system.
- Different to other UIs, it generates its interface according specifications as found in Elektra.
- For example, if a configuration setting only has a number of choices, you get exactly these choices
- within the user interface.
- To get outstanding usability, Web UI now provides:
- undo functionality
- visibility functionality to hide irrelevant configuration settings
- built-in validation for many types of configuration settings
- + 9 more
π¦ Overhaul of Build System and Daily Stretch Repository
- We started to overhaul our build system to improve build times and responsiveness.
- It focuses heavily on containerisation to improve hardware utilization.
- If you are interested in `#devops` have a look at our
- [Jenkinsfile](https://github.com/ElektraInitiative/libelektra/blob/master/scripts/jenkins/Jenkinsfile).
- Daily builds Debian packages for Stretch are available again in our
- [stretch repository](https://debian-stretch-repo.libelektra.org).
- Add it to your `sources.list`:
- ```
- + 4 more
β¨ Other New Features
- We added even more functionality, which could not make it to the highlights:
- A new experimental [I/O binding for glib](https://www.libelektra.org/bindings/io_glib)
- has been added.
- It can be used to integrate the notification feature with applications based
- on glib.
- The Order Preserving Minimal Perfect Hash Map (OPMPHM), used to speed up the lookups, got optimized
- and a benchmark was added,
- thanks to Kurt Micheli
- + 6 more
β¨ Other News
- We added a tutorial about securing the integrity and confidentiality of configuration values,
- thanks to Peter Nirschl
- Peter Nirschl finished his [thesis](https://www.libelektra.org/ftp/elektra/publications/nirschl2018cryptographic.pdf)
- ([signature](https://www.libelektra.org/ftp/elektra/publications/nirschl2018cryptographic.pdf.sig)).
- It includes a benchmark of different cryptographic providers.
- Markus Raab gave a [talk](https://cfp.linuxwochen.at/de/LWW18/public/events/798) at Linuxwochen Wien (in German).
- For similar talks in English, please refer to the [FOSDEM talks](https://fosdem.org/2018/schedule/speaker/markus_raab/).
- We replaced the word "project" to "initiative" in the [Code of Conduct](https://www.libelektra.org/devgettingstarted/code-of-conduct) (project has per definition an end date).
π Documentation
- We improved the documentation in the following ways:
- FAQ was extended by [Why do I need Elektra if I already use configuration management tools?](https://www.libelektra.org/docgettingstarted/faq)
- Documentation about the recommended [environment](https://www.libelektra.org/devgettingstarted/testing) for test runs were added
- uniformly add `.` at end of short help
- Logo for Doc Set was added and logo for favicon was updated,
- thanks to RenΓ© Schwaiger
- template of design decisions was updated to use the words
- problem (instead of issue) and rationale (instead of argument).
- + 13 more
π¦ 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).
- We removed:
- the not used error code `12` from `kdb mv` from docu
- We changed:
- `kdb get`, `kdb mv` and `kdb cp` now use error code `11` if keys are not found
- cascading keys as arguments to `kdb cp` and `kdb mv` now fail instead
- + 3 more
π¦ Notes for Maintainer
- These notes are of interest for people maintaining packages of Elektra:
- Docu is updated that [cmake3](https://cmake.org/cmake/help/v3.0/) is required.
- thanks to Lukas Winkler for reporting.
- To run all tests successfully, the `spec` and `list` plugin is required.
- So if `ENABLE_TESTING` is checked, cmake checks the presence of a storage,
- a resolver, the list and the spec plugin,
- thanks to RenΓ© Schwaiger
- Tests no longer clear environment or reset locales.
- + 18 more
π¦ Website
- The website is generated from the repository, so all information about
- plugins, bindings and tools are always up to date. Furthermore, we changed:
- Error page that is shown if no JavaScript is enabled now more clearly
- says that the Website only renders content from the repo and
- only contains free JavaScript.
- The [FAQ](https://www.libelektra.org/docgettingstarted/faq) is now
- more visible (added to "getting started").
- The [Code of Conduct](https://www.libelektra.org/devgettingstarted/code-of-conduct)
- + 1 more
π¦ Notes for Elektra's Developers
- These notes are of interest for people developing Elektra:
- `. run_dev_env` is a script to be sourced from the build directory.
- It sets environment variables, so that Elektra from the build
- directory is used (instead of the installed one).
- All current versions of Clang-Format (6.0+) and the outdated Clang-Format 5 will now produce exactly the same output for the whole codebase,
- thanks to RenΓ© Schwaiger.
- To make enums nicely formatting, make sure at least one member
- is documented.
- + 49 more
π Fixes
- Many problems were resolved with the following fixes:
- [YAML CPP](http://libelektra.org/plugins/yamlcpp) now also saves key values directly below a mountpoint correctly,
- thanks to RenΓ© Schwaiger
- If you use a minimal configuration ([`dump`](http://libelektra.org/plugins/dump), [`resolver`](https://www.libelektra.org/plugins/resolver), list, and spec), all test of the test suite now finish successfully again,
- thanks to RenΓ© Schwaiger
- small refactoring in `kdb-test`
- The Haskell plugin failed to build if the Haskell bindings were not included explicitly by name.
- Fix invalid handling of keynames in the [spec](http://libelektra.org/plugins/spec) plugin.
- + 14 more
π¦ Workshop
- [Elektra Initiative](https://www.libelektra.org/developers/authors) are the people behind Elektra.
- Our goal is to build up expertise with configuration settings and improve the situation in the FLOSS landscape.
- To learn more about the needs of configuration-wise non-trivial FLOSS applications, we have workshops.
- After a successful workshop with the LCDproc's maintainer, the next Workshop will be with people from KDE.
- We will use the opportunity of [Akademy](https://akademy.kde.org/2018) being in Vienna.
- We already got positive feedback from kconfig maintainers (David Faure and Aleix Pol).
- If you are interested, you can [sign up](https://dudle.inf.tu-dresden.de/config_workshop_akademy/).
- We are looking forward to an informative, interactive and interesting workshop!
π¦ Outlook
- We are currently working on following topics:
- Klemens BΓΆswirth: [elektrifying LCDproc](https://www.libelektra.org/news/elektrify-lcdproc)
- After some setbacks (the two original developers who wanted to work on LCDproc resigned because of job duties)
- LCDproc development restarted now successfully.
- The new plan is to have more intermediate stages.
- In particular the first integration will be a minimal invasive integration without high-level API.
- Armin Wurzinger: type system for Elektra's specification language
- Anton HΓΆssl: Puppet
- + 13 more
π¦ Get It!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.8.23.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.23.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.23.tar.gz.hashsum?raw=true)
- name: elektra-0.8.23.tar.gz
- size: 5870069
- md5sum: 0a065ed381a59b6213bd46fd3c82ba83
- sha1: 0727b420ff721e654b0ba6ab1d0c78e5e2341d26
- sha256: f1d3cd4888ba3ef47c1327cbddf21dff7be289f94217f12e5e93105273ca6c48
- + 5 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- to always get the release notifications.
- For any questions and comments, please contact the
- issue tracker [on GitHub](http://issues.libelektra.org)
- or Markus Raab by email using elektra@markus-raab.org.
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.8.23-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- + 2 more
π Changes
- guid: 4884a54f-996a-4564-a138-38a70166fed7
- author: Markus Raab
- pubDate: Tue, 27 Feb 2018 19:35:58 +0100
- shortDesc: Logo, INI, Lookup
π¦ 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](https://libelektra.org).
- For a small demo see here:
- [](https://asciinema.org/a/cantr04assr4jkv8v34uz9b8r)
- You can also read the [FOSDEM interview](https://fosdem.org/2018/interviews/markus-raab/) and watch the [FOSDEM main talk](https://fosdem.org/2018/schedule/event/elektra/) given recently.
- Elektra is now an official part of [Homebrew](http://formulae.brew.sh/formula/elektra) and
- [Alpine Linux](https://pkgs.alpinelinux.org/package/edge/testing/x86_64/elektra).
π¦ Highlights
- New Logo and Website Theme
- INI plugin greatly improved
- Notifications API and Bindings for Asynchronous I/O
- Plugin Processes
- Lookup with the Order Preserving Minimal Perfect Hash Map
β¨ New Logo and Website Theme
- We are proud to present our new logo.
- It has a new shape and cooler colors.
- <img src="https://cdn.rawgit.com/ElektraInitiative/libelektra/master/doc/images/logo/logo_color.svg" alt="Elektra" width="150" />
- Thanks to Philipp Frei!
- We also gave the website a new look. It has the colors from the logo and new
- fonts ([Lato](https://fonts.google.com/specimen/Lato) and
- [Libre Franklin](https://fonts.google.com/specimen/Libre+Franklin)) that improve
- readability and add to a unique look. The restructured start page contributes to
- + 6 more
π¦ INI plugin greatly improved
- `dini` is no longer experimental anymore and adds the binary plugin.
- We added a crash test for the INI plugin that feeds the plugin with problematic input data we determined using [AFL](http://lcamtuf.coredump.cx/afl)
- We fixed various small bugs that could potentially cause the INI plugin to crash and fixes the problems as reported by AFL
- The INI plugin now [converts a section to a normal key-value pair](https://github.com/ElektraInitiative/libelektra/issues/1793) if you store a value inside it. This has the advantage that you will not [lose data unexpectedly anymore](https://github.com/ElektraInitiative/libelektra/issues/1697).
- The [INI plugin](https://www.libelektra.org/plugins/ini) should now read most key-value pairs containing delimiter characters (`=`) properly.
- Thanks to RenΓ© Schwaiger!
- Nevertheless, we did not switch to INI as default format.
- This has some reasons:
- + 15 more
π¦ Notification API and Bindings for Asynchronous I/O
- This release contains an experimental implementation of Elektra's notification feature.
- This feature enables applications to get updates when configuration is changed at run-time.
- For more details see the preview tutorial at
- [doc/tutorials/notifications.md](https://github.com/ElektraInitiative/libelektra/tree/master/doc/tutorials/notifications.md)
- The
- [Notification API](https://doc.libelektra.org/api/current/html/kdbnotification_8h.html)
- is implemented by a new library called `elektra-notification`.
- To use the library you need the new internalnotification plugin.
- + 15 more
π¦ Plugin Processes
- A new library called [pluginprocess](https://github.com/ElektraInitiative/libelektra/tree/master/src/libs/pluginprocess)
- has been added. This library contains functions that aid in executing plugins in
- a separate process. This child process is forked from Elektra's main process
- each time such plugin is used and gets closed again afterwards. It uses a simple
- communication protocol based on a KeySet that gets serialized through a pipe via
- the `dump` plugin to orchestrate the processes.
- Such a behavior is useful for plugins which cause memory leaks to be
- isolated in an own process. Furthermore this is useful for runtimes or libraries
- + 1 more
β‘ Lookup with the Order Preserving Minimal Perfect Hash Map
- The `ksLookup (...)` has a new search algorithm, that acts as an alternative to the
- binary search. The Order Preserving Minimal Perfect Hash Map (OPMPHM) is a non-dynamic,
- randomized hash map and is very effective for mostly static configurations.
- The OPMPHM can be enabled for a search by passing the in [kdbproposal.h](https://github.com/ElektraInitiative/libelektra/blob/master/src/include/kdbproposal.h)
- defined option `KDB_O_OPMPHM` to the lookup.
- Be aware that if the KeySet changes often using the OPMPHM might not be a good
- idea, read more about the [OPMPHM](https://github.com/ElektraInitiative/libelektra/blob/master/doc/dev/data-structures.md#order-preserving-minimal-perfect-hash-map-aka-opmphm).
- When you are not sure if the OPMPHM will speed up you searches, wait for the next release,
- + 4 more
β¨ Other New Features
- We added even more functionality, which could not make it to the highlights:
- The Web UI was greatly improved, thanks to Daniel Bugl
- The version of clusterd was increased from 1.0.0 to 1.1.0.
- Elektra is now part of the official [Homebrew repository](http://formulae.brew.sh/formula/elektra). We still provide a
- [tap](http://github.com/ElektraInitiative/homebrew-elektra), if you want to install Elektra together with plugins or bindings that require
- additional libraries.
- The building and linking of the haskell bindings and haskell plugins has been
- [greatly improved](https://github.com/ElektraInitiative/libelektra/pull/1698).
- + 9 more
π Documentation
- We improved the documentation in the following ways:
- We have [documented how you can setup a build node for Jenkins using a Docker container](https://github.com/ElektraInitiative/libelektra/tree/master/doc/docker/jenkinsnode/README.md)
- We also provide an example Dockerfile based on Debian Stretch for that purpose,
- thanks to Armin Wurzinger.
- Document how `rlwrap` might be used for `kdb shell`.
- Fixed docu in `hosts` plugin.
- Greatly improved the [license documentation](https://git.libelektra.org/blob/debian/debian/copyright)
- in `debian/copyright` in the `debian` branch, thanks to Thomas Wahringer.
- + 1 more
π¦ 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).
- We executed old test cases against the latest Elektra version and all
- tests passed.
- In `kdbinvoke.h` we changed the API so that `elektraInvokeOpen`
- and `elektraInvokeClose` can yield error messages.
- We added:
- + 2 more
π¦ Portability
- Fix bash shebang of bash scripts, thanks to Jakub Jirutka
- Remove unportable unneeded asm, thanks to Timo TerΓ€s and Jakub Jirutka
- Fixed syntax in shell recorder, thanks to RenΓ© Schwaiger
- Used `mktemp` in `check_distribution.sh` to allow parallel run of test cases,
- thanks to Armin Wurzinger.
π¦ Notes for Maintainer
- These notes are of interest for people maintaining packages of Elektra:
- `dini` is no longer experimental.
- CMake: `BINDINGS` now behaves like `PLUGINS`
- By default now all MAINTAINED bindings except EXPERIMENTAL and DEPRECATED are included.
- For more details see
- [/doc/COMPILE.md](https://github.com/ElektraInitiative/libelektra/tree/master/doc/COMPILE.md).
- To include both intercept bindings, you now need to write `INTERCEPT`, to only include getenv
- interception `intercept_env`. `intercept` in lower-case does not work anymore.
- + 8 more
π¦ Notes for Elektra's Developers
- These notes are of interest for people developing Elektra:
- We now use `clang-reformat-5.0` for formatting.
- Please upgrade your clang.
- Build Agent `ryzen v2` was added to speed up `jenkins build all please`,
- thanks to Armin Wurzinger.
- Travis maintenance (Qt 5 and other problems),
- thanks to RenΓ© Schwaiger.
- `BINDINGS` was greatly improved and the CMake functions were simplified.
- + 13 more
π Fixes
- Many problems were resolved with the following fixes:
- `kdb global-umount` also removed other mountpoints
- We fixed [internal inconsistency](https://github.com/ElektraInitiative/libelektra/pull/1761) in the CMake code of the [Augeas plugin](https://www.libelektra.org/plugins/augeas)
- We fixed the [haskell bindings and plugins on Debian Stretch](https://github.com/ElektraInitiative/libelektra/pull/1787)
- and added a [new build server job](https://build.libelektra.org/job/elektra-haskell/) to test that in the future.
- Cleanup in list plugin, thanks to Thomas Wahringer
- The Shell Recorder now exports and imports the root of a mountpoint instead of the mountpoint itself. This change makes sure that Shell
- Recorder test do not change the configuration directly below the specified mountpoint.
π¦ Get It!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.8.22.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.22.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.22.tar.gz.hashsum?raw=true)
- name: elektra-0.8.22.tar.gz
- size: 5885118
- md5sum: 5cbd9e33daf51f6f33791ff3f99342a6
- sha1: 4954ff16cfe7dc69e45e6a748556262b8fb1a9fa
- sha256: 962598315619d5dff3a575d742720f076dc4ba3702bd01609bfb7a6ddb5d759f
- + 5 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- to always get the release notifications.
- For any questions and comments, please contact the
- issue tracker [on GitHub](http://issues.libelektra.org)
- or me by email using elektra@markus-raab.org.
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.8.22-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- + 2 more
π Changes
- guid: 7f5de1b1-6086-47a6-9922-cac08c898ae7
- author: Markus Raab
- pubDate: Fri, 22 Dec 2017 09:24:02 +0100
- shortDesc:
π¦ 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](https://libelektra.org).
- The news can be read rendered at [our web server](https://www.libelektra.org/news/0.8.21-release).
π¦ Highlights
- In this release 8 authors created 307 commits and we changed 217 files (5227 insertions, 1914 deletions).
- The highlights of the release are:
- Fosdem Talk about Elektra was accepted
- CC-licensed book about Elektra published
- Maturing of plugins
- Elektra with encryption
- Preparation for switch to INI as default storage
π¦ Fosdem Talk about Elektra in Main Track
- We are happy to announce that there will be a talk about
- Elektra in one of the main tracks of [Fosdem 2018](https://fosdem.org/2018):
- Title: Configuration Revolution
- Subtitle: Why it Needed 13 Years and How it Will be Done
- Day: Saturday 2018-02-03
- Start time: 15:00:00
- Duration: 50 min
- Room: K.1.105 (La Fontaine)
- + 9 more
π¦ CC-licenced Book About Vision of Elektra Published
- I am proud to release a book with the title "Context-aware Configuration" describing:
- the last 13 years of Elektra (focus on last 4 years with the questionnaire survey and code analysis),
- the current state of Elektra, and
- the long-term goals of Elektra (context-aware configuration).
- The Fosdem talk will cover some highlights from the book.
- A huge thanks to everyone involved in the questionnaire survey,
- without you we would not have been able to collect all the
- information that led to the requirements for Elektra.
- + 2 more
π¦ Maturing of Plugins
- The new [Directory Value plugin](https://www.libelektra.org/plugins/directoryvalue) supports storage plugins such as [YAJL](https://www.libelektra.org/plugins/yajl) and [YAML CPP ](https://www.libelektra.org/plugins/yamlcpp). It adds extra leaf values for directories (keys with children) that store the data of their parents. This way plugins that normally are only able to store values in leaf keys are able to support arbitrary key sets.
- The [YAML CPP plugin](https://www.libelektra.org/plugins/yamlcpp) reads and writes [YAML](http://yaml.org) data using [yaml-cpp](https://github.com/jbeder/yaml-cpp). The plugin supports arrays, binary data and metadata.
- The [Camel plugin](https://www.libelektra.org/plugins/camel) stores data as simplified YAML flow lists containing double quoted keys and values. For proper YAML support please use the [YAML CPP](https://www.libelektra.org/plugins/yamlcpp) instead.
- The [mINI plugin](https://www.libelektra.org/plugins/mini) reads and writes simple property list, separated by equal (`=`) signs.
- The [xerces plugin](https://www.libelektra.org/plugins/xerces) allows Elektra to read and write XML data. The plugin uses [Xerces-C++](http://xerces.apache.org/xerces-c) for this task. It supports both arrays and metadata.
- The [boolean plugin](https://www.libelektra.org/plugins/boolean) normalizes boolean values such as `0`, `1`, `true` and `false`.
- The [crypto plugin](https://www.libelektra.org/plugins/crypto) and [fcrypt plugin](https://www.libelektra.org/plugins/fcrypt) are described below.
π¦ Elektra With Encryption
- The plugins `fcrypt` and `crypto` are now considered stable. They are no longer tagged as `experimental`.
- While `crypto` encrypts individual values within configuration files, `fcrypt` encrypts and/or signs the whole configuration file.
- For this release Peter Nirschl prepared a demo showing Elektra's cryptographic abilities:
- [](https://asciinema.org/a/153014)
- Thanks to Peter Nirschl for this great work!
π¦ Switch to INI
- We plan to switch to INI as default storage instead of Elektra's infamous internal dump format.
- As preparation work we implemented the `dini` plugin which transparently
- converts all `dump` files to `ini` files on any write attempt.
- Furthermore, we fixed most of the INI bugs which blocked INI to be the
- default storage.
- Due to this progress we will likely switch to INI as default starting
- with the next release. If you want to, you can switch now by compiling
- Elektra with:<br>
- + 9 more
β¨ Other New Features
- We added even more functionality, which could not make it to the highlights:
- `kdb rm` now supports `-f` to ignore non-existing keys
- use `%` as profile name to disable reading from any profile
- The new function `elektraArrayDecName`:
- ```c
- int elektraArrayDecName (Key * key);
- ```
- decreases the index of an array element by one. It can be used to reverse the effect of `elektraArrayIncName`,
- + 1 more
π Documentation
- We improved the documentation in the following ways:
- We renamed our beginner friendly issues to "good first issue" as recommended by GitHub.
- In many parts of the documentation we already switched to American spelling
- thanks to RenΓ© Schwaiger
- Added more [automatic spelling corrections](https://master.libelektra.org/scripts/sed)
- thanks to RenΓ© Schwaiger
- Fixed many spelling mistakes
- thanks to RenΓ© Schwaiger
- + 7 more
π¦ 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).
- All unit tests of 0.8.20 run successfully with Elektra 0.8.21.
- There are, however, some additions and changes in rarely used interfaces:
- added `elektraArrayDecName` and `elektraArrayValidateName` in libease
- fixed `kdbinvoke.h` interface: make structure private and complete API
- fixed `xmlns` and `xsi:schemaLocation` to be `https://www.libelektra.org`
- + 1 more
π¦ Notes for Maintainer
- These notes are of interest for people maintaining packages of Elektra:
- We added the following files in this release:
- `libelektra-dini.so`
- `libelektra-directoryvalue.so`
- `testmod_directoryvalue`
- The following plugins are not marked as experimental anymore:
- `camel`
- `crypto`
- + 5 more
π¦ Notes for Elektra's Developers
- These notes are of interest for people developing Elektra:
- From now on release notes are written as part of PRs
- Elektra Initiative is spelled as two words
- At some more places we switched to use the logger, thanks to RenΓ© Schwaiger
- Shell Recorder got many improvements, see below in Testing.
- Please use it.
- The plugin's template now adds all placements within backends by default
- (must be removed accordingly).
- + 12 more
π§ͺ Testing
- AFL unveiled some crashes in INI code
- fix OCLint problems, thanks to RenΓ© Schwaiger
- fix ASAN problems, thanks to RenΓ© Schwaiger
- disabled non-working tests
- Shell recorder
- Benchmark optionally also works with OpenMP, thanks to Kurt Micheli
- The Shell Recorder now uses `kdb-static` or `kdb-full` if `kdb` is not available (`BUILD_SHARED=OFF`)
π Fixes
- Many problems were resolved with the following fixes:
- fix use of `dbus_connection_unref(NULL)` API
- thanks to Kai-Uwe Behrmann
- Properly include headers for `std::bind`
- thanks to Nick Sarnie
- qt-gui: assure active focus on appearance selection window
- thanks to Raffael Pancheri
- RenΓ© Schwaiger repaired the `boolean` plugin:
- + 12 more
π¦ Outlook
- The Order Preserving Minimal Perfect Hash Map (OPMPHM) is ready to extend `ksLookup`. The implementation of the randomized Las Vegas hash map
- algorithm is in a final stage and the heuristic functions that ensure time and space optimality are backed up by benchmarks.
- Thanks to Kurt Micheli, the next release will include the OPMPHM!
π¦ Get It!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.8.21.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.21.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.21.tar.gz.hashsum?raw=true)
- name: elektra-0.8.21.tar.gz
- size: 4712043
- md5sum: d627a01a0249fde46e80042c848d4521
- sha1: a7659a7bb1b2388d03cdf0084160de612e5c4511
- sha256: 51892570f18d1667d0da4d0908a091e41b41c20db9835765677109a3d150cd26
- + 5 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- to always get the release notifications.
- For any questions and comments, please contact the
- issue tracker [on GitHub](http://issues.libelektra.org)
- or me by email using elektra@markus-raab.org.
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.8.21-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- + 2 more
π Changes
- guid: 547d48e2-c044-4a8e-9d32-ca6b6fb914d9
- author: Markus Raab
- pubDate: Thu, 31 Oct 2017 23:08:07 +0200
π¦ 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](https://libelektra.org).
π¦ Highlights
- This is by far the largest release in Elektra's history.
- In 2813 commits, 19 authors changed 1714 files with 92462
- insertions(+) and 21532 deletions(-). The highlights are:
- libelektra.org: new website and puppet-libelektra
- plugin+bindings for Haskell and Ruby
- improved shell completion
- new plugins: yamlcpp, camel, mini, date, file, range,
- multifile, xerces, ipaddr
π¦ libelektra.org
- Unfortunately this release was delayed. The reason for the delay is that our
- community server ([build server](https://build.libelektra.org), web site,...)
- was compromised and we needed to reinstall everything from scratch.
- We took advantage of the situation, and reinstalled everything properly
- managed by [puppet-libelektra](https://github.com/ElektraInitiative/puppet-libelektra).
- With puppet-libelektra, you can directly set keys, specifications (validations),
- and even mount new configuration files from within Puppet.
- Our community server is now completely managed by libelektra.
- + 21 more
π¦ Shell Completion
- RenΓ© Schwaiger added completion support for [Fish](http://fishshell.com)
- in this release. We also extended our support for other shells: The new
- tool `kdb complete` suggests how to complete an Elektra path. It considers
- mountpoints and also takes bookmarks into account. Thanks to Armin
- Wurzinger for creating this useful utility. Our Zsh and fish completions
- already take advantage of `kdb complete`. Thanks to Sebastian Bachmann
- for taking the time to update the `zsh` completions.
β¨ New Plugins
- See [plugin overview](https://www.libelektra.org/plugins/)
- to get an overview of the ever-growing number of plugins.
- The [yamlcpp plugin](https://www.libelektra.org/plugins/yamlcpp)
- and [camel plugin](https://www.libelektra.org/plugins/camel)
- add first support for YAML.
- The [mini plugin](https://www.libelektra.org/plugins/mini)
- is yet another minimal INI plugin.
- Thanks to RenΓ© Schwaiger.
- + 21 more
π Documentation
- The documentation was greatly improved within this release.
- Added "Hello, Elektra" and logging tutorial,
- thanks to RenΓ© Schwaiger
- extended [FAQ](https://master.libelektra.org/doc/help/elektra-faq.md)
- Christoph Weber (@krit0n) improved some tutorials
- options are passed to PDFLaTeX compiler,
- thanks to RenΓ© Schwaiger
- small fixes, thanks to Dominik Hofer
- + 4 more
β¨ Features
- We added even more functionality, which could not make it
- to the highlights:
- DBUS support for qt-gui (listening to configuration changes):
- qt-gui gets a viewer-mode where configuration settings are immediately updated
- via DBus notifications, thanks to Raffael Pancheri
- With the new qt-gui and newer qt releases (~5.7) the qtquick experience is much smoother,
- for example, the tree view does not collapse on syncs anymore.
- Armin Wurzinger greatly improved the [JNA binding](https://www.libelektra.org/bindings/jna).
- + 46 more
π¦ 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).
- We added `explicit` to some C++ constructors in libtools and internally moved
- some typedefs. ModulesPluginDatabase now has protected members (instead
- of private). This might break code in special cases, but should not affect binary
- compatibility. As always we tested for binary compatibility.
- This time we had to revert some changes to keep libelektra-tools
- + 7 more
π¦ Notes for Maintainer
- LICENSE.md now contains only the BSD 3-Clause License
- (without any additional non-license text)
- AUTHORS renamed to AUTHORS.md
- NEWS.md is now a generated file containing all news concatenated
- CMake 2.8.8 is no longer supported, CMake 3.0 is now needed
- fix macOS `RPATH`, remove old policies, thanks to RenΓ© Schwaiger
- new option `BUILD_DOCSET` to build DocSet, thanks to RenΓ© Schwaiger
- new option `ENABLE_OPTIMIZATIONS` for `OPMPHM` preparation work,
- + 28 more
π¦ Development
- Added macros, thanks to RenΓ© Schwaiger:
- `ELEKTRA_NOT_NULL` is an assertion against null pointers
- `ELEKTRA_MALLOC_ERROR` sets an error when allocation failed
- `ELEKTRA_STRINGIFY` to quote a macro value
- `ELEKTRA_PLUGIN_STATUS_ERROR`, `ELEKTRA_PLUGIN_STATUS_SUCCESS`,
- `ELEKTRA_PLUGIN_STATUS_NO_UPDATE` for return values of plugins.
- `ELEKTRA_STRINGIFY` used throughout, thanks to RenΓ© Schwaiger
- use `(void)` instead of `()` (added `-Wstrict-prototypes`)
- + 11 more
π¦ Other
- kdb: errors are more colorful, add infos to report issues,
- catch signals for `kdb` tools to print errors on crashes,
- use `$EDITOR` if `sensible-editor` and `editor` is not found.
- RenΓ© Schwaiger fixed preposition and format of the messages.
- added Spanish translation for qt-gui
- thanks to AdanGQ (@pixelead0)
- augeas plugin: error messages improved, export genconf (for WebUI to list all lenses)
- improvements for CentOS and Debian Packages,
- + 13 more
π¦ Quality
- fixed all remaining ASAN problems,
- thanks to RenΓ© Schwaiger and Armin Wurzinger
- (some tests are excluded when compiled with ASAN)
- fix many compilation warnings,
- thanks to RenΓ© Schwaiger and Armin Wurzinger
- fixed many potential out-of-bound errors,
- thanks to RenΓ© Schwaiger
- fixed warnings of Clang's static analyzers,
- + 12 more
π Fixes
- `kdb file`: never print errors, thanks to RenΓ© Schwaiger
- plugin mathcheck: fixed regex #1094, thanks to Thomas Waser
- dbus: properly do unref and document how to integrate DBus,
- thanks to Kai-Uwe Behrmann
- dbus accepts announce=once which is used for `kdb mount-openicc`
- It protects against message floods in large configuration files,
- thanks to Kai-Uwe Behrmann for reporting
- plugin desktop: fix crash if `DESKTOP_SESSION` is missing
- + 24 more
π¦ Outlook
- We are currently working on following topics:
- Migration of LCDproc, OpenIcc, machinekit, ... to Elektra.
- A reimplementation of Elektra's core API in Rust
- (next to implementation in C).
- A user interface which generates restricted input fields
- based on the specification.
- YAML as configuration file format (next to INI, XML, JSON, TCL, ...).
- An mmap persistent cache.
- + 7 more
π¦ Get It!
- You can download the release from [here](https://www.libelektra.org/ftp/elektra/releases/elektra-0.8.20.tar.gz)
- or [GitHub](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.20.tar.gz?raw=true)
- The [hashsums are:](https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.20.tar.gz.hashsum?raw=true)
- name: elektra-0.8.20.tar.gz
- size: 4740032
- md5sum: 0e906f1a1677a8bfb31d144e1eaeb3cf
- sha1: 5e33c49ae6e3b890c9267288fb9f321289910eb5
- sha256: e9cbc796e175685ccb6221f1dd5ea5c43832f545c40557c32b764ff5d567b312
- + 5 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](https://doc.libelektra.org/news/feed.rss)
- to always get the release notifications.
- For any questions and comments, please contact the
- issue tracker [on GitHub](http://issues.libelektra.org)
- or me by email using elektra@markus-raab.org.
- [Permalink to this NEWS entry](https://www.libelektra.org/news/0.8.20-release)
- For more information, see [https://libelektra.org](https://libelektra.org)
- + 2 more
π Changes
- guid: 102b84a3-c41e-485c-8fe2-f12a24b3fbfd
- author: Marvin Mall
- pubDate: Thu, 22 Dec 2016 17:46:19 +0100
- shortDesc: introduces new Elektra website with snippet sharing
π¦ Highlight
- 1. Release of new Elektra website with an integrated service for
- sharing of configuration snippets.
- 2. The website also supports conversion between different
- configuration formats.
- 3. Website structures documentation and news sections in a new way.
π¦ Introduction
- With Elektra developing into a more and more reliable as well as
- popular system to manage system configurations, the demand for a
- better public appearance increases as well. For this reason, we
- are happy to be able to announce the release of our new
- [website](https://www.libelektra.org)!
- The new website does not only give us a chance to better present
- ourselves to the open world, it also enables us to structure our
- project documentation better. We hope that this will make it easier
- + 15 more
π¦ The Website
- The website was written by Marvin Mall in the course of his
- [bachelor thesis](http://www.libelektra.org/ftp/elektra/mall2016rest.pdf)
- as part of the front-end he developed for his snippet sharing service.
- His main goals were to create a proper appearance for Elektra, but
- also to create a platform that promotes his service. We think that
- this worked out quite well by connecting the website with the service
- the way it was done.
π Documentation
- An important aspect of the new website was to make existing documentation
- more transparent and structured. A lot of documentation files have been
- changed to achieve this goal and an equal amount of effort was put into
- writing a system that decouples the documentation structure on the
- website from the structure used within the Elektra repository.
- The tutorials section was partially reworked to make the first steps
- together with Elektra easier for our users. Clearly the effort put into
- the tutorials is worth it. Thanks to Erik Schnetter for the valuable
- + 10 more
β¨ Homepage & News
- Besides the documentation we also wanted a place to properly present
- ourselves and our news around Elektra. For this reason we created a new
- home page which shall give an overview of what Elektra is and can do.
- Additionally to that, we also added a news section to keep you better
- up-to-date!
- We hope that you enjoy our new appearance as much as we do!
π¦ Snippet Sharing
- Another important part of the website and also without doubt the part
- that took most effort to create, is the service that allows for sharing
- of configuration snippets. It is run by a REST service fully built with
- the help of [CppCMS](http://cppcms.com/) on basis of Elektra as
- data store. All data concerning snippets and user accounts is stored
- in Elektra's key database (of course with password being properly hashed).
- The service allows you to paste configuration snippets in various (supported)
- formats and to tag, describe and name them. This in return allows you to
- + 12 more
π¦ NoScript
- The website is fully written with the help of AngularJS and is therefore
- heavily based on JavaScript. This should be no issue though as the
- website does only use resources that can be found in the official Elektra
- repository:
- 1. So in case you cannot or do not want to use JavaScript, you
- can find all resources also [here](https://git.libelektra.org).
- 2. If you are only worried about executed untrusted JavaScript,
- you can study and improve the
- + 4 more
π¦ Domains
- All Elektra Domains directly hosted by us are now only served by `https`.
- The former `http` sites are only redirects to `https`. This might cause
- trouble with some software, e.g., update `/etc/apt/sources.list`:
- ```
- deb [trusted=yes] https://build.libelektra.org/debian/ wheezy main
- deb-src [trusted=yes] https://build.libelektra.org/debian/ wheezy main
- ```
- The build Server is no longer reachable at port 8080, but now only directly at
- + 7 more
π¦ Feedback
- At this point there is not much more to say about the new website except for:
- Feel free to explore it!
- We greatly appreciate all feedback, be it for the website, the snippet sharing
- service or other parts of the Elektra project. We always have an open ear
- for suggestions and we also like to help with technical issues, simply
- [leave us a note on github](https://bugs.libelektra.org)!
π¦ Stay tuned!
- Subscribe to the reimplemented
- [RSS feed](https://www.libelektra.org/news/feed.rss)
- to always get the release notifications.
- For any questions and comments, please contact the
- [mailing list](https://lists.sourceforge.net/lists/listinfo/registry-list),
- use the issue tracker [on github](https://bugs.libelektra.org)
- or write an email to elektra@markus-raab.org.
- For issues or feedback concerning the website, you can also
- + 5 more
π Changes
- guid: 8e05231a-4f3d-488b-8dc2-5f0d5c474c39
- author: Markus Raab
- pubDate: Tue, 22 Nov 2016 22:04:59 +0100
π¦ What is Elektra?
- 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](http://tree.libelektra.org/doc/WHY.md)
- for an explanation of why such a solution is necessary. It can be seen as a
- [virtual file system](http://tree.libelektra.org/doc/BIGPICTURE.md)
- for configuration files.
π¦ Highlights
- more tutorials and getting started guides
- new Ruby bindings
- cleanup of core (only 124K for main library on Debian/amd64)
π¦ More Tutorials
- 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](http://tree.libelektra.org/doc/code_of_conduct.md).
- 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!
- We wrote an [overview readme](http://tree.libelektra.org/doc/tutorials/README.md)
- + 21 more
π¦ Ruby Bindings
- 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 meta data iteration...
- A [short introduction](http://tree.libelektra.org/src/bindings/swig/ruby/README.md)
- shows some basic usage scenarios. More detailed examples can be found in the
- [examples directory](http://tree.libelektra.org/src/bindings/swig/ruby/examples).
- A big thanks to Bernhard Denner!
π¦ Cleanup of Core
- Following methods were hidden (`static`) or removed:
- `mount*` methods
- `trie*` methods
- `backend*`
- `split*`
- `keyGetParentNameSize`
- `keyGetParentName`
- These are dozens of methods and it was required to adapt
- + 2 more
π¦ Usability
- Improved many error messages
- spelling
- be more friendly to the user
- capitalization
- mention `sudo !!`
- `kdb set`: do not print what was not done
- `kdb editor` handles non-modified files (will not do anything)
- Be more chatty about what `kdb` does, can be disabled with `-q` or
- + 3 more
β¨ New
- [c plugin](http://tree.libelektra.org/src/plugins/c) generates C code that represents
- configuration. This is useful for unit tests or if you need to have hard-coded
- fallback configuration in your C application.
- [base64 plugin](http://tree.libelektra.org/src/plugins/base64) allows you to encode
- binary data. This is especially handy in combination with the
- [crypto plugin](http://tree.libelektra.org/src/plugins/crypto)
- to avoid problems with non-printable characters in configuration files.
- (Thanks to Peter Nirschl)
- + 8 more
π¦ Major Enhancements
- [simpleini](http://tree.libelektra.org/src/plugins/simpleini) got a configurable
- format in which it will read and write configuration files. For example, one
- can use `format=% -> %` to have `key -> value`.
- [enum](http://tree.libelektra.org/src/plugins/enum) got support for multi-enums,
- i.e., multiple separated values within one value. The error reporting was improved,
- too. (Thanks to Thomas Waser)
- [glob](http://tree.libelektra.org/src/plugins/glob) accepts a list of named flags
- instead of an integer value and aborts matching after first hit.
- + 4 more
π¦ Development
- In the perpetual effort to improve software quality, we made several improvements:
- (This information is mainly intended for Elektra's developers.)
- A new logger encourages developers to write more comments (`ELEKTRA_LOG`)
- `ELEKTRA_ASSERT` prints better messages on failure and does not need `&&` trick.
- get rid of previous `VERBOSE` macro at many places.
- Many assertions were added in the low-level helpers (memory management)
- Using the assertions we fixed some undefined behavior.
- (Thanks to Thomas Waser)
- + 37 more
π¦ 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).
- 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
- + 19 more
π¦ Package Maintainers
- This information is intended for package maintainers.
- GI Bindings were removed from `BINDINGS=ALL`.
- It is recommended to use `SWIG` bindings instead, which
- will be added with `ALL`.
- Intercept libraries are part of `BINDINGS`.
- They will be added on glibc systems where `BINDINGS=ALL` is used.
- Documentation in textfiles is now installed,
- `TARGET_DOCUMENTATION_TEXT_FOLDER` was added for that purpose.
- + 13 more
π¦ Portability
- Elektra should work on every system that has `cmake` and a `C/C++` compiler.
- For this release we increased portability to better work with Mac OS X,
- CentOS 7, and OpenSuse 42.
- Mac OS X:
- Travis build server now also build qt-gui
- Support for xcode8 added (xcode6 still supported)
- fix lua != 5.2 issues (wrong output), update docu
- remove hard dependency to `pkg-config`
- + 6 more
π Fixed Issues
- simpleini: use correct error number when open file fails
- yajl: improve error message on non-utf8 text.
- (Thanks to Christoph Weber)
- drop multiple `/` from `~` paths
- (Thanks to Thomas Waser)
- fix failing testcases with `ENABLE_DEBUG` #988
- (Thanks to Thomas Waser)
- csvstorage: files in source are rewritten #987
- + 22 more
π¦ Get It!
- You can download the release from
- [here](http://www.libelektra.org/ftp/elektra/releases/elektra-0.8.19.tar.gz)
- and also [here on github](https://github.com/ElektraInitiative/ftp/tree/master/releases/elektra-0.8.19.tar.gz)
- name: elektra-0.8.19.tar.gz
- size: 2681639
- md5sum: 6669e765c834e259fb7570f126b85d7e
- sha1: 82cefe4cea58d6e6b0a99ddbda24d1b57e98d93a
- sha256: cc14f09539aa95623e884f28e8be7bd67c37550d25e08288108a54fd294fd2a8
- + 3 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](http://doc.libelektra.org/news/feed.rss)
- to always get the release notifications.
- For any questions and comments, please contact the
- [Mailing List](https://lists.sourceforge.net/lists/listinfo/registry-list)
- the issue tracker [on github](http://git.libelektra.org/issues)
- or by email elektra@markus-raab.org.
- [Permalink to this NEWS entry](http://doc.libelektra.org/news/8e05231a-4f3d-488b-8dc2-5f0d5c474c39.html)
- + 3 more
π Changes
- guid: 190576e0-9fef-486e-b8da-c4e75be08329
- author: Markus Raab
- pubDate: Fri, 16 Sep 2016 23:31:27 +0200
π¦ What is Elektra?
- Elektra serves as a universal and secure framework to access configuration
- parameters in a global, hierarchical key database.
- For a small demo see here:
- [](https://asciinema.org/a/cantr04assr4jkv8v34uz9b8r)
π¦ Highlights
- Intercept open syscalls which allows Elektra to dynamically
- generate config files from Elektra's database
- Experimental version of cryptographic plugins
- A new zsh completion file (next to the bash completion file)
- Gitresolver allows to directly read and write config files
- from git instead of files present in the file system.
- Survey completed successfully (and debts paid), we are now
- preparing raw data.
π¦ Crypto Plugin
- Gpg is now used to decrypt a master password, which is used
- by the individual crypto backends. So all necessary parts
- for encryption of decryption of individual keys is present.
- Furthermore, a new [botan](https://botan.randombit.net) backend
- was implemented.
- [See here](http://git.libelektra.org/tree/master/src/plugins/crypto)
- Thanks to Peter Nirschl.
π¦ Open Interception
- When Elektra directly modifies config files which are on the disc,
- and applications read the config files without Elektra, Elektra has
- no control over the access, e.g. we cannot dynamically calculate
- values. To avoid this, we wrote a library that
- intercepts the `open`-call.
- Together with the `mozprefs` plugin, we got control over the configuration
- of Firefox and can dynamically change config values with all possibilities
- Elektra provides.
- + 3 more
π¦ Resolver
- Resolvers in Elektra are the code that are responsible to determine where
- content should be read from and stored to. They are independent of the
- actual configuration file syntax.
- The [gitresolver](http://git.libelektra.org/tree/master/src/plugins/gitresolver)
- allows you to get/store config data in git.
- The [blockresolver](http://git.libelektra.org/tree/master/src/plugins/blockresolver)
- allows Elektra to take control of parts of the configuration
- file. This is useful for config files such as vim or zsh, which contain
- + 2 more
π¦ zsh completion
- Added zsh completion file, and a script (`kdb install-sh-completion`)
- that installs bash+zsh completion when the default installation places
- do not work (e.g. for Mac OS X).
- Thanks to Sebastian Bachmann.
π Documentation
- fix `kdb-import` man page, thanks to Kurt Micheli
- mark `keyIsSystem`/`keyIsUser` as internal
- fix doxygen reference to example
- better document that `global-mount` or `gmount` will overwrite
- previously mounted global plugins
- fix spelling mistake, thanks to RenΓ© Schwaiger
- Wrote tutorial how to use Elektra-python bindings,
- thanks to Ulrike SchΓ€fer
π¦ Quality
- shell recorder test cases now run during `make test`, thanks to Kurt
- Micheli and RenΓ© Schwaiger (Warning: might remove present keys
- when it conflicts with their mountpoints)
- find-tools now is pep and pyflakes happy, thanks to Kurt Micheli
- fix bashism, thanks to Thomas Waser and Kurt Micheli
- better error message for conditionals plugin, thanks to Thomas Waser
- better error message for augeas plugin, thanks to Felix Berlakovich
- Many compilation warnings fixed, thanks to Gabriel Rauter, Thomas Waser
- + 7 more
π¦ 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).
π¦ Libtools
- Libtools got a new major version (SOVERSION 0 -> 1):
- backend/plugin configs are now validated by plugins (needed
- by gpg plugin, which checks if wrong key IDs are supplied during mount)
- resolveRecommends was never implemented and was now removed
π¦ Plugins
- The plugins conditionals and mathcheck are incompatible in some cases
- because of changes in syntax.
π¦ Proposal
- New API: `keyRel2` which differs from `keyRel` by allowing you to
- specify which relation should be checked.
π¦ Development
- github descriptions+workflow (displayed by github when creating
- PRs and issues)
- new trigger phases for github, see
- [doc/GIT](http://git.libelektra.org/tree/master/doc/GIT.md)
- thanks to Mihael PranjiΔ
- valgrind suppressions are great again, thanks to Peter Nirschl
- Plugins get a new namespace `internal` which can be used for meta-data
- that is not relevant for other plugins.
- + 5 more
π¦ Packaging
- Plugin-provider `CRYPTO` can be used to enable/disable all crypto
- plugin variants (not enabled by default because its experimental).
- Config option `ENABLE_OPTIMIZATIONS`, enable by default: trade more
- memory for speed (can be turned off on embedded systems)
- `INSTALL_SYSTEM_FILES` is now off by default on Mac OS X.
- bash-completion is installed to where pkg-config tells us,
- thanks to Gabriel Rauter
- (fallback is now `/usr/share/bash-completion/completions/kdb`)
- + 14 more
π¦ Other
- Conditionals and mathcheck plugins got support to specify relative
- keys, thanks to Thomas Waser
- `kdb` command-list: commands are written in bold
- GSettings backend can be build standalone, thanks to Gabriel Rauter
- first data structures for order preserving minimal perfect hash map,
- thanks to Kurt Micheli
- added a new passwd plugin, thanks to Thomas Waser
- [boolean](http://git.libelektra.org/tree/master/src/plugins/boolean)
- + 5 more
π¦ Get It!
- You can download the release from
- [here](http://www.libelektra.org/ftp/elektra/releases/elektra-0.8.18.tar.gz)
- and also [here on github](https://github.com/ElektraInitiative/ftp/tree/master/releases/elektra-0.8.18.tar.gz)
- name: elektra-0.8.18.tar.gz
- size: 2582183
- md5sum: 62fe0fbf9ee57ffaa58a982f602f596a
- sha1: 743484e16b102a00cd58956a49f0c558939d56a8
- sha256: 9ee65895ba5cba6736c13c264637664c1410b25f4aaaeac8f1f83712ff93d53b
- + 3 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](http://doc.libelektra.org/news/feed.rss)
- to always get the release notifications.
- For any questions and comments, please contact the
- [Mailing List](https://lists.sourceforge.net/lists/listinfo/registry-list)
- the issue tracker [on github](http://git.libelektra.org/issues)
- or by email elektra@markus-raab.org.
- [Permalink to this NEWS entry](http://doc.libelektra.org/news/190576e0-9fef-486e-b8da-c4e75be08329.html)
- + 3 more
http://doc.libelektra.org/news/e6153a39-c4bd-41c3-bc86-785d451eb6c5.html
π Changes
- language bindings (inclusive high-level interfaces)
- GenElektra, the code generator for type-safe bindings
- plugins for configuration access behaviour and validation
π¦ Highlights
- Elektra now allows applications to support multiple
- profiles with a plugin, thus _without code modifications_ in
- Elektra applications.
- That means a user can select multiple configuration files to use,
- even if the application has no explicit support for it.
- It completes the cascading feature (level $HOME before /etc), to allows
- us also to select different configuration for the same level.
- Resolver can now better handle conflicts that happen
- + 8 more
β¨ Other important features
- shell plugin allows you to execute shell commands on every KDB access
- and curlget plugin allows you to download configuration files
- from a URL during KDB access.
- Improvements in sync/merge of qt-gui with important fix
- (Usage of 0.8.15 qt-gui is discouraged)
- Add plugin for dpkg database (read-only)
- Assignment for conditionals using `assign/condition`.
- Support for multiple and nested statements
- + 11 more
π¦ Plugins
- Many new or vastly improved plugins are waiting to be explored.
π¦ curlget
- The plugin curlget fetches a configuration file from a remote host before
- the configuration is being accessed:
- ```
- kdb mount -R noresolver /tmp/curltest.ini system/curltest ini curlget url="https://raw.githubusercontent.com/ElektraInitiative/libelektra/master/src/plugins/ini/ini/plainini"
- kdb ls system/curltest # every get access will redownload the file
- ```
- Thanks to Thomas Waser!
π¦ INI
- The INI plugin is still under heavy development and
- was again nearly rewritten:
- fixed key is below hacks
- fixed ordering
- custom delimiter
- use meta array for comments
- rewritten ordering
- best effort order
- + 2 more
π¦ shell
- This plugin allows you to executes shell commandos after kdbGet, kdbSet and kdbError (failing kdbSet):
- ```
- kdb mount /tmp/test.ini system/shelltest ini array= shell 'execute/set=echo set >> /tmp/log,execute/get=echo get >> /tmp/log'
- kdb set system/shelltest
- cat /tmp/log
- ```
- Thanks to Thomas Waser!
π¦ validation
- The validation plugin is not new, but got many new features.
- It allows you to match values by a regex and set your own
- error messages in case a validation did not match.
- Up to now, the regex was given as is to regcomp, which means
- that if the regex is contained _anywhere_ in the value, the
- value is accepted.
- Often this is not what we want, thus Thomas Waser added special
- support for icase, word and line validation.
- + 6 more
π¦ hosts
- Only minor improvements were necessary for the host plugin but
- it is quite matured already. The contract was changed so that
- ipv6 addresses for ipv4 addresses will be rejected:
- ```
- The command set failed...
- Reason: localhost value: ::1 message: Address family not supported
- ```
- You can also comfortably and safely edit the hosts file
- + 2 more
π¦ rename
- Again not a new plugin, but the plugin was greatly improved
- and many test cases were added.
- Now you can set upper/lowercase individually for both sides:
- 1. What applications see.
- 2. What the configuration file contains.
- For example, if you always want the keys in the configuration file upper case,
- but for your application lower case you would use:
- ```
- + 7 more
π¦ Resolver
- Resolving by ~ as home directory now also for system and spec namespaces,
- thanks to Thomas Waser.
- Files keep their previous owner, useful when root edits configuration
- files of others, thanks to Thomas Waser.
- The resolver has many improvements to better detect conflicts.
- The lock is now extended longer after the commit and already requested
- in the temporary file.
- The warnings were improved when `getcwd` fails.
- + 3 more
π¦ Java
- Marvin Mall improved the Java binding, fixed the appending
- of keysets, added lots of documentation, and many unit tests.
π¦ C++
- Some kind of misusage of vaargs is now detected at compile-time instead
- of crashing at runtime.
π¦ Generated C++
- Value now supports convenience activations.
- Values can be used to activate context, no more layers are needed.
- Topological sorting makes sure that values are activated in the
- correct order, loops are not allowed anymore.
- The `bool operator<` is now correctly inline (allows to use it in more than
- one translation unit)
π Documentation
- RenΓ© Schwaiger<sanssecours> reworked most of the documentation and
- fixed countless spelling mistakes and other problems.
- Peter Nirschl updated the status of the crypto-plugin
- and fixed a typo
- Daniel Bugl wrote a cascading tutorial
- Daniel Bugl fixed all broken links
- RenΓ© Schwaiger also drew a new logo with SVG.
- It is already used on github as avatar for the organisation.
- + 1 more
π§ͺ Testing
- Tests work if the build path contains spaces
- Tests: Fix problems locating memory checker
- remove obsolete TestScript.cmake
- Thanks to RenΓ© Schwaiger
π¦ Maintainer
- By default now ALL plugins except EXPERIMENTAL are included.
- Plugins will be automatically excluded if dependencies are missing.
- The PLUGINS syntax was vastly improved. Now many categories can be
- intermixed freely and also categories can be used for exclusion.
- E.g. to include all plugins without deps,
- that provide storage (except yajl) and are maintained, but not include all plugins
- that are experimental, you would use:
- ```
- + 3 more
π¦ Renamed files:
- /usr/include/elektra/merging/kdbmerge.hpp ->
- /usr/include/elektra/merging/mergingkdb.hpp
- /etc/profile.d/kdb -> /etc/profile.d/kdb.sh
- (So that it works on arch linux, thanks to Gabriel Rauter)
ποΈ removed files:
- /usr/lib/elektra/libelektra-crypto.so
- was only necessary because of limitations of the build system and is
- now removed. It never had actual functionality, but was only a stub
- without a crypto provider selected.
β¨ new files:
- /usr/include/kdbease.h
- /usr/lib/elektra4/libelektra-curlget.so*
- /usr/lib/elektra4/libelektra-dpkg.so*
- /usr/lib/elektra4/libelektra-profile.so*
- /usr/lib/elektra4/libelektra-resolver_fm_hpu_b.so
- /usr/lib/elektra4/libelektra-shell.so*
- more new files with ALL or EXPERIMENTAL:
- /usr/lib/elektra/libelektra-semlock.so
- + 7 more
β¨ new symlinks:
- /usr/lib/elektra4/libelektra-storage.so
- /usr/lib/elektra4/libelektra-resolver.so
β¨ new releases
- The first release of the libraries libelektratools-full, libelektratools
- and libelektragetenv. They now have SOVERSION 0.
π¦ Development
- You do not need to format the source manually anymore.
- Make sure that you run scripts/reformat-source before
- creating a PR.
- `clang-tidy` helps you to add blocks to have better
- maintainable code.
- Felix Berlakovich improved the performance of the augeas plugin and
- also contributed a script to benchmark different host plugin.
- His thesis can be downloaded from [here](http://www.libelektra.org/ftp/elektra/berlakovich2016universal.pdf).
- + 9 more
π¦ Compatibility
- This might be the last release supporting wheezy, because
- it gets more and more time-intensive to find workarounds
- for the old compiler. The C++11 regex do not work at all.
π§ͺ Binary Compatibility Test
- When you execute the testcases of 0.8.15 against Elektra 0.8.16
- following testcases fail. None of them effect the API.
- test_splitget test_splitset .. Internal restructuring
- testmod_crypto .. not included by default now
- testmod_ini .. section handling changed, line 178:
- `nosectionkey contained no comment`
- testmod_rename .. internal API elektraKeyCreateNewName changed
- testmod_resolver .. internal data structure now contains more
- + 5 more
β¨ Added API
- in libease RenΓ© Schwaiger added:
- ```
- extern char const * elektraKeyGetRelativeName(Key const * cur, Key const * parentKey);
- ```
- in libmeta Thomas Waser added (partly based on ideas/code from Felix Berlakovich):
- ```
- extern void elektraMetaArrayAdd(Key *, char const *, char const *);
- extern KeySet * elektraMetaArrayToKS(Key *, char const *);
- + 3 more
π¦ Qt-gui
- Felix Berlakovich updated the qt-gui so that it uses a newly written sync-method
- added in libtools.
- Gabriel Rauter added a desktop file that uses the new svg logo from
- RenΓ© Schwaiger.
π¦ Portability
- Peter Nirschl fixed code in the resolver that uses EBADMSG which was not
- available in BSD.
- Peter Nirschl improved detection of librt
- Felix Berlakovich fixed searching of FindSystemd
- MinGW64 resolver now handles conflicts correctly and does not ignore them
- anymore and now also is able to create empty files (but still not directories)
π¦ Mac OS X
- A lot of effort was invested to all test cases also run on Mac OS X:
- .template syntax
- linking errors
- fix regex in conditionals plugins
- Thanks to RenΓ© Schwaiger
π Bugs
- print null-environment correctly with `kdb getenv`
- keyIs(Direct)Below didn't work with cascading keys
- fix elektraKeyGetRelativeName (needed by ni) for cascading
- keys and move it to libease, thanks to RenΓ© Schwaiger
- make nickel tests show correct test name, thanks to RenΓ© Schwaiger
- glib: replace cursor_t with gssize so that GElektra-4.0.gir
- builds with gobject-introspection later than 1.47, thanks to Manuel Mausz
- fixed out-of-bounds bug in timeofday plugin
- + 3 more
π¦ Get It!
- You can download the release from
- [here](http://www.libelektra.org/ftp/elektra/releases/elektra-0.8.16.tar.gz)
- and now also [here on github](https://github.com/ElektraInitiative/ftp/tree/master/releases/elektra-0.8.16.tar.gz)
- name: elektra-0.8.16.tar.gz
- size: 2405443
- md5sum: ef0c138b4a4fda017aa8bb6f812671ce
- sha1: c6a6f9c26addd5fcc274cea635de02ef680cfb1a
- sha256: 3cf0624eb027e533192ca9d612618df3d38ec3674c9cd20474f04ff269fad77e
- + 4 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](http://doc.libelektra.org/news/feed.rss)
- to always get the release notifications.
- For any questions and comments, please contact the
- [Mailing List](https://lists.sourceforge.net/lists/listinfo/registry-list)
- the issue tracker [on github](http://git.libelektra.org/issues)
- or by mail elektra@markus-raab.org.
- [Permalink to this NEWS entry](http://doc.libelektra.org/news/9c9247ee-ee9c-4f4a-a68e-76959def9b82.html)
- + 3 more
π Changes
- guid: 1ab4a560-c286-46d2-a058-1a8e7e208fe8
- author: Markus Raab
- pubDate: Tue, 16 Feb 2016 17:47:00 +0100
π¦ Overview
- This is one of the largest release up to now. It includes many
- user-visible improvements. Some highlights:
- Mounting is vastly improved:
- think about Debian's "dpkg" to "apt"-like functionality
- In previous releases you could already specify the structure
- of the configuration. Now you can also automatically enforce
- this property.
- We split the shared library `libelektra` into smaller parts.
- + 13 more
π¦ Global Mount
- Sometimes you simply want some functionality for the whole key database.
- For example, you want to enable logging or notification of configuration
- changes. In previous versions, you had to change every mountpoint
- individually. Even more problematic, every mountpoint created its
- individual logs and notifications, without any way for someone to know
- if an application has issued its last log/notification.
- These problems are now solved by global plugins. The same plugins are
- reused for this purpose. Also the mounting works nearly in the same way,
- + 23 more
π¦ Spec Plugin
- The most important global plugin that is now newly introduced with this
- release (thanks to Thomas Waser) is the `spec` plugin. By default it
- will be added for every global-mount. So for a new installation make
- sure you executed at least once:
- ```
- kdb global-mount
- ```
- The spec plugin is a global plugin that copies metadata from the
- + 27 more
π¦ Spec Mount
- Using `kdb setmeta` extensively and always looking out that all plugins
- are mounted correctly is error-prone. So instead, one can directly mount
- the plugins as specified. For the example above one simply needs:
- ```
- kdb setmeta spec/example mountpoint example.ecf
- kdb spec-mount /example
- ```
- Now, when we try to modify `/example/longkey` it will be validated:
- + 31 more
π¦ General Mount Improvements
- In earlier versions `kdb mount` failed when plugin dependencies were
- not satisfied. Now dependencies will automatically be fulfilled, e.g.
- ```
- kdb mount /etc/modules system/modules line
- ```
- In earlier versions you would have got an error because of the missing
- `null` plugin. Now it simply adds the needed plugins.
- The plugins given in the command-line used to be real plugins. Now also
- + 29 more
π¦ Library Split
- Up to now, Elektra consisted only of a single shared library,
- `libelektra.so`. Not all symbols in it were relevant to end users, for
- example, some were only needed by plugins. Others were only proposed and
- not yet part of the stable API. And finally, other symbols were not needed
- in some situations, e.g. the plugins do not need the `kdb` interface.
- Thus, we split `libelektra.so`, so that only coherent parts are in the
- same library:
- `libelektra-core.so` only contains the `KeySet` data structure and
- + 22 more
π¦ Benchmark
- To show that the split does not make Elektra slower, Mihael PranjiΔ made
- a small benchmark. The real time of
- [benchmarks/large](https://github.com/ElektraInitiative/libelektra/blob/master/benchmarks/large.c)
- and revision 634ad924109d3cf5d9f83c33aacfdd341b8de17a
- 1. kdb-static: Median :0.8800
- 2. kdb-full: Median :0.8700
- 3. kdb: Median :0.8700
- So it seems that the split does not influence the time of running
- + 4 more
π¦ Compatibility
- As always, the ABI and API is fully forward-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 every program without errors
- (API).
- We added `keyGetNamespace` which allows us to handle all namespaces
- in a switch and to iterate all namespaces. This is essential, when
- a new namespace is added, thus then the compiler can warn you about
- every part where the new namespace is not yet considered. We currently
- + 32 more
π¦ Bootstrapping
- When you use `kdbOpen` in Elektra as first step it reads mountpoint
- configuration from `/elektra`. This step is the only hardcoded one,
- and all other places of the KDB's tree can be customized as desired
- via mounting.
- The bootstrapping now changed, so that `/elektra` is not part of the
- default configuration `default.ecf` (or as configured with `KDB_DB_FILE`),
- but instead we use `elektra.ecf` (or as configured with `KDB_DB_INIT`).
- This behaviour solves the problem that `default.ecf` was read twice
- + 12 more
π¦ Plugins
- We already highlighted the new `spec` plugin, but also other plugins
- were improved at many places. Small other changes are:
- Conditionals now also support `assign/condition` syntax,
- thanks to Thomas Waser
- Lua and Python are not tagged experimental anymore.
- They now correctly add their configuration to the open-call.
- The plugin `yajl` (the json parser and generator) now also accepts the
- type `string` and yields better warnings on wrong types.
- + 2 more
π¦ INI
- The INI plugin was rewritten and a huge effort was taken so that it
- fully-roundtrips and additionally preserves all comments and ordering.
- Currently, it is brand new. It is planned that it will replace `dump`
- in the future.
- Currently is has some minor problems when used as KDB_DEFAULT_STORAGE.
- You can avoid most problems by mounting a different file into root:
- ```
- kdb mount root.ini /
- + 3 more
π¦ Rename
- Thanks to Thomas Waser `rename` is now fixed for cascading keys.
- Additionally, it does not change the `sync` status of the keys so
- that notification plugins work properly afterwards.
π¦ Crypto
- The crypto plugin is a facility for securing sensitive Keys by symmetric
- encryption of the value. It acts as a filter plugin and it will only
- operate on Keys, which have the meta-key βcrypto/encryptβ set.
- The key derivation is still work-in-progress, so the plugin does not
- work with kdb yet. A planned method for key derivation is to utilize
- the gpg-agent.
- For now the plugin requires the following Keys within the plugin
- configuration in order to work properly:
- + 6 more
π¦ KDB
- A technical preview of a new tool was added: `kdb editor` allows you
- to edit any part of Elektra's configuration with any editor and any
- syntax. It uses 3-way merging and other stable technology, but it
- currently does not provides a way to abort editing. So you only should
- use it with care.
- The tool `kdb list` now searches in the rpath for libraries and thus
- will also find plugins not present at compile time (using `glob`).
- Additionally, it sorts the plugins by `infos/status` score, which can
- + 28 more
π¦ Coding Guidelines
- Thanks to Kurt Micheli the code guidelines are
- [now properly documented](https://github.com/ElektraInitiative/libelektra/blob/master/doc/CODING.md).
- Thanks to RenΓ© Schwaiger we also provide a style file for clang-format.
- Furthermore we unified and fixed the source:
- only use @ for doxygen commands
- always use elektra\* functions for allocation
- added a file header for every file
π¦ C++11 migration
- Since we now only use C++11, we applied `clang-modernize` which simplified
- many loops and replaced many `0` to `nullptr`. Additionally, we added
- `override` and `default` at many places.
- We removed all places where we had `ifdefs` to use `auto_ptr` if no
- modern smart pointer is available.
- Because of these changes there is no easy way to compile Elektra without
- C++11 support, except by avoiding the C++ parts all together.
- The C++ `KeySet` now also supports a `get` to retrieve whole containers
- + 5 more
π Documentation
- The documentation was improved vastly. Most thanks to Kurt Micheli who
- did a lot of editing and fixed many places throughout the documentation
- Also thanks to Michael Zehender who added two paragraphs in the main
- README.md.
- Keynames of applications should be called `/sw/org/app/#0/current`,
- where `current` is the default profile (non given). `org` and
- `app` is supposed to not contain `/` and be completely lowercase.
- Keynames are documented [here](/doc/help/elektra-key-names.md).
- + 16 more
π¦ Qt-Gui 0.0.10
- Raffael Pancheri again updated qt-gui with many nice improvements:
- update existing nodes in case the config was changed outside the gui
- safely update tree
- add update signal to metadata
- fix crash when closing the GUI
- move Actions in separate file to make main.qml less clustered
- plugins do not output messages at startup
- `BackendBuilder` is now used, which automatically takes cares of the correct ordering of plugins
- + 2 more
π¦ Packaging and Build System
- Elektra 0.8.14 now in Debian with qt-gui, man pages,
- thanks to Pino Toscano
- [read more here](https://packages.qa.debian.org/e/elektra/news/20151215T000031Z.html)
- Thanks to Gustavo Alvarez for updating and splitting the packages on
- Arch Linux!
- Thanks to [Harald Geyer](http://friends.ccbib.org/harald/supporting/),
- Elektra is now packaged for OpenWRT. We fixed a number of
- cross-compilation issues and now officially support building against musl
- + 19 more
π Fixes and Improvements
- 3 way merge now properly deals with binary data,
- thanks to Felix Berlakovich
- getenv: fix wrapping on powerpc, thanks to Pino Toscano
- markdownlinkconverter: fix char/int mismatch, thanks to Pino Toscano
- wresolver: use KDB_MAX_PATH_LENGTH instead of PATH_MAX,
- thanks to Pino Toscano
- Cleaning up #ifdefs that break statements, thanks to Romero Malaquias
- Daniel Bugl tested the INI plugin
- + 18 more
π¦ Get It!
- You can download the release from
- [here](http://www.libelektra.org/ftp/elektra/releases/elektra-0.8.15.tar.gz)
- and now also [here on github](https://github.com/ElektraInitiative/ftp/tree/master/releases/elektra-0.8.15.tar.gz)
- name: elektra-0.8.15.tar.gz
- size: 2338297
- md5sum: 33ec1e5982fb7fbd8893bf7b579b80f0
- sha1: 6b1fdd5aa5aaad6ba377b4bb5ef437e0c85319ff
- sha256: 6a406986cecb8d4a44485ced118ee803bc039b0824b72298e123b4dd47eb0b22
- + 4 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](http://doc.libelektra.org/news/feed.rss)
- to always get the release notifications.
- For any questions and comments, please contact the
- [Mailing List](https://lists.sourceforge.net/lists/listinfo/registry-list)
- the issue tracker [on github](http://git.libelektra.org/issues)
- or by mail elektra@markus-raab.org.
- [Permalink to this NEWS entry](http://doc.libelektra.org/news/1ab4a560-c286-46d2-a058-1a8e7e208fe8.html)
- + 3 more
π Changes
- guid: 519cbfac-6db5-4594-8a38-dec4c84b134f
- author: Markus Raab
- pubDate: Thu, 19 Nov 2015 17:48:14 +0100
π Documentation Initiative
- The Documentation Initiative is a huge success and now the documentation
- of Elektra is in a state where someone (preferable a linux guru),
- never heard of Elektra, still can use Elektra only by reading man pages.
- There are now many ways to show a man page:
- [on github](http://libelektra.org/blob/master/doc/help/kdb.md)
- [in the API docu](http://doc.libelektra.org/api/latest/html/md_doc_help_kdb.html)
- by using `kdb --help` or `kdb help <command>`
- by using `man kdb`
π¦ Help system
- Ian Donnelly wrote man pages for all the tools delivered with Elektra.
- Additionally, nearly all README.md are now also converted to man pages
- and also to Doxygen.
π¦ Doxygen Filter
- Kurt Micheli did an amazing work with a new doxygen filter.
- The filter allows all Elektra markdown pages to be also included
- in the doxygen documentation. Thus all technical concepts are now
- explained in Markdown pages, this filter is essential.
- But even more, the filter also includes all man pages written
- for the tools, giving a nice html view for them. (In addition to
- the markdown rendering on github).
- Enjoy the [result](http://doc.libelektra.org/api/0.8.14/html/).
- + 1 more
π Further Docu fixes
- getenv debugging docu was improved
- typo fix: Specify, thanks to Pino Toscano
- [Design decisions](http://libelektra.org/blob/master/doc/decisions)
- Definition of Bool, capabilities and
- Publish Subscribe (thanks to Daniel Bugl)
- Improve iconv docu
- usage examples for many plugins
- improve README for line plugin (thanks to Ian Donnelly)
- + 2 more
π¦ Simplicity
- We shifted our [goals](http://git.libelektra.org/blob/master/doc/GOALS.md)
- a bit: We want to prefer simplicity to flexibility. Not because we
- do no like flexibility, but because we think we achieved enough of it.
- Currently (and in future) you can use Elektra:
- obviously as primitive key/value storage
- with specifications and dozens of plugins driven by it
- with code generation
- ...
- + 17 more
π¦ Compatibility
- As always, the API and API is fully forward-compatible, i.e. programs
- compiled against an older 0.8 versions of Elektra will continue to work.
- The behaviour of some plugins, however, changed:
- the INI plugin, the section handling was improved.
- in the NI plugin, the symbol Ni_GetVersion vanished
- in the resolver plugin files of other namespaces which are not
- mounted are not resolved anymore
π¦ Build System
- ENABLE_CXX11 does not exist anymore, it is always on.
- We do not care about 199711L compilers anymore, which
- makes development easier, without losing any actually
- used platform.
- Some programs that are only used in-source are not installed
- anymore. (by Pino Toscano)
- Python and Lua plugins are enabled now in `-DPLUGINS=ALL`.
- Python3 plugin was renamed to python.
π¦ Lua Plugin
- Manuel Mausz add a lightweight alternative to the python plugin:
- [the lua plugin](http://libelektra.org/blob/master/src/plugins/lua/).
- In a similar way, someone can write scripts, which are executed on every
- access to the
- [key database](http://libelektra.org/blob/master/doc/help/elektra-glossary.md).
- To mount a lua based filter, you can use:
- ```
- kdb mount file.ini /lua ini lua script=/path/to/lua/lua_filter.lua
- + 3 more
π¦ Cryptography Plugin
- In this technical preview, Peter Nirschl
- [demonstrates how a plugin](http://libelektra.org/blob/master/src/plugins/crypto/)
- can encrypt Elektra's values. In testcases it is already able to do so,
- but for the end user an easy way for key derivation is missing.
- A big thanks to Peter Nirschl!
π¦ INI Plugin
- The INI plugin got a near rewrite. Now it handles many situations better,
- has many more options and features, including:
- preserving the order
- using keys as meta-data
- many new testcases
- fix escaping
- Thanks to Thomas Waser for this work!
π¦ Mathcheck plugin
- This plugin allows you to check and even calculate keys from
- other keys using an polish prefix notation.
- It supports the typical operations `+ - / *` and
- `<, <=, ==, !=, =>, >, :=`. To mount, check and
- calculate values, one would use:
- ```
- kdb mount mathcheck.dump /example/mathcheck dump mathcheck
- kdb setmeta user/example/mathcheck/k check/math "== + a b"
- + 4 more
π¦ List Plugin
- Currently, Elektra has some limitations on how many plugins can be
- added to certain
- [placement](http://libelektra.org/blob/master/doc/help/elektra-plugins-ordering.md).
- Because of the rapidly growing number of plugins, some combinations
- are not possible anymore.
- This plugin tackles the issue, by delegating the work to an arbitrary
- number of subplugins. As a bonus, it works lazily and thus might avoid
- the loading of some plugins all together.
- + 1 more
π¦ Conditionals
- Brings `if` inside Elektra. It lets you check if some keys have
- the values they should have.
- ```
- kdb mount conditionals.dump /tmount/conditionals conditionals dump
- kdb set user/tmount/conditionals/fkey 3.0
- kdb set user/tmount/conditionals/hkey hello
- kdb setmeta user/tmount/conditionals/key check/condition "(hkey == 'hello') ? (fkey == '3.0')" # success
- kdb setmeta user/tmount/conditionals/key check/condition "(hkey == 'hello') ? (fkey == '5.0')" # fail
- + 3 more
π¦ Csvstorage Plugin
- You can now mount csv-files. To mount `test.csv` simply use:
- ```
- kdb mount test.csv /csv csvstorage
- ```
- There are many options, e.g. changing the delimiter, use header
- for the key names or predefine how the columns should be named.
- For details [see the documentation](http://libelektra.org/blob/master/src/plugins/csvstorage/).
- Thanks to Thomas Waser!
π¦ Filecheck plugin
- This plugin lets you validate lineendings, encodings, null, bom and
- unprintable characters.
- The also new plugin lineendings is already superseded by the filecheck
- plugin.
- Thanks to Thomas Waser!
π¦ Enum plugin
- The Enum plugin checks string values of Keys by comparing it against a
- list of valid values.
- Thanks to Thomas Waser!
π¦ Elektrify Machinekit.io
- We are proud that [Machinekit](http://www.machinekit.io/) starts using
- Elektra.
- Alexander RΓΆssler is digging into all details, and already enhanced
- the DBUS Plugin for their needs. DBus now can emit a message for every
- changed key.
- A big thanks to Alexander RΓΆssler!
π Bugfixes
- libgetenv did not reinitalized its mutexes on forks
- add needSync also in C++ binding
- handle removed current working directories (fallback to /)
- avoid segfault on missing version keys (when doing `kdb rm system/elektra/version`)
- fix glob plugin + kdb mount with
- [config/needs usage](http://libelektra.org/blob/master/doc/help/elektra-contracts.md)
- fix different handling of strerror_r in Mac OS X (thanks to Daniel Bugl)
- do not change the users parentKey in early-error scenarios
- + 1 more
π¦ Other Gems
- getenv example: do not link to elektra/elektratools,
- thanks to Pino Toscano
- fixes in other examples
- avoid useless UTF-8 chars and fix typos, thanks to Kurt Micheli
- fix kdb check return code (open fail)
- pdf now also allows UTF-8 characters if added to
- elektraSpecialCharacters.sty, thanks to Kurt Micheli
- libgetenv: lookup also used for layers
- + 12 more
π¦ Get It!
- You can download the release from
- [here](http://www.libelektra.org/ftp/elektra/releases/elektra-0.8.14.tar.gz)
- and now also [here on github](https://github.com/ElektraInitiative/ftp/tree/master/releases/elektra-0.8.14.tar.gz)
- name: elektra-0.8.14.tar.gz
- size: 2252008
- md5sum: a87cd3845e590bf413959dfd555e3704
- sha1: 2360603c347ae3f3a28e827eb9260ff0b9881e46
- sha256: af681a38c9c2921b8d249f98ab851c3d51371735471d8a1f833a224c4446fe2e
- + 3 more
π¦ Stay tuned!
- Subscribe to the
- [RSS feed](http://doc.libelektra.org/news/feed.rss)
- to always get the release notifications.
- For any questions and comments, please contact the
- [Mailing List](https://lists.sourceforge.net/lists/listinfo/registry-list)
- the issue tracker [on github](http://git.libelektra.org/issues)
- or by mail elektra@markus-raab.org.
- [Permalink to this NEWS entry](http://doc.libelektra.org/news/519cbfac-6db5-4594-8a38-dec4c84b134f.html)
- + 6 more
