0.9.3 Release
- guid: 9b9e8889-0c77-45ce-8441-8bdf26a110ac
- author: Mihael Pranjic
- pubDate: Fri, 30 Oct 2020 23:03:43 +0100
- shortDesc: TOML Storage Plugin
We are proud to release Elektra 0.9.3.
This release again brings us a big step towards Elektra 1.0.
It introduces the new soon-to-be-default storage plugin: TOML.
What is Elektra?
Elektra serves as a universal and secure framework to access
configuration settings in a global, hierarchical key database.
For more information, visit https://libelektra.org.
You can also read the news on our website
You can try out the latest Elektra release using our docker image 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.
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.
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 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, 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 thedump
output.
This makesdump
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 brokendump
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. 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 does not fail any more, if you try to complete a simple
command that expects a namespace. For example, completingkdb ls ‸
with the tab key (⇥) (
‸
represents the current cursor position) should work correctly again. (René Schwaiger) -
The formatting scripts using prettier now use
npx
, which is included innpm
v5.2.0 or newer. This allows us to specify an exact version of prettier to use. (Klemens Böswirth) -
The
reformat-shell
script now accepts the aliasshfmt2
, in caseshfmt
v3 is needed for another project. (Klemens Böswirth) -
The config for restyled.io now specifies the image to use for each formatter. This clearly reflects the version used for
formatting. (Klemens Böswirth) -
Add a release script to automate the release process. (Robert Sowula)
Documentation
- Updated GOALS.md. (Markus Raab)
- Describe hierarchy and limitations of hosts plugin. (Markus Raab)
- The Doxygen PDF documentation now also requires the packages
stix
(part oftexlive-fonts-extra
) andstmaryrd
(part oftexlive-science
ortexlive-math-extra
). (René Schwaiger)
- Write down some fundamental decisions,
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
andcheck_export
tests run for at least one plugin. (Lukas Kilian)
Build
CMake
make uninstall
also uninstalls symlinks. (Markus Raab)external-links.txt
andextra_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.
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ć)
Infrastructure
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 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, but some of them
are not finalized.
If you are interested in the discussions, please
subscribe.
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)
- 1.0 API (Philipp Gackstatter)
- Improve 3-way merge (Dominic Jäger)
- Shell completion (Ulrike Schäfer)
- Improve Elektra developer experience (Hani Torabi)
- Ansible bindings (Thomas Waser)
Statistics
We closed 15 issues 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 about how to get started.
As first step, you could give us feedback about these release notes.
Contact us via our issue tracker.
Get the Release!
You can download the release from here
or GitHub
The hashsums are:
- author: mpranj
- name: elektra-0.9.3.tar.gz
- size: 7540609
- md5sum: 649fe13100266ab0e9a4cd19b99e2049
- sha1: 02900ef5c8b24cf067930068c62f2ff09b44354d
- sha256: 5022a6ebf004d892ded03fcf6eb3d223942a7fadd2d68f14d847d1f7f243e1d7
The release tarball is also available signed by Mihael Pranjić using GnuPG from
here or on
GitHub
The following GPG Key was used to sign this release: 9C18145C22F9E746D743DEC59ECC0F4CF0359C7B
Already built API-Docu can be found here
or on GitHub.
Stay tuned!
Subscribe to the
RSS feed
to always get the release notifications.
If you also want to participate, or for any questions and comments
please contact us via our issue tracker on GitHub.
For more information, see https://libelektra.org
Best regards,
Elektra Initiative