$darkmode
Elektra 0.11.0
|
kdbOpen
We are proud to release Elektra 0.9.5.
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
.
kdbOpen
. see belowThe signature of kdbOpen
has been changed from
to
You can use kdbOpen (NULL, errorKey)
to get the same behavior as before.
The new parameter contract
is similar to what could be done via kdbEnsure
(which has been removed). Currently, the contract allows you to mount global plugins and add data into the global KeySet (passed to all plugins) during kdbOpen
. This alone is already quite powerful, but we might more functionality in future releases.
For now, there are three use cases for the contract
parameter. All of them are covered by helper functions:
With elektraGOptsContract
you can mount and set up the gopts
plugin used for command-line argument parsing. The other two functions are the new way to configure Elektra's notification feature.
For more information take a look at doc/dev/kdb-contracts.md
The following section lists news about the plugins we updated in this release.
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)_kdb_long_double_t
on armel platforms (#3450). _(Mihael Pranjić)_elektraNotificationContract
. _(Klemens Böswirth)_yamlsmith
and yanlr
. _(René Schwaiger)_elektraNotificationContract
. _(Klemens Böswirth)_The text below summarizes updates to the C (and C++)-based libraries of Elektra.
keyCopy
and keyDup
now take an additional flag. See below.kdbEnsure
was removed and integrated into kdbOpen
, which now takes an additional KeySet * contract
parameter. See abovekeyCopy
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)_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 _(Klemens Böswirth)_KEY_END
is now defined as (void *) 0
instead of 0
. This allows us to mark keyNew
with the GCC attribute __attribute__ ((sentinel))
, which causes a compiler warning, if keyNew
calls don't use KEY_END
as their last argument. _(Klemens Böswirth)_elektraSetIoBinding
has been removed. Use elektraIoContract
instead. _(Klemens Böswirth)_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)_"openNotification"
, "closeNotification" and
"setIoBinding"are no longer used. Instead, plugins should retrieve the I/O binding from the key
system:/elektra/io/bindingin 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/callbackand
system:/elektra/notification/context` respectively. _(Klemens Böswirth)_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.
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
KeySet::getCursor
KeySet::setCursor
Until internal KeySet
iterator support has been dropped form native library, Elektra::ksRewind
is being retained while also being annotated as 'deprecated for removal'. The reason is, that we still need to rewind a KeySet
before passing it to a native plugin via NativePlugin::set
, NativePlugin::get
or NativePlugin::error
. _(Michael Tucek)_
Furthermore Elektra::ksPop
and KeySet::pop
have been removed and KeySet::remove
has been introduced as replacment. Until internal KeySet
iterator support has been dropped form native library, Elektra::ksRewind
is being retained while also being annotated as 'depricated for removal'. The reason is, that we still need to rewind a KeySet
before passing it to a native plugin via NativePlugin::set
, NativePlugin::get
or NativePlugin::error
. _(Michael Tucek)_
Further more Elektra::ksPop
and KeySet::pop
have been removed and KeySet::remove
has been introduced as replacment. _(Michael Tucek)_
KeyException
specializations: KeyInvalidNameException
, KeyTypeConversionException
, KeyTypeMismatchException
Ongoing work on bringing the JNA binding up to scratch and improving developer experience. Both for JNA binding API consumers, as well as future JNA binding contrubutors. _(Michael Tucek)_
Add support for keyset.remove(key). _(Manuel Mausz)_
webd
: update ini
, y18n
and elliptic
dependencies. _(Mihael Pranjić)_\\
are due to shell recorder, and are not to be copied _(Markus Raab)_Return.java
), KeyNameIterator.java
_(@aaronabebe)_dbus
service before running tests and find DBUS_LAUNCHD_SESSION_BUS_SOCKET
manually (as workaround). _(Mihael Pranjić)_dbus
and java paths, exclude jni
. _(Mihael Pranjić)_The website is generated from the repository, so all information about plugins, bindings and tools are always up-to-date. Furthermore, we changed:
ini
dependency. _(Dependa Bot)_We are currently working on following topics:
We closed 20 issues 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!
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.
You can download the release from here or GitHub
The hashsums are:
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.
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