@toots toots released this Apr 27, 2017 · 202 commits to master since this release

Assets 4


  • Added support for recursive functions (#406)

  • Add peak and peak.stereo operators (#364)

  • Change track_sensitive parameter to a boolean getter (fixed value or anonymous function).

  • Add SSL support to the varous harbor operators, either via openssl or OSX's SecureTransport.

  • Add optional "dj" and "next" metadata for Shoutcast v2, wrap "dj" value in a callback in output.shoutcast (#370, #388)

  • Allow partial parsing of JSON objects in of_json.

  • Generalize list.assoc to allow default values. Legacy code must be updated: list.assoc(k,l) -> list.assoc(default="",k,l)

  • Generalize list.hd to allow default values. Legacy code must be updated: list.hd(l) -> list.hd(default="",l)

  • Allow to pass a default to list.nth. Legacy code must be updated: list.nth(l,pos) -> list.nth(default=<..>,l,pos)

  • Added on_offset to execute a callback at a given offset within a source's tracks.

  • Added mutexify to protect a function from being called concurrently.

  • Added request.log to get log data associated with a request

  • Added overlap_sources to rotate between sources with overlapping tracks.

  • Added replay_metadata to input.harbor()

  • Added <char code> syntax for strings (#368)

  • Added string.sub

  • Added run_process to run a process with optional environment and return (stdout,stderr,exit_status)

  • Added add_playlist_parser to register new playlist parsers

  • Added optional static parameter to add_protocol

  • Added file.temp to create fresh temporary filename

  • Added process: protocol

  • Reimplemented curl-based fetch process using process:

  • Added s3:// protocol to fetch files from AWS S3 using the AWS CLI.

  • Added polly: protocol to enable speech synthesis using AWS polly. Generated files are mono so make sure you use audio_to_stereo().

  • Added youtube-dl: protocol to resolved requests using youtube-dl

  • Added which() to find an exectuable within the $PATH

  • Added register() to allow to register new configuration settings


  • Reverted default value for --error_as_warnings option, renamed to --strict.

  • Moved say: protocol registration to utils.liq.

  • Moved get_process_lines and get_process_output to utils.liq, added optional env parameter

  • Set conservative=true by default in cross() and smartcross()

Deprecated (can be removed in any future version):

  • Dynamic plugins compilation, deprecated in favor of opam rebuild mechanism.


  • aac and aacplus encoders, removed in favor of fdk-aac.

  • dirac/schroedinger video encoder: obsolete, abandoned upstream.

  • force_mpeg option in taglib metadata decoder. Has not been used for years and allows to decouple taglib code from the mad decoder.


  • Fix negative seek (#390)

  • Prevent flows metadata updata from stalling sources (#377)

  • Add revdns setting for telnet, set all revdns default to false (#372)

  • Fix icy metadata in output.harbor (#358)

  • Fix missing first line of headers from icy clients in input.harbor (#380)

  • Fix timestamp in some logged output (#395)

  • Fix crash in external (download) protocol.

  • Fix fade.{in,out} metadata handling for new fade duration and type.

  • Compute normalization regardless of child sources ready status in add() to avoid unexpected change of volume.