Hi All!

We have just published the first `beta` of the `1.4.0` release cycle!

This means that we are now satisfied with the new features that have been
added so we will now focus mostly on bug fixing and making sure all our
users can migrate safely from `1.3.7` to the new version.

Here's a quick run-down of some of the major changes since `1.3.7`:
* UTF8 support has been added to script parsing. This means that you can
now do things like this:

```
🎵 = playlist("~/Music")

def f(_) =
  [("title","Ma chanson preferée! 🙂")]
end

🎵 = map_metadata(f,🎵)
```

Variable names can be:
- strings of alphabetic characters with underscore, dots and single
quotes Ex: `ma_sourcepreferée.'foo'`
- Single math and other symbols
Things like:
```
∞ = "foo"
💰 = "bling bling"
```

More importantly, as exemplified above, you can now write utf8 strings
in your script. This should make it much more convenient to write
functions handling metadata using non-ascii characters, which happens
a lot with our international users/artists.

* External process executions are now sandboxed using `bwrap` when detected
at compile time. This should guarantee more safety during process
executions. By default, file system is acessible `read-only` except for the
temporary directory and network is accessible.

* HLS input and output support with `output.file.hls`, `output.harbor.hls`
and `input.hls`

* `cross`/`crossfade` operators are removed,
`smart_cross`/`smart_crossfade` are renamed `cross`/`crossfade`.
`override_duration` feature has been ported to the new `cross` and metadata
label for it is now `"liq_cross_duration"`

The full changelog is getting big now so the rest is included below.

We strongly recommend users to test their script as early as possible with
this `beta` in order to let us know if we are missing any important feature
and also if any issue/bug arises. You can test using `opam` this way:

```
git clone https://github.com/savonet/liquidsoap.git
cd liquidsoap
git checkout 1.4.0-beta1
opam pin add .
```
Please note that you may also need to `pin` some of `liquidsoap`'s
dependencies. The `configure` script should let you know those that are
required.

Finally, I would like to point out our new slack workspace! We are moving
most user and developers discussions over there so feel free to give it a
try at http://slak.liquidsoap.info

Hope y'all enjoy this first `beta` release!

CHANGES
========

New:

- UTF8 parsing!

- Added `input.{file,harbor}.hls` to read HLS stream (#59, #295, #296).

- Added `output.hls` to natively stream in HLS (#758).

- Added `(to_){string,float,int,bool}_getter` operators to handle getters
in script side.

- Made `p` parameter in `smooth_add` a `float` getter (#601)

- Added `source.time` to get a source's clock time.

- Added `max_duration` to limit a source's duration.

- Added `file.temp_dir` to create temporary directories.

- Added `file.{unlink,rmdir}` to remove, resp., file and directories.

- Added `file.write` to write content to a file.

- Added `file.read` to read contents of a file without loading all of it in
memory.

- Added `youtube-pl:<ID>` protocol to resolve and parse youtube playlists
(or any playlist supported by `youtube-dl`) (#761)

- Added `protocol.aws.endpoint` setting for the `s3://` protocol, thanks to
@RecursiveGreen. (#778)

- Added support for sandboxing `run_process` calls. Set safe defaults.
(#785)

- Added `harbor.{http,https}.static` to serve static path.

- Added `log.{critical,severe,important,info,warning,debug}`. Use aliases
in code as well (#800, #801, #802)

- Added `sleep` function.

Changed:

- Depends on OCaml >= 4.07.0

- Better error reporting with coloring and uniform format. (#790)

- Improved reporting of file, line and character during parsing errors.

- Remove dynamic plugin build option.

- Made `on_end` delay a float getter.

- Reimplemented `fade.{in,initial,out,final}` as scripted operators. (#664)

- Removed `cross`/`crossfade` operators, superseeded by
`smart_cross`/`smart_crossfade`

- Rename `smart_cross`/`smart_crossfade` operators as `cross`/`crossfade`

- Rename `file.duration` as `request.duration`

- Removed duplicate `is_directory`

- Rename `{basename,dirname}` as `path.{is_directory,basename,dirname}`

- Empty playlists return by scripted resolvers is now considered a failure
to resolve.

- Rewrite `smooth_add` to use new `mkcross` functions.

- Reimplemented `open_process_full` to get a hand on `pid` and
finer-grained closing workflow (#703)

- Added `transition_length` to `switch`-based operators to limit transition
lengths and allow garbage collection of transition sources.

- SDL renders text in UTF-8. (#712)

- Made `x` and `y` parameters in `video.add_text` `float` getters. (#730)

- Reimplemented `extract-replaygain` using `ffmpeg`, added an optional
replay gain option to the `ffmpeg2wav` protocol. Thanks to @Yamakaky for
contributing on this. (#749)

- The `ratio` parameter of `compress` and `limit` is a float getter. (#745)

- Removed `rewrite_metadata` which had been deprecated for a while now.

- Allow string getter for `harbor` HTTP responses.

- Renamed `get_clock_status` to `clock.status` and `log_clocks` to
`clock.log`.

- Renamed `rms_window` parameter of `compress` to `window`. (#796)

- Added `chop` operator.

- Keep master tracks' boundaries in `mux_*` functions. (#795)

- Added `new_track` optional argument to callback in `insert_metadata`.

Fixed:

- Lack of documentation for `cross`/`crossfade` (#743)

- Fixed before metadata being lost during crossfade not in conservative
mode.

- Correct types and default values for `random.int` (#767).

- Allow changing pipeline in gstreamer functions. (#762)

- Script deadlock after a long time, most likely related to old crossfade
transitions (#755)

- AVI export fixed. (#789)

- `%external` does not stop processes anymore on each metadata. (#789)
_______________________________________________
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to