github savonet/liquidsoap v2.4.3
Liquidsoap 2.4.3

5 hours ago

This is the third bugfix release of Liquidsoap 2.4.x.

This release has been extensively tested and should be rock solid. We still recommend trying it on your staging environment before rolling out to production.

This release is intended to be the last of the 2.4.x branch. We've already started working on 2.5.x and there are some exciting things in store!

⚠️ Note for Ubuntu Noble users: this is the last release that includes binary packages for Ubuntu Noble. To keep up with the latest FFmpeg releases, we need to move forward to more recent Ubuntu versions.

New features

  • Raw string syntax {|...|} and {id|...|id}: a new string literal form where no escape sequences or string interpolation (#{}) are processed. This is especially useful in automated or user-facing setups where external input (filenames, URLs, user-provided values) is embedded directly in a script — with regular strings, a value containing #{...} would be silently evaluated as code. Raw strings prevent this entirely, making scripts that handle untrusted input safer and more predictable.

Notable fixes

  • Audio glitches with crossfade: Two separate issues caused clicks or audio gaps when using cue points and crossfades together — both are now resolved.
  • HLS fMP4 audio+video: Multiplexed HLS streams using fragmented MP4 containers were broken; this is now fixed.
  • Playlist initialization slowdown: A performance regression that made large playlists slow to start is gone.
  • Process I/O reliability: Several edge cases around reading stdout/stderr and handling EINTR signal interruptions have been addressed, making external process integration more robust.
  • Sequence resource cleanup: The sequence operator now releases sources it no longer needs early, reducing resource usage in scripts with many fallback sources.
  • Better error messages: Invalid_value errors now include a call stack, making it much easier to track down where an invalid value originated at runtime.

📢 6th Liquidshop Workshop — Friday, 29 May 2026!

We're gearing up for the 6th Liquidshop workshop and we'd love to see you there! If you'd like to share what you've built or how you use Liquidsoap, please consider contributing a talk — and everyone is welcome to attend. We love connecting with the community!


2.4.3 (2026-04-11)

New:

  • Added raw string syntax {|...|} and {id|...|id} for strings
    with no escape sequences (#4959)
  • Added optional replay_metadata and add_new_track to
    the buffer operator to replay latest metadata and insert
    track marks when the buffer becomes available again.
  • Added support for array options in ffmpeg filters (#4799)

Changed:

  • DEPRECATED telnet/server request.on_air command is enabled when
    settings.request.deprecated_on_air_metadata is true.
  • Add back missing "status" telnet/server command for outputs.
  • Reduced default buffer size throughout the app to improve memory efficiency
    (#4919)
  • Refactored XML parsing to be type-driven, support optional fields with
    custom element name aliases (#4926, #4927)
  • Removed self_sync parameter from input.jack and output.jack (#5017)
  • Make posix build target paths configurable via env vars (#5046)

Fixed:

  • sequence now releases unused sources early, reducing resource usage when
    earlier sources in the sequence are no longer needed (#5082)
  • Improved error messages: Invalid_value errors now include the call stack
    to help pinpoint the origin of the invalid value (#5090)
  • Fixed clicks/glitches when combining liq_cue_in with liq_fade_in due to fade.in firing too late on new tracks (#5019)
  • Prevent crashing when getting out-of-bound mark in split_frame (#5054)
  • Fixed clock source detach when clock is running (#5051)
  • Fixed ?? operator type inference in conditional branches (#4922)
  • Prevent double nullable types (#4925)
  • Make active stereotool really be active.. (#4882)
  • Fixed fMP4 HLS support for audio+video streams (#4841)
  • Fixed crossfade clocks inconsistencies leading to weird caching audio glitches (#4851)
  • Fixed first frame of new track getting lost when crossfading with fade.in duration is set to 0. (#4887)
  • Fixed crash with concurrent stop/start operations (#4849)
  • Fixed metadata leak from underlying ffmpeg ogg demuxer in ffmpeg stream
    decoder (#4848)
  • Fixed performance regression when initializing playlist (#4913)
  • Make sure that we read all stdout/stderr before considering a process closed. (#4918, #4934, #4941)
  • Fixed EINTR signal interruption in process I/O, read, and flush operations (#4947, #4949, #4951)
  • Improved string binary detection heuristics by checking for valid UTF-8 and max length; added settings.string.max_printable_length configuration key
  • Make sure output.file does not create files without data (#4899)
  • Fixed content type propagation through free type variables (#4988)
  • Improved runtime error reporting by wrapping low-level exceptions into proper
    runtime errors (#5004)
  • Fixed syslog support and added it to build configuration detection (#5009)
  • Fixed sub-clock accumulation causing gradual CPU growth over time (#5032)

Don't miss a new liquidsoap release

NewReleases is sending notifications on new releases.