10 research outputs found

    Learn React Hooks: build and refactor modern React.js applications using Hooks

    No full text
    This ultimate guide on React Hooks helps you modernize managing state and effects in React apps using Hooks. You will learn various types of Hooks and how it integrates with Context and Suspense APIs. You will create custom Hooks and learn to use Hooks with Redux and MobX. Lastly, you will learn to migrate your existing React applications to Hooks

    A recommender system for the matchmaking of event participants

    No full text
    Viele Teile unseres Lebens werden in letzter Zeit digitalisiert. Insbesondere Veranstaltungen, die traditionell persönlich abgehalten wurden, wechseln nun zu digitalen und hybriden Formaten. Solche Formate erschweren es, die richtigen Personen zu treffen, insbesondere bei großen Veranstaltungen. Ziel dieser Arbeit ist es, ein Empfehlungssystem ("Recommender System") für Business-to-Business (B2B)-Veranstaltungen zu entwerfen, zu implementieren und zu evaluieren, das jedem Teilnehmer eine personalisierte Liste von Teilnehmern zur Verfügung stellt, die für ihn oder sie von Interesse sein könnten. Dabei wird aus vergangenen Interaktionen gelernt und ausschließlich auf implizites Feedback wie Besuche, Lesezeichen, Nachrichten und gebuchte Meetings zurückgegriffen. Wir versuchen auch Empfehlungen für Teilnehmer zu machen, die keine vergangenen Interaktionen haben, indem wir ähnliche Benutzer in den Empfehlungsprozess einbeziehen. Die Daten werden von der Firma b2match bereitgestellt, die eine Online-Plattform zur Verwaltung von Veranstaltungen anbietet. Das Empfehlungssystem wird iterativ mit dem CRISP-DM- Prozess entwickelt, als eigenständiger Service implementiert und in die b2match-Plattform integriert. Um zu überprüfen, ob das Empfehlungssystem gut funktioniert, führen wir eine Offline-Evaluierung gegen Baselines (18 Veranstaltungen für die Entwicklung, 6 Veranstaltungen für die Evaluierung) und eine Online-Evaluierung auf 27 Veranstaltungen durch, die das Empfehlungssystem in der Produktion verwenden. Für die Bewertung mitteln wir die nDCG@10-Ranking-Metrik auf den personalisierten Listen von Teilnehmern aus, wobei jeder Teilnehmer eine Liste erhält. Die Ergebnisse sind vielversprechend. Das entwickelte Empfehlungssystem schneidet in einer Offline-Evaluierung signifikant besser ab als alle Baselines mit einem nDCG@10-Score von 0,1967. Die Ergebnisse der Baselines waren wie folgt: 0,0361 für eine Liste, die aus der Normalverteilung gezogen wurde (p = 0,0044), 0,0716 für ein Popularitätsranking (p = 0,0073), 0,0277 für zufällige Listen (p = 0,0045), 0,0452 für ein Ähnlichkeitsranking (p = 0,0051). Durch Hinzufügen eines hybriden Empfehlungssystems zur Lösung des Cold-Start-Problems konnten wir eine Verbesserung in Bezug auf nDCG@10 von 0,1967 auf 0,2227 (p = 0,0051) erreichen. Das entwickelte Empfehlungssystem erhöht auch die relative Anzahl erfolgreicher Meetings in einer Online-Evaluierung von 0,18% auf 0,31% (p = 0,0005). Unsere Studie kommt zu dem Schluss, dass Matrixfaktorisierungsalgorithmen auf unserem B2B-Event-Datensatz am besten abschneiden. Wenn ein Cold-Start-Szenario auftritt und keine Vorhersage für einen Teilnehmer getroffen werden kann, liefern personalisierte Empfehlungen auf der Grundlage von Interaktionsdaten ähnlicher Teilnehmer vielversprechende Ergebnisse.Recently, many parts of our lives are becoming digitized. Especially events, which were traditionally held in-person, are now migrating to digital and hybrid formats. Such formats make it harder to find the right people to meet, particularly at large events. The goal of this thesis is to design, implement and evaluate a recommender system for business-to-business (B2B) events that provides to each participant a personalized list of participants that might be of interest to them, by learning from past interactions, relying exclusively on implicit feedback, such as visits, bookmarks, messages and meetings booked. We also attempt to make recommendations for participants that have no past interactions, by incorporating similar users into the recommendation process. Data is provided by the company b2match, which provides an online platform for managing events. The recommender system is developed iteratively using the CRISP-DM process, implemented as a standalone service, and integrated into the b2match platform. To verify that the recommender system works well, we do an offline evaluation against baselines (18 events for development, 6 events for evaluation) and an online evaluation on 27 events that use the recommender system in production. For the evaluation we average the nDCG@10 ranking metric on the personalized lists of participants, one list provided for each participant. The results are promising. The developed recommender system performs significantly better than all baselines in an offline evaluation, with an nDCG@10 score of 0.1967. The results of the baselines were as follows: 0.0361 for a list sampled from the normal distribution (p = 0.0044), 0.0716 for a popularity ranking (p = 0.0073), 0.0277 for random lists (p = 0.0045), 0.0452 for a similarity ranking (p = 0.0051). Adding a hybrid recommender to solve the cold start problem, we were able to achieve an improvement in terms of nDCG@10 from 0.1967 to 0.2227 (p = 0.0051). The developed recommender also increases the relative number of successful meetings in an online evaluation from 0.18% to 0.31% (p = 0.0005). Our study concludes that matrix factorization-based algorithms perform best on our B2B event data set. When a cold-start scenario arises and a prediction cannot be made for a participant, providing personalized recommendations based on interaction data from similar participants yields promising results

    Elaphidion scabricolle

    No full text
    <i>Elaphidion scabricolle</i> (Bates, 1872) <p>(Figs 1–6)</p> <p> <i>Hypermallus scabricollis</i> Bates, 1872: 175.</p> <p> <b>Remarks.</b> The description of this species was based on one female from Nicaragua. Monné & Hovore (2006) listed the species from Panama and Maes <i>et al.</i> (2010) listed Costa Rica. Since no specimens from Costa Rica were listed in Maes <i>et al</i>. (2010), and the species was not previously known from there, it is not possible to know what the reason was for listing this country as one of the places where this species occurs. In the same way, since there are no specimens from Panama listed in Monné & Hovore (2006), we cannot be sure about the identity of the specimens used by them to include that country as an area of occurrence for this species. Here we are listing two specimens from Panama, confirming the occurrence in this country.</p> <p> Distinction between <i>Elaphidion</i> and <i>Anelaphus</i> Linsley, 1936 is sometimes problematic. The features reported to distinguish the two genera (<i>e.g.</i> Lingafelter & Ivie 2004) are not reliable due to their variability in the species of both genera. Consequently, both genera include species that are aberrant with respect to the definition of their genera. <i>Elaphidion scabricolle</i> appears to agree much better with a typical <i>Anelaphus</i> than with nearly all species of <i>Elaphidion</i>. However, based on the chaotic situation in both genera, the transference would be more speculative than based on reliable features.</p> <p> The prothoracic sculpturing in males and females of this species is very different (sexual dimorphism): very fine and dense on pronotum and sides of prothorax in males (Figs 2, 4, 6); coarse, almost alveolate in females (Figs 1, 3, 5). The same occurs at least in some other species, such as <i>Anelaphus souzai</i> (Zajciw, 1964) and <i>Elaphidion glabriusculum</i> (Bates, 1885). A full taxonomic revision of <i>Elaphidion</i>, <i>Anelaphus</i>, and some other similar genera of Elaphidiini is needed in order to correctly allocate their species.</p> <p> According to Bates (1885) <i>Elaphidion glabriusculum</i> (Bates, 1885) is very similar to <i>E. scabricolle</i> but differs by the elytral apex straightly truncate, not deeply sinuous and bispinose, and “Besides the mode of truncature of the elytra, this species [<i>E. glabriusculum</i>] differs from the closely allied <i>H. scabricollis</i> (the type specimen of which is a female) in the thorax of the female not being alveolate-punctate, the whole body much more thinly pubescent, and the elytra having very much fewer specks of tomentum.” As we noted that the shape of the elytral apex is variable even in specimens without abundant elytral pubescence, it is probable that <i>E. glabriusculum</i> is a junior synonym of <i>E. scabricolle</i>. However, it will be necessary to examine the type series of <i>E. glabriusculum</i> to be sure.</p> <p> <b>Material examined.</b> PANAMA, <i>Bocas del Toro</i>: Fortuna Cabins, 8.7814ºN 82.1909ºW, UV light, 1 male, 1 female, 23–30.V.2022, E.G. Riley leg. (DHCO). <i>Ngöbe-Buglé</i>: La Verrucosa, Fortuna Forest Reserve, 8.78008ºN 82.19103ºW, 1 male, 1.VI.2019, A. Kozlov & Y. Kovaleva leg. (MZSP).</p>Published as part of <i>Heffern, Daniel & Santos-Silva, Antonio, 2023, American fauna of Cerambycidae and Disteniidae (Coleoptera): new species, new records, and notes, pp. 45-57 in Zootaxa 5296 (1)</i> on page 46, DOI: 10.11646/zootaxa.5296.1.4, <a href="http://zenodo.org/record/7970139">http://zenodo.org/record/7970139</a&gt

    ElektraInitiative/libelektra: 0.9.13 Release

    No full text
    guid: e8fd116d-12ab-4281-aaf3-b6441056dd63 author: Mihael Pranjić pubDate: Tue, 14 Mar 2023 10:05:11 +0100 shortDesc: Bugfix, Ubuntu Packages We are proud to release Elektra 0.9.13. 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 The main purpose of this bugfix release is to fix a regression (#4859) introduced in Elektra 0.9.12. We added fresh Ubuntu Jammy Jellyfish (22.04 LTS) and Kinetic Kudu (22.10) packages. Please refer to the Elektra 0.9.12 release notes for a complete list of changes. Due to breaking changes since 0.9.11 we highly recommend to read the upgrade instructions. Plugins The following text lists news about the plugins we updated in this release. spec Add hook placement to spec plugin in README (Tomislav Makar @tmakar) gopts Add hook placement to gopts plugin in README (Tomislav Makar @tmakar) internalnotifications Add Maximilian Irlinger as maintainer (Maximilian Irlinger @atmaxinger) logchange Add Maximilian Irlinger as maintainer (Maximilian Irlinger @atmaxinger) dbus Add Maximilian Irlinger as maintainer (Maximilian Irlinger @atmaxinger) Libraries The text below summarizes updates to the C (and C++)-based libraries of Elektra. tools Check for hook placement on plugin-check (Tomislav Makar @tmakar) merge Add Maximilian Irlinger as maintainer (Maximilian Irilnger @atmaxinger) Documentation .github rework (Markus Raab) Added hook to placements contract in CONTRACT.ini (Tomislav Makar @tmakar) Added hook information to hooks.md Add correct error code in hosts readme (Tomislav Makar) Build CMake Add infos/maintainer in plugins. (Maximilian Irlinger @atmaxinger) Docker Add Ubuntu Jammy Jellyfish (22.04 LTS) images. (Mihael Pranjić @mpranj) Add Ubuntu Kinetic Kudu (22.10) images. (Mihael Pranjić @mpranj) Infrastructure Jenkins Add Ubuntu Jammy Jellyfish (22.04 LTS) builds and drop Bionic builds. (Mihael Pranjić @mpranj) Add Ubuntu Kinetic Kudu (22.10) builds. (Mihael Pranjić @mpranj) Outlook We are currently working on following topics: 1.0 API (Klemens Böswirth @kodebach) and (Stefan Hanreich) Session recording and better Ansible integration (Maximilian Irlinger @atmaxinger) Change tracking (Maximilian Irlinger @atmaxinger) Rewriting tools in C (@hannes99) Elektrify KDE and GNOME (Mihael Pranjić @mpranj) Elektrify XFCE (Richard Stöckl @Eiskasten) Mounting SQL databases (Florian Lindner @flo91) Recording Configuration (Maximilian Irlinger) Ansible-Elektra (Lukas Hartl) and (Maximilian Irlinger) Configure Olimex Base Images (Maximilian Irlinger) Improving Build Server Infrastructure (Lukas Hartl) and (Maximilian Irlinger) Improve Java Development Experience (Michael Tucek) Statistics We closed 5 issues for this release. About 7 authors changed 35 files with 1186 insertions(+) and 534 deletions(-) in 48 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.13.tar.gz size: 9297899 md5sum: 871eaaad39bc834ceb7fb42cb8de66f0 sha1: 68984021d08500693d692c2cb61eb3409fe75226 sha256: 9b7512d493c284afcca9875d093081c85c4cfe4926dea193202fbdc5fe89b468 The release tarball is also available signed using GnuPG from here or GitHub The following GPG Key was used to sign this release: 12CC44541E1B8AD9B66AFAD55262E7353324914A Already built API documentation can be found here or 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 Initiativ

    ElektraInitiative/libelektra: 0.9.14 Release

    No full text
    guid: 9e1e0790-e7ae-4947-9906-2c176a4f8dd2 author: Mihael Pranjić pubDate: Thu, 16 Mar 2023 14:43:04 +0100 shortDesc: Bugfix Release We are proud to release Elektra 0.9.14. 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 The main purpose of this bugfix release is to fix regressions (#4859) introduced in Elektra 0.9.12 and 0.9.13. Please refer to the Elektra 0.9.12 release notes for a complete list of changes. Due to breaking changes since 0.9.11 we highly recommend to read the upgrade instructions. Plugins The following text lists news about the plugins we updated in this release. timeofday Use separate symbols for set and commit functions to satisfy kdb plugin-check (@kodebach) Use new elektraPluginGetPhase() instead of counting executions (@kodebach) tracer Use separate symbols for set and commit functions to satisfy kdb plugin-check (@kodebach) Tests Enable more kdb plugin-check tests (@kodebach) Build Docker Fix conflicting Java versions in CentOS Stream 8 image (@kodebach) Outlook We are currently working on following topics: 1.0 API (Klemens Böswirth @kodebach) and (Stefan Hanreich) Session recording and better Ansible integration (Maximilian Irlinger @atmaxinger) Change tracking (Maximilian Irlinger @atmaxinger) Rewriting tools in C (@hannes99) Elektrify KDE and GNOME (Mihael Pranjić @mpranj) Elektrify XFCE (Richard Stöckl @Eiskasten) Mounting SQL databases (Florian Lindner @flo91) Recording Configuration (Maximilian Irlinger) Ansible-Elektra (Lukas Hartl) and (Maximilian Irlinger) Configure Olimex Base Images (Maximilian Irlinger) Improving Build Server Infrastructure (Lukas Hartl) and (Maximilian Irlinger) Improve Java Development Experience (Michael Tucek) Statistics We closed 2 issues for this release. About 4 authors changed 22 files with 299 insertions(+) and 139 deletions(-) in 14 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.14.tar.gz size: 9299478 md5sum: eb0f1d2e5d93bbae122999b5a27be343 sha1: 8d7a44ae6b4d53c52ab4219f955d6010f87682c8 sha256: e4632bb6baa78f6a68c312469e41fd1ef07406571749e32f2645b1858d01a58d The release tarball is also available signed using GnuPG from here or GitHub The following GPG Key was used to sign this release: 12CC44541E1B8AD9B66AFAD55262E7353324914A Already built API documentation can be found here or 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

    ElektraInitiative/libelektra: Website Release

    No full text
    Website Release <ul> <li>guid: 102b84a3-c41e-485c-8fe2-f12a24b3fbfd</li> <li>author: Marvin Mall</li> <li>pubDate: Thu, 22 Dec 2016 17:46:19 +0100</li> <li>shortDesc: introduces new Elektra website with snippet sharing</li> </ul> Highlight <ol> <li>Release of new Elektra website with an integrated service for sharing of configuration snippets.</li> <li>The website also supports conversion between different configuration formats.</li> <li>Website structures documentation and news sections in a new way.</li> </ol> Introduction <p>With Elektra developing into a more and more reliable as well as popular system to manage system configurations, the demand for a better public appearance increases as well. For this reason, we are happy to be able to announce the release of our new <a href="https://www.libelektra.org">website</a>!</p> <p>The new website does not only give us a chance to better present ourselves to the open world, it also enables us to structure our project documentation better. We hope that this will make it easier for our users to get started with Elektra and all of its awesome features!</p> <p>Besides the documentation, the website does also include a database that can be used to share, search, download and convert configuration snippets in various formats. We hope that this tool helps developers and administrators, but also anyone else to simplify their configuration processes when they have to look for a specific configuration snippet. Btw. with snippet we mean that you can also share parts of configuration files that you find particular useful!</p> <p>But sharing of snippets does not only help other users, it can help yourself as well because you can search for them easier. You also have access to the snippets in various formats at any time, allowing you to use them across multiple system by mounting them with the <a href="https://tree.libelektra.org/src/plugins/curlget">curlget</a> resolver!</p> The Website <p>The website was written by Marvin Mall in the course of his <a href="http://www.libelektra.org/ftp/elektra/mall2016rest.pdf">bachelor thesis</a> as part of the front-end he developed for his snippet sharing service. His main goals were to create a proper appearance for Elektra, but also to create a platform that promotes his service. We think that this worked out quite well by connecting the website with the service the way it was done.</p> Documentation <p>An important aspect of the new website was to make existing documentation more transparent and structured. A lot of documentation files have been changed to achieve this goal and an equal amount of effort was put into writing a system that decouples the documentation structure on the website from the structure used within the Elektra repository.</p> <p>The tutorials section was partially reworked to make the first steps together with Elektra easier for our users. Clearly the effort put into the tutorials is worth it. Thanks to Erik Schnetter for the valuable feedback where improvements are needed and Christoph Weber for (re)writing the tutorials!</p> <p>We should note -- as always in software -- that the structure on the website is not final yet and will definitely develop over time, especially the bindings and libraries sections will get some more attention.</p> <p>If you are interested in the techniques we use to structure our files, you can have a look at the <a href="https://blob.libelektra.org/src/tools/rest-frontend/README.md">rest-frontend readme</a>. The website is already the fourth view of our markdown pages! The others are man pages, doxygen, and github.</p> Homepage & News <p>Besides the documentation we also wanted a place to properly present ourselves and our news around Elektra. For this reason we created a new home page which shall give an overview of what Elektra is and can do. Additionally to that, we also added a news section to keep you better up-to-date!</p> <p>We hope that you enjoy our new appearance as much as we do!</p> Snippet Sharing <p>Another important part of the website and also without doubt the part that took most effort to create, is the service that allows for sharing of configuration snippets. It is run by a REST service fully built with the help of <a href="http://cppcms.com/">CppCMS</a> on basis of Elektra as data store. All data concerning snippets and user accounts is stored in Elektra's key database (of course with password being properly hashed).</p> <p>The service allows you to paste configuration snippets in various (supported) formats and to tag, describe and name them. This in return allows you to search snippets by keywords and to download them -- even in other formats than the format used for uploading.</p> <p>Clearly the service is meant to be driven by its users. Therefore we ask you to share your own configuration snippets, maybe they can be of help, e.g., be a time saver for someone else!</p> <p>Snippets shared with the service are <a href="https://www.libelektra.org/devgettingstarted/license">BSD licensed</a>. The snippets can also be downloaded directly as bundle from a separate <a href="https://github.com/ElektraInitiative/snippets">GitHub repository</a>. As soon as a snippet is added, changed or deleted on the website, a job that updates the repository is triggered. So you can expect the repository to be always up-to-date.</p> NoScript <p>The website is fully written with the help of AngularJS and is therefore heavily based on JavaScript. This should be no issue though as the website does only use resources that can be found in the official Elektra repository:</p> <ol> <li>So in case you cannot or do not want to use JavaScript, you can find all resources also <a href="https://git.libelektra.org">here</a>.</li> <li>If you are only worried about executed untrusted JavaScript, you can study and improve the <a href="https://blob.libelektra.org/src/tools/rest-frontend/README.md">Web Frontend</a>, which builds the website. Based on this, we hope you disable <code>NoScript</code> for our page so that you are able to share snippets!</li> </ol> Domains <p>All Elektra Domains directly hosted by us are now only served by <code>https</code>. The former <code>http</code> sites are only redirects to <code>https</code>. This might cause trouble with some software, e.g., update <code>/etc/apt/sources.list</code>:</p> <code>deb [trusted=yes] https://build.libelektra.org/debian/ wheezy main deb-src [trusted=yes] https://build.libelektra.org/debian/ wheezy main </code> <p>The build Server is no longer reachable at port 8080, but now only directly at <a href="https://build.libelektra.org/">https://build.libelektra.org/</a>.</p> <p>The new <a href="https://restapi.libelektra.org">RestApi</a> serves as backend for the website. For the docu, simply visit the site with your browser.</p> <p>While most <code>libelektra.org</code> now point to the new website, you can still directly go to <a href="https://git.libelektra.org">github</a> and also to the <a href="https://bugs.libelektra.org">bug tracker</a>.</p> <p>The old Wordpress installation was shut down because of security concerns.</p> Feedback <p>At this point there is not much more to say about the new website except for: Feel free to explore it!</p> <p>We greatly appreciate all feedback, be it for the website, the snippet sharing service or other parts of the Elektra project. We always have an open ear for suggestions and we also like to help with technical issues, simply <a href="https://bugs.libelektra.org">leave us a note on github</a>!</p> Stay tuned! <p>Subscribe to the reimplemented <a href="https://www.libelektra.org/news/feed.rss">RSS feed</a> to always get the release notifications.</p> <p>For any questions and comments, please contact the <a href="https://lists.sourceforge.net/lists/listinfo/registry-list">mailing list</a>, use the issue tracker <a href="https://bugs.libelektra.org">on github</a> or write an email to [email protected]. For issues or feedback concerning the website, you can also contact us at [email protected].</p> <p><a href="https://www.libelektra.org/news/website-release">Permalink to this NEWS entry</a></p> <p>For more information, see <a href="https://libelektra.org">https://libelektra.org</a></p> <p>Best regards, Marvin & Markus</p&gt

    ElektraInitiative/libelektra: 0.8.19 Release

    No full text
    <p>0.8.19 Release</p> <ul> <li>guid: 8e05231a-4f3d-488b-8dc2-5f0d5c474c39</li> <li>author: Markus Raab</li> <li>pubDate: Tue, 22 Nov 2016 22:04:59 +0100</li> <li>shortDesc: adds more tutorials, ruby bindings & cleanup of core</li> </ul> <p>What is Elektra?</p> <p>Elektra solves a non-trivial issue: how to abstract configuration in a way that software can be integrated and reconfiguration can be automated. Elektra solves this problem in a holistic way. Read why Elektra for an explanation of why such a solution is necessary. It can be seen as a virtual file system for configuration files.</p> <p>Highlights</p> <ul> <li>more tutorials and getting started guides</li> <li>new Ruby bindings</li> <li>cleanup of core (only 124K for main library on Debian/amd64)</li> </ul> <p>More Tutorials</p> <p>Elektra already has an open and welcoming environment, with many interesting discussions. It is our interest that we keep it that way. To make this a bit more formal we added a code of conduct.</p> <p>But without good introductions, it is easy to get lost in such a large initiative like Elektra. Thus we focused on writing great tutorials for this release!</p> <ul> <li>We wrote an overview readme</li> <li>We wrote new tutorials about mounting and validation (thanks to Christoph Weber)</li> <li>We wrote a readme to shell recorder transpiler which allows us to execute tutorials and verify that the examples in them work. (thanks to Thomas Waser)</li> <li>Lua and Python plugins got tutorials and better explanations! (Thanks to Marvin Mall)</li> <li>The doxygen docu now also uses links to directories, thanks to Kurt Micheli!</li> </ul> <p>Thanks to Armin Wurzinger for pointing to areas of improvement. A big thanks to Marvin Mall, Kurt Micheli, Christoph Weber and Thomas Waser!</p> <p>If you like the tutorials, we would love to read from you. Please feel free to start a discussion or ask a question. We also added a FAQ and updated CONTRIBUTING</p> <p>Ruby Bindings</p> <p>We now provide Ruby bindings for Elektra. The bindings are based on the C++ bindings and are generated by SWIG. A strong focus was put on a good integration with standard Ruby features and conventions, such as naming conventions, predicates, key and meta data iteration...</p> <p>A short introduction shows some basic usage scenarios. More detailed examples can be found in the examples directory.</p> <p>A big thanks to Bernhard Denner!</p> <p>Cleanup of Core</p> <p>Following methods were hidden (static) or removed:</p> <ul> <li>mount* methods</li> <li>trie* methods</li> <li>backend*</li> <li>split*</li> <li>keyGetParentNameSize</li> <li>keyGetParentName</li> </ul> <p>These are dozens of methods and it was required to adapt the unit tests to work with the hidden methods.</p> <p>A big thanks to Kurt Micheli!</p> <p>Usability</p> <ul> <li>Improved many error messages <ul> <li>spelling</li> <li>be more friendly to the user</li> <li>capitalization</li> <li>mention sudo !!</li> </ul> </li> <li>kdb set: do not print what was not done</li> <li>kdb editor handles non-modified files (will not do anything)</li> <li>Be more chatty about what kdb does, can be disabled with -q or /sw/elektra/kdb/#0/current/quiet.</li> <li>Furthermore, -v now tells even more details (e.g. kdb-import outputs the key about to import)</li> </ul> <p>Plugins New</p> <ul> <li>c plugin generates C code that represents configuration. This is useful for unit tests or if you need to have hard-coded fallback configuration in your C application.</li> <li>base64 plugin allows you to encode binary data. This is especially handy in combination with the crypto plugin to avoid problems with non-printable characters in configuration files. (Thanks to Peter Nirschl)</li> <li>fcrypt plugin allows you to fully encrypt configuration files. They are only decrypted when applications access them. (Thanks to Peter Nirschl)</li> <li>required plugin rejects every key that is not required by an application.</li> <li>simple spec lang allows you to define metadata for enum and required in a more compact way.</li> </ul> <p>Major Enhancements</p> <ul> <li>simpleini got a configurable format in which it will read and write configuration files. For example, one can use format=% -> % to have key -> value.</li> <li>enum got support for multi-enums, i.e., multiple separated values within one value. The error reporting was improved, too. (Thanks to Thomas Waser)</li> <li>glob accepts a list of named flags instead of an integer value and aborts matching after first hit. (Thanks to Felix Berlakovich)</li> <li>hosts now only accepts ipv4 and ipv6 keys. (Thanks to Felix Berlakovich)</li> </ul> <p>Development</p> <p>In the perpetual effort to improve software quality, we made several improvements: (This information is mainly intended for Elektra's developers.)</p> <ul> <li>A new logger encourages developers to write more comments (ELEKTRA_LOG)</li> <li>ELEKTRA_ASSERT prints better messages on failure and does not need && trick.</li> <li>get rid of previous VERBOSE macro at many places.</li> <li>Many assertions were added in the low-level helpers (memory management)</li> <li>Using the assertions we fixed some undefined behavior. (Thanks to Thomas Waser)</li> <li>added new configure-debian-debug and configure-debian-log helper scripts</li> <li>The build server now checks if builds with active logger and debugging work correctly.</li> <li>Improved Coding Style in crypto_botan (thanks to Peter Nirschl)</li> <li>add external-links.txt to outputs (The file is generated in the build directory and contains all external-links. To validate them, use ./scripts/link-checker) (Thanks to Kurt Micheli)</li> <li>markdownlinkconverter handles directories correctly (using stat). (Thanks to Kurt Micheli)</li> <li>Fixed compiler warning caused by libxml2 (different behavior since 2.9.4), thanks to René Schwaiger</li> <li>added often used links in main README</li> <li>Improve documentation about failing test cases and what to do about it.</li> <li>added decisions about plugin_variants and array. (Thanks to Marvin Mall)</li> <li>Rename to metadata, metakey, mountpoint (Thanks to Peter Nirschl)</li> <li>std::ios_base::showbase can be used to output metadata when streaming keys (C++)</li> <li>New infos/status: readonly, writeonly, limited (Thanks to Marvin Mall)</li> <li>The tool update-infos-status orders infos/status and allows devs to easily add/rem entries. (Thanks to Kurt Micheli)</li> <li>Automatic setting of infos/status: nodoc, nodep, unittest, memleak, configurable (Thanks to Kurt Micheli)</li> <li>Improve create_lib_symlink, add PLUGIN argument and make it useful also for other library symlinks.</li> <li>New markdown style applied to most markdown files. (Thanks to Marvin Mall)</li> <li>Tracer is now disabled, even for ENABLE_DEBUG. (Thanks to Marvin Mall)</li> <li>Updated SECURITY document</li> <li>Macro naming convention ELEKTRA_, added kdbmacros.h</li> <li>ENABLE_DEBUG also works with clang and ENABLE_ASAN now allows devs to additionally enable sanitizers. Thanks to Gabriel Rauter.</li> </ul> <p>Compatibility</p> <p>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).</p> <p>It is now possible to enquiry which plugins provide a specific format. This needed changes in libtools, which got a new major revision. Changes in the plugin's contract are fully compatible: You can now use storage/ini instead of storage ini in infos/provides which gives you the information that ini is a storage format (and not anything else the plugin might provide). For compatibility reasons, the build system still adds storage ini even if only storage/ini is specified.</p> <p>That means that kdb mount file.json /examples/json json still will find json plugins even if they are not called json but yajl.</p> <p>Another breaking change in libtools is that appendNamespace was renamed to prependNamespace.</p> <p>Error messages changed a bit, so if you tried to parse them, make sure to make the e of error case-insensitive ([eE]).</p> <p>In the C++ binding, rewindMeta is now const and some methods to check if a key is in a namespace were added.</p> <p>The intercept libraries were moved to a common folder. They can now be included or excluded like other BINDINGS. For consistency reasons the libraries were also renamed (libelektraintercept-fs.so and libelektraintercept-env.so.0), but symlinks allow you to link against their old names (lib/libelektraintercept.so and lib/libelektragetenv.so.0).</p> <p>Package Maintainers</p> <p>This information is intended for package maintainers.</p> <ul> <li>GI Bindings were removed from BINDINGS=ALL. It is recommended to use SWIG bindings instead, which will be added with ALL.</li> <li>Intercept libraries are part of BINDINGS. They will be added on glibc systems where BINDINGS=ALL is used.</li> <li>Documentation in textfiles is now installed, TARGET_DOCUMENTATION_TEXT_FOLDER was added for that purpose. The files are: <ul> <li>BIGPICTURE.md, GOALS.md, LICENSE.md, METADATA.ini, SECURITY.md, AUTHORS, CONTRACT.ini, NEWS.md, and WHY.md</li> </ul> </li> </ul> <p>Other new files are:</p> <ul> <li>Plugins: libelektra-base64.so, libelektra-c.so, libelektra-fcrypt.so `libelektra-required.so`, `libelektra-simplespeclang.so` (only in EXPERIMENTAL, not added by default, but with ALL)</li> <li>site_ruby/_kdb.so (ruby binding, only in ALL)</li> <li>testcpp_keyio, testkdb_error, testmod_base64, testmod_fcrypt (test binaries in TARGET_TOOL_EXEC_FOLDER)</li> </ul> <p>Changed files are:</p> <ul> <li>libelektraintercept-env.so (renamed from libelektragetenv.so., but still available as symlink)</li> <li>libelektraintercept-fs.so (renamed from libelektraintercept.so, but still available as symlink)</li> <li>version upgrade: libelektratools.so.2</li> </ul> <p>Portability</p> <p>Elektra should work on every system that has cmake and a C/C++ compiler.</p> <p>For this release we increased portability to better work with Mac OS X, CentOS 7, and OpenSuse 42.</p> <ul> <li>Mac OS X: <ul> <li>Travis build server now also build qt-gui</li> <li>Support for xcode8 added (xcode6 still supported)</li> </ul> </li> <li>fix lua != 5.2 issues (wrong output), update docu</li> <li>remove hard dependency to pkg-config</li> <li>remove hard dependency to version 3 of cmake (most parts still work with version 2)</li> <li>make search for swig 2 visible</li> <li>fix plugin names and mounting on OpenSuse 42.1</li> </ul> <p>A big thanks to Kai-Uwe Behrmann, Mihael Pranjić and Sebastian Bachmann.</p> <p>Fixed Issues</p> <ul> <li>simpleini: use correct error number when open file fails</li> <li>yajl: improve error message on non-utf8 text. (Thanks to Christoph Weber)</li> <li>drop multiple / from ~ paths (Thanks to Thomas Waser)</li> <li>fix failing testcases with ENABLE_DEBUG #988 (Thanks to Thomas Waser)</li> <li>csvstorage: files in source are rewritten #987 (Thanks to Thomas Waser)</li> <li>fix RTLD_NODELETE for OpenBSD (Thanks to Thomas Waser)</li> <li>better handle adding/deleting of read-only (info) plugins.</li> <li>fix behavior of multiple plugins setting errors (first error wins, later errors are transformed to warnings) (Thanks to Thomas Waser)</li> <li>fix resolver logic for missing files</li> <li>regex string in conditionals (Thanks to Thomas Waser)</li> <li>use KDB environment variable in shell tests and fix counting of tests for kdb run_all.</li> <li>output to stderr for elektrify-* scripts</li> <li>make desktop plugin mountable</li> <li>avoid cmake warnings in make uninstall (avoid @)</li> <li>fix quoting in ini plugin (Thanks to Thomas Waser)</li> <li>fix plugin names and mounting with plugin pre/postfixes (Thanks to Kai-Uwe Behrmann)</li> <li>mount-openicc: rename to openicc.json (Thanks to Kai-Uwe Behrmann)</li> </ul> <p>Get It!</p> <p>You can download the release from here and also here on github</p> <ul> <li>name: elektra-0.8.19.tar.gz</li> <li>size: 2681639</li> <li>md5sum: 6669e765c834e259fb7570f126b85d7e</li> <li>sha1: 82cefe4cea58d6e6b0a99ddbda24d1b57e98d93a</li> <li>sha256: cc14f09539aa95623e884f28e8be7bd67c37550d25e08288108a54fd294fd2a8</li> </ul> <p>This release tarball now is also available signed by me using gpg</p> <p>already built API-Docu can be found here</p> <p>Stay tuned!</p> <p>Subscribe to the RSS feed to always get the release notifications.</p> <p>For any questions and comments, please contact the Mailing List the issue tracker on github or by email [email protected].</p> <p>Permalink to this NEWS entry</p> <p>For more information, see http://libelektra.org</p> <p>Best regards, Markus</p>Elektra serves as a universal and secure framework to access configuration parameters in a global, hierarchical key database. Elektra Elektra provides a mature, consistent and easily comprehensible API. Its modularity effectively avoids code duplication across applications and tools regarding configuration tasks. Elektra abstracts from cross-platform-related issues and allows applications to be aware of other applications' configurations, leveraging easy application integration

    ElektraInitiative/libelektra: Release 0.8.21

    No full text
    0.8.21 Release <p>We are proud to release Elektra 0.8.21.</p> <ul> <li>guid: 7f5de1b1-6086-47a6-9922-cac08c898ae7</li> <li>author: Markus Raab</li> <li>pubDate: Fri, 22 Dec 2017 09:24:02 +0100</li> <li>shortDesc:</li> </ul> What is Elektra? <p>Elektra serves as a universal and secure framework to access configuration settings in a global, hierarchical key database. For more information, visit <a href="https://libelektra.org">https://libelektra.org</a>.</p> <p>The news can be read rendered at <a href="https://www.libelektra.org/news/0.8.21-release">our web server</a>.</p> Highlights <p>In this release 8 authors created 307 commits and we changed 217 files (5227 insertions, 1914 deletions). The highlights of the release are:</p> <ul> <li>Fosdem Talk about Elektra was accepted</li> <li>CC-licensed book about Elektra published</li> <li>Maturing of plugins</li> <li>Elektra with encryption</li> <li>Preparation for switch to INI as default storage</li> </ul> Fosdem Talk about Elektra in Main Track <p>We are happy to announce that there will be a talk about Elektra in one of the main tracks of <a href="https://fosdem.org/2018">Fosdem 2018</a>:</p> <ul> <li>Title: Configuration Revolution</li> <li>Subtitle: Why it Needed 13 Years and How it Will be Done </li> <li>Day: Saturday 2018-02-03</li> <li>Start time: 15:00:00</li> <li>Duration: 50 min</li> <li>Room: K.1.105 (La Fontaine)</li> </ul> <p>And a second talk in the Config Management DevRoom:</p> <ul> <li>Title: Breaking with conventional Configuration File Editing</li> <li>Subtitle: Puppet with a Key/Value API in a User Study</li> <li>Day: Sunday 2018-02-04</li> <li>Start time: 30:00</li> <li>Duration: 25min</li> <li>Room: UA2.114 (Baudoux)</li> </ul> <p>See you in Brussels at 3 and 4 February 2018!</p> <p>I will also be present in the <a href="http://cfgmgmtcamp.eu/">Config Management Camp</a> directly after Fosdem in Gent.</p> CC-licenced Book About Vision of Elektra Published <p>I am proud to release a book with the title "Context-aware Configuration" describing:</p> <ul> <li>the last 13 years of Elektra (focus on last 4 years with the questionnaire survey and code analysis),</li> <li>the current state of Elektra, and</li> <li>the long-term goals of Elektra (context-aware configuration).</li> </ul> <p>The Fosdem talk will cover some highlights from the book.</p> <p>A huge thanks to everyone involved in the questionnaire survey, without you we would not have been able to collect all the information that led to the requirements for Elektra.</p> <p>The LaTeX sources are available <a href="https://book.libelektra.org">here</a> and the compiled book can be downloaded from <a href="https://book.libelektra.org/raw/master/book/book.pdf">here</a>.</p> Maturing of Plugins <ul> <li>The new <a href="https://www.libelektra.org/plugins/directoryvalue">Directory Value plugin</a> supports storage plugins such as <a href="https://www.libelektra.org/plugins/yajl">YAJL</a> and <a href="https://www.libelektra.org/plugins/yamlcpp">YAML CPP </a>. It adds extra leaf values for directories (keys with children) that store the data of their parents. This way plugins that normally are only able to store values in leaf keys are able to support arbitrary key sets.</li> <li>The <a href="https://www.libelektra.org/plugins/yamlcpp">YAML CPP plugin</a> reads and writes <a href="http://yaml.org">YAML</a> data using <a href="https://github.com/jbeder/yaml-cpp">yaml-cpp</a>. The plugin supports arrays, binary data and metadata.</li> <li>The <a href="https://www.libelektra.org/plugins/camel">Camel plugin</a> stores data as simplified YAML flow lists containing double quoted keys and values. For proper YAML support please use the <a href="https://www.libelektra.org/plugins/yamlcpp">YAML CPP</a> instead.</li> <li>The <a href="https://www.libelektra.org/plugins/mini">mINI plugin</a> reads and writes simple property list, separated by equal (<code>=</code>) signs.</li> <li>The <a href="https://www.libelektra.org/plugins/xerces">xerces plugin</a> allows Elektra to read and write XML data. The plugin uses <a href="http://xerces.apache.org/xerces-c">Xerces-C++</a> for this task. It supports both arrays and metadata.</li> <li>The <a href="https://www.libelektra.org/plugins/boolean">boolean plugin</a> normalizes boolean values such as <code>0</code>, <code>1</code>, <code>true</code> and <code>false</code>.</li> <li>The <a href="https://www.libelektra.org/plugins/crypto">crypto plugin</a> and <a href="https://www.libelektra.org/plugins/fcrypt">fcrypt plugin</a> are described below.</li> </ul> Elektra With Encryption <p>The plugins <code>fcrypt</code> and <code>crypto</code> are now considered stable. They are no longer tagged as <code>experimental</code>. While <code>crypto</code> encrypts individual values within configuration files, <code>fcrypt</code> encrypts and/or signs the whole configuration file.</p> <p>For this release Peter Nirschl prepared a demo showing Elektra's cryptographic abilities:</p> <p><a href="https://asciinema.org/a/153014"></a></p> <p>Thanks to Peter Nirschl for this great work!</p> Switch to INI <p>We plan to switch to INI as default storage instead of Elektra's infamous internal dump format.</p> <p>As preparation work we implemented the <code>dini</code> plugin which transparently converts all <code>dump</code> files to <code>ini</code> files on any write attempt. Furthermore, we fixed most of the INI bugs which blocked INI to be the default storage.</p> <p>Due to this progress we will likely switch to INI as default starting with the next release. If you want to, you can switch now by compiling Elektra with:<br> <code>-DKDB_DEFAULT_STORAGE=dini</code></p> <p>Or simply switch for your installation with:<br> <code>sudo kdb change-default-storage dini</code></p> <p>If you are already using <code>ini</code> as default, changing to <code>dini</code> will:</p> <ul> <li>add some overhead because <code>dini</code> always checks if a file uses the <code>dump</code> format, unless the <code>dump</code> plugin is not installed.</li> <li>add support for binary values using the <code>binary</code> plugin</li> </ul> <blockquote><p>NOTE: INI (dini) was not completely ready for 0.8.21 thus we kept <code>dump</code> as default. <code>dini</code> is currently an experimental plugin.</p> </blockquote> Other New Features <p>We added even more functionality, which could not make it to the highlights:</p> <ul> <li><code>kdb rm</code> now supports <code>-f</code> to ignore non-existing keys</li> <li>use <code>%</code> as profile name to disable reading from any profile</li> <li><p>The new function <code>elektraArrayDecName</code>:</p> <code class="lang-c">int elektraArrayDecName (Key * key); </code> <p>decreases the index of an array element by one. It can be used to reverse the effect of <code>elektraArrayIncName</code>, thanks to René Schwaiger</p> </li> </ul> Documentation <p>We improved the documentation in the following ways:</p> <ul> <li>We renamed our beginner friendly issues to "good first issue" as recommended by GitHub.</li> <li>In many parts of the documentation we already switched to American spelling thanks to René Schwaiger</li> <li>Added more <a href="https://master.libelektra.org/scripts/sed">automatic spelling corrections</a> thanks to René Schwaiger</li> <li>Fixed many spelling mistakes thanks to René Schwaiger</li> <li>We extended the ReadMe of the <code>jni</code> plugin. The ReadMe now also contains information about the Java prerequisites of the <code>jni</code> plugin on Debian Stretch.</li> <li>Improved notes about testing thanks to Thomas Wahringer</li> <li>qt-gui: give hints which package to install</li> <li>The build phrases <code>jenkins build all please</code> and <code>jenkins build doc please</code> were <a href="https://master.libelektra.org/doc/GIT.md">documented</a> thanks to René Schwaiger</li> <li>Documentation for libelektra-invoke was added</li> </ul> Compatibility <p>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).</p> <p>All unit tests of 0.8.20 run successfully with Elektra 0.8.21. There are, however, some additions and changes in rarely used interfaces:</p> <ul> <li>added <code>elektraArrayDecName</code> and <code>elektraArrayValidateName</code> in libease</li> <li>fixed <code>kdbinvoke.h</code> interface: make structure private and complete API</li> <li>fixed <code>xmlns</code> and <code>xsi:schemaLocation</code> to be <code>https://www.libelektra.org</code></li> <li>the private header file <code>kdbopmphm.h</code> got nearly rewritten</li> </ul> Notes for Maintainer <p>These notes are of interest for people maintaining packages of Elektra:</p> <ul> <li>We added the following files in this release:<ul> <li><code>libelektra-dini.so</code></li> <li><code>libelektra-directoryvalue.so</code></li> <li><code>testmod_directoryvalue</code></li> </ul> </li> <li>The following plugins are not marked as experimental anymore:<ul> <li><code>camel</code></li> <li><code>crypto</code></li> <li><code>mini</code></li> <li><code>xerces</code></li> <li><code>yamlcpp</code></li> </ul> </li> <li>The binding <code>intercept-fs</code> is now marked more clearly as experimental</li> <li>The <code>lua</code> and <code>jni</code> plugins are again experimental because they do not work with some Lua/Java interpreters.</li> </ul> Notes for Elektra's Developers <p>These notes are of interest for people developing Elektra:</p> <ul> <li>From now on release notes are written as part of PRs</li> <li>Elektra Initiative is spelled as two words</li> <li>At some more places we switched to use the logger, thanks to René Schwaiger</li> <li>Shell Recorder got many improvements, see below in Testing. Please use it.</li> <li>The plugin's template now adds all placements within backends by default (must be removed accordingly).</li> <li>We now warn if plugins do not have any placement.</li> <li>Please prefer -log and -debug builds</li> <li>The build server now understands the build phrase <code>jenkins build all please</code> thanks to René Schwaiger. Please use it carefully, since it puts our <a href="https://build.libelektra.org/">build server</a> under heavy load.</li> <li>Markdown Shell Recorder Syntax recommended when reporting bugs.</li> <li>Elektra's <a href="https://master.libelektra.org/doc/docker/Dockerfile">Dockerfile</a> was improved and simplified, thanks to Thomas Wahringer.</li> <li>Add more Explanations how to do Fuzz Testing</li> <li>Started documenting disabled tests in <a href="https://master.libelektra.org/doc/todo/TESTING">doc/todo/TESTING</a></li> <li>You now can use <code>tests/icheck.suppression</code> to disable already checked API changes.</li> <li>The (hopefully) last Sourceforge references were removed and a redirection page was added, thanks to @the-Arioch for reporting.</li> </ul> Testing <ul> <li>AFL unveiled some crashes in INI code</li> <li>fix OCLint problems, thanks to René Schwaiger</li> <li>fix ASAN problems, thanks to René Schwaiger</li> <li>disabled non-working tests</li> <li>Shell recorder</li> <li>Benchmark optionally also works with OpenMP, thanks to Kurt Micheli</li> <li>The Shell Recorder now uses <code>kdb-static</code> or <code>kdb-full</code> if <code>kdb</code> is not available (<code>BUILD_SHARED=OFF</code>)</li> </ul> Fixes <p>Many problems were resolved with the following fixes:</p> <ul> <li>fix use of <code>dbus_connection_unref(NULL)</code> API thanks to Kai-Uwe Behrmann</li> <li>Properly include headers for <code>std::bind</code> thanks to Nick Sarnie</li> <li>qt-gui: assure active focus on appearance selection window thanks to Raffael Pancheri</li> <li>René Schwaiger repaired the <code>boolean</code> plugin:<ul> <li>wrong metadata was used</li> <li>plugin configuration was missing</li> <li>documentation was missing</li> <li>logging code was added</li> </ul> </li> <li>René Schwaiger repaired many problems different build agents had</li> <li><code>kdb info -l</code> does not open <code>KDB</code> anymore.</li> <li><code>change-resolver-symlink</code> and <code>change-storage-symlink</code> now correctly use <code>@TARGET_PLUGIN_FOLDER@</code></li> <li>date plugin will be removed on attempts to compile it with gcc 4.7, thanks to René Schwaiger</li> <li>C plugin: storage/c metadata added</li> <li>fix disabling documentation in CMake, thanks to Kurt Micheli</li> <li>Simplify <code>elektraArrayValidateName</code>, thanks to René Schwaiger</li> </ul> Outlook <p>The Order Preserving Minimal Perfect Hash Map (OPMPHM) is ready to extend <code>ksLookup</code>. The implementation of the randomized Las Vegas hash map algorithm is in a final stage and the heuristic functions that ensure time and space optimality are backed up by benchmarks. Thanks to Kurt Micheli, the next release will include the OPMPHM!</p> Get It! <p>You can download the release from <a href="https://www.libelektra.org/ftp/elektra/releases/elektra-0.8.21.tar.gz">here</a> or <a href="https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.21.tar.gz?raw=true">GitHub</a></p> <p>The <a href="https://github.com/ElektraInitiative/ftp/blob/master/releases/elektra-0.8.21.tar.gz.hashsum?raw=true">hashsums are:</a></p> <ul> <li>name: elektra-0.8.21.tar.gz</li> <li>size: 4712043</li> <li>md5sum: d627a01a0249fde46e80042c848d4521</li> <li>sha1: a7659a7bb1b2388d03cdf0084160de612e5c4511</li> <li>sha256: 51892570f18d1667d0da4d0908a091e41b41c20db9835765677109a3d150cd26</li> </ul> <p>The release tarball is also available signed by me using GnuPG from <a href="https://www.libelektra.org/ftp/elektra/releases/elektra-0.8.21.tar.gz.gpg">here</a> or <a href="https://github.com/ElektraInitiative/ftp/blob/master/releases//elektra-0.8.21.tar.gz.gpg?raw=true">GitHub</a></p> <p>Already built API-Docu can be found <a href="https://doc.libelektra.org/api/0.8.21/html/">online</a> or <a href="https://github.com/ElektraInitiative/doc/tree/master/api/0.8.21">GitHub</a>.</p> Stay tuned! <p>Subscribe to the <a href="https://www.libelektra.org/news/feed.rss">RSS feed</a> to always get the release notifications.</p> <p>For any questions and comments, please contact the issue tracker <a href="http://issues.libelektra.org">on GitHub</a> or me by email using [email protected].</p> <p><a href="https://www.libelektra.org/news/0.8.21-release">Permalink to this NEWS entry</a></p> <p>For more information, see <a href="https://libelektra.org">https://libelektra.org</a></p> <p>Best regards, Markus Raab for the <a href="https://www.libelektra.org/developers/authors">Elektra Initiative</a></p&gt

    ElektraInitiative/libelektra: 0.9.12 Release

    No full text
    guid: F2193578-1773-43A9-85CA-79EA8CE48D7B author: Mihael Pranjić pubDate: Fri, 03 Mar 2023 08:07:28 +0100 shortDesc: New Backend Logic, Copy-on-Write, FLOSS Course We are proud to release Elektra 0.9.12. 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 New Backend Copy-on-Write FLOSS New Backend The entire logic for backends has been rewritten, to allow for more flexibility und an unlimited number of plugins. Instead of calling plugins directly, libelektra-kdb now only calls so-called backend plugins and special hook plugins. There is a contract between libelektra-kdb and the backend plugins. All backend plugins must adhere to this contract. To achieve this goal, most backend plugins will call other plugins (like libelektra-kdb did previously). The logic previously implemented in libelektra-kdb was moved to the new default backend plugin backend. It works like the old system, but now also allows an unlimited number of plugins in positions where that makes sense. For example, you can have unlimited postgetstorage plugins, but only a single getresolver. There have also been slight changes to kdbGet and kdbSet. Please read their API docs to find out, if you rely on any behavior that has been altered. You can also read the new low-level docs to find out all the intricate details. The structure of system:/elektra/mountpoints changed as well. Take a look at the new docs, if you need to know details. Updating config The mountpoint configuration format contains breaking changes and a manual upgrade process is needed. Follow these steps to upgrade the old mountpoint configuration to the new format: Warning: BACK UP YOUR CONFIG FILES BEFORE UPDATING! We recommend making a backup of the file printed by kdb file system:/elektra/mountpoints before updating your installation. In the unlikely case that the migration script fails, you can still use the information from the backup to manually recreate your mountpoints. To update your existing system:/elektra/mountpoints data you can use the migration script. Note: To run the script you must have Elektra, Python (>= 3.7) and the Python binding installed. The script uses the Python binding to manipulate Keys and KeySets, but it does not use the kdb CLI tool, or the KDB API. It is safe to run this script before, or after you update your Elektra installation. By default, the script loads the file /etc/kdb/elektra.ecf. If you changed where system:/elektra/mountpoints is stored, you can provide an alternative path: ./migrate-mountpoints.py /path/to/your/mountpoints/config.file Note: Because the script does not use the KDB API it only works, if the mountpoints config file uses the default dump format. If your mountpoints config file is not using the dump format, you may still be able to use the migration script. However, in that case, you will have to use the script before updating your Elektra installation: Run kdb export system:/elektra/mountpoints dump to get a copy of your mountpoints config in dump format Write this data to a file and run the migration script on the file. To get the data back in your original format you can use ./migrate-mountpoints.py /path/to/file/from/step2 | kdb convert dump your-format > /path/to/converted/file Run kdb file system:/elektra/mountpoints to find out where your mountpoint config is stored. Make sure to back up this file, before upgrading your installation. Now upgrade your Elektra installation. Copy the file /path/to/converted/file from step 3 to the location you got in step 4. The script will read the old mountpoint configuration from the given file. It will convert the configuration and print the new version to stdout. You can inspect the output to make sure, everything is in order. When you are ready to commit the changes, you can manually edit the config file, or use: ./migrate-mountpoints.py --output=/etc/kdb/elektra.ecf /etc/kdb/elektra.ecf Individual changes Implement hooks. (Maximilian Irlinger @atmaxinger) Removed old global plugins code. (Maximilian Irlinger @atmaxinger) New backend logic, based on PR #2969 by @vLesk. (@kodebach) Add script to migrate system:/elektra/mountpoints to new format. (@kodebach) Copy-on-Write Thanks to (Maximilian Irlinger @atmaxinger) our Key and KeySet datastructures are now fully copy-on-write! This means noticeably reduced memory usage for cases where keys and keysets are copied and/or duplicated! We ran some very promising benchmarks, each were performed with 400,000 keys. All benchmarks were executed using valgrind --tool=massif --time-unit=B --max-snapshots=200 --threshold=0.1. Benchmark Old Implementation Copy-on-Write Size Reduction Remarks createkeys.c 5.3 MiB 6.5 MiB -22 % deepdup.c 10.5 MiB 8.2 MiB 22 % large.c 18.9 MiB 15.3 MiB 19 % kdb.c 23.5 MiB 17.8 MiB 24 % kdbget.c 11.0 MiB 8.8 MiB 20 % kdbmodify.c 11.0 MiB 8.8 MiB 20 % Same results as kdbget.c First, it should be noted that a single key, without counting payload, is about 50% larger with the copy-on-write implementation. This explains why the createkeys.c benchmark yields a negative reduction result. This benchmark only allocates keys, so not much improvement can be expected there. Still, as other stuff also uses heap memory, the overall memory consumption only increased by 22%, which is far less than 50%. All other benchmarks saw meaningful reductions of heap memory used. One interesting observation is that kdbget.c and kdbmodify.c used exactly the same memory. This can most likely be explained by internal caching within the memory allocator of glibc. We also performed runtime tests on the same benchmarks using perf stat --repeat 13 to ensure no major performance regressions occur. Benchmark Old Implementation Deviation Copy-on-Write Deviation Runtime Increase createkeys.c 0.209572 s 0.36 % 0.21987 s 0.77 % 4.9 % deepdup.c 0.23025 s 0.47 % 0.231804 s 0.32 % 0.6 % large.c 1.14038 s 0.21 % 1.14837 s 0.21 % 0.7 % kdb.c 1.9270 s 2.63 % 1.93354 s 0.17 % 0.3 % kdbget.c 0.145663 s 0.17 % 0.15763 s 0.70 % 8.2 % kdbmodify.c 0.146506 s 0.19 % 0.156347 s 0.15 % 6.7 % Overall, the runtime performance hit is less than 10%. The more a program does, the less the additional overhead of the copy-on-write algorithms matter. One interesting detail is that keyCopy and keyDup have become quite a bit faster. This can be seen by comparing the differences between createkeys.c and deepdup.c. The differences are 21 ms for the old implementation and 12 ms for the copy-on-write implementation. FLOSS A Free/Libre and Open Source Software (FLOSS) Initiative couldn't survive with many small contributions fixing annoying problems. This release also contains all contributions done via one term of the FLOSS course. The success was tremendous, as shown in the rest of the release notes. A big thanks to the students for their contributions! Plugins The following text lists news about the plugins we updated in this release. yajl Fix an issue where trying to set invalid meta-keys won't show an error. (Juri Schreib @Bujuhu) list Removed the outdated list plugin. (Maximilian Irlinger @atmaxinger) (Was only needed for global plugins, which are now replaced by hooks.) logchange Made logchange a notification-send hook plugin. (Maximilian Irlinger @atmaxinger) toml Fix bug, where meta-keys that cannot be inserted don't report an error. (@Bujuhu) uname Add error handling if uname call fails. (Richard Stöckl @Eiskasten) quickdump elektraQuickdumpSet: don't fclose if stdout. (@hannes99) blockresolver Add encoding test for blockresolver read. (@dtdirect) Refactor and restructure blockresolver. (@dtdirect) desktop Add a unit test. (Richard Stöckl @Eiskasten) mini Fix a bug where writing meta-keys will fail silently. (Juri Schreib @Bujuhu) mmapstorage Remove code duplication in the data block calculation. (Richard Stöckl @Eiskasten) network Add a retry mechanism. (Richard Stöckl @Eiskasten) xfconf Add xfconf storage plugin with the ability to read and write to xfconf channels. (Richard Stöckl @Eiskasten) Make xfconf valgrind suppressions more flexible to lib updates. (Mihael Pranjić @mpranj) date Fix an issue with validationg RFC 822 date-times. (Juri Schreib @Bujuhu) (Nikola Prvulovic @Dynamichost96) Improve Code Coverage. (Juri Schreib @Bujuhu) (Nikola Prvulovic @Dynamichost96) csvstorage Fix a bug where writing unkown meta-keys will fail silently. (Juri Schreib @Bujuhu) Libraries The text below summarizes updates to the C (and C++)-based libraries of Elektra. Compatibility Global plugins do not work anymore, use hooks instead. Core The Key and KeySet datastructures are now fully copy-on-write. (Maximilian Irlinger @atmaxinger) keyCopy now only allocates additional memory if KEY_CP_META or KEY_CP_ALL is used. (Maximilian Irlinger @atmaxinger) Check for circular links (overrides). (@0x6178656c) io Check file flags for elektraIoFdSetFlags: file flags must be exactly one of: read only, write only or read write. (Richard Stöckl @Eiskasten) Merge Add methods elektraMergeGetConflictingKeys and elektraMergeIsKeyConflicting to check which keys were causing a merge conflict. (Maximilian Irlinger @atmaxinger) 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. intercept/env Remove fallback code. (Markus Raab) Command-line functionality is broken due to new-backend differences. intercept/fs Use KDB_MAX_PATH_LENGTH for better portability. (Markus Raab) jna Documentation: Improved build instructions. (@Bujuhu) Add validation on get for whitelist plugin. (@Bujuhu) Upgrade Gradle to 8.0.1. (Mihael Pranjić @mpranj) rust Fix "feature resolver is required" error. (Markus Raab) elixir Initial release of the Elixir binding. (@0x6178656c) Mark tests as memleak. (@0x6178656c) Tools kdb Removed global-mount and global-umount commands. (Maximilian Irlinger @atmaxinger) Fixed SIGSEGV when using kdb find without argument. (Christian Jonak-Moechel @joni1993) elektrad Removed leftover package-lock.json file. (stefnotch) Scripts Added automatic spelling corrections for changeset. (Maximilian Irlinger @atmaxinger) Introduce shebang-conventions. (@0x6178656c) Apply auto-fixes from shellcheck. (@0x6178656c) Use prettier 2.8.4. (Mihael Pranjić @mpranj) Add scripts to enable and disable pre-commit hooks. (Juri Schreib @Bujuhu) (Nikola Prvulovic @Dynamichost96) Only let http links pass the check if whitelisted. (Richard Stöckl @Eiskasten) Link Checker: Add documentation for the usage and how it behaves. (Richard Stöckl @Eiskasten) Sed: Add spelling correction for "key-value storage". (@Bujuhu) Fix/extends some shell recorder tests. (@Joni1993) Use clang-format v15. (Mihael Pranjić @mpranj) Fix warning parsing in shell recorder. (@Joni1993) Replaced egrep by grep -E. (@0x6178656c and @janldeboer) Add audit-dependencies script to check for vulnerabilities for npm depndencies. (Juri Schreib @Bujuhu) (Nikola Prvulovic @Dynamichost96) Documentation Restructured contrib/api. (Markus Raab). Improve page on compilation. (@0x6178656c) Improve page for bindings. (@0x6178656c) Improve page for getting started. (@stefnotch) Remove version number from docker README and replace it with latest. (@Joni1993) Fix grammar for elektra-granularity.md. (@dtdirect) Rephrase sections in doc/dev/error-\*. (@dtdirect) Improve Git.md. (Juri Schreib @Bujuhu) (Nikola Prvulovic @Dynamichost96) Unify spelling of man pages. (@stefnotch) (@janldeboer) Extend consistency check check_doc.sh to work for contrib, dev and tutorials. (@Joni1993) Fix internal links. (@0x6178656c) Update AUR Link from elektra to libelektra package. (@Bujuhu) Update example Ansible playbook in VISION.md. (@Bujuhu) Harmonize spelling of Git. (@Joni1993) Update packaging instructions for Fedora. (@0x6178656c) Improve use of gender. (@0x6178656c) Fix some minor mistakes in CONTRIBUTING.md. (@Joni1993) Fix various spelling errors. (@Joni1993) Denoted package names & global variable names in INSTALL.md as Code. (@janldeboer) Improve readability of doc/tutorials/highlevel.md. (@deoknats861) Improve reference to Podman documentation. (@0x6178656c) Unify spelling. (@Joni1993) Fix typo in dev/hooks.md. (@dtdirect) Remove unused images from doc/images. (@dtdirect) Fixed Coverage Badge Link. (@janldeboer) Improve CONTRIBUTING doc. (Juri Schreib @Bujuhu) and (Nikola Prvulovic @Dynamichost96) Update Doxyfile with Doxygen 1.9.4. (@0x6178656c) Add project logo to Doxygen in Doxyfile. (@dtdirect) Add mermaid.js to the project using doxygen-mermaid. (@dtdirect) Create diagrams in mermaid.js to use in doxygen. (@dtdirect) Create README for Doxygen and Mermaid JS. (@dtdirect) Tutorial: Add automatic validation to Docker tutorial (Schreib @Bujuhu) (Nikola Prvulovic @Dynamichost96) Add mention of audit-dependencies script in doc/todo/RELEASE.md. (@Bujuhu) Move note in GETSTARTED.md. (@Joni1993) Use code blocks to prevent Markdown from falsy rendering LaTeX. (@stefnotch), (@janldeboer) Fix broken links in use cases for KDB after files were renamed. (Florian Lindner @flo91) Replace http links with https. (Richard Stöckl @Eiskasten) Enhance notifications.md in doc/tutorial. (@dtdirect) Add tutorial how to suppress memleaks in plugins from dependencies. (Richard Stöckl @Eiskasten) Write about history to make plans of Elektra's adoption more clear. (Markus Raab) Use Cases Improve use cases Template. (@kodebach and Markus Raab) Use cases for KDB. (@kodebach) Use cases for libelektra-core. (@kodebach) Decisions Decide and implement decision process. (Markus Raab) Decided future library split. (@kodebach) Decided decision process. (Markus Raab) Draft for man pages. (Markus Raab) Add decision for change tracking. (Maximilian Irlinger @atmaxinger) Create decision for allowed and prohibited operation seqences. (Maximilian Irlinger @atmaxinger) Add decisions about location of headers and use of #include in the repo. (@kodebach) Add decision about metadata semantics. (@kodebach) Many small fixes to adapt to documentation guidelines and new decision process. (Markus Raab) Add decision for read-only keynames. (Maximilian Irlinger @atmaxinger) Revive keyname decision. (@kodebach) Add decisions for constructor functions and builder functions. (@kodebach) Add decision for copy-on-write and provide implementation suggestions. (Maximilian Irlinger @atmaxinger) Update internal cache. (Markus Raab) (@kodebach) Create transformations. (Maximilian Irlinger @atmaxinger) Replace TOC-style README.md with folders and generate HTML for website. (@kodebach) Restructured decisions directories based on new agreed-upon steps. (Maximilian Irlinger @atmaxinger) Decision for types of KeySets. (@kodebach) Added Documentation Guidelines. (Markus Raab) Add links and formatting to documents affected by PR#4492 (Document Guidelines) and rephrase some parts. (Florian Lindner @flo91) Decisions for changes to keyIsBelow and new keyGetNextPart functions. (@kodebach) Apply fix spelling to more files. (Markus Raab) Tutorials Add tutorial for manual installation from the AUR on Arch Linux. (@Bujuhu) Add Markdown shell recorder validation to install.webui.md. (@deoknats861) Fix the outdated array tutorial. (Juri Schreib @Bujuhu) (Nikola Prvulovic @Dynamichost96) Reinstate mounting tutorial. (@Bujuhu) Make namespaces tutorial verifiable. (@0x6178656c) Move Podman-related information to a dedicated page. (@0x6178656c) Man Pages Update man page (patch) as suggested by the CI to fix CI error on master. (Florian Lindner @flo91) Added links to the website & webui after further reading. (Philipp Nirnberger @nirnberger) Upgrade ronn-ng to 0.10.1.pre3. (Mihael Pranjić @mpranj) Tests Fix an Issue where scripts/dev/fix-spelling does not work, if a resolved path contains whitespaces. (Juri Schreib @Bujuhu) (Nikola Prvulovic @Dynamichost96) Rename scripts/sed to scripts/spelling.sed. (Juri Schreib @Bujuhu) (Nikola Prvulovic @Dynamichost96) Add memleak label to test_getenv. (@0x6178656c) Add test using shellcheck. (@0x6178656c) Remove --rerun-failed from run_* scripts. (@kodebach) Fix paths for icheck test. (Mihael Pranjić @mpranj) Shell Recorder Add check if file exists. (@0x6178656c) Packaging Add missing new backend plugin to components of libelektra package. (Mihael Pranjić @mpranj) Build CMake Fix warning for CMP0115. (0x6178656c) Change Doxygen configuration for LaTeX. (0x6178656c) Fix developer warning for package DISCOUNT. (Dennis Toth @dtdirect) Pass --stacktrace to gradle for the JNA builds. (Maximilian Irlinger @atmaxinger) Adapt npm build flags to remove reproducability issues. (Juri Schreib @Bujuhu) (Nikola Prvulovic @Dynamichost96) Fix creation of shell recorder tests. (@0x6178656c) Docker Update packagename libpcrec++-dev to libpcrecpp0v5 in Debian Sid. (Richard Stöckl @Eiskasten) Add shellcheck to Debian containers. (@0x6178656c) Use openjdk-17-jdk in Debian Sid. (Maximilian Irlinger @atmaxinger) Add Fedora 37 images. (Mihael Pranjić @mpranj) Update Debian Sid image to use repository Python modules instead of installing with pip3 due to upstream debian changes. (Mihael Pranjić @mpranj) Debian Bullsye: use clang 13. (Mihael Pranjić @mpranj) Update Alpine Linux to 3.17.2. (Mihael Pranjić @mpranj) Gradle Use Gradle 7.5.1. (Mihael Pranjić @mpranj) Update java-library.gradle to use archiveClassifier (Maximilian Irlinger @atmaxinger) Infrastructure Jenkins Add Fedora 37 builds, drop Fedora 35 builds. (Mihael Pranjić @mpranj) Run more tests also on Master. (Markus Raab) Move doc to main build stage. (Markus Raab) Disable parallel test runs. (Maximilian Irlinger @atmaxinger) Upgrade Jenkins node container to Debian bullseye. (@0x6178656c) Undo previous change that added automatic ctest --rerun-failed to Jenkins CI. (@kodebach) Cirrus Use Fedora 37. (Mihael Pranjić @mpranj) Fix macos_instance reference, upgrade to macOS Ventura (by default), use Python 3.11 and Ruby 3.x. (Mihael Pranjić @mpranj) Automatically rerun testmod_dbus* tests on macOS. (@kodebach) Fix dbus not starting on macOS. (Maximilian Irlinger @atmaxinger) GitHub Actions Add auto-cancellation-running action. (Tomislav Makar @tmakar) Automatically rerun testmod_dbus* tests on macOS. (@kodebach) Fix dbus not starting on macOS. (Maximilian Irlinger @atmaxinger) Change stale issue/PR checking to GitHub action. (@0x6178656c) Update configuration of stale issue/PR action. (@0x6178656c) Upgrade actions to recent versions and remove deprecated ruby-setup action. (Mihael Pranjić @mpranj) Website The website is generated from the repository, so all information about plugins, bindings and tools are always up-to-date. Furthermore, we changed: Fix broken /pythongen link on homepage. (@stefnotch) Fix redirect logic to not cause loops. (@stefnotch) Remove duplicated link to TESTING.md file. (@stefnotch), (@janldeboer) Restructure parts of the links on the website. (@stefnotch), (@janldeboer) Removed broken links to packages for Linux distributions. (@Dynamichost96) Update npm packages. (Mihael Pranjić @mpranj) Change URLs to say man-page with a dash. (@stefnotch) (@janldeboer) Outlook We are currently working on following topics: 1.0 API (Klemens Böswirth @kodebach) and (Stefan Hanreich) Session recording and better Ansible integration (Maximilian Irlinger @atmaxinger) Change tracking (Maximilian Irlinger @atmaxinger) Rewriting tools in C (@hannes99) Elektrify KDE and GNOME (Mihael Pranjić @mpranj) Elektrify XFCE (Richard Stöckl @Eiskasten) Mounting SQL databases (Florian Lindner @flo91) Recording Configuration (Maximilian Irlinger) Ansible-Elektra (Lukas Hartl) and (Maximilian Irlinger) Configure Olimex Base Images (Maximilian Irlinger) Improving Build Server Infrastructure (Lukas Hartl) and (Maximilian Irlinger) Improve Java Development Experience (Michael Tucek) Statistics We closed about 150 issues for this release. About 28 authors changed 960 files with 29400 insertions(+) and 20927 deletions(-) in 1421 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.12.tar.gz size: 9297913 md5sum: a6de9401709283b69ec211681f2a7757 sha1: cb4e282d1346fda771de7510663652555f8e6c7d sha256: 38238ba4a5318f999dc3045da06467abf529344dc46ad3fdf42bdca0155e149c The release tarball is also available signed using GnuPG from here or GitHub The following GPG Key was used to sign this release: 12CC44541E1B8AD9B66AFAD55262E7353324914A Already built API documentation can be found here or 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 Initiativ
    corecore