XMMS2 Release:DrMattDestruction

From XMMS2

Jump to: navigation, search

Contents

Release Notes

After XMMS2 Team's tussles in Brussels; Here we go again!

XMMS2 Team is proud to present a new release, as late as always. This time there has been huge changes "under the hood" with the new "xmmsv".

The XMMS2 Team would like to extend a big THANK YOU to all who have helped out with this release.

Upgrading

Upgrading should be smooth.

If you build from source and waf can't find function sin, you need to remove all existing .pyc files in the build tree. Waf can't do that for you, so you need to use something like 'find -name "*.pyc" -delete' (This only happens if you build in the same tree that you already used for an older release of xmms2, e.g. if you track xmms2-stable.git)

The argument to waf configure "--without-xmms2d=1" has become "--without-xmms2d".

Noteworthy changes

Waf build system updated to version 1.5.2

For users

The brand new official command-line client. Ultimately, it will replace the current xmms2 CLI, but for this release it's available alongside it as the new nyxmms2 command. Type 'nyxmms2 help' to get a description of commands or refer to the man page.

nycli can be run either in shell-mode (if started without arguments), or in inline-mode where it executes the command passed as argument directly (like the old xmms2). Commands have been reorganized to avoid redundancy (e.g. the many add* commands), all commands support the collection syntax or playlist positions as argument, and each command now exposes a detailed help about itself (xmms2 help <command>). See the default configuration file for customization, including command aliases.

  • New formats supported

Support has been added for True Audio (tta), Shorten (shn), WavPack, Flash Video (flv). Monkey's Audio (apefile). A decoder based on mpg123 has also been added, and can be used instead of the default mad decoder by lowering the priority of mad (xmms2 config mad.priority.audio/mpeg 10).

For developers

  • xmmsv and result/value-split

The clientlib has undergone a drastic refactoring & cleanup. A detailed explanation of rv-split is available on theefer's blog (warning: possibly not up-to-date with latest function renames), but the bottom line is that the actual values returned by the server have been factored out of the xmmsc_result_t structure in which they resided until now. xmmsc_result_t is now only used to manage the results (sync wait, async callback setup, etc), whereas a new xmmsv_t structure has been introduced to wrap all typed values (int, string, collection, dict, list, etc).

Also note that propdicts have been replaced by dict-of-dicts (of the form {$source => {$key => $value}} – xmmsv_propdict_to_dict can be used to convert them to simple {$key => $value} dicts).

  • vis

The visualization framework has been merged.

  • uint values deprecated in the IPC

Unsigned integers have been deprecated in favor of plain integers in all server commands and return values. In this release, the helper functions using uint have been kept but flagged as deprecated, to help client authors migrate. Signed ints are used under the hood (beware of the overflow monster behind the curtain). This transition should help reduce signedness uncertainty in return values and potentially make it easier to automagically wrap xmmsv_t in bindings (as we only keep a single numeric type).

  • Iterators in the C++ bindings

Dict and List now support Standard Library style const iterators (no read-write iterators yet). They implement forward and bidirectional iterator concepts respectively. It immediately breaks clients that used old interface to iterate List (.isValid() and .first() member functions were removed). Dict::each() still exists, should however be avoided in favour of new interface.

Bug fixes

Many bugs were fixed, and probably more introduced. See the full Changelog below for details.

New platforms

None (don't we have them all already?).

Notes to client authors

There is soo much to say here with the xmmsv thing...

Notes to xform authors

config callbacks have changed to xmmsv. But instead use first argument for getting name and value.

Full ChangeLog

Between TEST2 and final

Anders Waldenborg

Anthony Garcia

Thomas Frauendorfer

Between TEST1 and TEST2

Anders Waldenborg

Anthony Garcia

Daniel Svensson

Thomas Frauendorfer

Tilman Sauerbeck

Łukasz Michalik

Between DrLecter and TEST1

Anders Waldenborg

Andrew G Potter

Anthony Garcia

Auke Schrijnen

Daniel Chokola

Daniel Svensson

Deng Xiyue

Erik Massop

Florian Ragwitz

Igor Assis

Johannes Jordan

Johannes Michael Jordan

Jonathan Horowitz

Jonne Lehtinen

Juho Vähä-Herttua

Lucas Adam M Paul

Raphaël Bois

Sebastien Cevey

Thomas Frauendorfer

Thomas Orgis

Tilman Sauerbeck

Łukasz Michalik