Fri, 30 Oct 2020 00:00:00 GMT

0.9.3 Release

guid: 9b9e8889-0c77-45ce-8441-8bdf26a110ac

author: Mihael Pranjić

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 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. 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, completing

kdb 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 in npm 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 alias shfmt2, in case shfmt 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 of texlive-fonts-extra) and

stmaryrd (part of texlive-science or texlive-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 and check_export tests run for at least one plugin. (Lukas Kilian)

Build

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. 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 Pranjic using GnuPG from here or on GitHub

The following GPG Key was used to sign this release: 9C18145C22F9E746D743DEC59ECC0F4CF0359C7B

Already built API documentation 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.