0.9.6 Release
- 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
We are proud to release Elektra 0.9.6, the 7th release in preparation for Elektra 1.0.
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 pull elektra/elektra
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
The JNI plugin was encountering a double free on open. This has been fixed in conjunction with an update to JNA binding release mechanism. The previously disabled JNI test have been fixed and enabled.
For how to write plugins, please refer to java-plugins.md as well as the JNI plugin and JNA binding documentation.
Note that it is currently not possible to mount plugins written in Java (see #3881).
Plugins
The following section lists news about the plugins we updated in this release.
JNI
- Fixed double free issues and re-enabled tests
- Updated documentation
- Increased minimum required JDK version to 11
(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. (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 of Elektra.
Core
- Remove keyCompareBy(Name)?Owner (@a-kraschitzer)
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.
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
- Increased minimum required JDK version to 11
- 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
- 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 which might result in double free errors. 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.
- Introduced multiple exceptions when native API calls fail - see updated Java doc for details
- Introduced early parameter validation for values which would otherwise lead to unspecific errors in native API calls
- Update
Key
API introducing the following changes:
- Extracted exceptions from
Key
class
- Fixed
Key::getCurrentMeta
- Moved
Elektra.KeyNewArgumentFlags
to Key.NewArgumentTag
- Changed return types from
int
to boolean
or enabled a fluent interface where appropriate
- Renamed
Key::*Integer
to Key::*Int
- Renamed
KeyInvalidNameException
to KeyNameException
- Renamed
KeyTypeMismatchException
to KeyBinaryTypeNotSupportedException
- Introduced
Key::get*AndRelease
convenience methods
- Introduced
Key::createNameless
- Introduced
KeyReleasedException
being thrown when a released Key
is being accessed
- Introduced
KeyMetaException
- Removed unused
KeyTypeConversionException
- Removed
Key::needsSync
- Removed
Key::isNull
KeyReleasedException
is now being thrown when a released (= previously isNull
) Key
is being accessed
Key
s with no backing native key pointer cannot be created anymore
- Updated
KeySet
API introducing the following changes:
- Changed return type enabling a fluent interface where appropriate
- Renamed
KeySet::head
to KeySet::first
- Renamed
KeySet::tail
to KeySet::last
- Introduced
KeySetReleasedException
being thrown when a released KeySet
is being accessed
- Introduced
KeySetAppendException
- Removed
KeySet::create(int, Object[])
- Removed
KeySet::needsSync
- Methods which have been returning a nullable
Key
, now return an `Optional´
KeySet::lookup*
now returns Optional<Key>
Key::getMeta
now returns Optional<Key>
- Example:
// checking whether the key has been found BEFORE API change
Key found = ks.lookup("/some/key");
if (found != null) {
// process found key
}
// checking whether the key has been found AFTER API change
ks.lookup("/some/key").ifPresent(k -> // process found key );
- Updated
KDB
API introducing the following changes:
- Introduced
KDBClosedException
being thrown when a closed KDB
session is being accessed
- Introduced
KDB::get(Key)
- Introduced
KDB::open()
- Introduced
KDB::open(KeySet)
- Introduced
KDB::goptsContract(String[], String[], Key, KeySet)
- Changed return type enabling a fluent interface where appropriate
- Updated tests accordingly
(Michael Tucek)
- 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. (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 documentation related to different namespaces in returned keys. (Markus Raab)
- Improved documentation of noresolver. (Markus Raab)
- Improved plugin tutorial. (Markus Raab)
- Adding info about syncing forks to
doc/Git.md
. (Klemens Böswirth)
- Work on COMPILE.md and INSTALL.md. (@a-kraschitzer)
- Update and correct licensing information. (@a-kraschitzer)
- Rename RELEASE.md. (@a-kraschitzer)
- Improved documentation for module kdb in Elektra Core. (@lawli3t)
- Improved documentation for module key in Elektra Core. (@lawli3t)
- Improved documentation for module keyname in Elektra Core. (@lawli3t)
- Improved documentation for module keyvalue in Elektra Core. (@lawli3t)
- Improved documentation for module keymeta in Elektra Core. (@lawli3t)
- Improved documentation for module keytest in Elektra Core. (@lawli3t)
- Improved documentation for module keyset in Elektra Core. (@lawli3t)
- Fixed example in the "mount-configuration-files" tutorial #3722. (Philipp Oppel)
- Update and correct third party licensing information. (@a-kraschitzer)
- Use Ronn-NG instead of unmaintained ronn to generate man pages. (Mihael Pranjić)
- Re-generate man pages to add missing information and remove unnecessary symbols and escaping. (Mihael Pranjić)
- Update
doc/Doxyfile
to Doxygen 1.9.1 and fix a syntax error with the FILTER_PATTERNS
directive. (Mihael Pranjić)
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)
Build
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ć)
Infrastructure
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 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)
- Improve Plugin Framework (Klemens Böswirth)
- Improve 3-way merge (Dominic Jäger)
- Shell completion (Ulrike Schäfer)
- Ansible module (Thomas Waser)
Statistics
We closed 40 issues 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 about how to get started.
As first step, you could give us feedback about these release notes.
Contact us via our issue tracker.
Get the Release!
You can download the release from here
or GitHub
The hashsums are:
- name: elektra-0.9.6.tar.gz
- size: 7650067
- md5sum: ed33e7b61f2b1ed3742f3bc6dd046d53
- sha1: fd6082ee38e31e54b66a96a50fc4d20c9c107c89
- sha256: c8e75f4d21bf3bd6b1028e776af9ff644a17a7dfbb1f2052f50392767deea197
The release tarball is also available signed using GnuPG from
here or on
GitHub
The following GPG Key was used to sign this release: 12CC44541E1B8AD9B66AFAD55262E7353324914A
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.
Permalink to this NEWS entry
For more information, see https://libelektra.org
Best regards,
Elektra Initiative