I've been trying to get buildah working in forgejo-runner for building container images on CI, and it's been a frustrating process. There are some posts around the web about this, but nothing that sums up a working solution that doesn't simply disable all security measures. I eventually pieced it together with a lot of trial and error, so here's a summary to hopefully save somebody else (or me in…
MDA.lv2 1.2.12 has been released. This is a port of the MDA VST plugins to LV2. Changes: Avoid over-use of yielding meson options Fix build with MSVC 2022 Fix strict aliasing violation Fix use of uninitialized values in TalkBox Improve const-correctness Remove development symbols from modules by default Use a deterministic and more uniform RNG
Jalv 1.10.0 has been released. Jalv (JAck LV2) is a simple host for LV2 plugins. It runs a plugin, and exposes the plugin ports to the system, essentially making the plugin an application. For more information, see http://drobilla.net/software/jalv . Changes: Add block length command-line parameter for PortAudio Fix PortAudio backend Fix crash with plugins that have non-event inputs Fix stale…
Zix 0.8.2 has been released. Zix is a lightweight C library of portability wrappers and data structures. Changes: Fix build with configure checks disabled Fix handling of invalid ring size parameters Fix potential out of bounds access on error
Jalv 1.8.2 has been released. Jalv (JAck LV2) is a simple host for LV2 plugins. It runs a plugin, and exposes the plugin ports to the system, essentially making the plugin an application. For more information, see http://drobilla.net/software/jalv . Changes: Add log window to Gtk interface Add separate menu item for saving current preset Clean up on exit from console interface Disable delete…
Lilv 0.28.0 has been released. Lilv is a C library to make the use of LV2 plugins as simple as possible for applications. Changes: Add early assertions for non-null parameters in public API Add lilv_state_get_bundle_path() Always create state files with O_CLOEXEC on glibc >= 2.7 Clarify relative symbolic link creation when saving state Fix build with dynmanifest support Fix crash when loading…
Serd 0.32.10 has been released. Serd is a lightweight C library for working with RDF data. Changes: Address new warnings in clang-tidy 22 Fix writing quotes at the end of long literals
Some irresponsible and/or malicious crawlers brought down lv2plug.in this week. To avoid this happening again, I've removed lv2plug.in/git entirely, since it was the only dynamic thing at that domain. There used to be a cgit interface to the repositories there, but I doubt anyone will miss this anyway. Everything else should now be back up and working as before.
Suil 0.10.26 has been released. Suil is a library for loading and wrapping LV2 plugin UIs. It provides wrappers that allow Gtk and Qt hosts to load, and potentially embed, plugin GUIs that use the "native" windowing API (Coca, WIN32, or X11). Changes: Add clang nullability annotations Address new warnings in clang and clang-tidy 21 Fix documentation build without sphinx_lv2_theme
Lilv 0.26.4 has been released. Lilv is a C library to make the use of LV2 plugins as simple as possible for applications. Changes: Add clang nullability annotations Address new warnings in clang and clang-tidy 21 Fix default LV2 path on cross-compiled Windows builds Fix loading of duplicate bundles with equivalent versions Fix potential crash when UIs have multiple types or binaries Use consistent…
Sratom 0.6.22 has been released. Sratom is a small library for serializing LV2 atoms. Sratom reads/writes atoms from/to RDF, allowing them to be converted between binary and text or stored in a model. Changes: Add clang nullability annotations Address new warnings in clang and clang-tidy 21 Fix documentation build without sphinx_lv2_theme Gracefully handle reading vectors with missing childType…
Sord 0.16.22 has been released. Sord is a lightweight C library for storing RDF statements in memory. Changes: Add clang nullability annotations Address new warnings in clang and clang-tidy 21 Make more API functions tolerate NULL
Serd 0.32.8 has been released. Serd is a lightweight C library for working with RDF data. Changes: Avoid use of snprintf() when writing Fix unbounded reader stack growth when reading NQuads Improve reader error handling Relax nullability of SerdNode buffer field Release reader stack memory on read error Strengthen handling of corrupt UTF-8 input Support writing all escapes in Turtle and TriG…
My simple single-plugin LV2 host, Jalv , isn't quite sure whether it's a developer utility or polished user program, but in any case, it had become stale in the past few years and needed an update. Most of those changes are internal and only interesting for those who use it as a basis for larger systems. The internals have been largely rewritten to support various things, but this post isn't about…
Jalv 1.8.0 has been released. Jalv (JAck LV2) is a simple host for LV2 plugins. It runs a plugin, and exposes the plugin ports to the system, essentially making the plugin an application. For more information, see http://drobilla.net/software/jalv . Changes: Add "quit" console command Add AppStream metainfo file Add Qt6 version Add missing short versions of command line options Add option to…
Lilv 0.26.2 has been released. Lilv is a C library to make the use of LV2 plugins as simple as possible for applications. Changes: Actually reload files if bundles are unloaded then reloaded Add support for loading xsd:float literals, "INF", and "NaN" Avoid warning about non-existent entries in LV2_PATH Fix crash when duplicate plugins are discovered Fix lilv_node_is_literal() with booleans Refine…
Sratom 0.6.20 has been released. Sratom is a small library for serializing LV2 atoms. Sratom reads/writes atoms from/to RDF, allowing them to be converted between binary and text or stored in a model. Changes: Avoid over-use of yielding meson options Avoid use of scanf when reading MIDI events Fix lint checks Fix potential memory error when writing ambiguous relative paths Improve code quality
Suil 0.10.24 has been released. Suil is a library for loading and wrapping LV2 plugin UIs. It provides wrappers that allow Gtk and Qt hosts to load, and potentially embed, plugin GUIs that use the "native" windowing API (Coca, WIN32, or X11). Changes: Add header warnings test Avoid over-use of yielding meson options
Lilv 0.26.0 has been released. Lilv is a C library to make the use of LV2 plugins as simple as possible for applications. Changes: Add header warnings test Add option to control indexing overhead for subject queries Avoid over-use of yielding meson options Cache LANG value and add option to override it Fix Python tests Fix build with dynmanifest support Fix loading plugins that haven't been loaded…
Sord 0.16.20 has been released. Sord is a lightweight C library for storing RDF statements in memory. Changes: Add header warnings test Add missing const qualifiers to API Avoid over-use of yielding meson options Update man pages
Serd 0.32.6 has been released. Serd is a lightweight C library for working with RDF data. Changes: Avoid over-use of yielding meson options Drop graphs when writing Turtle output Eliminate recursion in the writer Fix handling of bad predicates in anonymous blank nodes Fix handling of some invalid EOF cases in lax mode Fix indentation of named objects after anonymous objects Fix indentation when…
Zix 0.8.0 has been released. Zix is a lightweight C library of portability wrappers and data structures. Changes: Add ZIX_REALTIME and ZIX_NONBLOCKING attributes Add warning suppression macros Annotate count and size parameters of allocator API Avoid "deprecated" POSIX functions on Windows Avoid over-use of yielding meson options Clean up attribute documentation Gracefully handle failed allocation…
Sphinxygen 1.0.12 has been released. Sphinxygen is a Python module/script that generates Sphinx markup to describe a C API, from an XML description extracted by Doxygen . Changes: Fix documentation for C++ namespaces Fix documentation for C++ template functions Improve formatting of macro initializers
My previous post, “Improving LV2 Discovery Performance” , described adding an option to lilv that controls whether an additional index is maintained for loaded LV2 data. While testing those changes for release, I discovered a few things (like lv2lint ) that break without the index, which convinced me that disabling it by default wasn't the right decision. So, I'm instead enabling it by default,…
LV2 plugins (and other data, like presets) are discovered by parsing Turtle files installed in various bundle directories. If the host only needs to know which things are installed, then only manifest.ttl files need to be loaded. That takes only a fraction of a second (60 ms on this machine, which has 897 plugins installed), but if the host needs more information (like the plugin's label or what…
I haven't been sure what to do about the software pages here for quite a while. Most of them were essentially just stale versions of the README files from their projects, and for better and worse, most of the projects I maintain are libraries that don't have as much of a need for a homepage as user-facing software. It's easy to just ignore things that don't really matter in day-to-day work, but…
I don't suppose inactivity from me will be terribly surprising to anyone after the past several years. Still, since I was working on emptying my bug-fix and maintenance queue, making releases, and finally getting to some significant forward progress again, an update: Unfortunately I got violently ill last week with some horrible flu-like thing, the worst I've ever had (and I'm a COVID casualty, so…
Suil 0.10.22 has been released. Suil is a library for loading and wrapping LV2 plugin UIs. It provides wrappers that allow Gtk and Qt hosts to load, and potentially embed, plugin GUIs that use the "native" windowing API (Coca, WIN32, or X11). Changes: Add support for X11 in Qt6 Fix library current_version on MacOS Monitor size hints and window resizes for X11 in Gtk3
Lilv 0.24.26 has been released. Lilv is a C library to make the use of LV2 plugins as simple as possible for applications. Changes: Add lint option with project metadata and code quality tests Avoid use of VLAs in lv2apply Clean up and isolate platform-specific code Fix C++ test build on MacOS Fix library current_version on MacOS Fix test suite when TMPDIR has no trailing slash Fully separate…
Sratom 0.6.18 has been released. Sratom is a small library for serializing LV2 atoms. Sratom reads/writes atoms from/to RDF, allowing them to be converted between binary and text or stored in a model. Changes: Add lint option with project metadata and code formatting tests Avoid snprintf when writing MIDI events Enable clang nullability checks Fix library current_version on MacOS
Sord 0.16.18 has been released. Sord is a lightweight C library for storing RDF statements in memory. Changes: Add option to install tool man pages Enable clang nullability checks Fix build as C with MSVC Fix library current_version on MacOS Replace more platform-specific code with use of zix
Serd 0.32.4 has been released. Serd is a lightweight C library for working with RDF data. Changes: Clean up enum declarations Fix library current_version on MacOS Fix overly permissive parsing of syntax names on the command line Fix parsing NQuads lines with no space before the final dot Fix reading chunks from files without trailing newlines Fix rewriting special literals when datatype URIs are…
Zix 0.6.2 has been released. Zix is a lightweight C library of portability wrappers and data structures. Changes: Fix documentation build with sphinxygen fallback wrap
Sphinxygen 1.0.10 has been released. Sphinxygen is a Python module/script that generates Sphinx markup to describe a C API, from an XML description extracted by Doxygen . Changes: Add missing meson_options.txt to distribution archive
Sphinxygen 1.0.8 has been released. Sphinxygen is a Python module/script that generates Sphinx markup to describe a C API, from an XML description extracted by Doxygen . Changes: Add option for installing executable script
Zix 0.6.0 has been released. Zix is a lightweight C library of portability wrappers and data structures. Changes: Add ZIX_NODISCARD attribute Add option to build for older Windows versions Add zix_expand_environment_strings() Add zix_string_view_equals() Avoid fdatasync() on Darwin Fix build on POSIX systems without PATH_MAX defined Fix library current_version on MacOS Fix nullability annotations…
Sphinxygen 1.0.6 has been released. Sphinxygen is a Python module/script that generates Sphinx markup to describe a C API, from an XML description extracted by Doxygen . Changes: Include macro replacement text in documentation Place defines and types before functions
As most git users are aware, the default branch name in git changed from master to main a while ago. Since I maintain projects created both before and after this change, some maintenance tasks have become more difficult to automate as a result (and I'm a sucker for consistency). I put off dealing with this because I was planning to make master branches disappear at the same time APIs are broken,…
Lilv 0.24.24 has been released. Lilv is a C library to make the use of LV2 plugins as simple as possible for applications. For more information, see http://drobilla.net/software/lilv . Changes: Avoid overriding state features passed by the host Fix null dereference when trying to load state from a missing file Fix potential null dereferences and conversion warnings
Serd 0.32.2 has been released. Serd is a lightweight C library for working with RDF data. Changes: Enable clang nullability checks Fix writing empty list objects within blank nodes
Lilv 0.24.22 has been released. Lilv is a C library to make the use of LV2 plugins as simple as possible for applications. For more information, see http://drobilla.net/software/lilv . Changes: Allow LILV_API to be defined by the user Clean up code Clean up inconsistent tool command line interfaces Convert man pages to mdoc Fix crash when plugins pass NULL to the LV2_State_Retrieve_Function Fix…
Suil 0.10.20 has been released. Suil is a library for loading and wrapping LV2 plugin UIs. For more information, see http://drobilla.net/software/suil . Changes: Allow SUIL_API to be defined by the user Fix dependencies in pkg-config file Only check for Gtk Quartz support on MacOS Override pkg-config dependency within meson Remove Gtk in Qt and Qt in Gtk wrappers Remove junk files from…
Sratom 0.6.16 has been released. Sratom is a small library for serializing LV2 atoms. Sratom reads/writes atoms from/to RDF, allowing them to be converted between binary and text or stored in a model. For more information, see http://drobilla.net/software/sratom . Changes: Clean up code Constrain relative URI references to the base URI Fix dependencies in pkg-config file Override pkg-config…
Sord 0.16.16 has been released. Sord is a lightweight C library for storing RDF statements in memory. For more information, see http://drobilla.net/software/sord . Changes: Allow SORD_API to be defined by the user Fix command line help interface of sord_validate Fix dependencies in pkg-config file Override pkg-config dependency within meson Port sord_validate to pcre2 Switch to external zix…
Serd 0.32.0 has been released. Serd is a lightweight C library for working with RDF data. Changes: Add Windows path separator support to serd_node_new_file_uri() Add long "help" and "version" options to serdi Add options to disable html or singlehtml documentation Add serd_reader_skip_until_byte() to public API Allow SERD_API to be defined by the user Avoid creating test files in the current…
Zix 0.4.2 has been released. Zix is a lightweight C library of portability wrappers and data structures. Changes: Clean up documentation build Fix documentation build in a virtualenv Improve test suite code coverage
Sphinxygen 1.0.4 has been released. Sphinxygen is a Python module/script that generates Sphinx markup to describe a C API, from an XML description extracted by Doxygen . Changes: Handle anonymous structs without the "@" placeholder
Sphinxygen 1.0.2 has been released. Sphinxygen is a Python module/script that generates Sphinx markup to describe a C API, from an XML description extracted by Doxygen . Changes: Add command line flags to print version Fix links to documentation groups
One of the many programming side quests I embark on from time to time is finding the best way to do compile-time configuration in C and C++ code. This is one of those characteristically C things that most projects need to do, but that has no well-established best practice. What you can find is all over the place, and often pretty half-baked just to suit the particularities of the “official” build.…