From XMMS2
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
- nycli (AKA New korving CLI)
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
- 2192: GVFS plugin does not handle files with hash/square/octothorpe in name when browsing
- 2195: last.fm plugin broken
Anthony Garcia
Thomas Frauendorfer
Between TEST1 and TEST2
Anders Waldenborg
- 2179: nycli wscript doesn't check for headerfiles.
- 2127: readline check fails, nycli doesn't build
- 2086: Show URL (or filename) when no metadata found
- 2180: nycli uses GNU-specific readline not available by default on OS X
- 2169: Daemon sometimes crashes on launch with visualisations enabled
- 2186: XMMS.coll_query_*() methods causes a segmentation fault.
- 2185: readline/readline.h check needs stdio.h on some systems.
- 2176: pshuffle playlists broken after xmms2d restart.
- 2188: airplay doesn't work with newer airport express hardware
Anthony Garcia
- 2165: nycli should create a default config file if one doesn't exist.
- 2166: nycli should load default values when absent from the config file
- 2177: Total duration overflows
- 2175: Error when terminal is resized /or errno is set to EINTR
Daniel Svensson
Thomas Frauendorfer
Tilman Sauerbeck
Łukasz Michalik
Between DrLecter and TEST1
Anders Waldenborg
- 1962: xmms2d segfault when adding flac file on x86_64 linux
- 2090: Make xmmsv_list_iter_free() and xmmsv_dict_iter_free() available in the clientlib
- 1871: monkey's audio plugin doesn't do a header check
- 1897: Remove support for unsigned integers
- BUG(1897): Remove uint stuff from python bindings
- BUG(1897): Remove uint. Just some deprecated compatibility crap left
- BUG(1897): playlist pos is int in cli
- BUG(1897): playlist pos is int in nycli
- BUG(1897): Remove support for uint xmmsvs in (ny)cli and bindings
- BUG(1897): remove support for uints in ipc
- BUG(1897): Never serialize uint xmmsv_t
- BUG(1897): Make volume signed
- BUG(1897): Make output status use signed int
- BUG(1897): make visualisation version signed
- BUG(1897): Make playtime signed
- BUG(1897): make medialib ids signed
- BUG(1897): hack xmmsv_get_uint to handle XMMSV_TYPE_INT32 too.
- BUG(1897): send signal/broadcast ids as int
- BUG(1897): Change collection object methods to use int instead of uint for args
- BUG(1897): Change medialib object methods to use int instead of uint for args
- BUG(1897): Change output object methods to use int instead of uint for args
- BUG(1897): Change playlist object methods to use int instead of uint for args
- BUG(1897): Change main object methods to use int instead of uint.
- 1986: segment plugin handling of xmms_error_t broken.
- 2154: nyxmms2 status print an uneeded \r
- 2056: xmmsc_medialib_add_entry_args probably should use xmmsv_t *dict* for args
- 2028: avcodec.h can't be found in installations.
- 2026: trying to seek into an mp3(only one does this thing) crashes xmms2d
- 2138: nycli doesn't compile with older glib
- 2118: xmmsv_get_type was called NULL value
- 2155: Use xmmsv_dict_format for nyxmms2's status command
- 2079: If a playlist references a filename containing an apostrophe (') character, xmms2d crashes.
- 2144: move entry_format to xmmsv
- 2151: import xmmsclient fails.
- 2110: Python collection refcounting broken.
- 2111: Python bindings uses deprecated xmmsv_coll_operand_list_* functions
- 2017: getaddrinfo in daap plugin isn't called correctly
- 2077: Enforce XMMSV_STRING to be UTF-8.
- 2115: cli uses deprecated xmmsv_coll_operand_list_* functions
- 2117: xmms_object_emit should use xmmsv_t
- 1338: Get Visualization working :)
- FEATURE(1338): Remove last unaligned accesses.
- FEATURE(1338): refactor clientside
- FEATURE(1338): Cleanup write_udp
- FEATURE(1338): Refactor
- FEATURE(1338): Remove at least some of the unaligned accesses
- FEATURE(1338): Detect if semtimedop exists and only enable vis-over-unixshm if so.
- FEATURE(1338): Fix shm vis on 64 bit platforms.
- FEATURE(1338): Remove xmmsc_result_wait from clientlib code
- FEATURE(1338): Use xmms_socket_close.
- FEATURE(1338): Remove side effects from x_api_error_if.
- FEATURE(1338): wscript fixes.
- FEATURE(1338): Add socket_invalidate.
- FEATURE(1338): Use xmms_socket_valid.
- 1987: XMMS_OBJECT_CMD_ARG_HASH_TABLE could be removed.
- 1597: Testing Framework
- 2122: Allow type restrictions on xmmsv lists (and dicts?) elements
- 1995: pulse plugin crashes when flush is called after pulseaudio server disappeared
- 1996: xml plugin writes out of bounds
- 2032: xmmsc_medialib_get_id does not encode its URL argument
- 2081: xmms2-tutorials need to be updated for rv-split
- 2048: [RVSPLIT] browsing is teh b0rk
- 2159: browse seems to leak memory
- 1835: Sanitize callback arguments by splitting result_t and value_t
- 2109: xmmsv_coll_operand_list_clear causes crash on coll_unref
- 2108: xmmsv_coll::attributes should be an xmmsv_t dict
- 2163: Diskwriter broken
- 2103: xmmsv_list_get crashes on empty list.
- 2102: xmmsv_list_iter_entry should not print warning on non-valid iter
- 2161: xmms2d segfaults on special mlib query (cli client)
- 2106: xmmsv_coll::operands should be an xmmsv_t list
- 2149: xmmsv_build_dict leaks references.
Andrew G Potter
Anthony Garcia
- 1815: xform to play music from Flash sites (Youtube, etc)
- 1979: Setting the default output plugin
- 443: M3U and PLS should write artist/title more intelligently
- 2080: Separate output plugins from xforms in waf summary.
- 2145: add xmmsv_dict_has_key(const char *key)
- 2157: nyxmms2 server shutdown causes segfault
- 2140: url_isdir and make_valid_url break things
- 1664: Korving cli (AKA nycli), the new official xmms2 cli
- 2158: nyxmms2 add -f file.mp3 broken
- 2098: status shows "invalid field" instead of band name/song name
- 2039: cue plugin should use global PERFORMER property
- 2038: cue sets artist/title/album when they are not present
Auke Schrijnen
- 2003: Some playlist functions don't default to the active playlist
- 2096: git >= 1.6 doesn't have git-rev-parse, git-update-index and git-diff-index
Daniel Chokola
- 1998: Xmms::getUserConfDir(): PATH_MAX was not declared
- 2089: xmmsclient/vis needs to be ported to win32
- 1997: Ruby include paths need tweaking
- 2049: [RVSPLIT] xmms2 status is teh b0rk
Daniel Svensson
- 1781: check for threadsafe sqlite library at compile-time
- 2101: xmmsc_coll_idlist_from_playlist_file missing in python
- 1835: Sanitize callback arguments by splitting result_t and value_t
Deng Xiyue
Erik Massop
- 2045: Wrong behaviour when inserting into playlist other than _active.
- 2055: Number of entries in pshuffle playlist is wrong after creation or clearing
- 2126: man pages not installed
- 2083: pshuffle and queue playlists have broken behavior.
- 1967: coll sync should be run 10s after last collection change
- 2147: waf needs --no-optionals
- 1924: m3u/pls/? playlist plugin sorts badly
- 1934: relative jumps in cli
- 2100: First song after jumplist is inconsistent with first song after playlist load
- 2099: get_dict_entry_type returns mixed enum and int values and has no documentation
- 2098: status shows "invalid field" instead of band name/song name
Florian Ragwitz
Igor Assis
- 2123: nyxmms2 list [pattern] doesn't apply filter
- 2124: nyxmms2 info doesn't default to the current song
- 2097: URLs are interpreted as patterns / add argument heuristics
- 2156: nyxmms2 doesn't handle disappearing xmms2d properly
- 2141: nyxmms2 in status mode becomes a mess when the daemon quits.
- 2092: add -f with multiple files only seems to add the first file
- 1664: Korving cli (AKA nycli), the new official xmms2 cli
- FEATURE(1664): Make helper function to filter playlist contents.
- FEATURE(1664): Add variable ${position} to be used in status format.
- FEATURE(1664): Fix memory leak in command trie.
- FEATURE(1664): Fix two bugs in help command.
- FEATURE(1664): Change command-trie so that 'subtrie' nodes stores an 'action' with subtrie prefix.
- FEATURE(1664): Remove unused "glob.h" include.
- FEATURE(1664): Fix segfault in status command when playlist is empty.
- FEATURE(1664): Fix memory leaks in playlist config.
- FEATURE(1664): More rv-split upgrade.
- FEATURE(1664): Upgrade to rv-split and code cleanup.
- FEATURE(1664): Count UTF-8 chars instead of bytes when printing status.
- FEATURE(1664): Make 'status' command work in inline mode.
- FEATURE(1664): Move find_terminal_width to utils.c for reuse in status.
- FEATURE(1664): More memory leak fixes.
- FEATURE(1664): Fix two memory leaks.
- FEATURE(1664): Change behaviour when using $@ with no parameters in aliases.
- FEATURE(1664): Fix bug (don't resume input loop) in some commands.
- FEATURE(1664): Fix bug in cli_pl_sort (freeing of cache string).
- FEATURE(1664): Support recursive alias.
- FEATURE(1664): Remove trailing slashes from user entered paths.
- FEATURE(1664): Fix small bug in 'encode_url'.
- FEATURE(1664): Implement 'server import'.
- FEATURE(1664): Separate help for commands and aliases.
- FEATURE(1664): Automatically add playlist files if GUESS_PLS = true.
- FEATURE(1664): Change $0 for $@ in alias definition.
- FEATURE(1664): Implment add playlist file option.
- FEATURE(1664): Fix segfaults when aliases arguments are missing.
- FEATURE(1664): Implement globbing using xform_browse.
- FEATURE(1664): Example of working aliases.
- FEATURE(1664): Fix bug when typed alias has no parameters.
- FEATURE(1664): Fix bug in 'add' command.
- FEATURE(1664): Make aliases with commands that use cache work correctly.
- FEATURE(1664): Use rinsert in 'add' command.
- FEATURE(1664): Implement alias with parameters (see src/etc/nycli.conf for examples.)
- FEATURE(1664): Aliases initial commit.
- FEATURE(1664): Add --source flag to 'server property' command.
- FEATURE(1664): 'server property' command partially implemented.
- FEATURE(1664): Implement 'server' commands: remove, volume and stats.
- FEATURE(1664): Implement 'server' commands: rehash, plugins, sync and shutdown.
- FEATURE(1664): Copy collection in 'collection create' than reference.
- FEATURE(1664): Fix typo.
- 2133: tab completion broken with spaces
Johannes Jordan
Johannes Michael Jordan
- 1338: Get Visualization working :)
- FEATURE(1338): introduced xmmsc_visualization_properties_t
- FEATURE(1338): Improved UDP transport, X-platform
- FEATURE(1338): changed client API, blocking can be given in ms
- FEATURE(1338): Added proof-of-concept streamripper
- FEATURE(1338): Add new example client using libvisual.
- FEATURE(1338): New visualization code
Jonathan Horowitz
Jonne Lehtinen
- 2022: speex plugin doesn't link with libogg
- 1897: Remove support for unsigned integers
- 2031: xmmsc_broadcast_playlist_current_pos is triggered when should not be
- 1664: Korving cli (AKA nycli), the new official xmms2 cli
- 2009: xmms2 shows timesplayed = -1
Juho Vähä-Herttua
- 1990: Implement tag reading in apefile plugin
- 2053: avcodec broken with newer libavcodec/ffmpeg
- 1994: Seeking broken in id3v2 plugin
- 2041: last.fm plugin crashes if the url contains spaces
- 1977: Musepack plugin should be updated to the mpcdec6 api
- 2128: Some mms streams "hangs" xmms2d.
- 1948: does not play tta files
- 1988: WMA decoding breaks on new libavcodec version
- 1989: Implement seeking in apefile plugin
- 2027: Add support for shorten lossless audio files
- 1950: ffmpeg monkey's audio decoder
- 805: WavPack plugin
- 1837: can't seek musepack files
Lucas Adam M Paul
- 2084: Make GME "magic numbers" user-configurable
- 2085: Make stereo depth user-configurable in GME plugin
Raphaël Bois
Sebastien Cevey
- 2121: xmmsc_playlist_insert_collection reverses the order
- 2050: [RVSPLIT] xmmsv_propdict_to_dict is teh suck
- 1835: Sanitize callback arguments by splitting result_t and value_t
- 1184: playlist_rinsert is missing
- 2112: c++ bindings uses deprecated xmmsv_coll_operand_list_* functions
- 1664: Korving cli (AKA nycli), the new official xmms2 cli
- FEATURE(1664): Change C++-style comments into old-school C comments
- FEATURE(1664): Auto-compute and crop AUTO columns, play nice with others
- FEATURE(1664): Cleanup code, remove duplicated time formatting code
- FEATURE(1664): Generalize padding function to cleanup column display header/footer
- FEATURE(1664): Support custom format for the classic playlist display
- FEATURE(1664): Add default value (true) to CLASSIC_LIST configuration var
- FEATURE(1664): Make SERVER_AUTOSTART a configuration variable
- FEATURE(1664): Drop the 'next' column in playlist by default
- FEATURE(1664): Old-style output for listing the playlist
- FEATURE(1664): Added auto size_type, total time footer, render time to column displayer
- FEATURE(1664): Add support for positions to move, remove, info and jump
- FEATURE(1664): Added playlist_positions system to parse positions in playlist
- FEATURE(1664): Set currpos to -1 in the cache if unset
- FEATURE(1664): Remove unneeded currid fetching in status command
- FEATURE(1664): Quick hack to write 'alias' when dealing with aliases.
- FEATURE(1664): Add support for program flags (-h, -v)
- FEATURE(1664): Factor out argument parsing into a separate function.
- FEATURE(1664): Cleanup column display code, add comments
- FEATURE(1664): Do not limit width if outputting to a pipe.
- FEATURE(1664): Fix multiple bugs in parse_format.
- FEATURE(1664): Count UTF-8 chars instead of bytes to fix alignment.
- FEATURE(1664): Move print_padding to utils.c for reuse.
- FEATURE(1664): Factor description indentation in a separate command.
- FEATURE(1664): More explicit help for subcommands.
- FEATURE(1664): Avoid hanging when no argument passed to import.
- FEATURE(1664): Fixed the default configuration file path
- FEATURE(1664): Fix small warning.
- FEATURE(1664): Nicer indentation of description in command help.
- FEATURE(1664): Code cleanup, fix warnings.
- FEATURE(1664): Implement playlist config command.
- FEATURE(1664): Don't die on 'playlist' command.
- FEATURE(1664): Fix argument parsing bug, due to annoying glib parsing of flags anyway.
- FEATURE(1664): Allow playlist create from copy, changed argument style.
- FEATURE(1664): added clear/shuffle/sort playlist commands, still buggy.
- FEATURE(1664): More framework improvements, new commands: playlist list/switch/create/rename/remove.
- FEATURE(1664): Finished clean support for subcommands, with two dummy playlist examples. Cleaner code, too.
- FEATURE(1664): Implemented recursive subtries to manage subcommands.
- FEATURE(1664): Cleanup code, use command retval, modularize argument fetching.
- FEATURE(1664): Completed the cache_t (now functional), added richer action req flags, fixed autostart, cache loading.
Thomas Frauendorfer
- 2046: Pls plugin should only add a "title" field to the mlib if the .pls entry provides a title
- 2058: xmms2 build system is not largefile support aware (?)
- 2150: ./waf configure returns 0 when test for requested feature fail
- 2105: xmms2 doen't build on netbsd 4 because of missing struct statfs
- 2104: The sun output plugin isn't built on NetBSD
Thomas Orgis
Tilman Sauerbeck
- 2070: xmms_playlist_current_active needs to return a strdup's string
- 2014: There's a memory leak in the error path of xmmsc_connect()
- 2057: xmmsv: calling xmmsv_list_clear() causes memory corruption
- 1835: Sanitize callback arguments by splitting result_t and value_t
- 2059: xmmsv: xmms_object_emit_f() leaks memory
- 2015: xmmsc_result_t's notifier management needs cleanup
- 2068: xmms_medialib_entry_to_tree leaks xmmsv instances
- 2069: IPC methods leak GLib types
- 2089: xmmsclient/vis needs to be ported to win32
- 2020: Slim down xmms_object_St
- 2063: The waveout plugin lacks volume control
- 2060: xmms_plugin_client_list_foreach leaks a GTree
- 2061: xmms_medialib_select uses GTree + xmms_create_xmmsv_dict when it could just use xmmsv directly
- 2062: When emitting lists we leak list items
- 2113: ruby bindings uses deprecated xmmsv_coll_operand_list_* functions
- 2076: Can query medialib info for non existing ids.
- 2075: info 0 gives GLib error.
- 2067: The pls plugin lacks a magic spec for audio/x-scpls
Łukasz Michalik

