[BUG FIXES]
Fixed race condition on Windows for non-threaded workers.
Updated MCE Models to not fail when running inside an eval statement.
This addresses [#105557] and [#105559]. Thank you, Benjamin McKeown.Added new MCE option loop_timeout to prevent the MCE Manager process
from hanging perpetually. The manager process wrongly assumes a worker
is still running when the worker died in an uncontrollable manner.
This resolves [#111780]. Thank you, Benjamin McKeown.
[ENHANCEMENTS]
Perl 5.10.1 or later is required to run MCE 1.7. Perl < 5.10.1 lacks
'overloading.pm'.Added code in MCE::Grep's documentation for parsing huge files.
Added support for running MCE with Perl under MobaXterm on Windows.
MCE/examples and MCE/images are no longer included with the distribution.
These are maintained separately at https://github.com/marioroy/mce-examples
and https://github.com/marioroy/mce-assets respectively.MCE performs channel locking via a pipe or socket depending on platform.
Previously, locking was through file locking using flock. This resolves
the slow locking performance on Cygwin.Optimized signal handling including improved support on Windows.
Reduced overhead during spawning and job submissions on Windows and Cygwin.
This enables IPC to complete up to 20x faster, thus benefiting Monte-Carlo
simulations; e.g. calling ->run(0) or ->process(...) repeatedly.The MCE::Flow and MCE::Step Models can take an anonymous array for
specifying use_threads uniquely for sub-tasks.
[NEW FEATURES]
Added MCE::Hobo for running code asynchronously. This provides async/join
functionality for processes similarly to async/join in threads. It includes
->exit, ->kill, ->is_joinable, ->is_running, ->list, and more.Added MCE::Shared for sharing objects/data between threads/processes.
Added MCE::Shared::{ Array, Handle, Hash, Ordhash, and Scalar }.
Added MCE::Shared::{ Condvar, Minidb, Queue, and Sequence }.
Added MCE::Shared::{ Server }.
Added methods ->await, ->enq, and ->enqp to MCE::Step.
Added method ->await to MCE::Queue.
Added option max_retries => N for retrying a failed chunk from a worker
dying while processing input data or sequence of numbers.Added option posix_exit => 1 to avoid END and destructor processing.
This is necessary for running with Tk and child processes or with
use_threads => 0.Seeds the Math::Random generator automatically when present for non-threads
to avoid child processes sharing the same seed value as the parent and
each other. The new seed is computed using the current seed. Thus, okay
to set the seed at the application level for predictable results.