CINXE.COM

Changes - metacpan.org

<!DOCTYPE html> <html lang="en-US"> <head> <title>Changes - metacpan.org</title> <link rel="preload" as="fetch" href="/account/login_status" crossorigin="anonymous" /> <link href="/assets/style-XFEQ536G.css" rel="stylesheet" type="text/css"> <script src="/assets/main-WXBSEDQJ.js" type="module"></script> <link rel="alternate" type="application/rss+xml" title="Recent CPAN Uploads of Ryu - MetaCPAN" href="/dist/Ryu/releases.rss" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"> <link rel="shortcut icon" href="/static/icons/favicon.ico"> <link rel="apple-touch-icon" sizes="152x152" href="/static/icons/apple-touch-icon.png"> <link rel="search" href="/static/opensearch.xml" type="application/opensearchdescription+xml" title="MetaCPAN"> <script async src="https://perl-ads.perlhacks.com/perl-ads.js"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-E82Q2V8LVD"></script> </head> <body> <nav class="navbar navbar-default" role="navigation"> <div class="header-logo-large hidden-xs"> <a href="/" tabindex="0"> <svg class="logo" aria-label="MetaCPAN"> <use class="logo" href="/static/images/metacpan-logo.svg#logo" /> </svg> </a> </div> <div class="header-logo-icon visible-xs"> <a href="/"> <svg class="logo" aria-label="MetaCPAN"> <use class="logo" href="/static/images/metacpan-logo.svg#dots" /> </svg> </a> </div> <ul class="nav navbar-nav menu-items hidden-xs hidden-sm"> <li><a href="/about">About</a></li> <li><a href="/about/sponsors">Sponsor</a></li> <li><a href="https://grep.metacpan.org/">grep::cpan</a></li> <li><a href="/recent">Recent</a></li> <li><a href="/about/faq">FAQ</a></li> <li><a href="/tools">Tools</a></li> <li><a href="https://fastapi.metacpan.org/">API</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <button type="button" class="searchbar-btn visible-xs visible-sm"> <i class="fa fa-search button-fa-icon"></i> </button> <form action="/search" class="searchbar-form visible-md visible-lg search-form form-horizontal"> <input type="hidden" name="size" id="metacpan_search-size" value="20"> <div class="form-group"> <div class="search-group"> <i class="fa fa-search"></i> <input type="text" name="q" placeholder="Search the CPAN" size="41" autocorrect="off" autocapitalize="off" spellcheck="false" id="metacpan_search-input" class="form-control" value=""> </div> </div> </form> <li class="icon-slidepanel visible-xs visible-sm"> <button data-toggle="slidepanel" data-target=".slidepanel"> <span class="button-fa-icon"> <i class="fa fa-bars slidepanel-open"></i> <i class="fa fa-times slidepanel-close"></i> </span> </button> </li> <li class="dropdown login-dropdown show-logged-in"> <button type="button" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-user button-fa-icon logged-in-icon" aria-hidden="true"></i> <i class="fas fa-chevron-down"></i> </button> <ul class="dropdown-menu"> <li><a href="/account/identities">Identities</a></li> <li><a href="/account/profile">Profile</a></li> <li><a href="/account/favorite/list">Favorites</a></li> <li> <a href="#" type="button" class="logout-button"> Logout </a> </li> </ul> </li> <li class="dropdown login-dropdown show-logged-out"> <button type="button" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-user button-fa-icon avatar-placeholder" aria-hidden="true"></i> <i class="fas fa-chevron-down"></i> </button> <ul class="dropdown-menu"> <li> <a href="/login/github"> <i class="fab fa-github fa-fw"></i> GitHub </a> </li> <li> <a href="/login/twitter"> <i class="fab fa-twitter fa-fw"></i> Twitter </a> </li> <li> <a href="/login/google"> <i class="fab fa-google fa-fw"></i> Google </a> </li> </ul> </li> <li class="dropdown login-dropdown hide-logged-in hide-logged-out"> <button> <i class="fa fa-user button-fa-icon" aria-hidden="true"></i> </button> </li> </ul> </nav> <div class="page-content "> <div id="perl-ad-target" class="top-notify-banner perl-ad-target"> </div> <nav class="sidebar"> <div class="slidepanel"> <ul class="nav-list "> <li class="nav-header">Tools</li> <li> <a data-keyboard-shortcut="g d" href="/release/TEAM/Ryu-4.001">Release Info</a> </li> <li> <a data-keyboard-shortcut="g a" href="/author/TEAM">Author</a> </li> <li>&nbsp;</li> <li><a href="https://fastapi.metacpan.org/source/TEAM/Ryu-4.001/Changes">Raw code</a></li> <li><a href="/release/TEAM/Ryu-4.001/source/Changes">Permalink</a></li> <li> <a href="/release/TEAM/Ryu-4.001/raw/Changes?download=1">Download</a> </li> <li><button class="btn-link pod-toggle pod-hidden"><span class="hide-pod">Hide</span><span class="show-pod">Show</span> Pod</button></li> <li class="nav-header">Info</li> <li>355 lines of code</li> <li>0 lines of pod</li> <li>16.61K bytes</li> </ul> </div> </nav> <div class="content-navigation"> <div class="breadcrumbs"> <a data-keyboard-shortcut="g s" href="/release/TEAM/Ryu-4.001/source">TEAM / Ryu-4.001</a> / Changes </div> </div> <main class="content"> <pre id="metacpan_source" class="line-numbers pod-toggle pod-hidden" data-pod-lines=""><code class="language-plain">Revision history for Ryu 4.001 2024-09-18 19:50:07+08:00 Asia/Singapore [Bugs fixed] - -&gt;drain_from now propagates flow control correctly to the currently-attached source - using -&gt;finish instead of -&gt;completed-&gt;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-&gt;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-&gt;as_void gives you an empty result, useful if you want to await without caring about the result - Ryu::Source-&gt;as_last allows you to wait for the last emitted value - Ryu::Sink-&gt;drain_from allow sequential processing of sources as inputs to a sink [Bugs fixed] - passing an arrayref to `$src-&gt;from` probably didn&#39;t work as expected before - some potential memory leaks addressed, particularly in source/sink interaction and for code using flow control (e.g. `$src-&gt;unblocked`) 3.005 2024-01-04 04:21:40+08:00 Asia/Singapore [Bugs fixed] - handle the `max_items` parameter to `-&gt;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-&gt;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 `-&gt;completed-&gt;done/fail` directly, since that&#39;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 -&gt;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 `-&gt;take(5)` 3.003 2023-03-03 20:51:58+08:00 Asia/Singapore [New features] - Ryu::Observable now has a -&gt;finish method 3.002 2021-07-07 17:48:25+08:00 Asia/Kuala_Lumpur [Bugs fixed] - in -&gt;flat_map, any failure in the original or added Ryu::Source instances will now propagate as a failure for the -&gt;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 -&gt;as_numeric, -&gt;as_number and -&gt;set_numeric, -&gt;set_number - Sentinel support for Ryu::Observable via -&gt;lvalue_str and -&gt;lvalue_num 3.000 2021-05-01 19:58:23+08:00 Asia/Kuala_Lumpur [New features] - -&gt;next support [Bugs fixed] - the -&gt;completed and -&gt;unblocked methods now return uncancellable Futures, so that they can be used with constructs such as Future-&gt;wait_any(timeout, $src-&gt;unblocked) without affecting internal state 2.009 2021-04-13 13:32:36+08:00 Asia/Kuala_Lumpur No new features. Bugs fixed: - -&gt;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: - -&gt;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 `-&gt;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: - -&gt;ordered_futures would call -&gt;pause or -&gt;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: - -&gt;ordered_futures (-&gt;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: - -&gt;as_buffer can take low/high parameters similar to -&gt;buffer, providing backpressure for buffer streams. Bugs fixed: - small amount of extra protection on Ryu::Observable-&gt;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 `-&gt;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 -&gt;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&#39;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 -&gt;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 - -&gt;as_queue to get a Future::Queue instance from a Ryu::Source - -&gt;as_buffer to get a Ryu::Buffer instance from a Ryu::Source Deprecations: - Ryu::Exception -&gt;future is no longer supported, should be -&gt;as_future instead Since there&#39;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: - -&gt;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: - -&gt;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: - -&gt;take_until and -&gt;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 -&gt;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: - -&gt;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: - -&gt;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, -&gt;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 -&gt;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: - -&gt;take_until method 1.003 2019-04-28 00:15:57+08:00 Asia/Kuala_Lumpur Documentation fixes: - Incorrect `C&lt;&gt;` 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: - -&gt;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 `-&gt;{on_get}` callback the first time -&gt;completed is called, since there&#39;s no guarantee we will be calling -&gt;await on the top-level source. Bugs fixed: - -&gt;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: - -&gt;ignore method added: this throws away all its input Bugs fixed: - pause handling on sinks could previously report errors if nothing had called `-&gt;pause($src)` before the -&gt;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: - -&gt;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 `-&gt;{on_get}` callback recursively if available. Developer updates: - moved from the old manual dist.ini content to a plugin bundle, hopefully this doesn&#39;t cause too much breakage 0.033 2018-12-21 15:35:22+08:00 Asia/Kuala_Lumpur Bugs fixed: - the ordered futures method -&gt;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: - -&gt;buffer now supports high/low watermark - -&gt;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: - -&gt;buffer method for collecting items while a source/sink are paused - -&gt;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 -&gt;source inside a Ryu::Sink for handling events is now preserved when attaching an external source via -&gt;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-&gt;merge) 0.028 2018-10-14 00:03:50+08:00 Asia/Kuala_Lumpur New features: - handle undef better in -&gt;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: - -&gt;hexdump, mainly intended for debugging protocol handling - -&gt;map_from_source, allowing control over what is emitted (and when) compared to -&gt;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: - -&gt;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: - -&gt;encode and -&gt;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: - -&gt;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: - -&gt;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: - -&gt;first - convenience wrapper for -&gt;take(1) 0.015 2017-05-22 21:22:25+08:00 Asia/Kuala_Lumpur New features: - -&gt;each_as_source - similar to -&gt;each, but treats items as sources - -&gt;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 -&gt;map(sprintf &#39;...&#39;, $_-&gt;x, $_-&gt;y, ...) - Ryu::Source-&gt;from(Future), -&gt;from(ARRAY) 0.013 2017-03-14 00:10:19+08:00 Asia/Kuala_Lumpur New features: - -&gt;rev_sort_by (and -&gt;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: - -&gt;with_index annotates items with index information - -&gt;sort_by for text sorting on a key - -&gt;nsort_by for numeric sorting - -&gt;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: - &#39;UTF-8&#39; is now supported as an alias for utf8 in -&gt;encode and -&gt;decode. - -&gt;catch for continuing after errors - -&gt;as_string and -&gt;as_list / -&gt;as_arrayref Future-returning methods - -&gt;prefix and -&gt;suffix 0.010 2017-03-04 14:20:06+08:00 Asia/Kuala_Lumpur New features: - -&gt;say and -&gt;print methods 0.009 2017-03-04 00:00:46+08:00 Asia/Kuala_Lumpur New features: - -&gt;encode and -&gt;decode with a few basic transcoders 0.008 2017-03-03 23:03:06+08:00 Asia/Kuala_Lumpur Bug fixes: - -&gt;distinct now works more like it&#39;s described New features: - -&gt;ordered_futures method - -&gt;distinct_until_changed 0.007 2017-02-12 18:51:17+08:00 Asia/Kuala_Lumpur Bug fixes: - Discard values when finishing -&gt;combine_latest and -&gt;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-&gt;future renamed to -&gt;as_future, old method is still available but will be dropped by 1.0. New features: - -&gt;source and -&gt;value for Ryu::Observable 0.005 2017-01-16 20:26:27+08:00 Asia/Kuala_Lumpur New features: - -&gt;set_numeric and -&gt;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: - -&gt;await now returns the source, not the completion Future. Bug fixes: - -&gt;await didn&#39;t, instead it delegated to Future&#39;s -&gt;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-&gt;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 </code></pre> </main> <div class="content-pagination"> </div> </div> <footer class="footer"> <div class="footer-container"> <div class="footer-social"> <div class="footer-link footer-logo"> <a href="/"> <img src="/static/images/metacpan-logo.svg" alt="MetaCPAN" /> </a> </div> <a class="footer-social-link" href="https://github.com/metacpan"> <i class="fab fa-github-square"></i> </a> <a class="footer-social-link" href="https://fosstodon.org/@metacpan"> <i class="fab fa-mastodon"></i> </a> </div> <div class="footer-links"> <div class="footer-link"> <a href="/about">About</a> </div> <div class="footer-link"> <a href="/about/sponsors">Sponsor</a> </div> <div class="footer-link"> <a href="https://grep.metacpan.org">grep::cpan</a> </div> <div class="footer-link"> <a href="/recent">Recent</a> </div> <div class="footer-link"> <a href="/about/faq">FAQ</a> </div> <div class="footer-link"> <a href="/tools">Tools</a> </div> <div class="footer-link"> <a href="https://fastapi.metacpan.org/">API</a> </div> <div class="footer-link"> <a href="https://www.perl.org/">Perl.org</a> </div> </div> <div class="footer-sponsors"> <a class="footer-sponsor-link" target="_blank" href="https://www.bytemark.co.uk/" rel="noopener"> <img class="footer-sponsor-bytemark" src="/static/images/sponsors/bytemark_logo.svg" alt="Bytemark logo"> </a> <a class="footer-sponsor-link" target="_blank" href="https://www.liquidweb.com/" rel="noopener"> <img class="footer-sponsor-liquidweb" src="/static/images/sponsors/liquidweb_logo.png" alt="liquidweb logo"> </a> <a class="footer-sponsor-link" target="_blank" href="https://deriv.com/careers/" rel="noopener"> <img class="footer-sponsor-deriv" src="/static/images/sponsors/deriv.svg" alt="Deriv logo"> </a> <a class="footer-sponsor-link" target="_blank" href="https://geocode.xyz" rel="noopener"> <img class="footer-sponsor-geocode" src="/static/images/sponsors/geocodelogo.svg" alt="Geocode logo"> </a> <a class="footer-sponsor-link" target="_blank" href="https://www.fastly.com/" rel="noopener"> <img class="footer-sponsor-fastly" src="/static/images/sponsors/fastly_logo.svg" alt="Fastly logo"> </a> <a class="footer-sponsor-link" target="_blank" href="https://opencagedata.com" rel="noopener"> <img class="footer-sponsor-opencage" src="/static/images/sponsors/open-cage.svg" alt="OpenCage logo"> </a> <!-- Added 2024-07-22 --> <a class="footer-sponsor-link" target="_blank" href="https://www.elastic.co/" rel="noopener"> <img class="footer-sponsor-elastic" src="/static/images/sponsors/elastic.svg" alt="Elastic logo"> </a> <!-- Added 2024-07-22 --> <a class="footer-sponsor-link" target="_blank" href="https://route4me.com/" rel="noopener"> <img class="footer-sponsor-route4me" src="/static/images/sponsors/route4me.png" alt="Route4Me logo"> </a> </div> </div> </footer> <div class="modal fade" tabindex="-1" role="dialog" id="metacpan_keyboard-shortcuts"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">&times;</button> <h4 class="modal-title">Keyboard Shortcuts</h4> </div> <div class="modal-body row"> <div class="col-md-6"> <table class="table keyboard-shortcuts"> <thead> <tr> <th></th> <th>Global</th> </tr> </thead> <tbody> <tr> <td class="keys"> <kbd>s</kbd> </td> <td>Focus search bar</td> </tr> <tr> <td class="keys"> <kbd>?</kbd> </td> <td>Bring up this help dialog</td> </tr> </tbody> </table> <table class="table keyboard-shortcuts"> <thead> <tr> <th></th> <th>GitHub</th> </tr> </thead> <tbody> <tr> <td class="keys"> <kbd>g</kbd> <kbd>p</kbd> </td> <td>Go to pull requests</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>i</kbd> </td> <td>go to github issues (only if github is preferred repository)</td> </tr> </tbody> </table> </div> <div class="col-md-6"> <table class="table keyboard-shortcuts"> <thead> <tr> <th></th> <th>POD</th> </tr> </thead> <tbody> <tr> <td class="keys"> <kbd>g</kbd> <kbd>a</kbd> </td> <td>Go to author</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>c</kbd> </td> <td>Go to changes</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>i</kbd> </td> <td>Go to issues</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>d</kbd> </td> <td>Go to dist</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>r</kbd> </td> <td>Go to repository/SCM</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>s</kbd> </td> <td>Go to source</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>b</kbd> </td> <td>Go to file browse</td> </tr> </tbody> </table> </div> <div class="col-md-12"> <table class="table keyboard-shortcuts"> <thead> <tr> <th></th> <th>Search terms</th> </tr> </thead> <tbody> <tr> <td><em>module:</em> (e.g. <a href="/search?q=module%3APlugin">module:Plugin</a>)</td> </tr> <tr> <td><em>distribution:</em> (e.g. <a href="/search?q=distribution%3ADancer+auth">distribution:Dancer auth</a>)</td> </tr> <tr> <td><em>author:</em> (e.g. <a href="/search?q=author%3ASONGMU+Redis">author:SONGMU Redis</a>)</td> </tr> <tr> <td><em>version:</em> (e.g. <a href="/search?q=version%3A1.00">version:1.00</a>)</td> </tr> </tbody> </table> </div> </div> <div class="modal-footer"></div> </div> </div> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10