Skip to content

Latest commit

 

History

History
402 lines (259 loc) · 15.5 KB

_preparation_next_release.md

File metadata and controls

402 lines (259 loc) · 15.5 KB

0.8.<> Release

This release did not happen yet.

Please update this file within PRs accordingly. For non-trivial changes, you can choose to be part of the highlighted changes. Please make sure to add some short tutorial, asciinema, or how-to-use for highlighted items.

Please add your name at the end of every contribution. Syntax: (your name)

<<scripts/generate-news-entry>>

We are proud to release Elektra 0.8.<>.

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.

For a small demo see here:

asciicast

You can also read the news on our website

Highlights

  • The new High-Level-API has been added. (Klemens Böswirth)
  • <>
  • <>

High-Level API

The new high-level API provides an easier way to get started with Elektra.

To get started (including proper error handling) you now only need a few self-explanatory lines of code:

ElektraError * error;
Elektra * elektra = elektraOpen ("/sw/org/myapp/#0/current", NULL, &error);
if (elektra == NULL)
{
	printf ("An error occurred: %s", elektraErrorDescription (error));
	elektraErrorReset (&error);
	return -1;
}

int myint = elektraGetLong (elektra, "myint");

elektraClose (elektra);

Once you have an instance of Elektra you simply call one of the typed elektraGet* functions to read a value:

const char * mystring = elektraGetString (elektra, "mystring");

No need to specify the base path /sw/org/myapp/#0/current anymore, as the high-level API keeps track of that for you. The API supports the CORBA types already used by some plugins. The high-level API should also be used in combination with a specification (spec-mount). When used this way, the API is designed to be error and crash free while reading values. Writing values, can of course still produce errors.

Another advantage of the new API is, that it will be much easier to write bindings for other languages now, because only a few simply types and functions have to be mapped to provide the full functionality.

Take a look at the README for more infos.

For examples on how build an application using this API take a look at our example. (Klemens Böswirth)

<>

<>

Plugins

The following section lists news about the modules we updated in this release.

Augeas

  • We changed the default Augeas directory prefix for the lenses directory on macOS to the one used by Homebrew: /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. (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)

path

Enhanced the plugin to also check for concrete file or directory permissions such as rwx. You can specify for example 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 metadata and be assured that you can safely set a path value to the key. A more detailed explanation can be found here (Michael Zronek)

YAy PEG

The new plugin YAy PEG parses a subset of YAML using a parser based on PEGTL. (René Schwaiger)

Ruby

  • Added some basic unit tests (Bernhard Denner)

<>

  • <>
  • <>
  • <>

Misc

  • We fixed some compiler warnings for the plugins

    reported on FreeBSD. (René Schwaiger)

  • The resolver plugin and its tests now better support KDB_DB_SYSTEM and KDB_DB_SPEC paths using ~ to refer to a home directory. (Klemens Böswirth)

  • If KDB_DB_SYSTEM is set to a relative path, it is now treated as relative to CMAKE_INSTALL_PREFIX. This ensures that KDB_DB_SYSTEM actually points to the same location no matter the current working directory. (Klemens Böswirth)

Libraries

The text below summarizes updates to the C (and C++)-based libraries 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).

  • <>
  • <>
  • <>

Core

  • All plugins in the KDB now get a handle to a global keyset via elektraPluginGetGlobalKeySet(), for communication between plugins. See Global KeySet Handle 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.

    elektraArrayValidateBaseNameString ("#_10");
    //                                     ~~^ Returns `2` (instead of `1`)
    
    elektraArrayValidateBaseNameString ("#___1337");
    //                                   ~~~~^ Returns `4` (instead of `1`)

    If your program already used elektraArrayValidateBaseNameString and you check for a valid array element using the equality operator (== 1), then please use (>= 1) instead. For example, if you code that looks like this:

    if (elektraArrayValidateBaseNameString(baseName) == 1) …;

    , please update your code to check for a valid array element name like this:

    if (elektraArrayValidateBaseNameString(baseName) >= 1) …;

    . (René Schwaiger)

  • <>

  • <>

Libopts

  • This is a new lib 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 and the code documentation. (Klemens Böswirth)

<>

  • <>
  • <>
  • <>

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.

<>

<>

<>

Tools

  • kdb spec-mount correctly includes type plugin to validate type. (Markus Raab)
  • <>
  • <>
  • <>

Scripts

  • <>
  • <>
  • <>

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 to make sure 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. Before the update these tests used cascading keys. (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ć)
  • The test check-env-dep does not require Bash anymore. (René Schwaiger)

Build

CMake

  • The CMake find module FindAugeas.cmake does not print an error message anymore, if it is unable to locate Augeas in the pkg-config search path. (René Schwaiger)
  • The CMake find module FindLua.cmake does not print an error message anymore, if it is unable to locate a Lua executable. (René Schwaiger)
  • We added code that makes sure you can compile IO GLIB on macOS, even if pkg-config erroneously reports that GLIB requires linking to the library intl (part of GNU gettext). (René Schwaiger)
  • The plugin name is now provided as compiler definition ELEKTRA_PLUGIN_NAME via CMake. See #1042. (Peter Nirschl)
  • We added a CMake find module for GLib. The module makes sure you can compile and link IO GLib on macOS. (René Schwaiger)
  • The CMake find module FindLibOpenSSL.cmake does not require pkg-config anymore. The updated code also fixes some linker problems on macOS (and probably other operating systems too), where the build system is not able to link to OpenSSL using only the name of the OpenSSL libraries. (René Schwaiger)
  • We simplified the CMake find module FindLibgcrypt.cmake.The update fixes problems on macOS, where the build system excluded the plugin crypto_gcrypt, although Libgcrypt was installed on the system. (René Schwaiger)
  • We now use the official CMake find module for iconv. This update fixes linker problems with the iconv and filecheck plugin on FreeBSD 12. (René Schwaiger)
  • The CMake find module for Botan does not require pkg-config anymore. (René Schwaiger)
  • The CMake find module for libgit2 now also exports the version number of libgit2. (René Schwaiger)
  • We added a CMake find module for libuv and fixed a problem on macOS, where the build system was unable to locate the header file of libuv. (René Schwaiger)
  • We added a CMake find module for ZeroMQ to fix build problems on macOS. (René Schwaiger)

Docker

  • <>
  • <>
  • <>

Infrastructure

Cirrus

  • We now use Cirrus CI to build and test Elektra on

    . (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 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)

  • We added 🍎 MMap, which tests Elektra using mmapstorage as default storage module. (René Schwaiger)

Jenkins

  • We added a badge displaying the current build status to the main ReadMe. (René Schwaiger)
  • <>
  • <>

Travis

  • We now test Elektra on Ubuntu Xenial Xerus. (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. Furthermore, we changed:

  • <>
  • <>
  • <>

Outlook

We are currently working on following topics:

  • <>
  • <>
  • <>

Statistics

Following authors made this release possible:

<<scripts/git-release-stats 0.8.<<VERSION>>>>

We welcome new contributors!

Get It!

You can download the release from here or GitHub

The hashsums are:

<<scripts/generate-hashsums>>

The release tarball is also available signed by Markus Raab using GnuPG from here or on GitHub

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 the issue tracker on GitHub.

Permalink to this NEWS entry

For more information, see https://libelektra.org

Best regards, Elektra Initiative