← Back to all sparks
L

Liquidsoap

DEVOPS
Velocity2.5

Scripting language for generating and manipulating audio and video streams

Liquidsoap spent the whole 2.4 line paying down the cost of its own rewrite

audio-streamingclock-schedulingstabilityresource-leaksscripting-language
Current state
Liquidsoap is a scripting language and runtime for building audio and video streams. The 2.4 series has been almost entirely stabilization: five patch releases since November 2025, two of them shipped within days of each other because the preceding one broke source cleanup, and 2.4.4 arriving with an explicit recommendation to skip 2.4.3. The recurring subject matter is clocks, source lifecycle and resource leaks — sub-clock leaks, crossfade crashes when skip is called off-thread, encoder sharing, Strings.Mutable leaks.
Where it's heading
The project said outright at 2.4.1 that the internal rewrite and feature work were done and that effort would shift to stability, and the release record since then matches that claim. What new surface has appeared is diagnostic or defensive rather than expansive: clock and source graph pretty-printing, telnet commands for queue and output control, and raw string literals that stop interpolation from executing untrusted input. Performance work has targeted the same subsystem as the bugs, with clock sync-source propagation moving from a full scan to push-based updates.
Prediction
The 2.4.3 notes state that 2.4.x was meant to end there and that 2.5.x work has begun, yet two more patches have shipped since — so the branch is likely to keep absorbing clock and source fixes until 2.5 lands. The notes give no date for it.

Recent moves

  1. 1d ago

    Liquidsoap Rolling Release 2.4.x

    A rolling build publishing unreleased 2.4.6 assets for pre-release testing, with the warning that its artifacts get deleted. The fix it carries — watching the containing directory so file.watch survives write-to-temp-then-rename — is real, but this is a moving pointer rather than a release.

    View source ↗
  2. 1mo ago

    Queue removal commands and O(1) clock propagation in Liquidsoap 2.4.5

    The most substantial patch in the series: request queues gain remove methods and a telnet command, AIFF and WavPack MIME entries stop falling back to a bogus extension, and clock sync-source propagation becomes push-based instead of scanning every source each tick. The fixes continue the clock and lifecycle theme — EOF crashes on external inputs, a crossfade crash on off-thread skip, and a mutable-string leak.

    View source ↗
  3. 3mo ago

    Liquidsoap 2.4.4 supersedes 2.4.3 days after release

    A rapid corrective patch whose notes advise skipping 2.4.3 entirely. Four fixes, all in the same territory as the rest of the line: a shared-encoder crash from child clock controller initialization, a sub-clock leak on deregistration, a wrong error code on taken harbor mountpoints, and charset detection in is_binary.

    View source ↗
  4. 4mo ago

    Raw string literals arrive in Liquidsoap 2.4.3

    Adds a raw string form that processes no escapes and no interpolation, closing a path where a filename or user-supplied value containing the interpolation marker would be evaluated as code. Framed as the intended last release of the 2.4 branch, and the last to ship Ubuntu Noble binaries — though two further patches followed it.

    View source ↗
  5. 6mo ago

    Liquidsoap 2.4.1 opens the stabilization phase

    The release where the project declares the internal rewrite finished and commits to stability over features. Its additions are small and operational — container metadata for the ffmpeg encoder, start and stop commands for outputs, a syslog level setting — and its own notes were later amended to redirect users to 2.4.2 over a source-cleanup regression.

    View source ↗
  6. 6mo ago

    Clock and source graph inspection tools in Liquidsoap 2.4.2

    Published the same day as 2.4.1 to repair the source-cleanup regression that release introduced. It also adds the diagnostic surface the clock work needed — printable clock and source graphs via command line or telnet — plus batching for thread.when with a warning when it is called too aggressively.

    View source ↗