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 callnull()
.
null(value)
calls are still valid and can be used to create
non-null values with nullable types. Calls tonull()
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 defaultinsert_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.
Useerror.methods
to get them! (#4537) - Make sure that
let { foo = gni } = v
assigns a value to
gni
but not tofoo
(#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)