Revision history for Ryu 4.001 2024-09-18 19:50:07+08:00 Asia/Singapore [Bugs fixed] - ->drain_from now propagates flow control correctly to the currently-attached source - using ->finish instead of ->completed->on_ready to avoid complaints about internal state not matching 4.000 2024-08-19 00:54:18+08:00 Asia/Singapore [New features] - Ryu::Source->emit_batch provides initial support for batches, for more efficient handling of larger volumes of data. Use `on_batch` to deal with the results. - Ryu::Source->as_void gives you an empty result, useful if you want to await without caring about the result - Ryu::Source->as_last allows you to wait for the last emitted value - Ryu::Sink->drain_from allow sequential processing of sources as inputs to a sink [Bugs fixed] - passing an arrayref to `$src->from` probably didn't work as expected before - some potential memory leaks addressed, particularly in source/sink interaction and for code using flow control (e.g. `$src->unblocked`) 3.005 2024-01-04 04:21:40+08:00 Asia/Singapore [Bugs fixed] - handle the `max_items` parameter to `->as_queue` [Dependencies] - update to latest Future::Queue to avoid deep-recursion scenario 3.004 2023-03-05 14:36:17+08:00 Asia/Singapore [New features] - Ryu::Source->as_queue allows `max_items` and will pause the stream while waiting for the queue to drain - flag a warning when someone tries to use `->completed->done/fail` directly, since that's not likely to work as expected [Bugs fixed] - extra single-use Futures were being created, which caused complaints from Future::XS since they were abandoned (the ->without_cancel calls in Ryu::Node) - chained nodes were still being called after completion, which would lead to some odd-looking debug messages from nodes such as `->take(5)` 3.003 2023-03-03 20:51:58+08:00 Asia/Singapore [New features] - Ryu::Observable now has a ->finish method 3.002 2021-07-07 17:48:25+08:00 Asia/Kuala_Lumpur [Bugs fixed] - in ->flat_map, any failure in the original or added Ryu::Source instances will now propagate as a failure for the ->flat_map source as well 3.001 2021-06-21 08:19:28+08:00 Asia/Kuala_Lumpur [New features] - Ryu::Observable has aliases for ->as_numeric, ->as_number and ->set_numeric, ->set_number - Sentinel support for Ryu::Observable via ->lvalue_str and ->lvalue_num 3.000 2021-05-01 19:58:23+08:00 Asia/Kuala_Lumpur [New features] - ->next support [Bugs fixed] - the ->completed and ->unblocked methods now return uncancellable Futures, so that they can be used with constructs such as Future->wait_any(timeout, $src->unblocked) without affecting internal state 2.009 2021-04-13 13:32:36+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - ->unblocked could fail due to bypassing the default when attempting to use the Future factory 2.008 2021-04-05 12:20:04+08:00 Asia/Kuala_Lumpur New features: - ->emit_from joins multiple sources into the current source 2.007 2021-01-25 02:01:08+08:00 Asia/Kuala_Lumpur New features: - the `->source` provided by a Ryu::Sink is now a child of the sink itself, to facilitate backpressure algorithms and help with common streaming configurations Bugs fixed: - ->ordered_futures would call ->pause or ->resume more often than required, these are now only triggered when they would change state 2.006 2021-01-17 03:02:18+08:00 Asia/Kuala_Lumpur New features: - ->ordered_futures (->resolve) now also takes low/high parameters for backpressure Bugs fixed: - original source failure propagates after any pending Future instances are resolved, thanks to Amin Marashi (Github issue #8) 2.005 2021-01-17 02:16:18+08:00 Asia/Kuala_Lumpur New features: - ->as_buffer can take low/high parameters similar to ->buffer, providing backpressure for buffer streams. Bugs fixed: - small amount of extra protection on Ryu::Observable->notify_all, which was previously passing an alias to the internal value (so the notifier callback was able to modify this directly). Now receives a copy. Documentation updates: - Mojo::Rx no longer exists, replaced with RxPerl references 2.004 2020-12-03 00:38:42+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - the `->from` method on a source was trying to call `blessed()` without importing it (thanks to KARJALA for raising this one) 2.003 2020-08-04 11:50:48+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - memory leak when using ->ordered_futures, due to accumulation of callbacks for cancelling pending requests (thanks to Nael Alolwani for reporting and providing a test case) 2.002 2020-06-27 23:53:40+08:00 Asia/Kuala_Lumpur No new features. Documentation updates: - mention RxPerl and Future::Buffer - clearer link to Ryu::Source, since it's not always obvious where the real code can be found... 2.001 2020-06-09 01:35:39+08:00 Asia/Kuala_Lumpur New features: - basic ->read_packed support in Ryu::Buffer 2.000 2020-06-09 00:37:33+08:00 Asia/Kuala_Lumpur New features: - Ryu::Buffer was previously an empty class, should now be doing something useful - ->as_queue to get a Future::Queue instance from a Ryu::Source - ->as_buffer to get a Ryu::Buffer instance from a Ryu::Source Deprecations: - Ryu::Exception ->future is no longer supported, should be ->as_future instead Since there's a deprecated feature, this is a major version release. 1.012 2020-03-22 13:35:42+08:00 Asia/Kuala_Lumpur New features: - ->unblocked returns a Future which can be used to await a paused source/sink. 1.011 2020-01-07 11:24:46+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - ->ordered_futures now cancels any pending Futures when the source fails. 1.010 2019-12-25 20:55:38+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - ->take_until and ->skip_until may complete before the condition, handle that correctly - fully-qualify calls to Scalar::Util::refaddr to avoid runtime errors 1.009 2019-11-17 23:53:21+08:00 Asia/Kuala_Lumpur No new features. Dependencies: - minimum Future.pm version is now 0.42, due to a memory leak relating to cancellation in previous versions: https://rt.cpan.org/Ticket/Display.html?id=130957 1.008 2019-11-06 00:05:39+08:00 Asia/Kuala_Lumpur New features: - support ->on_failed on Ryu::Source Bugs fixed: - a Ryu::Sink could be completed before the Ryu::Source, avoid exceptions when the Ryu::Source subsequently completes and tries to mark the Future as done 1.007 2019-10-03 00:25:56+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - ->ordered_futures was terminating too early due to previous changes, now only finishes after all items are complete. 1.006 2019-10-01 12:48:37+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - ->with_index and some other methods were not completing when the parent was finished - thanks to Amin Marashi for reporting - lifetime handling for chained sources was simplified, ->each_while_source was supposed to attach handlers for the parent rather than the child source - dropped usage of namespace::clean 1.005 2019-05-05 19:15:56+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - when there are no downstream nodes, the ->buffer node should accumulate data until something is attached, to support the common pattern of swapping out downstream nodes periodically (or when a threshold is reached) 1.004 2019-04-30 02:03:42+08:00 Asia/Kuala_Lumpur New features: - ->take_until method 1.003 2019-04-28 00:15:57+08:00 Asia/Kuala_Lumpur Documentation fixes: - Incorrect `C<>` block, thanks to MANWAR for reporting+submitting a [pull request for this](https://github.com/team-at-cpan/Ryu/pull/5). Dependencies: - minimum Perl version is now 5.18, as reported by SREZIC earlier versions get stuck on the test suite for some reason. This is quite likely to be a bug in the code, but legacy Perl support is not currently a priority (newer Perl versions have lots of useful bugfixes and improvements!). 1.002 2019-04-21 00:21:55+08:00 Asia/Kuala_Lumpur New features: - ->batch method for grouping items into arrayrefs 1.001 2019-04-15 05:44:47+08:00 Asia/Kuala_Lumpur New features: - sources populated from an immediate source (e.g. from an arrayref) will stream data via the `->{on_get}` callback the first time ->completed is called, since there's no guarantee we will be calling ->await on the top-level source. Bugs fixed: - ->buffer sources now only complete once the queue is drained. 1.000 2019-04-08 22:56:19+08:00 Asia/Kuala_Lumpur New features: - ->ignore method added: this throws away all its input Bugs fixed: - pause handling on sinks could previously report errors if nothing had called `->pause($src)` before the ->is_paused check 0.037 2019-03-25 17:42:43+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - boolean comparison on Ryu::Observable instances caused a warning 0.036 2019-02-08 17:14:51+08:00 Asia/Kuala_Lumpur New features: - ->skip_until will filter out any items until the given condition is reached (either Future being true, or coderef returning true) 0.035 2019-01-02 01:37:38+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - dist.ini file should now be included, thanks Grinnz 0.034 2019-01-02 00:19:29+08:00 Asia/Kuala_Lumpur Bugs fixed: - better support for sync chains: we now call the `->{on_get}` callback recursively if available. Developer updates: - moved from the old manual dist.ini content to a plugin bundle, hopefully this doesn't cause too much breakage 0.033 2018-12-21 15:35:22+08:00 Asia/Kuala_Lumpur Bugs fixed: - the ordered futures method ->resolve should not complete until all incoming entries are received and resolved 0.032 2018-12-15 20:20:24+08:00 Asia/Kuala_Lumpur New features: - ->buffer now supports high/low watermark - ->is_paused($obj) will check to see if the node is paused on request from $obj 0.031 2018-12-13 23:03:16+08:00 Asia/Kuala_Lumpur New features: - ->buffer method for collecting items while a source/sink are paused - ->retain method for keeping sources around 0.030 2018-12-13 20:58:38+08:00 Asia/Kuala_Lumpur New features: - flow control expanded and moved to the Ryu::Node parent class Bugs fixed: - resolved some edge cases where handlers can be added/removed during callback loops - the ->source inside a Ryu::Sink for handling events is now preserved when attaching an external source via ->from 0.029 2018-12-02 14:20:37+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - ensure we retain sources when merging - allow merging with no parent source (Ryu::Source->merge) 0.028 2018-10-14 00:03:50+08:00 Asia/Kuala_Lumpur New features: - handle undef better in ->filter, and support arrayref as list of options (string match only so far, but this will eventually be a recursive match) 0.027 2018-01-02 00:52:31+08:00 Asia/Kuala_Lumpur New features: - ->hexdump, mainly intended for debugging protocol handling - ->map_from_source, allowing control over what is emitted (and when) compared to ->map 0.026 2017-12-28 01:11:07+08:00 Asia/Kuala_Lumpur No new features. Internal changes: - Clean up duplicated code which is now available in upstream Future.pm 0.37 0.025 2017-10-22 17:06:29+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - Minor update to Ryu::Observable to fix a typo in a method call 0.024 2017-09-01 20:50:54+08:00 Asia/Kuala_Lumpur New features: - Ryu::Sink API updated in preparation for Ryu::Async release (might even gain some documentation in the next release) 0.023 2017-07-29 22:25:42+08:00 Asia/Kuala_Lumpur New features: - ->map with a string parameter will use that as a hashref key lookup on plain hashref items 0.022 2017-07-09 14:33:16+08:00 Asia/Kuala_Lumpur New features: - Basic CSV encoder/decoder support - does not handle embedded newlines 0.021 2017-06-26 02:04:15+08:00 Asia/Kuala_Lumpur No new features. Documentation: - Tidy up method ordering in Ryu::Source - More examples 0.020 2017-06-17 01:39:34+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - ->encode and ->decode finish when upstream has no more data 0.019 2017-06-17 01:33:18+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - ->sprintf_methods now defaults undef values, to avoid warnings. It also gains some documentation in the process. 0.018 2017-06-11 03:38:39+08:00 Asia/Kuala_Lumpur New features: - ->filter_isa - filter by object classes 0.017 2017-05-31 23:14:01+08:00 Asia/Kuala_Lumpur No new features. Documentation: - bring much-needed clarity to the documentation for Ryu::Observable. 0.016 2017-05-31 22:56:43+08:00 Asia/Kuala_Lumpur New features: - ->first - convenience wrapper for ->take(1) 0.015 2017-05-22 21:22:25+08:00 Asia/Kuala_Lumpur New features: - ->each_as_source - similar to ->each, but treats items as sources - ->switch_str - switch-like operator on stringified values 0.014 2017-03-25 22:45:14+08:00 Asia/Kuala_Lumpur New features: - sprintf_methods as shorthand for ->map(sprintf '...', $_->x, $_->y, ...) - Ryu::Source->from(Future), ->from(ARRAY) 0.013 2017-03-14 00:10:19+08:00 Asia/Kuala_Lumpur New features: - ->rev_sort_by (and ->rev_nsort_by) for reverse sorting - sorting functions are now guaranteed stable 0.012 2017-03-10 00:38:22+08:00 Asia/Kuala_Lumpur New features: - ->with_index annotates items with index information - ->sort_by for text sorting on a key - ->nsort_by for numeric sorting - ->extract_all for regex m//gc extraction 0.011 2017-03-09 22:47:41+08:00 Asia/Kuala_Lumpur Bug fixes: - Base64 decode - too many parameters were being passed to MIME::Base64::decode_base64 New features: - 'UTF-8' is now supported as an alias for utf8 in ->encode and ->decode. - ->catch for continuing after errors - ->as_string and ->as_list / ->as_arrayref Future-returning methods - ->prefix and ->suffix 0.010 2017-03-04 14:20:06+08:00 Asia/Kuala_Lumpur New features: - ->say and ->print methods 0.009 2017-03-04 00:00:46+08:00 Asia/Kuala_Lumpur New features: - ->encode and ->decode with a few basic transcoders 0.008 2017-03-03 23:03:06+08:00 Asia/Kuala_Lumpur Bug fixes: - ->distinct now works more like it's described New features: - ->ordered_futures method - ->distinct_until_changed 0.007 2017-02-12 18:51:17+08:00 Asia/Kuala_Lumpur Bug fixes: - Discard values when finishing ->combine_latest and ->with_latest_from - Better protection against finish-after-failure errors 0.006 2017-01-29 01:06:51+08:00 Asia/Kuala_Lumpur API changes: - Ryu::Exception->future renamed to ->as_future, old method is still available but will be dropped by 1.0. New features: - ->source and ->value for Ryu::Observable 0.005 2017-01-16 20:26:27+08:00 Asia/Kuala_Lumpur New features: - ->set_numeric and ->set_string for Ryu::Observable Cosmetic changes: - Automatic labels for operators now omit the Ryu::Source:: prefix 0.004 2017-01-16 02:34:22+08:00 Asia/Kuala_Lumpur API changes: - ->await now returns the source, not the completion Future. Bug fixes: - ->await didn't, instead it delegated to Future's ->await which provides no guarantees about readiness when it returns. Fixed by looping until the Future is ready. 0.003 2017-01-16 01:38:09+08:00 Asia/Kuala_Lumpur New features: - Ryu::Observable->subscribe callbacks now receive value in $_ as well as @_ Dependency fixes: - Missing deps - Variable::Disposition, etc. - added - Moved some unessential modules to recommends/suggests 0.002 2017-01-11 01:01:04+08:00 Asia/Kuala_Lumpur No new features. Dependency fixes: - Removed references to Devel::Peek, Devel::Refcount and Devel::MAT left over from earlier testing. 0.001 2017-01-08 19:45:18+08:00 Asia/Kuala_Lumpur Initial CPAN release