\label{doc_news_2019-11-26_0_9_1_md_md_doc_news_2019_11_26_0_9_1}%
\Hypertarget{doc_news_2019-11-26_0_9_1_md_md_doc_news_2019_11_26_0_9_1}%

\begin{DoxyItemize}
\item guid\+: 8c64fe8a-\/87a5-\/4b72-\/b772-\/d98c8a4a5efd
\item author\+: Mihael Pranjić
\item pub\+Date\+: Tue, 26 Nov 2019 14\+:55\+:19 +0100
\item short\+Desc\+: KDE Integration, Rust\&Go Bindings, Code Generation
\end{DoxyItemize}

We are proud to release Elektra 0.\+9.\+1.\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3630}{}\doxysection{What is Elektra?}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3630}
Elektra serves as a universal and secure framework to access configuration settings in a global, hierarchical key database. For more information, visit \href{https://libelektra.org}{\texttt{ https\+://libelektra.\+org}}.

You can also read the news \href{https://www.libelektra.org/news/0.9.1-release}{\texttt{ on our website}}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3631}{}\doxysection{Highlights}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3631}

\begin{DoxyItemize}
\item We are working on integrating Elektra into \href{https://kde.org/}{\texttt{ KDE}}. A new Elektra plugin called {\ttfamily kconfig} was added which can read KDE\textquotesingle{}s kconfig ini files. Additionally we are working on a \href{https://github.com/ElektraInitiative/kconfig}{\texttt{ fork}} of KDE\textquotesingle{}s {\ttfamily KConfig} configuration system and patching it to use libelektra. \+\_\+(\+Dardan Haxhimustafa)\+\_\+ and \+\_\+(\+Felix Resch)\+\_\+
\item The \href{https://crates.io/crates/elektra}{\texttt{ elektra}} and \href{https://crates.io/crates/elektra-sys}{\texttt{ elektra-\/sys}} crates have been published to crates.\+io for easier usage of our Rust binding. \+\_\+(\+Philipp Gackstatter)\+\_\+
\item We improved our \href{https://github.com/ElektraInitiative/go-elektra}{\texttt{ Go bindings}}. \+\_\+(\+Raphael Gruber)\+\_\+
\item Code Generation is ready for productive use. \+\_\+(Klemens Böswirth)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3632}{}\doxysubsection{Code Generation}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3632}
While the new {\ttfamily kdb gen} was already included in the last release, it is now fully functional and ready for productive use. To get started take a look at the new man-\/page for \href{https://www.libelektra.org/man-pages/kdb-gen}{\texttt{ {\ttfamily kdb-\/gen(1)}}}.

If you specifically want to use it with the High-\/\+Level API take a look at \href{https://www.libelektra.org/tutorials/high-level-api}{\texttt{ this tutorial}}.

We also created a new CMake function that will be available, if you include Elektra via CMake\textquotesingle{}s {\ttfamily find\+\_\+package}. The function is called {\ttfamily elektra\+\_\+kdb\+\_\+gen} and can be used to tell CMake about files that are generated via {\ttfamily kdb gen}. \+\_\+(Klemens Böswirth)\+\_\+\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3633}{}\doxysubsection{Further Highlights}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3633}

\begin{DoxyItemize}
\item We migrated our \href{https://build.libelektra.org}{\texttt{ build server}} and \href{https://www.libelektra.org}{\texttt{ website}} to up-\/to-\/date hardware. \+\_\+(\+Markus Raab and Djordje Bulatovic)\+\_\+
\item Elektra now has a technical preview of a new \mbox{\hyperlink{doc_tutorials_cmerge_md}{merge library}}. It is written in C99 and can currently be used with \mbox{\hyperlink{doc_help_kdb-cmerge_md}{\`{}kdb cmerge\`{}}}. \+\_\+(Dominic Jäger)\+\_\+
\item We make it easier for new developers to join Elektra, e.\+g., see new \mbox{\hyperlink{doc_GETSTARTED_md}{get started}}. \+\_\+(\+Hani Torabi)\+\_\+
\item We made many cleanups, to get Elektra ready for 1.\+0!
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3634}{}\doxysection{Plugins}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3634}
The following section lists news about the \href{https://www.libelektra.org/plugins/readme}{\texttt{ plugins}} we updated in this release.\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3635}{}\doxysubsection{General}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3635}

\begin{DoxyItemize}
\item We removed 12 obsolete or unfinished plugins\+:
\begin{DoxyItemize}
\item {\ttfamily boolean},
\item {\ttfamily cachefilter},
\item {\ttfamily cpptype},
\item {\ttfamily dini},
\item {\ttfamily enum},
\item {\ttfamily regexstore},
\item {\ttfamily required},
\item {\ttfamily haskell},
\item {\ttfamily simplespeclang},
\item {\ttfamily regexdispatcher},
\item {\ttfamily typechecker},
\item {\ttfamily struct}. \+\_\+(Markus Raab, René Schwaiger)\+\_\+
\end{DoxyItemize}
\item We unified the name of the config check function of the plugins to {\ttfamily name\+Of\+Plugin\+Check\+Conf}. Before this update some plugins used the name {\ttfamily name\+Of\+Plugin\+Check\+Config} instead. \+\_\+(René Schwaiger)\+\_\+
\item We improved the error messages in {\ttfamily crypto}, {\ttfamily fcrypt}, and {\ttfamily gpgme} plugins. \+\_\+(\+Peter Nirschl)\+\_\+
\item We now correctly handle return codes (error codes) of {\ttfamily execv} in the GPG module. \+\_\+(\+Peter Nirschl)\+\_\+
\item We improved the documentation of {\ttfamily ks\+Append\+Key} regarding ownership of keys. \+\_\+(\+Raphael Gruber)\+\_\+
\item We removed the experimental status of the following plugins\+:
\begin{DoxyItemize}
\item {\ttfamily gopts}
\item {\ttfamily specload}. \+\_\+(Klemens Böswirth)\+\_\+
\end{DoxyItemize}
\item We added the following experimental plugins\+:
\begin{DoxyItemize}
\item {\ttfamily kconfig}. \+\_\+(\+Dardan Haxhimustafa)\+\_\+
\end{DoxyItemize}
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3636}{}\doxysubsection{Camel}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3636}
We removed the experimental plugin. For a plugin that is able to parse similar syntax, please take a look at the


\begin{DoxyItemize}
\item \mbox{\hyperlink{md_src_plugins_yajl_README_src_plugins_yajl_README_md}{YAJL}} , and
\item \mbox{\hyperlink{md_src_plugins_yamlcpp_README_src_plugins_yamlcpp_README_md}{YAML CPP}}
\end{DoxyItemize}

plugins. \+\_\+(René Schwaiger)\+\_\+\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3637}{}\doxysubsection{GOpts}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3637}

\begin{DoxyItemize}
\item The error message, if non of the gopts variants can be compiled, was improved. \+\_\+(Klemens Böswirth)\+\_\+
\item A better error, if the plugin fails to load {\ttfamily argv} from the system, was added. \+\_\+(Klemens Böswirth)\+\_\+
\item A function to detect help mode, without invoking {\ttfamily elektra\+Get\+Opts} was added. It simply checks, whether {\ttfamily -\/-\/help} is one of the string in {\ttfamily argv}. \+\_\+(Klemens Böswirth)\+\_\+
\item Increase test timeout from 120s to 240s. \+\_\+(Mihael Pranjić)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3638}{}\doxysubsection{KConfig}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3638}

\begin{DoxyItemize}
\item We added a plugin which can be used to parse kconfig INI files. \+\_\+(\+Dardan Haxhimustafa)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3639}{}\doxysubsection{Mmapstorage}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3639}

\begin{DoxyItemize}
\item We now store the OPMPHM inside of the mmap format. \+\_\+(Mihael Pranjić)\+\_\+
\item The storage format was changed and many sanity checks were improved or added. \+\_\+(Mihael Pranjić)\+\_\+
\item Enforce consistency by writing the magic file footer last. \+\_\+(Mihael Pranjić)\+\_\+
\item Filter empty meta Key\+Sets to save space. \+\_\+(Mihael Pranjić)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3640}{}\doxysubsection{Noresolver}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3640}

\begin{DoxyItemize}
\item The plugin now correctly sets the path in the {\ttfamily parent\+Key}. It therefore now supports set calls. \+\_\+(Klemens Böswirth)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3641}{}\doxysubsection{Path}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3641}

\begin{DoxyItemize}
\item The \href{https://master.libelektra.org/tests/shell/shell_recorder/tutorial_wrapper}{\texttt{ Markdown Shell Recorder}} test of the plugin now also works, if you execute it as root user. \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3642}{}\doxysubsection{Spec}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3642}

\begin{DoxyItemize}
\item There is now the config key {\ttfamily missing/log} that allows logging of all missing {\ttfamily require}d keys. \+\_\+(Klemens Böswirth)\+\_\+
\item {\ttfamily spec} now internally handles errors differently. There should be no external impact apart from better performance. \+\_\+(Klemens Böswirth)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3643}{}\doxysubsection{Specload}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3643}

\begin{DoxyItemize}
\item We now treat relative paths as relative to {\ttfamily KDB\+\_\+\+DB\+\_\+\+SPEC} instead of the current working directory. \+\_\+(Klemens Böswirth)\+\_\+
\item Changes to {\ttfamily default} or {\ttfamily type} metadata are no longer supported, since they are not safe in every case. \+\_\+(Klemens Böswirth)\+\_\+
\item The plugin no longer has the {\ttfamily experimental} status. \+\_\+(Klemens Böswirth)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3644}{}\doxysubsection{Tcl}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3644}

\begin{DoxyItemize}
\item We made sure that building the plugin works, if you use the latest version of CMake ({\ttfamily 3.\+15.\+3}) and Boost ({\ttfamily 1.\+71}). \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3645}{}\doxysubsection{Type}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3645}

\begin{DoxyItemize}
\item We added an option to disable the restoring of boolean values. This useful for storage formats like YAML that have native boolean types. \+\_\+(Klemens Böswirth)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3646}{}\doxysubsection{Yajl}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3646}

\begin{DoxyItemize}
\item Yajl now correctly supports Elektras boolean types using the {\ttfamily type} plugin. For example, setting {\ttfamily on}, {\ttfamily enable} or {\ttfamily true} all map to JSONs native {\ttfamily true} value. See the \mbox{\hyperlink{md_src_plugins_type_README_src_plugins_type_README_md}{type}} plugin for more details about boolean types. \+\_\+(\+Philipp Gackstatter)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3647}{}\doxysubsection{YAwn}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3647}

\begin{DoxyItemize}
\item We removed the plugin in favor of Yan LR. \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3648}{}\doxysubsection{YAy PEG}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3648}

\begin{DoxyItemize}
\item We removed the plugin in favor of Yan LR. \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3649}{}\doxysection{Libraries}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3649}
The text below summarizes updates to the \href{https://www.libelektra.org/libraries/readme}{\texttt{ C (and C++)-\/based libraries}} of Elektra.\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3650}{}\doxysubsection{Compatibility}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3650}
We introduced several incompatible changes\+:


\begin{DoxyItemize}
\item The library {\ttfamily libelektra}, which is a collection of different elektra libraries, is now removed. Users of CMake or pkg-\/config should not be affected. Otherwise change {\ttfamily -\/lelektra} to {\ttfamily -\/lelektra-\/core -\/lelektra-\/kdb} or whatever parts of Elektra your application uses. \+\_\+(\+Markus Raab)\+\_\+
\item The conversion functions {\ttfamily elektra\+Key\+To$\ast$} and {\ttfamily elektra$\ast$\+To\+String} are now part of the {\ttfamily elektra-\/ease} library instead of the {\ttfamily elektra-\/highlevel} library. This should not cause any breaking changes since {\ttfamily elektra-\/highlevel} already depends on {\ttfamily elektra-\/ease}. In addition the header {\ttfamily \mbox{\hyperlink{conversion_8h}{elektra/conversion.\+h}}} is kept for compatibility. \+\_\+(Klemens Böswirth)\+\_\+
\item Fixes in documentation that might disallow some code operating in grey areas before. \+\_\+(\+Markus Raab)\+\_\+
\item We removed {\ttfamily key\+Rel} and {\ttfamily key\+Rel2} since it can be easily replaced by other existing functions. \+\_\+(\+Philipp Gackstatter)\+\_\+
\end{DoxyItemize}

We changed the following symbols\+:


\begin{DoxyItemize}
\item ELEKTRA\+\_\+\+PLUGIN\+\_\+\+COMMIT
\item elektra\+Key\+To\+String
\item elektra\+Key\+To\+Boolean
\item elektra\+Key\+To\+Char
\item elektra\+Key\+To\+Octet
\item elektra\+Key\+To\+Short
\item elektra\+Key\+To\+Unsigned\+Short
\item elektra\+Key\+To\+Long
\item elektra\+Key\+To\+Unsigned\+Long
\item elektra\+Key\+To\+Long\+Long
\item elektra\+Key\+To\+Unsigned\+Long\+Long
\item elektra\+Key\+To\+Float
\item elektra\+Key\+To\+Double
\item elektra\+Key\+To\+Long\+Double
\item elektra\+Boolean\+To\+String
\item elektra\+Char\+To\+String
\item elektra\+Octet\+To\+String
\item elektra\+Short\+To\+String
\item elektra\+Unsigned\+Short\+To\+String
\item elektra\+Long\+To\+String
\item elektra\+Unsigned\+Long\+To\+String
\item elektra\+Long\+Long\+To\+String
\item elektra\+Unsigned\+Long\+Long\+To\+String
\item elektra\+Float\+To\+String
\item elektra\+Double\+To\+String
\item elektra\+Long\+Double\+To\+String
\item kdb\+\_\+octet\+\_\+t
\item kdb\+\_\+boolean\+\_\+t
\item kdb\+\_\+short\+\_\+t
\item kdb\+\_\+long\+\_\+t
\item kdb\+\_\+long\+\_\+long\+\_\+t
\item kdb\+\_\+unsigned\+\_\+short\+\_\+t
\item kdb\+\_\+unsigned\+\_\+long\+\_\+t
\item kdb\+\_\+unsigned\+\_\+long\+\_\+long\+\_\+t
\item kdb\+\_\+char\+\_\+t
\item kdb\+\_\+float\+\_\+t
\item kdb\+\_\+double\+\_\+t
\item kdb\+\_\+long\+\_\+double\+\_\+t
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3651}{}\doxysubsection{Core}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3651}

\begin{DoxyItemize}
\item A new plugin function, {\ttfamily kdb\+Commit}, was implemented. The function is carried out in the {\ttfamily commit} phase of {\ttfamily kdb\+Set} and separates the commit functionality from the {\ttfamily \mbox{\hyperlink{group__kdb_ga11436b058408f83d303ca5e996832bcf}{kdb\+Set()}}} function. \+\_\+(\+Vid Leskovar)\+\_\+
\item {\ttfamily kdbconfig.\+h} is no longer included in the installed headers. This is because it could cause conflicts with other {\ttfamily config.\+h}-\/type headers from applications. \+\_\+(Klemens Böswirth)\+\_\+
\item {\ttfamily ks\+Append\+Key}\+: state that it only fail on memory problems. \+\_\+(\+Markus Raab)\+\_\+
\item Fix memory leak in {\ttfamily kdb\+Get}. \+\_\+(\+Markus Raab)\+\_\+
\item Implemented {\ttfamily \mbox{\hyperlink{kdberrors_8h}{kdberrors.\+h}}} directly without generation of the {\ttfamily specification} file because of drastically reduced error code count \+\_\+(\+Michael Zronek)\+\_\+
\item {\ttfamily key\+Is\+Direct\+Below} was renamed to {\ttfamily key\+Is\+Directly\+Below}. \+\_\+(\+Philipp Gackstatter)\+\_\+
\item {\ttfamily key\+Meta} was added to provide access to a key\textquotesingle{}s underlying Key\+Set that holds its metadata keys. \+\_\+(\+Philipp Gackstatter)\+\_\+
\item Removed the obsolete {\ttfamily ks\+Lookup\+By\+String} and {\ttfamily ks\+Lookup\+By\+Binary}, as well as deprecated {\ttfamily KDB\+\_\+\+O\+\_\+$\ast$} options. \+\_\+(\+Philipp Gackstatter)\+\_\+
\item Added {\ttfamily key\+Lock} and {\ttfamily key\+Is\+Locked}. \+\_\+(\+Manuel Mausz)\+\_\+
\item Removed {\ttfamily key\+VInit}. \+\_\+(\+Manuel Mausz)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3652}{}\doxysubsection{Opts}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3652}

\begin{DoxyItemize}
\item The option {\ttfamily -\/h} is no longer used to indicate help mode. Only {\ttfamily -\/-\/help}, will invoke help mode. \+\_\+(Klemens Böswirth)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3653}{}\doxysubsection{Proposal}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3653}

\begin{DoxyItemize}
\item Removed or moved several functions of {\ttfamily \mbox{\hyperlink{kdbproposal_8h}{kdbproposal.\+h}}}\+:
\begin{DoxyItemize}
\item {\ttfamily elektra\+Ks\+To\+Mem\+Array} was moved to {\ttfamily kdbease.\+h},
\item {\ttfamily elektra\+Lookup\+Options} was moved to {\ttfamily \mbox{\hyperlink{kdbprivate_8h}{kdbprivate.\+h}}},
\item {\ttfamily key\+Set\+StringF} was moved to {\ttfamily \mbox{\hyperlink{kdbinternal_8h}{kdbinternal.\+h}}},
\item Removed {\ttfamily ks\+Prev} and {\ttfamily elektra\+Ks\+Prev},
\item Removed {\ttfamily elektra\+Rename\+Keys} and replaced it with {\ttfamily ks\+Rename\+Keys}. \+\_\+(\+Philipp Gackstatter)\+\_\+
\end{DoxyItemize}
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3654}{}\doxysection{Bindings}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3654}
Bindings allow you to utilize Elektra using \href{https://www.libelektra.org/bindings/readme}{\texttt{ various programming languages}}. This section keeps you up-\/to-\/date with the multi-\/language support provided by Elektra.


\begin{DoxyItemize}
\item We removed the Haskell and GI bindings. \+\_\+(\+Markus Raab)\+\_\+
\item Avoid unnecessary copying std\+::string where possible (set\+String and set\+Meta only). \+\_\+(\+Manuel Mausz)\+\_\+
\item CPP\+: add {\ttfamily Key\+::is\{Name,Value,Meta\}Locked}. \+\_\+(\+Manuel Mausz)\+\_\+
\item GLIB\+: removed {\ttfamily gelektra\+\_\+keyset\+\_\+resize}. \+\_\+(\+Manuel Mausz)\+\_\+
\item GLIB\+: removed {\ttfamily gelektra\+\_\+keyset\+\_\+rewind}, {\ttfamily gelektra\+\_\+keyset\+\_\+next}, {\ttfamily gelektra\+\_\+keyset\+\_\+current}, {\ttfamily gelektra\+\_\+keyset\+\_\+getcursor}, {\ttfamily gelektra\+\_\+keyset\+\_\+setcursor}. \+\_\+(\+Manuel Mausz)\+\_\+
\item GLIB\+: renamed {\ttfamily gelektra\+\_\+keyset\+\_\+atcursor} to {\ttfamily gelektra\+\_\+keyset\+\_\+at}. \+\_\+(\+Manuel Mausz)\+\_\+
\item gsettings\+: adapt iterator. \+\_\+(\+Manuel Mausz)\+\_\+
\item SWIG\+: Add {\ttfamily Key\+Not\+Found\+Exception} exception. \+\_\+(\+Manuel Mausz)\+\_\+
\item SWIG\+: Fix Key\+Set equality operators. \+\_\+(\+Manuel Mausz)\+\_\+
\item SWIG/\+Python\+: {\ttfamily hash(key)} will throw unless the key name is locked. \+\_\+(\+Manuel Mausz)\+\_\+
\item SWIG/\+Python\+: Add operator overloadings for {\ttfamily len(\+Key)}, {\ttfamily repr(\+Key)}, {\ttfamily str(\+Key\+Set)}, {\ttfamily repr(\+Key\+Set)}. \+\_\+(\+Manuel Mausz)\+\_\+
\item SWIG/\+Python\+: Add alternative Key constructor {\ttfamily Key(name, value, \mbox{[}dict\mbox{]})}. \+\_\+(\+Manuel Mausz)\+\_\+
\item SWIG/\+Python\+: Add {\ttfamily Key\+Set.\+extend(\mbox{[}key1, key2,...\mbox{]})} and {\ttfamily Key\+Set.\+append(key1, key2, ...)}. \+\_\+(\+Manuel Mausz)\+\_\+
\item SWIG/\+Python\+: Add {\ttfamily Key\+Set.\+append(key\+\_\+name, key\+\_\+value, key\+\_\+opts)} which directly creates and appends a key. \+\_\+(\+Manuel Mausz)\+\_\+
\item SWIG/\+Python\+: Add {\ttfamily Key\+Set.\+unpack\+\_\+names()}, {\ttfamily Key\+Set.\+unpack\+\_\+basenames()}, {\ttfamily Key\+Set.\+filter(func)}, {\ttfamily Key\+Set.\+filter\+\_\+below(where)}, {\ttfamily Key.\+array\+\_\+elements()}. \+\_\+(\+Manuel Mausz)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3655}{}\doxysubsection{Java}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3655}

\begin{DoxyItemize}
\item Completely overhauled the Java binding to be able to use Elektra plugins directly. A new Plugin\+Loader can load Elektra plugins or a native implemented Java plugin. All Plugins now implement the new Plugin interface. For an example see the test case. \+\_\+(\+Michael Zronek)\+\_\+
\item Upgraded maven dependencies for Java binding \+\_\+(\+Michael Zronek)\+\_\+
\item The Java binding now supports the \mbox{\hyperlink{doc_decisions_6_implemented_error_codes_md}{error codes}} in a native way. All exceptions contain the necessary information. \+\_\+(\+Michael Zronek)\+\_\+
\item Further improved the Java binding such as wording and documentation. \+\_\+(\+Michael Zronek)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3656}{}\doxysubsection{Rust}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3656}

\begin{DoxyItemize}
\item Add the {\ttfamily elektra-\/sys} crate which contains raw bindings to libelektra for Rust. \+\_\+(\+Philipp Gackstatter)\+\_\+
\item Add the {\ttfamily elektra} crate which contains safe wrapper methods for the raw bindings. The crate contains bindings for the low-\/level API, which means that the data types {\ttfamily Key} and {\ttfamily Key\+Set} can now safely be used from Rust. The Rust version of the API has been designed to take advantage of Rust\textquotesingle{}s type system and to be in accordance with the memory safety of Rust. For instance, the Key has been divided into {\ttfamily String\+Key} and {\ttfamily Binary\+Key}, to prevent type mismatches at compile-\/time. With the binding for {\ttfamily KDB}, one can take advantage of the elektra ecosystem from Rust. See the Readme for more. \+\_\+(\+Philipp Gackstatter)\+\_\+
\item Rewrote the {\ttfamily KDBError} to follow the specification fully and in particular allow catching out of memory errors by catching resource errors. \+\_\+(\+Philipp Gackstatter)\+\_\+
\item Added a {\ttfamily keyset!} macro to easily create a keyset with many keys in a single invocation. \+\_\+(\+Philipp Gackstatter)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3657}{}\doxysection{Tools}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3657}

\begin{DoxyItemize}
\item {\ttfamily KDB\+\_\+\+EXEC\+\_\+\+PATH}, which can be used to add further external tools to {\ttfamily kdb}, now supports {\ttfamily \+:} to separate paths. {\ttfamily kdb list-\/tools} and {\ttfamily run\+\_\+env} were improved to take advantage of this. \+\_\+(\+Markus Raab)\+\_\+
\item Checks for {\ttfamily kdb\+Commit} have been added to \mbox{\hyperlink{doc_help_kdb-plugin-check_md}{kdb plugin-\/check}}. \+\_\+(\+Vid Leskovar)\+\_\+
\item Added PID file config setting for kdb-\/run-\/rest-\/frontend \+\_\+(\+Markus Raab)\+\_\+
\item Added {\ttfamily kdb meta-\/show} command which prints out all metadata along with its values for a given key. \+\_\+(\+Michael Zronek)\+\_\+
\item Removed {\ttfamily kdb vset} as it does not properly put metadata to the spec namespace. \+\_\+(\+Michael Zronek)\+\_\+
\item Renamed kdb plugin commands following a hierarchical structure. {\ttfamily kdb info} is now {\ttfamily kdb plugin-\/info}, {\ttfamily kdb check} is now {\ttfamily kdb plugin-\/check} and {\ttfamily kdb list} is now {\ttfamily kdb plugin-\/list}. We also removed the obsolete {\ttfamily kdb fstab}. \+\_\+(\+Philipp Gackstatter)\+\_\+
\item Renamed kdb meta commands\+:
\begin{DoxyItemize}
\item {\ttfamily kdb getmeta} is now {\ttfamily kdb meta-\/get}
\item {\ttfamily kdb lsmeta} is now {\ttfamily kdb meta-\/ls}
\item {\ttfamily kdb showmeta} is now {\ttfamily kdb meta-\/show}
\item {\ttfamily kdb rmmeta} is now {\ttfamily kdb meta-\/rm}
\item {\ttfamily kdb setmeta} is now {\ttfamily kdb meta-\/set} \+\_\+(\+Philipp Gackstatter)\+\_\+
\end{DoxyItemize}
\item Fix test tool {\ttfamily gen-\/gpg-\/testkey} by giving a narrower GPG key description. Fixes mismatches with existing GPG keys that contain \char`\"{}elektra.\+org\char`\"{} as e-\/mail address. \+\_\+(\+Peter Nirschl)\+\_\+
\item {\ttfamily kdb list-\/commands} and {\ttfamily kdb plugins-\/list} now sort their output in an alphabetical order \+\_\+(Anton Hößl)\+\_\+
\item {\ttfamily kdb plugin-\/list} does now mention in the helptext that with option {\ttfamily -\/v} the output is sorted by the plugin status \+\_\+(Anton Hößl)\+\_\+
\item {\ttfamily kdb import}, {\ttfamily kdb export} and {\ttfamily kdb editor} now search the plugin database for suitig plugins so it\textquotesingle{}s now possible to run {\ttfamily kdb export /hello json} instead of having to specify the plugin for the desired format directly. \+\_\+(Anton Hößl)\+\_\+
\item {\ttfamily get} and {\ttfamily mount}\+: Remove dependency on {\ttfamily \mbox{\hyperlink{kdbprivate_8h}{kdbprivate.\+h}}} \+\_\+(\+Philipp Gackstatter)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3658}{}\doxysection{Scripts}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3658}

\begin{DoxyItemize}
\item We structured the \mbox{\hyperlink{scripts_README_md}{scripts}}. \+\_\+(\+Markus Raab)\+\_\+
\item Removed the scripts
\begin{DoxyItemize}
\item {\ttfamily scripts/elektra-\/merge},
\item {\ttfamily scripts/elektra-\/mount},
\item {\ttfamily scripts/elektra-\/umount},
\item {\ttfamily convert-\/fstab},
\item {\ttfamily convert-\/hosts},
\item {\ttfamily convert-\/inittab},
\item {\ttfamily convert-\/users},
\item {\ttfamily scripts/benchmark\+\_\+libsplit.\+sh},
\item {\ttfamily scripts/zsh} and
\item {\ttfamily example-\/xorg}. \+\_\+(\+Markus Raab)\+\_\+
\end{DoxyItemize}
\item Renamed {\ttfamily scripts/run\+\_\+dev\+\_\+env} to {\ttfamily scripts/dev/run\+\_\+env}. \+\_\+(\+Markus Raab)\+\_\+
\item The script \`{}draw-\/all-\/plugins\`{} now also works properly, if the repository path contains space characters. \+\_\+(René Schwaiger)\+\_\+
\item The script \`{}link-\/checker\`{} now deduplicates the list of links before checking them. The timeout and amount of retries was also reduced. Lastly the script now supports a whitelist. Any link stored in \`{}tests/linkchecker.whitelist\`{} will not be checked. \+\_\+(Klemens Böswirth)\+\_\+
\item We removed a script used to compare the runtime performance of YAML plugins. \+\_\+(René Schwaiger)\+\_\+
\item Cleanup\+: separation of dev, admin and completion scripts. \+\_\+(\+Markus Raab, Rene Schwaiger)\+\_\+
\item Pre-\/commit hook {\ttfamily pre-\/commit-\/check-\/formatting} now lives in \`{}scripts/dev/pre-\/commit-\/check-\/formatting\`{}. \+\_\+(Klemens Böswirth)\+\_\+
\item The new script {\ttfamily reformat-\/javascript} formats the Java\+Script code of the repository using the tool \href{https://prettier.io}{\texttt{ {\ttfamily prettier}}}. \+\_\+(René Schwaiger)\+\_\+
\item We renamed
\begin{DoxyItemize}
\item the script {\ttfamily reformat-\/source} to {\ttfamily reformat-\/c}, and
\item the script {\ttfamily reformat-\/shfmt} to {\ttfamily reformat-\/shell}. \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}
\item The script cmake-\/format now requires {\ttfamily cmake-\/format} 0.\+6. \+\_\+(René Schwaiger)\+\_\+
\item The new script {\ttfamily reformat-\/java} formats the Java code in the repository using \href{https://clang.llvm.org/docs/ClangFormat.html}{\texttt{ {\ttfamily clang-\/format}}}. \+\_\+(René Schwaiger)\+\_\+
\item The \href{https://master.libelektra.org/tests/shell/shell_recorder/tutorial_wrapper}{\texttt{ Markdown Shell Recorder}} now also works correctly on Free\+BSD. \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3659}{}\doxysection{Documentation}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3659}

\begin{DoxyItemize}
\item Added a tutorial on how to write language bindings. Visit our new \mbox{\hyperlink{doc_tutorials_language-bindings_md}{README}}. \+\_\+(\+Michael Zronek, Raphael Gruber, Philipp Gackstatter)\+\_\+
\item Clarified subtyping in the language bindings tutorial. \+\_\+(\+Michael Zronek)\+\_\+
\item A \mbox{\hyperlink{doc_tutorials_highlevel-bindings_md}{second tutorial}} on writing bindings for the high-\/level API was created as well. \+\_\+(Klemens Böswirth, Raphael Gruber)\+\_\+
\item Added \mbox{\hyperlink{md_src_plugins_xerces_README_src_plugins_xerces_README_md}{info}} on how to include xerces plugin with homebrew installation. \+\_\+(Anton Hößl)\+\_\+
\item The \mbox{\hyperlink{doc_COMPILE_md}{compile instructions}} do not assume that you use {\ttfamily make} or {\ttfamily gcc} to build Elektra anymore. \+\_\+(René Schwaiger)\+\_\+
\item Add hints about reformatting with docker. \+\_\+(Dominic Jäger)\+\_\+
\item Add instructions about sourcing on Free\+BSD. \+\_\+(Dominic Jäger)\+\_\+
\item Add information on debuggers to main testing documentation. \+\_\+(Dominic Jäger)\+\_\+
\item Added design decision for error code implementations. \+\_\+(\+Michael Zronek)\+\_\+
\item Fixed some typos and links in the documentation and add new iterate example. \+\_\+(\+Philipp Gackstatter)\+\_\+
\item Clarified warnings metadata in the \mbox{\hyperlink{doc_dev_error-handling_md}{error-\/handling guideline}}. \+\_\+(\+Michael Zronek)\+\_\+
\item We fixed minor spelling mistakes in the documentation. \+\_\+(René Schwaiger)\+\_\+
\item Corrected buildserver documentation. \+\_\+(\+Djordje Bulatovic)\+\_\+
\item Add merge library into kdbset example. \+\_\+(Dominic Jäger)\+\_\+
\item We updated links for the INI parsing library Nickel. \+\_\+(René Schwaiger)\+\_\+
\item Added some information about contributing to Elektra. \+\_\+(\+Hani Torabi)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3660}{}\doxysection{Tests}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3660}

\begin{DoxyItemize}
\item We changed how the {\ttfamily formatting test} detects code differences. This update should get rid of transient errors as \href{https://issues.libelektra.org/2927\#issuecomment-528058641}{\texttt{ reported here}}. \+\_\+(René Schwaiger)\+\_\+
\item We disabled the test for the conversion engine. For more information, please take a look at \href{https://issues.libelektra.org/3086}{\texttt{ issue \#3086}}. \+\_\+(René Schwaiger)\+\_\+
\item We disabled the test {\ttfamily testmod\+\_\+zeromqsend} from the command {\ttfamily kdb run\+\_\+all}, since it caused timeouts in high load scenarios. \+\_\+(Mihael Pranjić)\+\_\+
\item The (Markdown) Shell Recorder now prints the protocol for a failed test, even if the test modified the database permanently. \+\_\+(René Schwaiger)\+\_\+
\item We rerun ctest twice to ignore temporary build failures. \+\_\+(\+Markus Raab)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3661}{}\doxysection{Build}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3661}
\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3662}{}\doxysubsection{CMake}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3662}

\begin{DoxyItemize}
\item {\ttfamily kdbtypes.\+h} is now generated directly via a CMake {\ttfamily configure\+\_\+file} call. \+\_\+(Klemens Böswirth)\+\_\+
\item The variable {\ttfamily ELEKTRA\+\_\+\+STAT\+\_\+\+ST\+\_\+\+SIZE\+\_\+F} now contains the correct format specifier for the {\ttfamily st\+\_\+size} member of the {\ttfamily stat} struct on mac\+OS. \+\_\+(René Schwaiger)\+\_\+
\item We simplified and unified the CMake code for the Shell Tests and the Shell Recorder. \+\_\+(René Schwaiger)\+\_\+
\item CMake now prints warnings about missing man pages. \+\_\+(René Schwaiger)\+\_\+
\item The build system does not update a man page in the folder \mbox{\hyperlink{doc_man_README_md}{doc/man}} any more, if ronn only changed the creation date of the man page. \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3663}{}\doxysubsection{Compilation}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3663}

\begin{DoxyItemize}
\item We now have a \mbox{\hyperlink{doc_dev_symbol-versioning_md}{setup for proper symbol versioning}}. \+\_\+(Klemens Böswirth)\+\_\+
\item We do not use implicit typing in the code of the {\ttfamily conditionals} and {\ttfamily yamlcpp} plugin any more. After this update, the code compiles without any warnings, even though we now use the compiler switch {\ttfamily -\/Wconversion}. \+\_\+(René Schwaiger)\+\_\+
\item JNA and JNI are not built concurrently anymore to avoid \href{https://jira.apache.org/jira/browse/MDEP-518}{\texttt{ dependency resolution fails}}. \+\_\+(\+Michael Zronek)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3664}{}\doxysubsection{Docker}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3664}

\begin{DoxyItemize}
\item Added Dockerfile for Ubuntu Bionic \+\_\+(\+Djordje Bulatovic)\+\_\+
\item We removed all Haskell packages from the Dockerfiles in the folder scripts/docker. \+\_\+(René Schwaiger)\+\_\+
\item We added a basic Dockerfile for Arch Linux. \+\_\+(René Schwaiger)\+\_\+
\item We updated the Dockerfile for Alpine Linux. \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3665}{}\doxysubsection{Vagrant}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3665}

\begin{DoxyItemize}
\item We added a Vagrantfile for a virtual machine based on Free\+BSD 12. \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3666}{}\doxysubsection{Other}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3666}

\begin{DoxyItemize}
\item The reformatting script now checks that the correct version of {\ttfamily cmake-\/format} is used. \+\_\+(Klemens Böswirth, René Schwaiger)\+\_\+
\item Improved various error messages and synchronized documentations. \+\_\+(\+Michael Zronek)\+\_\+
\item Improved {\ttfamily range} plugin error message. \+\_\+(\+Michael Zronek)\+\_\+
\item Improved error codes documentation to clarify the hierarchy for developers. \+\_\+(\+Michael Zronek)\+\_\+
\item Release notes now use git\textquotesingle{}s union merge driver. \+\_\+(Dominic Jäger)\+\_\+
\item Updated asciinema recording to correctly use {\ttfamily sudo}. \+\_\+(\+Michael Zronek)\+\_\+
\item Add pkg-\/config file for kdbmerge. \+\_\+(\+Raphael Gruber)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3667}{}\doxysection{Infrastructure}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3667}
\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3668}{}\doxysubsection{Cirrus}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3668}

\begin{DoxyItemize}
\item The {\ttfamily 🔗 Check} build job now merges PRs before checking links. \+\_\+(Klemens Böswirth)\+\_\+
\item We enabled logging in the build job {\ttfamily 🍎 Clang}. This update makes sure that Elektra’s logging code compiles without warnings on mac\+OS. \+\_\+(René Schwaiger)\+\_\+
\item All mac\+OS build jobs now use Xcode {\ttfamily 11.\+1} instead of Xcode {\ttfamily 10.\+1}. \+\_\+(René Schwaiger)\+\_\+
\item We removed all non-\/\+POSIX shell code from the Cirrus configuration file. \+\_\+(René Schwaiger)\+\_\+
\item The mac\+OS build jobs now use Ruby {\ttfamily 2.\+6}. \+\_\+(René Schwaiger)\+\_\+
\item We do not call {\ttfamily ninja} directly anymore. Instead we use {\ttfamily cmake -\/-\/build}. This has the advantage that we do not have to care about the Generator used by CMake. \+\_\+(René Schwaiger)\+\_\+
\item We added the build job {\ttfamily 😈 ASAN}, which builds and executes Elektra on Free\+BSD with enabled \href{https://github.com/google/sanitizers/wiki/AddressSanitizer}{\texttt{ Address\+Sanitizer}}. \+\_\+(René Schwaiger)\+\_\+
\item We now store common commands in one place at the top of the configuration file. This makes it easier to selectively disable certain build jobs. \+\_\+(René Schwaiger)\+\_\+
\item The new job {\ttfamily 📚 Check} checks
\begin{DoxyItemize}
\item that the \mbox{\hyperlink{doc_man_README_md}{man pages}} are up-\/to-\/date, and
\item that building the PDF version of the Doxygen documentation works. \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}
\item The new build job {\ttfamily 🐧 Fedora} builds and tests Elektra on Fedora Linux. \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3669}{}\doxysubsection{Jenkins}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3669}

\begin{DoxyItemize}
\item We upgraded all servers to Buster. \+\_\+(\+Markus Raab)\+\_\+
\item Jenkins does not auto cancel build jobs of the {\ttfamily master} branch anymore. \+\_\+(René Schwaiger)\+\_\+
\item Updated x\+Unit plugin in Jenkinsfile. \+\_\+(\+Djordje Bulatovic)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3670}{}\doxysubsection{Restyled}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3670}

\begin{DoxyItemize}
\item \href{https://restyled.io}{\texttt{ Restyled}} now also formats Markdown files with \href{https://prettier.io}{\texttt{ {\ttfamily prettier}}}. \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3671}{}\doxysubsection{Travis}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3671}

\begin{DoxyItemize}
\item The build job {\ttfamily 🍏 GCC} now uses the \href{https://docs.travis-ci.com/user/installing-dependencies/\#installing-packages-on-macos}{\texttt{ Travis Homebrew addon}} to install dependencies. \+\_\+(René Schwaiger)\+\_\+
\item We now build and test Elektra on Ubuntu {\ttfamily 18.\+04} (Bionic Beaver) instead of Ubuntu {\ttfamily 16.\+04} (Xenial Xerus). \+\_\+(René Schwaiger)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3672}{}\doxysection{Website}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3672}
The website is generated from the repository, so all information about plugins, bindings and tools are always up-\/to-\/date. Furthermore, we changed\+:


\begin{DoxyItemize}
\item Renamed the sub menu {\itshape Getting Started} in the menu {\itshape Documentation} to {\itshape About Elektra} and removed the sub-\/sub-\/menus {\itshape Compiling}, {\itshape Installation} and {\itshape Tutorials}. These sub-\/sub-\/menus are now sub-\/menus of {\itshape Documentation}. A new sub menu labeled {\itshape Get Started} added to the menu {\itshape Documentation} with some newcomer-\/friendly information. Renamed the {\itshape Getting Started} sub menu in {\itshape Development} to {\itshape Contribute to Elektra}. The green button on the main page is routed to the new {\itshape Get Started} page. \+\_\+(\+Hani Torabi)\+\_\+
\item The website now lives in the folder website to avoid confusion with the REST backend of the Web-\/\+UI. \+\_\+(\+Markus Raab)\+\_\+
\item Improve main page of website, restructure getting started. \+\_\+(\+Markus Raab)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3673}{}\doxysection{Outlook}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3673}
We are currently working on following topics\+:


\begin{DoxyItemize}
\item Elektrify KDE \+\_\+(\+Dardan Haxhimustafa)\+\_\+ and \+\_\+(\+Felix Resch)\+\_\+
\item Elektrify LCDproc \+\_\+(Klemens Böswirth)\+\_\+ and \+\_\+(\+Jakob Fischer)\+\_\+
\item Reduce the number of merge conflicts in 3-\/way merge. \+\_\+(Dominic Jäger)\+\_\+
\item Go bindings and improved Web-\/\+UI \+\_\+(\+Raphael Gruber)\+\_\+
\item Improved Error handling \+\_\+(\+Michael Zronek)\+\_\+
\item New default storage \+\_\+(René Schwaiger)\+\_\+ and \+\_\+(\+Jakob Fischer)\+\_\+
\item Shell completion \+\_\+(Ulrike Schäfer)\+\_\+
\item Improve Elektra developer experience \+\_\+(\+Hani Torabi)\+\_\+
\item Ansible bindings \+\_\+(\+Thomas Waser)\+\_\+
\item Plugin interface improvements \+\_\+(\+Vid Leskovar)\+\_\+
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3674}{}\doxysection{Statistics}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3674}
We closed \href{https://github.com/ElektraInitiative/libelektra/milestone/21?closed=1}{\texttt{ 75 issues}} for this release.

About 29 authors changed 1651 files with 82267 insertions(+) and 41690 deletions(-\/) in 1623 commits.

Thanks to all authors for making this release possible!\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3675}{}\doxysection{Finished Thesis}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3675}

\begin{DoxyItemize}
\item \href{https://www.libelektra.org/ftp/elektra/publications/boeswirth2019highlevel.pdf}{\texttt{ Klemens Böswirth}}\+: We explore the feasibility of using Elektra in a real-\/world project. We focused especially on using the high-\/level API with code-\/generation. In the thesis, we implemented new versions of LCDproc, one with the low-\/level API and one with the high-\/level API. Then we did some benchmarks to compare them. Our results indicate, that Elektra is very much usable in real-\/world projects. However, we also found that there is still potential for further optimizations.
\item Mihael Pranjić\+: We design a binary storage format for Elektra\textquotesingle{}s data structures and implement a \href{https://www.libelektra.org/plugins/cache}{\texttt{ cache plugin}} based on the format. The cache plugin leverages the {\ttfamily mmap()} system call to read and write data. Our cache implementation for Elektra\textquotesingle{}s data structures makes the access to the KDB more than 80 times faster for larger data sets. The penalty for cache misses is below 20 percent for reasonably sized data sets.
\end{DoxyItemize}\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3676}{}\doxysection{Join the Initiative!}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3676}
We welcome new contributors! Read \href{https://www.libelektra.org/devgettingstarted/ideas}{\texttt{ here}} about how to get started.

As first step, you could give us feedback about these release notes. Contact us via our \href{https://issues.libelektra.org}{\texttt{ issue tracker}}.\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3677}{}\doxysection{Get the Release!}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3677}
You can download the release from \href{https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.1.tar.gz}{\texttt{ here}} or \href{https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.1.tar.gz?raw=true}{\texttt{ Git\+Hub}}

The \href{https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.1.tar.gz.hashsum?raw=true}{\texttt{ hashsums are\+:}}


\begin{DoxyItemize}
\item author\+: mpranj
\item file\+: elektra-\/0.\+9.\+1.\+tar.\+gz
\item size\+: 7534156
\item md5sum\+: 42ff587adb7c3f15807ac4dae6722261
\item sha1\+: bf250260a4efa20e5444f0a7f0027430bc7aa8a0
\item sha256\+: df1d2ec1b4db9c89c216772f0998581a1cbb665e295ff9a418549360bb42f758
\end{DoxyItemize}

The release tarball is also available signed by Mihael Pranjic using Gnu\+PG from \href{https://www.libelektra.org/ftp/elektra/releases/elektra-0.9.1.tar.gz.gpg}{\texttt{ here}} or on \href{https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.9.1.tar.gz.gpg?raw=true}{\texttt{ Git\+Hub}}

Already built API documentation can be found \href{https://doc.libelektra.org/api/0.9.1/html/}{\texttt{ here}} or on \href{https://github.com/ElektraInitiative/doc/tree/master/api/0.9.1}{\texttt{ Git\+Hub}}.\hypertarget{doc_news_2019-11-26_0_9_1_md_autotoc_md3678}{}\doxysection{Stay tuned!}\label{doc_news_2019-11-26_0_9_1_md_autotoc_md3678}
Subscribe to the \href{https://www.libelektra.org/news/feed.rss}{\texttt{ 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 \href{http://issues.libelektra.org}{\texttt{ on Git\+Hub}}.

\href{https://www.libelektra.org/news/0.9.1-release}{\texttt{ Permalink to this NEWS entry}}

For more information, see \href{https://libelektra.org}{\texttt{ https\+://libelektra.\+org}}

Best regards, \href{https://www.libelektra.org/developers/authors}{\texttt{ Elektra Initiative}} 