about summary refs log tree commit homepage
DateCommit message (Collapse)
2020-02-03doc: update copyrights for 2020
Using the 'update-copyright' script from gnulib[1]: git ls-files | UPDATE_COPYRIGHT_HOLDER='all contributors' \ UPDATE_COPYRIGHT_USE_INTERVALS=2 \ xargs /path/to/gnulib/build-aux/update-copyright [1] https://git.savannah.gnu.org/git/gnulib.git
2020-02-03INSTALL: s/bogomips.org/yhbt.net/
bogomips.org is expiring soon and I won't be able to afford higher prices when renewing .orgs will become more expensive.
2020-01-06doc: remove most recommendations for sleepy_penguin
sleepy_penguin is still a hair faster than libffi+fiddle, but most users probably won't notice. So stop documenting it, but just don't introduce performance regressions for existing users.
2020-01-06watchable: use fiddle for inotify support
We have String#unpack at our disposal for working with "struct inotify_event", so use it instead of depending on an extension which requires a compiler and development headers to install.
2020-01-06buffer: replace sleepy_penguin with fiddle
Fiddle exists on all Ruby 1.9.2+ installations and seems alright. Since splice is a Linux-only API, we don't need to worry about the values of constants changing (and they're architecture-independent).
2020-01-06provide fiddle-based eventfd implementation
sleepy_penguin requires a compiler and development headers to install, so it could be a PITA to install for users on distro-provided Ruby. Allow fiddle since it's part of the Ruby standard library since 1.9.2 and users won't have to install anything else.
2020-01-06pipe: avoid loading sleepy_penguin
The values of F_{GET,SET}PIPE_SZ are architecture-independent and stable in Linux (unlike Ruby :P), so we won't need to bother loading an extra .so here for two constants.
2019-12-02setup: fix duplicate variable warning
2019-12-02setup: update to use RbConfig
`Config` was removed years ago¹, and is not supported in any Ruby release that dtas supports. 1. https://bugs.ruby-lang.org/issues/6809
2019-11-14doc: fixup leftover ftp://lists.gnu.org links
Some of these URLs were missing a slash and were missed by initial search-and-replace regexp :x. Drop some trailing "\" from the Markdown days while we're at it, plain-text is the only stable document format.
2019-11-14dtas 0.17.0 v0.17.0
dtas-player automatically pauses on sink death (e.g. when an external DAC is unplugged), thanks to Rene Maurer for the feature suggestion. zsh completions are also bundled in the examples/ directory thanks to James Rowe. There's also a couple of minor bugfixes and documentation updates. There's also kwarg warning fixes for Ruby 2.7.0dev. Future components will probably use a more stable glue language than Ruby, and we already have dtas-graph which is Perl5. Eric Wong (11): doc: remove inaccurate comment about "GNU-ism" doc: update homepage to point to cgit /about/ dtas-graph: show inode number in hex, too dtas-graph: add a short blurb about what it does dtas-console: remove unused variables dtas-console: pass kwargs as-is to String#encode buffer/splice: pass kwargs as-is to tee/splice player: automatically pause if last sink dies readahead: avoid Array#compact and Array#max on `false' doc: use new HTTPS address at lists.gnu.org TODO: add a note about using a more stable glue language James Rowe (2): doc: trivial typo fixes Add zsh completion support
2019-11-14TODO: add a note about using a more stable glue language
Every Ruby release is a constant treadmill of minor incompatibilities which require busywork and maintenance every year. It's been roughly a decade after the major 1.8 -> 1.9 breakages which I was naive enough to believe was one time thing. Now with Ruby 3.0 incompatibilities on the horizon, I've had enough. Perl5 is the most logical language since most of my other projects are Perl5, and we already have dtas-graph implemented in it. But, implementing my own glue language for this isn't out of the question, either...
2019-11-14doc: use new HTTPS address at lists.gnu.org
lists.gnu.org is no longer accessible via FTP.
2019-11-13readahead: avoid Array#compact and Array#max on `false'
seek_to_cur_pos needs to return `nil', not `false' on dead processes when monitoring processes for readahead.
2019-11-09Add zsh completion support
This adds completion support for all the current commands, including completion for sink and source names where they are used.
2019-11-09doc: trivial typo fixes
2019-11-02player: automatically pause if last sink dies
Attempting to play (and fail) every song in the queue or tracklist is not ideal when a the USB/HDMI cable to the sound device gets unplugged by accident. When tee-ing to multiple sinks, we will still gracefully continue if one goes dead and there are remaining sinks. Suggested-by: Rene Maurer Link: https://80x24.org/dtas-all/874l0kb9qm.fsf@loco10.cumparsita.ch/
2019-11-02buffer/splice: pass kwargs as-is to tee/splice
Ruby 2.7.0dev will warn when hashes are passed and intended for use as kwargs unless we expand the hash via "**TRY", but "**" is Ruby 2.0+ syntax and I guess we still support 1.9.3 for the time being.
2019-11-02dtas-console: pass kwargs as-is to String#encode
Ruby 2.7.0dev will warn when hashes are passed and intended for use as kwargs unless we expand the hash via "**enc_opts", but "**" is Ruby 2.0+ syntax and I guess we still support 1.9.3 for the time being.
2019-11-02dtas-console: remove unused variables
"ruby -w" will warn on them
2019-11-02dtas-graph: add a short blurb about what it does
It's a pretty useful tool :)
2019-07-04dtas-graph: show inode number in hex, too
This makes it easier to match up pipes to the contents of /proc/$PID/fdinfo/$EVENTPOLL_FD (ep_show_fdinfo) for software using epoll. (I'm using this tool outside of dtas, too)
2019-04-22doc: update homepage to point to cgit /about/
Having more clickable links is better and the cgit instance looks good without CSS in w3m. I've submitted patches to the cgit mailing list[1] to reduce dependencies on css, and they're also available at https://80x24.org/cgit.git in the meantime [1] https://lists.zx2c4.com/mailman/listinfo/cgit https://lists.zx2c4.com/pipermail/cgit/2019-January.txt.gz
2019-04-22doc: remove inaccurate comment about "GNU-ism"
touch(1posix) documents the presence of "-r"
2019-01-02dtas 0.16.1 v0.16.1
Brown paper bag release to fix hanging at the end of a track/playlist when using a single audio output with Linux splice.
2019-01-02splice: fix missing F_NONBLOCK flag for single output
This fixes hanging when using a single audio output for Linux users using splice.
2019-01-02dtas-linux 1.1.0
This bumps version requirements for sleepy_penguin and dtas to eliminate the "io_splice" dependency for Linux users.
2019-01-02dtas 0.16.0 v0.16.0
A bunch of minor fixes and cleanups accumulating for the past two years since the last release. It's tough to remember to make releases when I'm always running the latest version from git :x Most notably, "io_splice" is no longer used for dtas-linux users since "sleepy_penguin" includes all the functionality we use. This is to reduce memory overhead from extra DSOs(*) There's also some deprecation warning fixes for the still-undocumented "dtas-mlib" command. 12 changes since v0.15.0 (2017-04-07): pipeline: new module for running process pipelines console: ensure time calculations are done in UTC Rakefile: update path for uploads player: support guessing encodings for comments get rid of Windows-31J regexps mlib: compatibility with Sequel 5.x mlib: remove redundant tag massaging and encoding mlib: use flock to get around SQLite busy errors mlib: ignore files with nil times dtas/watchable: check SystemCallError mlib: fix unused variable warning use sleepy_penguin 3.5+ for splice and tee support (*) https://udrepper.livejournal.com/8790.html
2019-01-02use sleepy_penguin 3.5+ for splice and tee support
Eliminate loading of the io_splice RubyGem to reduce memory overhead. Extra DSOs are wasteful and io_splice is being phased oiut for sleepy_penguin, which encapsulates more Linux-specific functionality anyways. cf. https://udrepper.livejournal.com/8790.html
2019-01-02mlib: fix unused variable warning
2019-01-02dtas/watchable: check SystemCallError
Sometimes files become unreadable.
2018-01-30mlib: ignore files with nil times
It happens with some video files, apparently.
2018-01-30mlib: use flock to get around SQLite busy errors
The SQLite busy waiting scheme isn't great for usability and the busy timeout is done by sleep+backoff. I prefer to say we only support filesystems with flock() for our little DB.
2018-01-29mlib: remove redundant tag massaging and encoding
Redundant since ("player: support guessing encodings for comments")
2018-01-29mlib: compatibility with Sequel 5.x
Apparently some degree of thread-safety is being enforced; not sure I agree, but oh well...
2018-01-29get rid of Windows-31J regexps
Oops, a Perlism crept in :x
2018-01-29player: support guessing encodings for comments
This can be helpful for end users and is close to what other players use. We can fallback to Encoding.default_external by default (typically UTF-8) and then again using `charlock_holmes' if installed. Note: path names remain binary, because that's how proper filesystems operate.
2018-01-11Rakefile: update path for uploads
I forgot to update this path when our website changed from http://dtas.80x24.org/ to https://80x24.org/dtas/ to reduce TLS renewal and negotiation overhead. Thanks to Rene Maurer for noticing. cf. https://80x24.org/dtas-all/20180111114546.77906b35@cumparsita.ch/
2017-11-19console: ensure time calculations are done in UTC
We must do this if the user does not use UTC in their time zone, otherwise things could get a bit wacky in the display.
2017-04-28pipeline: new module for running process pipelines
This should allow us easily to manipulate process pipelines as an array of arrays. Originally posted at http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/435624
2017-04-07dtas 0.15.0 v0.15.0
There's a couple of minor bugfixes and features that's been sitting around for a while in git. Internally there's some garbage reductions so player processes might be a bit smaller. 21 changes since dtas 0.14.2 (2016-03-18): player: "cue prev" reliably hits previous cue breakpoint README: add link to gmane NNTP server player: extra "cue" seeking functionality archive: fix suffix replacement for stats dtas-readahead: cleanup open files on pause readahead: handle queued commands properly mlib: use transaction for removing stale entries splitfx: more consistently generate fade_in effects format.from_file: reduce soxi invocations introduce mcache class for caching audio metadata source/sox: integrate mcache support to reduce soxi calls test/test_rb_state: quiet deprecation warning http -> https, and relocate homepage to https://80x24.org/dtas/ player: freeze sink name to avoid needless dup source/sox: simplify conditional, slightly buffer/splice: remove MAX_SIZE constant rg_state: fix no-op gain detection source/sox: relax comment NAME restriction readahead: handle queued commands properly (again) readahead: fix running commands with non-files deduplicate strings using String#-@ (uminus) in Ruby 2.5+
2017-03-02deduplicate strings using String#-@ (uminus) in Ruby 2.5+
This is faster than relying on eval() for older Rubies. https://bugs.ruby-lang.org/issues/13077 Ruby 2.5 is targetted for release in December 2017.
2017-01-17readahead: fix running commands with non-files
2017-01-13readahead: handle queued commands properly (again)
We may have hashes in the queue, too. Followup-to: af91a075c10c ("readahead: handle queued commands properly")
2017-01-11source/sox: relax comment NAME restriction
This is needed for the "ALBUM ARTIST" tag which has a space in the name. This is looser than <http://www.xiph.org/vorbis/doc/v-comment.html>, but probably good enough for practical purposes.
2017-01-06rg_state: fix no-op gain detection
Seeing tiny (or zero) values for the "gain" effect is an eyesore in process table output, and a waste of CPU cycles in sox. So stop using the "gain" effect for imperceptible changes in volume. While we're at it, remove the pointless knobs for setting this, too. They were never documented and I doubt anybody would want to tweak them at runtime.
2017-01-02buffer/splice: remove MAX_SIZE constant
We do not need it at runtime, only for testing on Linux-like systems
2017-01-02source/sox: simplify conditional, slightly
One normal method dispatch is probably preferable to two optimized instructions + immediate.
2016-12-31player: freeze sink name to avoid needless dup
Ruby Hashes will automatically create frozen copies of unfrozen strings used as hash keys to avoid accidental mutation. Pre-freeze keys explicitly so the Ruby VM will not need to create the frozen copy.
2016-12-27http -> https, and relocate homepage to https://80x24.org/dtas/
HTTPS allows some level of security(*) and we've actually supported it on 80x24.org for many months, now. So, point new readers to it. Moving away from hostname-based homepages will allow us to save on subjectAltName space (and bandwith) when negotiating an HTTPS connection. We'll also have an .onion mirror for Tor users, soon, too; in case we can't afford to pay ICANN in the future. (assuming TLS libraries don't have any more Heartblead-level bugs in them, CAs aren't compromised, MITM HTTPS stripping proxies don't get in your way, and your certificate bundle isn't compromised).