Revision history for Perl module MCE::Shared.

1.860 Sun Sep 15 20:00:00 EST 2019

  * Signal-handling update release.

  * SIGINT and SIGTERM safety for shared objects during IPC.
  * IPC safety in MCE::Hobo during SIGINT and SIGTERM.

  * Method $hobo->exit in MCE::Hobo now sends the SIGINT signal
    for extra reliability with MCE::Shared (previously SIGQUIT).

  * Bumped MCE dependency to 1.860.

1.850 Mon Sep 09 12:30:00 EST 2019

  * More safety around cleanup code in MCE::Shared::Server.

  * Bumped MCE dependency to 1.850.

1.849 Sun Sep 08 23:30:00 EST 2019

  * Fixed edge case in MCE::Hobo when reaping inside a signal handler.
  * Guard cleanup code in MCE::Shared::Server during global destruction.
  * Configured extra data channel used for reaping Hobos and exporting.
  * Optimized reaping in MCE::Hobo when void_context is set.

  * Added list_pids class method to MCE::Hobo.
  * Added pid class method to MCE::Shared.

  * Bumped MCE dependency to 1.849.

1.848 Tue Sep 03 23:30:00 EST 2019

  * Fixed broken examples in the MCE::Shared documentation.

  * Bumped MCE dependency to 1.848.

1.847 Mon Sep 02 23:30:00 EST 2019

  * Obsolete RedHat MCE-Shared-1.841-Sereal-deps.patch file. This patch file
    is no longer needed and finally resolved with this release.

  * Updated PDL examples in the documentation including Cookbook on GitHub.
    Resolved segmentation fault in global cleanup for shared PDL objects.
    Added missing pdl_random class method to MCE::Shared. 

  * Bumped MCE dependency to 1.847.

1.846 Mon Aug 26 21:30:00 EST 2019

  * Fixed code tags in documentation. Thank you, Mohammad S Anwar.

  * Bumped MCE dependency to 1.846.

1.845 Sun Aug 25 22:00:00 EST 2019

  * Improved is_joinable, is_running, list_joinable, and list_running
    in MCE::Hobo. Thank you, Philippe Baumgart.

  * Added parallel Graphics::Framebuffer demonstrations:
    https://github.com/marioroy/mce-examples/tree/master/framebuffer

  * Bumped MCE dependency to 1.845.

1.844 Wed Aug 14 21:30:00 EST 2019

  * Completed validation running Kelp and Raisin apps with MCE::Shared.
    For example, constructing shared objects at the top of the script
    (i.e. MCE::Shared->scalar, MCE::Shared->cache, et cetera).
    Shared objects are accessible by Plack workers (i.e. Starman).

  * Disable internal signal handling for the shared-manager process
    if spawned from inside a thread or process.

  * MCE::Hobo workers exit immediately upon receiving a SIGSEGV signal.
    This safegaurds IPC from stalling inside the manager process.

  * Enhanced the _wait_one private function in MCE::Hobo.

  * Removed Prima from the list for auto-enabling the posix_exit option.
    Prima (since 1.52) is parallel safe during global cleanup.

  * Reached 100% Pod coverage.

1.843 Tue Jul 23 22:30:00 EST 2019

  * Updated results in MCE::Hobo (Parallel::ForkManager-like demonstration).
  * Bumped MCE dependency to 1.843.

1.842 Sun Jul 21 19:00:00 EST 2019

  * The Windows hack introduced in 1.841 is 2x slower for one edge case.
    Therefore, reverted the Windows hack in MCE::Shared::Server.

  * Fixed race condition abnormalities in MCE::Hobo.
  * Added Parallel::ForkManager-like demonstration to MCE::Hobo.
  * Bumped MCE dependency to 1.842.

1.841 Sun Jul 07 04:30:00 EST 2019

  * IPC update; raising reliability across multiple platforms.
  * Improved the hack for the Windows platform in MCE::Shared::Server.

  * Support reading a shared <DATA> handle residing in the main script
    without involving the IO::FDPass module.

  * Added barrier option to MCE::Shared::Queue allowing one to disable.
  * Added mutex locking for all shared objects, previously just condvars.
  * Added void_context option to MCE::Hobo.

  * Renamed POD method headers from '=item' to '=head2' in Shared classes.
  * Bumped MCE dependency to 1.839.
  * Removed MANIFEST.SKIP.

1.840 Thu Jan 03 23:30:00 EST 2019

  * Improved destroy and exit cleanup in MCE::Shared::Server.

1.839 Sat Aug 25 13:00:00 EST 2018

  * Seeds the Math::Random::MT::Auto generator automatically when present
    in MCE::Hobo, similarly to Math::Random and Math::Prime::Util, to avoid
    child processes sharing the same seed value as the parent and each other.
    The new seed is computed using the current seed.

  * Updated MCE::Shared::Cache to support optional argument "expires_in" for
    set and sugar methods.

  * Updated MCE::Shared documentation.
  * Bumped MCE dependency to 1.837.

1.838 Mon Jun 25 22:00:00 EST 2018

  * Fixed exporting deeply-shared regressions.

1.837 Mon Jun 25 08:30:00 EST 2018

  * Fixed deeply-shared regressions. Thank you, PerlMonks (Veltro).
    See https://perlmonks.pairsite.com/?node_id=1216790.

  * Applied small optimizations.
  * Bumped MCE dependency to 1.836.

1.836 Tue Mar 13 15:00:00 EST 2018

  * Added chameneos demonstration to MCE::Shared::Condvar.
  * Load IO::Handle for extra stability, preventing workers loading uniquely.

  * Load Net::HTTP and Net::HTTPS before spawning if present LWP::UserAgent.
    See http://www.perlmonks.org/?node_id=1199760
    and http://www.perlmonks.org/?node_id=1199891.

  * Bumped MCE dependency to 1.835.

1.835 Tue Jan 23 08:00:00 EST 2018

  * Added max_workers method to MCE::Hobo.
  * Improved Queue await and dequeue performance on the Windows platform.

  * Added chameneos-redux parallel demonstrations on GitHub:
    https://github.com/marioroy/mce-examples/tree/master/chameneos

  * Bumped MCE dependency to 1.834.

1.834 Fri Dec 15 15:30:00 EST 2017

  * Fixed croak handling inside MCE::Shared::Server.
  * Enhanced sequence (bounds_only) to return optional 3rd value (id).
  * Improved seconds method for _delay package inside MCE::Hobo.
  * Improved clear and get methods for shared objects.
  * Tweeked shared_cache_lru test script.

1.833 Tue Nov 21 15:30:00 EST 2017

  * Condvar timedwait supports floating seconds via Time::HiRes.
    The documentation was correct, but not high resolution in code.

  * Added LWP::UserAgent to list for enabling posix_exit.
  * Improved number-sequence generation for big integers.
  * Improved exiting (CLOSE, DESTROY) during cleanup state.
  * Improved signal handling when server is waiting on IO.
  * Updated "OBJECT SHARING" section in documentation.

  * Bumped MCE dependency to 1.832.

1.832 Sun Oct 08 20:30:00 EST 2017

  * Added STFL (Terminal UI) to list for enabling posix_exit.
    See http://www.perlmonks.org/?node_id=1200923.

  * Math::Prime::Util random numbers now unique between Hobo workers.
    See http://www.perlmonks.org/?node_id=1200960.

  * Bumped MCE dependency to 1.831.

1.831 Tue Sep 19 23:00:00 EST 2017

  * Resolved crash on the Windows platform for older Perl (< v5.18).
    Older Perl must continue to run the shared-server as a thread.
    Thank you CPAN testers, CHORNY and NONAME.

  * Re-enabled Condvar testing on the Windows platform.

1.830 Fri Sep 15 23:00:00 EST 2017

  * Disabled Condvar tests on the Windows platform. I'm unable to replicate
    the exit behavior reported by two smoke machines running Windows.

1.829 Thu Sep 14 23:00:00 EST 2017

  * Disabled Condvar tests on Windows machine without IO::FDPass.

1.828 Wed Sep 12 23:00:00 EST 2017

  * Removed an extra "=over" command in the documentation.

1.827 Tue Sep 12 17:00:00 EST 2017

  [BUG FIXES]

  * Fixed bug in MCE::Shared::Queue. Thank you, Tomohiro Hosaka.

  [ENHANCEMENTS]

  * Refactored MCE::Hobo, MCE::Shared, and MCE::Shared::Server.
  * Preserve lexical type for numbers during IPC.

  * Added Coro and Win32::GUI to list for enabling posix_exit.
  * Added encoder and decoder methods for overriding serialization.
  * Added parallel HTTP get demonstration using AnyEvent to MCE::Hobo.
  * Added Inline::Python, Logger, and Tie::File demonstrations to MCE::Shared.
  * Added DBM-Sharing section to the POD documentation.
  * Added iterator method to MCE::Cache.

  * Improved auto-dereferencing for shared arrays, hashes, and scalars.
  * Improved open method for non-shared file-handles in MCE::Shared::Handle.
  * Improved shared-PDL support. Updated MCE::Cookbook on GitHub.
  * Improved signal handling, including nested parallel-sessions.
  * Improved running MCE::Hobo and MCE::Shared with PDL.
  * Improved taint mode via perl -T.

  * In MCE::Hobo, waitall and waitone are now aliases to wait_all and
    wait_one respectively for backwards compatibility.

  * No longer loads threads on the Windows platform in MCE::Shared::Server.
    This enables MCE::Hobo to spin faster, including lesser memory consumption.
    Threads isn't required to run MCE::Hobo.

  * Removed extra white-space from POD documentation.
  * Validated MCE::Hobo and MCE::Shared on SmartOS.

  * Bumped MCE dependency to 1.830.

1.826 Wed May 03 03:00:00 EST 2017

  * Reduced memory consumption.

  * Clarified "limitations" section in MCE::Share::{ Condvar, Handle, Queue }.
    Clarified "extra functionality" section in MCE::Shared.
    Thank you, http://www.perlmonks.org/?node=zentara.

  * Bumped MCE dependency to 1.829.

1.825 Fri Apr 28 16:00:00 EST 2017

  [BUG FIXES]

  * Do not enable barrier mode for Queue on the Windows platform.
  * Fixed MCE::Hobo on the Windows platform for older Perl < v5.16.

  [ENHANCEMENTS]

  * Added unbless option when exporting a shared object.
    Thank you, Nick Tonkin: https://metacpan.org/author/TONKIN

  * Added Curses and Prima to list for enabling the posix_exit option.
  * Added module option for using a class explicitly when tie'ing a variable.
  * Improved support for running MCE::Hobo on the NetBSD platform.
  * Enhanced IPC and signal handling. Reduced memory consumption.

  * Bumped MCE dependency to 1.828.

1.824 Thu Apr 06 18:00:00 EST 2017

  * Fixed bug introduced in 1.818, syswrite data to a shared file handle.

1.823 Wed Apr 05 01:30:00 EST 2017

  * Do not enable barrier mode for Queue if constructed inside a thread
    or for the fast => 1 option.

  * Fixed leaked handles during destruction; MCE::Shared::{ Condvar, Queue }.

  * Updated MCE::Shared to not croak when running Perl in taint mode via
    perl -T. Failing -T was MCE::Shared::{ Handle, Sequence, and Server }.

  * Bumped MCE dependency to 1.827.

1.822 Sun Apr 02 23:00:00 EST 2017

  * Is now safe running MCE::Hobo with the Wx GUI toolkit (wxWidgets).
  * Bumped MCE dependency to 1.826.

1.821 Sun Apr 02 07:00:00 EST 2017

  * Updated MCE::Shared::Queue. The following provides a comparison
    for the enhancements made regarding IPC during 1.818 through 1.821,
    in order to run on machines having "many" cores. I ran with 12, 96,
    and 192 workers on an 8 core box.

    Shared queue, dequeue 100k items.

       my $Q = MCE::Shared->queue();

       # Must start the manager manually when IO::FDPass is missing.
       # This caveat applies to Condvar, Handle, and Queue.

       MCE::Shared->start() unless $INC{'IO/FDPass.pm'};

       $Q->enqueue( 1 .. 100000 );
       $Q->end();

       MCE->new(
           max_workers => 12, 96, or 192,
           user_func   => sub {
               while ( defined ( my $item = $Q->dequeue ) ) {
                   ;
               }
           }
       )->run();

    MCE::Shared 1.821:  12 ~ 1.325 secs  96 ~ 5.206 secs  192 ~ 8.158 secs
    MCE::Shared 1.825:     ~ 0.913 secs     ~ 1.068 secs      ~ 1.560 secs

  * Results were captured on a fast 8 core system running CentOS Linux 7.
    The thing to take from this is that running many workers "no longer"
    results in up to 6.2x penalty regarding IPC.

  * When IO::FDPass is missing, croak with error if constructing a Condvar
    or Queue and forgotten to start the shared-manager process manually.

  * Bumped MCE dependency to 1.825.

1.820 Sat Apr 01 01:00:00 EST 2017

  * Completed validation for running MCE on a box having 100+ cores.
  * Tuned the number of data-channels for IPC, similar to MCE.

  * Bumped MCE dependency to 1.824.

1.819 Fri Mar 31 19:30:00 EST 2017

  * Calibrated the number of data-channels for IPC.

  * Bumped MCE dependency to 1.823.

1.818 Fri Mar 31 11:00:00 EST 2017

  * Check for EINTR during sysread and syswrite.
  * Improved non-shared handles constructed with MCE::Shared::Handle.
  * Reap MCE::Hobo's from script exiting during development process.
  * Completed validation for using MCE::Shared with 200+ cores.

  * Bumped MCE dependency to 1.822.

1.817 Sun Mar 19 04:00:00 EST 2017

  * Fixed broken SIG{'PIPE'} handling: e.g. script.pl | head.
  * Improved reliability when running MCE::Shared with threads.

  * Added parallel Net::Pcap and Ping demonstrations on GitHub:
    https://github.com/marioroy/mce-examples/tree/master/network

  * Default to ':raw' for BINMODE in MCE::Shared::Handle.
  * Optimized 'dequeue' method in MCE::Shared::Queue.

  * Refactored MCE::Hobo to spawn children on the Windows platform.
    This is necessary for Mojo::IOLoop::HoboProcess to run properly,
    with Mojolicous 7.25 and later.

  * Bumped MCE dependency to 1.821.

1.816 Mon Mar 06 13:00:00 EST 2017

  * Optimized SHIFT and UNSHIFT methods in MCE::Shared::Ordhash.

1.815 Fri Mar 03 23:00:00 EST 2017

  * Fixed issue with localizing AUTOFLUSH variable before autoflush handles.
    Thank you, Charles Hendry for raising the issue.

  * Bumped MCE dependency to 1.819.

1.814 Wed Mar 01 22:00:00 EST 2017

  * Fixed an issue in regards to deeply sharing an array or hash.

  * Changed Sereal to Sereal::Decoder and Sereal::Encoder in recommends
    section inside Makefile and META files.

  * Revised limitations section in documentation, in regards to not having
    IO::FDPass. E.g. Condvar, Handle, and Queue.

  * Added 'end' method to MCE::Shared::Queue.
    Updated documentation on dequeue and pending.

  * Bumped MCE dependency to 1.818.

1.813 Wed Feb 22 18:00:00 EST 2017

  * Revised the main description in MCE::Shared::Cache.
    Improved write performance by up to 8 percent.
    Fixed spelling mistakes.

  * Revised the description on posix_exit in MCE::Hobo.

1.812 Mon Feb 20 05:30:00 EST 2017

  * Improved performance for MCE::Shared::Cache.
    This is now a hybrid LRU-plain cache implementation.
    Added parallel demonstration at the end of the documentation.

  * Bumped MCE dependency to 1.814 for the example to run.
  * Tweaked MCE::Shared::Ordhash and MCE::Shared::Server.

1.811 Wed Feb 15 17:00:00 EST 2017

  * Bumped IO::FDPass dependency to 1.2 if not already installed (1.1+)
    and have a CC compiler on hand. IO::FDPass is optional otherwise.

  * Support csh redirection in Makefile.PL via bash for locating a C compiler.

1.810 Tue Feb 14 17:00:00 EST 2017

  * Bumped minimum requirement for Sereal to 3.015 when available.
    Added check ensuring matching version for Encoder and Decoder.

1.809 Mon Feb 13 23:30:00 EST 2017

  * Fixed bug in MCE::Shared::Queue (dequeue_nb) when queue has zero items.
  * Applied small optimization in MCE::Shared::Sequence.

  * Added MCE::Shared::Cache, a fast and memory-efficient LRU-cache module.
  * Added pipeline methods to MCE::Shared::Array, Hash, Minidb, and Ordhash.
  * Added recommends section to Makefile and META files: IO::FDPass, Sereal.
  * Added cross-platform template to MCE::Hobo for making an executable.

  * Added hobo_timeout option to MCE::Hobo for timeout capability.
    Also, imply posix_exit => 1 when Gearman::XS is present.

  * Added MCE::Hobo + Gearman demonstrations (xs and non-xs) on GitHub:
    https://github.com/marioroy/mce-examples/tree/master/gearman_xs
    https://github.com/marioroy/mce-examples/tree/master/gearman

  * Changed kilobytes and megabytes to kibiBytes (KiB) and mebiBytes (MiB)
    respectively inside the documentation.

  * Having IO::FDPass is beneficial for Condvar(s), Handle(s), and Queue(s).
    Thus, append IO::FDPass to PREREQ_PM if we can and not already installed.
    Run MCE_PREREQ_EXCLUDE_IO_FDPASS=1 perl Makefile.PL to bypass the check.

  * Improved documentation for QUERY STRING in various helper classes.
  * Updated SYNOPSIS in various helper classes.
  * Updated LOCKING section in MCE::Shared.

1.808 Fri Dec 09 23:30:00 EST 2016

  * Optimized the barrier synchronization example in MCE::Shared::Condvar.

1.807 Wed Nov 23 16:00:00 EST 2016

  * Refactored MCE::Hobo. Thank you, Hermann Mueller for test case.
  * Improved reliability on the Windows platform by using threads.
  * Bug fixes for test scripts.

1.806 Tue Nov 01 16:00:00 EST 2016

  * Added a new section titled LOCKING to the MCE::Shared documentation.
  * Tweaked shared-manager-loop delay -- applies to MSWin32 only.

1.805 Fri Sep 23 01:00:00 EST 2016

  * Fixed close method in shared-handle to work with Perl5i.
    Support for Perl5i is on Unix only. Do not use threads.

  * Bumped MCE dependency to 1.805.

1.804 Thu Sep 01 16:00:00 EST 2016

  * Fixed bug in MCE::Shared::Queue. Thank you, Mary Ehlers.

  * Improved support for running MCE::Hobo with Tk. Added Tk demonstrations
    to MCE::Examples (1.805). Thank you, Götz Meyer.

1.803 Sun Jul 10 23:30:00 EST 2016

  * Modified MCE::Shared::{ Base, Minidb } to pass testing with Sereal.
  * Re-enabled Sereal 3.008+ for Perl < v5.12.0, if available.
  * Optimized dequeue methods in MCE::Shared::Server.

1.802 Mon Jul 04 03:30:00 EST 2016

  * Default to Storable for serialization in Perl less than v5.12.0.
    Sereal 3.008+, if available, is loaded automatically in Perl v5.12+.

1.801 Sun Jul 03 00:30:00 EST 2016

  [BUG FIXES]

  * Fixed bug with MCE::Hobo for the Solaris platform.
  * Fixed race condition in Condvar->broadcast, ->signal, ->wait.
  * Fixed race condition in Queue->await.

  [ENHANCEMENTS]

  * MCE::Shared 1.801 is stable on all supported platforms.
    Bumped version to match MCE version.

  * Completed work supporting cyclical include of MCE Hobo.
  * Updated MCE::Shared to support Perl included with Git Bash.

1.102 Mon Jun 20 08:00:00 EST 2016

  * Updated logic for obtaining caller in several MCE::Hobo methods.
    This was missed in the 1.101 release.

1.101 Mon Jun 20 01:00:00 EST 2016

  [BUG FIXES]

  * Reverted a small change in Shared/Server.pm introduced in 1.100.

1.100 Sat Jun 18 16:30:00 EST 2016

  [ENHANCEMENTS]

  * Use Sereal 3.008+ automatically if available on the box.

  [NEW FEATURES]

  * Added support for cyclical include of MCE Hobo by scoping the
    configuration to the local package.

1.008 Wed May 25 22:00:00 EST 2016

  * Applied correction in META.json.
  * Bumped MCE dependency to 1.707.

1.007 Wed May 25 16:00:00 EST 2016

  [NEW FEATURES]

  * Added chunk IO capability to READ in MCE::Shared::Handle. Both non-shared
    and shared handles are supported. See documentation for demonstrations.

  * Added assign to MCE::Shared::{ Array, Hash, and Ordhash }. Ditto, added
    hassign and lassign to MCE::Shared::{ Minidb }. Assign is inspired by
    Tie::Hash::Indexed v0.05_02. Thank you, Marcus Holland-Moritz.

  * Added META.json to the distribution.

  [ENHANCEMENTS]

  * Close shared file-handles when stopping the shared-manager process.
  * Improved exporting for shared MCE::Shared::{ Array, Hash, and Ordhash }.

  * Now loads PDL::IO::Storable automatically when PDL is present. PDL must
    come before MCE::Shared. Otherwise, load PDL::IO::Storable manually.

  * Specifying Sereal for serialization falls back to Storable when PDL is
    present. A warning is emitted indicating Sereal is not used.

  [API CHANGES]

  * Removed iterator and rewind functionality from MCE::Shared::Minidb.
    This was done to streamline Minidb and MCE/Shared/Server.pm.

1.006 Fri Apr 29 21:30:00 EST 2016

  [BUG FIXES]

  * Enabled deeply sharing by default when constructing a shared array
    or hash. Thank you, Frank Wang.

  [ENHANCEMENTS]

  * Localized the output record separator in error and trap routines.
  * Optimized READ in MCE::Shared::Server.

1.005 Fri Apr 22 21:30:00 EST 2016

  [ENHANCEMENTS]

  * Time::HiRes sleep resolution is 15 milliseconds on Windows and Cygwin.
    Adjusted timeout values accordingly. Thank you, Daniel Dragan.

1.004 Fri Apr 15 00:30:00 EST 2016

  * Bumped version for MCE to 1.705. Thank you, smoke testers.

1.003 Thu Apr 14 10:00:00 EST 2016

  * Bumped version for Test::More to 0.88. Thank you, Paul Howarth.

1.002 Thu Apr 14 05:00:00 EST 2016

  [BUG FIXES]

  * Reached *stable* on all major platforms for MCE::Shared 1.0x.

  [NEW FEATURES]

  * MCE::Shared exports mce_open for more native feel to making a shared
    file handle.

  * Improved search functionality in MCE::Shared::{ Array, Hash, Ordhash }
    and MCE::Shared::Minidb. Thank you, Demian Riccardi.

  [ENHANCEMENTS]

  * Enabled freeze callbacks for Sereal.
  * Switched bug tracking to GitHub.
  * Tweaked test scripts.

1.001 Sat Mar 19 23:00:00 EST 2016

  * Completed IPC optimizations for 1.0.

1.000 Tue Mar 15 22:00:00 EST 2016

  * First release.