Skip to content

Releases: savonet/liquidsoap-release-assets

Liquidsoap 2.2.5

02 May 14:14
ce156dc
Compare
Choose a tag to compare

This is the fifth release of the 2.2.x release cycle, following the initial 2.2.0 release.

This release comes with some minor bugfixes and changed feature and one big chunk of new functionality around crossfading: autocue.

We will post a longer article about this on our blog. The gist of the functionality is that it should allow to compute excellent crossfade transition parameters in your sources, at the expense of an increased CPU usage.

Users can register their own autocue implementations and there is a default one that is available if you have compiled liquidsoap with its ffmpeg support.

In this case, you can try to add:

enable_autocue_metadata()

To your script and see what happens!


2.2.5 (2024-05-01) (Mayday!)

New:

  • Added enable_autocue_metadata and autocue: protocol to automatically compute cue points and crossfade parameters (#3753, #3811, @RM-FM and @Moonbase59)
  • Added various ffmpeg timestamps when exporting ffmpeg metadata from filters.
  • Added db_levels method to blank.* sources (#3790)
  • Added excluded_metadata_resolvers to request.create to make it possible to selectively disable specific metadata resolvers when resolving requests.
  • Normalized expected API from autocue, allow multiple implementation and adapt cross/crossfade to work with it out of the box with workaround for short tracks.
  • Added private and swapped memory reporting when compiled with mem_usage.
  • Added priorities to metadata deocoders, allows finer-control of metadata overriding. (#3887)

Changed:

  • Allow to disable http.* url normalization. Add warning when url normalization changes the url (#3789)
  • Add namespace and optional source IDs to mix.

Fixed:

  • Prevent request metadata from overriding root metadata (#3813)
  • Fixed source.drop and source.dump clock initialization.
  • Fixed bogus report of non-monotonous PTS content when using raw ffmpeg content.
  • Fixed streaming errors when disconnecting input.harbor.
  • Fixed issues with rendered id3v2 frame that contain binary data (#3817)
  • Fixed memory leaks with SRT listen socket polling callbacks.
  • Fixed %ffmpeg copy muxer logic with some audio/video streams (#3840)
  • Fixed duration metadata calculation in the presence of cue_in/cue_out metadata.

Liquidsoap 2.2.4

08 Feb 04:35
ce156dc
Compare
Choose a tag to compare

⚠️ Note ⚠️ This release has a hotfix re-release. The latest is liquidsoap-2.2.4-1.tar.gz, 2.2.4-r1 alpine packages and 2.2.4-debian-*-2 debian packages!


This is the fourth follow-up release from the 2.2.x branch. This release comes with important bug fixes related to memory consumption and audio quality.

You can refer to the liquidsoap blog for more details about this release: https://www.liquidsoap.info/blog/2024-02-07-liquidsoap-v2.2.4/

As usual, we recommend any user on the 2.2.x branch to upgrade to this version. However, this time, it is recommended to read about the non-trivial changes it brings and to test it with your staging or pre-prod environment!

Full release changelog:

2.2.4 (2024-02-04)

New:

  • Added support for id3v2 metadata in output.*.hls when using %mp3, %shine or %fdkaac encoders (#3604)
  • Added option to set preferred address class (ipv4, ipv6 or system default) when resolving hostnames in http transports and output.icecast
  • Added self_sync option to input.srt to accommodate for streams in file mode (#3684)
  • Added curve parameter to fade functions and liq_fade_{in,skip,out}_curve metadata override (#3691)
  • Added delay parameter to fade functions to make it possible to add delay before fade happens. Add liq_fade_{in,skip,out}_delay metadata override.
  • Added single_track option to allow sequence to play each source until they are unavailable while keeping track marks.

Changed:

  • cue_cut operator has been removed. Cueing mechanisms have been moved to underlying file-based sources. See migration notes for more details.

Fixed:

  • Fix pop/click at the end of fade out/in (#3318)
  • Fix audio/video synchronization issues when decoding live streams using ffmpeg.
  • Fix issues with TLS connecting clients not being properly timed out (#3598)
  • Make sure reconnection errors are router through the regulat on_error callback in output.icecast (#3635)
  • Fixed discontinuity count after a restart in HLS outputs.
  • Fixed file header logic when reopening in output.file (#3675)
  • Fixed memory leaks when using dynamically created sources (input.harbor, input.ffmepg, SRT sources and request.dynamic)
  • Fixed invalid array fill in add (#3678)
  • Fixed deadlock when connecting to a non-SSL icecast using the TLS transport (#3681)
  • Fixed crash when closing external process (#3685)

Liquidsoap 2.2.3

15 Dec 17:33
ce156dc
Compare
Choose a tag to compare

This is the third and, hopefully, near final point release of the liquidsoap 2.2.x release cycle.

The most important changes in this release are:

  • A fix involving shared active sources leading to infinite loop and CPU usage going to 100%. This impacted in particular scripts doing recording of a streamer being sent via another output. See: #3537 for such an example.
  • Several SRT-related fixes w.r.t file descriptor leaks and the caller connection not being properly processed asynchronously.

This release should be safe to upgrade to for any script on the 2.2.x branch. But, as usual, don't forget to test it with a staging environment first!

2.2.3 (2023-12-14)

New:

  • Added register_telnet option to all outputs to
    prevent telnet commands registration (#3545)
  • Added file.touch

Changed:

  • BREAKING: setting.playlists has been renamed
    setting.playlist, settings.playlist.mime_types
    now refers to a full list of records (#3561)

Fixed:

  • Cleanup telnet commands on output shutdown,
    prevent commands registration for internal
    outputs (#3545, fixes: #3541)
  • Allow overwrite in youtube-dl/yt-dlp call,
    remove use of unix-specific process call.
    (#3563)
  • Fixed playlist parsers not being registered
    when evaluatin top-level script (#3553)
  • Fixed infinite loop on some active sources
    (#3560, fixes: #3544, and #3537)
  • Fixed fd leak on failed connection in srt
    caller mode (#3583)
  • Fixed high CPU usage on failed connection
    in srt caller mode (#3583, #3573)
  • Prevent outputs from keeping the last 10 cover
    metadata (#3504)

Liquidsoap 2.2.2

04 Nov 01:22
ce156dc
Compare
Choose a tag to compare

This release is the second bugfix release of the 2.2.x release cycle. The most important fix is related to pop/clicks heard during crossfade (#3318) and the ffmpeg decoder failing with files and streams with unknown codecs.

This is the first release since we improved developers tools so feel free to also take this opportunity to update your developer setup!

As usual, we recommend trying this version with a staging/preview system before putting it on production. Beside that, this release should improve the stability of all scripts running on the 2.2.x release branch.

We want to thank all contributors, bug reporters and patient users who have helped us bring all these improvements!

2.2.2 (2023-11-02)

New:

  • Added string.escape.html (#3418, @ghostnumber7)
  • Add support for getters in arguments of blank.detect (#3452).
  • Allow float in source content type annotation so that it possible
    to write: source(audio=pcm(5.1))

Changed:

  • Trim urls in input.ffmpeg by default. Disable using
    trim_url=false (#3424)
  • Automatically add HLS-specific ffmpeg parameters to
    %ffmpeg encoder (#3483)
  • BREAKING: default on_fail removed on playlist (#3479)

Fixed:

  • Allow channel_layout argument in ffmpeg encoder to set the
    number of channels.
  • Improved support for unitary minus, fix runtime call of optional
    methods (#3498)
  • Fixed map.metadata mutating existing metadata.
  • Fixed reloading loop in playlists with invalid files (#3479)
  • Fixed main HLS playlist codecs when using mpegts (#3483)
  • Fixed pop/clicks in crossfade and source with caching (#3318)
  • Fixed pop/clicks when resampling using libsamplerate (#3429)
  • Fixed gstreamer compilation. Remember that gstreamer features are
    DEPRECATED! (#3459)
  • Fixed html character escaping in interactive.harbor (#3418, @ghostnumber7)
  • Fixed icecast not reconnecting after erroring out while closing connection
    in some circumstances (#3427)
  • Fixed parse-only mode (#3423)
  • Fixed ffmpeg decoding failing on files with unknown codecs.
  • Fixed a crash due to wait_until timestamp being in the past when
    using posix-time2
  • Make sure that temporary files are always cleaned up in HLS outputs (#3493)

Liquidsoap 2.2.1

05 Sep 15:29
ce156dc
Compare
Choose a tag to compare

This is the first bugfix release from the liquidsoap 2.2.x release cycle! It contains important fixed in the HLS outputs and muxer operator. This release should be safe to upgrade from 2.2.0 with some minor breaking changes on the HLS output on_file_change callback to account for the atomic file operations.

2.2.1 (2023-09-05)

Changed:

  • BREAKING: on HLS outputs, on_file_change events are
    now "created", "updated" and "deleted", to better
    reflect the new atomic file operations (#3284)
  • Added compact argument to the http.response.json function. http.response.json will produce minified JSON by
    default. Added a newline symbol to the end of the JSON data produced by http.response.json. (#3299)
  • Bumped internal ogg decoder to make sure that it is used over the ffmpeg decoder whenever possible.
    FFmpeg has issues with metadata in chained streams which needs to be fixed upstream. Unfortunately,
    input.http can only use the ffmpeg decoder at the moment.
  • Cleanup output.file encoding and file handling logic (#3328)
  • Added ratio to source.{dump,drop} to make it possible to control its CPU peaks.
  • Enhanced clock error reporting (#3317)

Fixed:

  • Fixed slow memory leak in muxer operator (#3372, #3181, #3334)
  • Fixed discontinuity logic error in HLS outputs after a restart.
  • Fixed HTTP response status in output.harbor (#3255)
  • Make sure main HLS playlist is regenerated after being
    unlinked (#3275)
  • Fixed hard crash on icecast disconnection errors.
  • Fix output.harbor encoder header when encoding with
    %ogg, %vorbis and etc. (#3276)
  • Fixed quality argument parsing in ffmpeg encoders (#3267)
  • Make all HLS file write atomic (#3284)
  • Allow seek and cue operators to work with muxed sources
    using a single underlying source (#3252)
  • Fixed export of cover art metadata (#3279)
  • Remove use of stereo: protocol in say: protocol:
    this is now handled automatically by the decoder and generates latency via
    high CPU usage peak.
  • Fixed output.file reopening with flac encoding (#3328)

Liquidsoap 2.2.0

26 Jul 13:54
ce156dc
Compare
Choose a tag to compare

We are delighted to announce the release of Liquidsoap 2.2.0!

This release comes almost 4 months after the last stable release from the 2.1.x release cycle and 14 months (!) after forking the 2.2.x release branch! It includes some exciting changes in track muxing/demuxing, HLS, sound processing and more.

See our blog post for a detailed list of features!

🕵️ Versioning and release assets

For a little over a year now, we have switched to rolling release cycles with maintenance and bugfixes applying only to the current release cycle. Regular releases are tagged vX.Y.Z (for instance v2.2.0) on github and docker while on-going releases are tagged rolling-release-vX.Y.Z.

When an initial release, for instance 2.2.0, is being worked on, bugfixes and user issues are addressed for users using the 2.1.x releases. While we would like to extend support, this is the best that we can do with our limited resources!

rolling-release-vX.Y.Z tags denote the releases being worked on. For stable release branches, this would be for instance, rolling-release-v2.2.1 after release v2.2.0. For a yet-to-be released initial version, this would be for instance rolling-release-v2.3.x. We try our best to make those releases as bug-free as possible. Using one of them to test your production script also guarantees the fastest response to bugs and issues!

For release assets, we try to maintain two packages for debian and ubuntu distributions, one with the latest LTS or stable and one with a recent release. The new minimal assets are, as the name suggests, minimal builds. They contain a limited set of features and standard library operators. Minimal builds are intended for most production run and should limit the risk of issues such as segfault and etc. If your script can run with it, we recommend it over the fully featured builds.

For each release asset, you can consult the associated .config file to see which features are enabled.

Docker release images are located at: savonet/liquidsoap:v2.2.0. The release tag may be updated if needed. You can use git sha-based images to pick a fixed build, e.g. savonet/liquidsoap:<sha>

Lastly, we may update the list of release assets on the github release page. If you are looking for permanent release asset links make sure to checkout savonet/liquidsoap-release-assets.

🧮 Migration guide

We listed most of the migration issues you might run into on this page. The detailed changelog below may also help.

As a reminder, we strongly recommend to test your script in a stagging environment, even between minor releases, to make sure that everything is working correctly before pushing a new liquidsoap version to production!

Full changelog

2.2.0 (2023-07-21)

New:

  • Added support for less memory hungry audio formats, namely
    pcm_s16 and pcm_f32 (#3008)
  • Added support for native osc library (#2426, #2480).
  • SRT: added support for passphrase, pbkeylen, streamid,
    added native type for srt sockets with methods, moved stats
    to socket methods, added socket() method on srt input/outputs
    (#2556)
  • HLS: Added support for ID3 in-stream metadat (#3154) and
    custom tags (#2898).
  • Added support for FLAC metadata (#2952)
  • Added support for YAML parsing and rendering (#2855)
  • Added support for the proprietary shared stereotool library (#2953)
  • Added TLS support via ocaml-tls (#3074)
  • Added video.align.
  • Added string.index.
  • Added support for ffmpeg decoder parameters to allow decoding of
    raw PCM stream and file (#3066)
  • Added support for unit interactive variables: those call a handler when their
    value is set.
  • Added support for id3v2 v2.2.0 frames and pictures.
  • Added track.audio.defer to be used to buffer large amount of audio data (#3136)
  • Added runtime.locale.force to force the system's locale (#3231)
  • Added support for customizable, optimized jemalloc memory allocator (#3170)
  • Added source.drop to animate a source as fast as possible..
  • Added in house replaygain computation:
    • source.replaygain.compute to compute replaygain of a source
    • file.replaygain to compute the replaygain of a file
  • Added support for ImageLib to decode images.
  • Added support for completion in emacs based on company (#2652).
  • Added syntactic sugar for record spread: let {foo, gni, ..y} = x
    and y = { foo = 123, gni = "aabb", ...x} (#2737)
  • Added file.{copy, move} (#2771)
  • Detect functions defining multiple arguments with the same label (#2823).
  • Added null.map.
  • References of type 'a are now objects of type (()->'a).{set : ('a) -> unit}. This means that you should use x() instead of !x in order to get
    the value of a reference. Setting a reference can be done both by x.set(v)
    and x := v, which is still supported as a notation (#2881).
  • Added ref.make and ref.map.
  • Added video.board, video.graph, video.info (#2886).
  • Added the pico2wave protocol in order to perform speech synthesis using
    Pico TTS (#2934).
  • Added settings.protocol.gtts.lang to be able to select gtts' language,
    added settings.protocol.gtts.options to be able to add any other option (#3182)
  • Added settings.protocol.pico2wave.lang to be able to select pico2wav language (#3182)
  • Added "metadata_url" to the default list of exported metadata (#2946)
  • Added log colors!
  • Added list.filter_map and list.flatten.
  • Added medialib in order to store metadata of files in a folder and query
    them (#3115).
  • Added --unsafe option (#3113). This makes the startup much faster but
    disables some guarantees (and might even make the script crash...).
  • Added string.split.first (#3146).
  • Added string.getter.single (#3125).

Changed:

  • Switched to dune for building the binary and libraries.
  • Changed cry to be a required dependency.
  • Changed default character encoding in output.harbor, output.icecast
    output.shoutcast to UTF-8 (#2704)
  • BREAKING: all timeout settings and parameters are now float values
    and in seconds (#2809)
  • BREAKING: in output.{shoutcast,icecast}:
    • Old icy_metadata renamed to send_icy_metadata and changed to a nullable bool. null means guess.
    • New icy_metadata now returns a list of metadata to send with ICY updates.
    • Added icy_song argument to generate default "song" metadata for ICY updates. Defaults
      to <artist> - <title> when available, otherwise artist or title if available, otherwise
      null, meaning don't add the metadata.
    • Cleanup, removed parameters that were irrelevant to each operator, i.e. icy_id in output.icecast and etc.
    • Make mount mandatory and name nullable. Use mount as name when name is null.
  • reopen_on_error and reopen_on_metadata in output.file and related operators are now callbacks to
    allow dynamic handling.
  • Added reopen method to output.file.
  • Added support for a Javascript build an interpreter.
  • Removed support for %define variables, superseded by support for actual
    variables in encoders.
  • Cancel pending append when skipping current track on append source.
  • Errors now report proper stack trace via their trace method, making it
    possible to programmatically point to file, line and character offsets
    of each step in the error call trace (#2712)
  • Reimplemented harbor http handler API to be more flexible. Added a new
    node/express-like registration and middleware API (#2599).
  • Switched default persistence for cross and fade-related overrides
    to follow documented behavior. By default, "liq_fade_out", "liq_fade_skip",
    "liq_fade_in", "liq_cross_duration" and "liq_fade_type" now all reset on
    new tracks. Use persist_overrides to revert to previous behavior
    (persist_override for cross/crossfade) (#2488).
  • Allow running as root by default when docker container can be detected using
    the presence of a /.dockerenv file.
  • id3v2 argument of %mp3 encoder changed to "none" or version number to allow
    to choose the metadata version. true is still accepted and defaults to version
    3. Switched to our internal implementation so that it does not require taglib
    anymore.
  • Moved HLS outputs stream info as optional methods on their respective encoder.
  • Changed self_sync in input.ffmpeg to be a boolean getter, changed self_sync
    in input.http to be a nullable boolean getter. Set self_sync to true in
    input.http when an icecast or shoutcast server can be detected.
  • Add sorted option to file.ls.
  • Add buffer_length method to input.external.rawaudio and
    input.external.wav (#2612).
  • Added full OCaml backtrace as trace to runtime errors returned from OCaml code.
  • Removed confusing let json.stringify in favor of json.stringify().
  • Font, font size and colors are now getters for text operators (video.text,
    video.add_text, etc.) (#2623).
  • Add on_cycle option to video.add_text to register a handler when cycling
    (#2621).
  • Renamed {get,set}env into environment.{get,set}
  • Renamed add_decoder, add_oblivious_decoder and add_metadata_resolver
    into, respectively, decoder.add, decoder.oblivious.add, decoder.metadata.add
  • Deprecated get_mime, added file.mime.libmagic and file.mime.cli, made
    file.mime try file.mime.libmagic if present and file.mime.cli otherwise,
    changed eturned value when no mime was found to null().
  • Return a nullable float in request.duration.
  • Removed --list-plugins-json and --list-plugins-xml options.
  • Added --list-functions-json option.
  • Rem...
Read more

Liquidsoap 2.1.4

03 Mar 15:38
ce156dc
Compare
Choose a tag to compare

This is the fourth follow-up release for the liquidsoap 2.1.x release cycle!

giphy

This release brings more bugfix and stability to liquidsoap 2.1.x users with a couple of new features as well.

New features are:

  • More logging around streaming exceptions to help diagnostics of hard failures while streaming
  • Support for umask to bring the full unix/posix file/directory permissions control the way everyone's used to
  • Added buffer_length method to buffers to help report and monitor buffer user (overrun/underrun, slow drain etc.)

The bugfixes include patch to prevent several situations that made the application crash under certain specific circumstances. Overall, we believe that this release should be a pretty stable iteration and highly recommend migrating to it. Make sure to always use a staging environment before updating your production systems!

We expect this release to be the last of the 2.1.x release cycle. The current development branch is about to be forked as rolling-release-v2.2.x and we should begin the stabilization process to bring that branch to a releasable state. There might still be bugfix releases on the 2.1.x branch but only for critical issues.

Thanks for all y'all continuing use of liquidsoap!

Full Changelog:

2.1.4 (2022-03-02)

New:

  • Added buffer_length method to buffer operator.
  • Always display error backtrace when a fatal exception
    is raised in the streaming loop.
  • Added umask() to get the current umask and umask.set(...)
    to set the current umask (#2840)

Changed:

  • Add break when restarting the external process in input.external.{rawaudio,rawvideo}
    (#2860, #2872)
  • Removed disconnect method on input.harbor. This method was doing the same as
    the stop method. Added shutdown method to properly shutdown the
    source even when not connected to an output.
  • Made process a string getter in input.external.{rawaudio,rawvideo} (#2877)

Fixed:

  • Fixed parameter type for stats_interval in SRT I/O.
  • Fixed type generalization on variable and pattern bindings
    (#2782)
  • Fixed memory leak in http requests (#2935)
  • Make sure that exception raised in request.dynamic never crash
    the process (#2897)
  • Fixed filename getter being called multiple time in
    output.file (#2842)
  • Space trim in interactive variables set on telnet (#2785)
  • Fixed internal streaming logic in max_duration and crossfade.
  • Make sure that there's at most one metadata at any given
    frame position (#2786)
  • Fixed metadata.json.parse always returns an empty list (#2816).
  • Fixed icy_id being ignored in output.shoutcast (#2819)
  • Fixed shutdown livelock with some ffmpeg inline encoder,
    decoder and filter operators.
  • Fixed input polling stop (#2769)
  • Fixed parsed error report in %include directives (#2775)
  • Fixed crash in external processes when received a Unix.EINTR
    event (#2861)
  • Fixed crash in string.interpolate (#2883)
  • Cleaned up srt support.

Liquidsoap 2.1.3

06 Dec 00:10
ce156dc
Compare
Choose a tag to compare

This is the third and, hopefully, last bug fix release for the 2.1.x release branch!

Overall, this release cycle was thankfully pretty calm, hence the more than two months since the previous one. The release contains a couple of new features that may also be useful such as being able to select or list portaudio devices and some enhancements in input.harbor dynamic capabilities.

Anyone on one of the 2.1.x releases should be able to upgrade safely to this version.

2.1.3 (2022-11-04)

New:

  • Added time.string.
  • Added error.on_error to report any error raised during the
    script's execution. Enhanced reported error positions (#2712)
  • Added device_id and latency options to input.portaudio
    and output.portaudio to be able to choose the requested
    device. Use liquidsoap --list-portaudio-devices to see the
    list of devices (#2733)
  • Added disconnect method to input.harbor, making it possible
    to disconnect a source client programmatically, including when
    a new client is trying to connect.

Changed:

  • Send data in-memory in http.{post,put}.file when input data
    is already in memory. This allows to use plain Content-Length
    instead of chunked transfer encoding in these case, though
    libcurl seems to always prefer chunked encoding for put
    requests.
  • Better error message when an encoder is not available on windows
    (#2665)
  • Create output directory in HLS outputs when it does not exist
    using newly introduced perms permission argument (#2725)
  • Removed restart_on_error argument on output.url and added
    restart_delay which implements a delayed restart. Added
    on_error argument to be notified of errors (#2731)
  • Changed default encoding parameter in string.{quote, escape}
    to be null. Fallback to "ascii" encoding when no encoding is
    specified and "utf8" fails. This prevents unexpected script
    failures but might not be backward-compatible if you used a
    custom escape_char or special_char function (#2738)

Fixed:

  • Enhanced methods typing support (#2659)
  • Add support for song metadata (mapped to title) and url (mapped to
    metadata_url) in input.harbor (#2676)
  • Fixed blank.* operator types.
  • Fixed request metadata escaping (#2732)
  • Fixed input.external.rawadudio mono input (#2742)
  • Fixed http response body on redirect (#2758)

Liquidsoap 2.1.2

26 Sep 19:32
ce156dc
Compare
Choose a tag to compare

This is the second follow-up release for the v2.1.x branch featuring bugfixes, updates and some new features!

Noticeable API changes:

  • http.{post,put}.file has been added to be able to send a file content via HTTP without bloating the memory.
  • Many new formats have been added to the taglib metadata resolver. This can change your script's behavior. If you are seeing issues, please report to us. To revert to the old behavior, use this settings:
settings.decoder.file_extensions.taglib.set(["mp3"])

Other than that, this release should bring more stability to your script so go for it. After some testings, as always! 🙂

2.1.2 (2022-09-26)

New:

  • Added string.char, string.getter.flush and string.getter.concat.
  • Added http.multipart_form_data and http.{post,put}.file.

Changed:

  • Allow sub-second values in sleep() (#2610)
  • Allowed many new format for taglib (#2605)
  • Add settings.ffmpeg.content.copy.relaxed_compatibility_check.set settings to allow relaxed
    compatibility check for ffmpeg copy content, making it possible to encode
    streams with various audio samplerate or video size when the container
    supports it.

Fixed:

  • Stop error loop when opening a listening ssl socket with non-existent certificate. (#2590)
  • Youtube HLS upload for live streams.
  • Fixed data:... uri scheme to conform to RFC 2397 (#2491)
  • Fixed multiple issues related to empty ogg/opus metadata (#2605)
  • Ensure that video.add_text fails when the source does (#2609)
  • Fixed metadata parsing in server.insert_metadata (#2619)
  • Fixed extract_replaygain path (#2624, @parnikkapore)
  • Fixed crash when terminating the process (#2585)
  • Fixed channels conversion when using input.rawaudio (#2602)
  • Fixed memory leak when using ffmpeg streams (input.ffmpeg, input.http, ...)

Internal Change:

  • ref() implementation switched to OCaml's Atomic to prevent race conditions,
    thread.mutexify and mutexify functions removed. (#2603)

Liquidsoap 2.1.1

29 Aug 04:57
ce156dc
Compare
Choose a tag to compare

This is the first bugfix release of the v2.1.x release cycle, fixing some minor and less-minor issues. So far, the release cycle seems to be holding up fairly well!

Worth noting:

  • ocurl is now a mandatory dependency. Its functionalities, support for http.{get,put,post,..} providing, among other things, remote requests resolution, were already expected by most users.
  • Windows build for v2.1.0 did not have the ffmpeg encoders and decoders enabled.. 🤦‍♂️
  • playlist.next now returns the requests in the right order. This could be breaking some existing scripts!
  • playlist.remaining has been renamed into playlist.remaining_files. This could be breaking some existing scripts!

Full changelog:

2.1.1 (2022-08-28)

New:

  • Added process.quote.command to generate complex quoted command strings suitable
    for use with process.run and os-independent.

Changed:

  • Renamed playlist.remaining into playlist.remaining_files (#2524)
  • Added id argument to replaygain operator (#2537).
  • Made ocurl dependency required, added uri as required dependency (#2551)

Fixed:

  • Fixed missing ffmpeg features on windows build.
  • Fixed sync issues with ffmpeg.encode.* inline encoders (#2584)
  • Fixed http.get issues when user-agent was not set (#2517)
  • Fixed order of playlist.next returned requests.
  • Fixed infinite loop when reloading a failed playlist (#2576)
  • Fixed http requests with urls containing spaces (#2551)
  • Fixed on_connect type for srt inputs and outputs.
  • Fixed parsing issues with functions/variables definitions
    beginning with rec or replaces (#2560)
  • Fixed infinite parse error loop (#2527)
  • Fixed empty initial mp4 HLS segment.
  • Prevent initial start for autostart and fallible sources.