github savonet/liquidsoap rolling-release-v2.4.x
Liquidsoap Rolling Release 2.4.x

one day ago

This release provides liquidsoap assets before they are published as a new versioned release.

You can use it to install the latest stable code before it is published and test/prepare your production environment for it.

Rolling releases can also be useful for us to quickly detect and report bugs before the final published release!

⚠️ Warning ⚠️
Assets in this release will be deleted. If you are looking for permanent links to release assets, please head over to https://github.com/savonet/liquidsoap-release-assets/releases

For more details about our release process, please checkout https://github.com/savonet/liquidsoap#release-details

2.4.0 (2025-09-01)

New:

Language:

  • Allow destructing function arguments using the same patterns as for
    variable assignment (#4562)
  • Enhanced labeled arguments syntax (#4526)
  • Add warning when erasing top-level variables (#4518)
  • null can now be used directly without having to call null().
    null(value) calls are still valid and can be used to create
    non-null values with nullable types. Calls to null() are marked
    as deprecated (#4516)
  • Added liquidsoap.script.path that contains the path to the current
    script's file, if available.

Core:

  • BREAKING: Most callbacks have been moved to source methods and are now
    executed asynchronously by default. See migration notes for all the
    details.
  • BREAKING: Added new file-to-file external decoder.add API. This
    makes it much easier and safer to write external decoders (#4531)
  • Deprecated insert_metadata, added default insert_metadata method on
    every source (#4541)
  • Added client certificate support to http.transport.tls (#4589, @DelilahHoare)

Utilities:

  • Added cron.parse, cron.{add,remove} and a cron thread
    to allow registration of cron-like asynchronous tasks (#4579)
  • Added LUFS-based per-track loudness correction (#4545)

Changed:

Language:

  • BREAKING: Error methods have been removed by default.
    Use error.methods to get them! (#4537)
  • Make sure that let { foo = gni } = v assigns a value to
    gni but not to foo (#4561)

Core:

  • Turned initial memory compaction on by default. This
    has show to greatly reduce initial memory consumption.
  • Improved source and clock naming (#4497)
  • Support for ImageLib has been removed. The library is not
    maintained anymore and causes issues with dangling external
    processes (#4595)

Utilities:

  • Deprecated replaygain operator, introduced unified
    normalize_track_gain which works with both ReplayGain
    and LUFS (#4545)

Fixed:

  • Fixed issues with autocue start_next. This brings autocue's behavior
    inline with its expectation but can change existing script's output (#4605)
  • Fix error when loading script path having non-ascii characters in them
    (#4343)
  • Fix concurrent inline encoders (#4638)
  • Fix error with interactive variables (#4592, @myeungdev)
  • Prevent concurrent reload and request fetch in playlists (#4316)
  • Don't mark source as ready until their clock has started. (#4496)
  • Fixed mutex deadlock caused by aggressive inlining (#4540)
  • Fixed segfault when using SRT on windows (#4538)
  • Fixed memleak in ffmpeg inline encoder (#4501)
  • Fixed tmp: protocol logic (#4544)
  • Fixed dangling file descriptors with file.*.stream (#4639, reported by @limebar)

Don't miss a new liquidsoap release

NewReleases is sending notifications on new releases.