Revision history for Forks-Super
0.97 2018-10-08
Doc updates and small improvement to remote test procedure.
0.96 2018-09-05
RT#127016 fix issue with blocking sockets/pipes on MSWin32
reduce memory wrap panic on MSWin32
Improved remote test procedure
0.95 2018-08-30
Improved diagnostics in remote tests, other test fixes.
Accomodate higher thread IDs in MSWin32
0.94 2018-06-15
pgrep, pmap for convenient parallel grep, map operations
Using more defaults for MacOS in build process, trying to find out
where the build process hangs.
0.93 2018-02-09
Disable indirect exec/system for MSWin32
RT#124316 deinit_pkg to work around a side-effect
and clean up some minor issues
0.92 2018-02-02
Use indirect exec and system calls when appropriate.
Test fixes, especially for older perls.
0.91 2017-07-27
Address process group emulation issue in MSWin32
Upgrade Signals-XSIG to v0.15
0.90 2017-05-25
Simplify remote testing
0.89 2017-04-06
Fix unclosed pipes after each fork issue (reported by jatu@cpan.org)
Use /dev/shm for ipc where available
Improvements to remote test infrastructure
0.88 2017-02-08
'remote' option to run commands in background on remote host
improve handling of external commands with special chars
Upgrade Sys-CpuAffinity to v1.12
Enable poor man's alarm for darwin (RT#118474)
0.87 2016-11-18
Rename Forks::Super::Queue to Forks::Super::Deferred. Queue will
be reserved for an object queue that works across parent-child calls.
Upgrade Signals-XSIG to v0.14
Upgrade Sys-CpuAffinity to v1.11_02
Fixes for Forks::Super::Sync::IPCSemaphore
0.86 2016-08-25
Upgrade Sys-CpuAffinity to v1.09
Refactor global destruction
Test fixes for MSWin32 and netbsd
0.85 2016-07-25
Improvements in running out of open filehandles gracefully
Upgrade Sys-CpuAffinity to v1.08
0.84 2016-05-24
More attempts to fix emulating with MSWin32 and openbsd
0.83 2016-05-19
More attempts to fix SIGCHLD handling with emulation.
Adjust build process to help package build on ActiveState.
0.82 2016-05-09
Fix SIGCHLD handling issue with new emulation mode
0.81 2016-05-05
Support for "emulation" mode, where jobs still run in foreground
0.80 2015-10-07
Lose support for YAML::Tiny as serialization protocol for 'bg_eval'.
Further attempt at resolving timeout issues on freebsd.
Fix test issue on MSWin32
0.79 2015-10-06
Attempt at resolving long standing timeout issues on freebsd systems.
0.78 2015-09-30
Test improvements.
0.77 2015-08-13
Support assigning code ref to $Forks::Super::MAX_PROC, %MAX_PROC
Introducing PREFORK {...}, POSTFORK {...} blocks
RT#105814 - get t/66a when there is a user init process running
0.76 2015-06-26
fix tests, <=5.10 compatibility that were broken in v0.75
0.75 2015-06-24
RT#105310 refactor *.PL files so distro config more likely to succeed
0.74 2015-06-08
Support return of blessed objects from 'bg_eval'.
Lose support of JSON as a serialization protocol for 'bg_eval'
RT#78285 - support $ON_TOO_MANY_OPEN_FILEHANDLES module variable
More compensation for Cygwin's buggy flock
New Forks::Super::Job::count_queued_processes function
0.73 2014-06-18
support corrective measures for too many open file handles
0.72 2013-12-09
Support fork \&code and fork \@cmd syntax.
Use 'queue' as default on_busy behavior for jobs with dependencies
0.71 2013-10-10
test fixes that should help single CPU systems pass timing tests
0.70 2013-09-18
Experimental emulation of process groups in MSWin32 in
waitpid/kill functions.
Improved procedures to terminate a process tree in MSWin32.
0.69 2013-08-19
Move FS::Tie::BackgroundScalar and BackgroundArray, which are no
longer used with 'tie', to FS::LazyEval.
Better handling of recalcitrant MSWin32 processes.
0.68 2013-07-01
Refactored sync objects - should eliminate race conditions
during parent/child startup.
0.67 2013-05-25
Support share attribute with a natural fork.
0.66 2013-04-16
RT#84548 - re-fix disable overload for Perl <=5.12 too
0.65 2013-04-13
RT#84548 - fix disable overload warning with Perl>=v5.16
RT#76868 - incorporate Devel::GlobalDestruction if available.
0.64 2013-03-23
Improved thread signal processing in Win32
Upgraded bundled Sys-CpuAffinity and Signals-XSIG modules.
Some Forks::Super::Sync improvements
0.63 2012-03-28
refactor FS::Job::OS::get_cpu_load func for robustness, portability
remove F::S::Util dependency in SysInfo.pm.PL for openbsd's sake
0.62 2012-03-22
Fixed doc bug: max_fork option to F::S:fork should have been max_proc.
Implemented configuration files.
Implemented dynamic configuration through signals. Not sure how to
document it yet.
0.61 2012-03-05
Defines constants BG_QX, BG_EVAL as shorthand for tied class names.
Miscellaneous fixes specific to freebsd, openbsd, and solaris.
0.60 2012-02-29
tie interface to bg_qx, bg_eval calls. These calls are equivalent
in function if not in implementation:
$foo = bg_qx $command, \%options
tie $foo, 'Forks::Super::bg_qx', $command, \%options
And now supports the clunky list context background evals
tie @output, 'Forks::Super::bg_qx', $command, \%options
tie %result, 'Forks::Super::bg_eval', sub { ... }, \%options
A few more tweaks that make the module friendlier to Perl v<=5.6
0.59 2012-02-22
Improved waitall performance where there are many jobs to reap.
Improved error handling in sync option Win32 implementations.
0.58 2011-12-15
Added Java-style dump of program information in response to SIGQUIT
or other signal. See Forks::Super::Debug::enable_dump.
Minor fixes and test tweaks for solaris and openbsd
0.57 2011-12-09
Added sync => option for mutexs to coordinate parent and child procs.
New getc_XXX methods for interprocess communication.
Test fixes and tweaks.
0.56 2011-11-21
Fix build process bug introduced in v0.55. Failure to build bundled
Sys-CpuAffinity distro now won't break the whole build.
0.55 2011-11-10
exec and timeout are now compatible options
timeout now suppored on systems that don't implement alarm , or
where sleep and alarm are incompatible.
Test for -MForks::Super=cleanse
block => 1 option now respected with child's STDIN.
Upgrade bundled Sys::CpuAffinity to v1.05
Create Forks::Super::Debug::parent_dump for JVM style job dumps
0.54 2011-10-07
Allows PerlIO layers in child_fh spec.
Upgraded bundled Signals-XSIG to v0.13, Sys-CpuAffinity to 1.04.
More effort backporting to Perl v5.6.
kill func can signal procs that were not launched by Forks::Super.
Improvements to suspend/resume functions in Cygwin.
Fixes for daemon code introduced in v0.53.
Perl::Critic-inspired refactoring.
0.53 2011-07-14
Introduce daemon option to fork.
Introduce share => list-of-refs option to fork.
Introduce env => \%kvpairs , umask => mask options to fork.
Fixed -MForks::Super=cleanse bug introduced in 0.52
Forks::Super::kill on cmd-style job now delivers signal to the external
command, not the perl process that called system().
Increased initial deferred job id from -100K to -500K.
MSWin32 refactoring: fork-to-cmd, fork-to-exec, OS priority code.
bg_eval, bg_qx commands now return empty string on failure, never undef.
Upgrade Signals::XSIG bundle to v0.12.
0.52 2011-06-21
Calling Forks::Super::LazyEval::bg_eval and bg_qx in list context
doesn't work and is now disabled.
Performance enhancement for fork with file-based IPC.
Upgrade Sys-CpuAffinity bundle to v1.01
Bug fix in timeout code that hangs BSD (looks like it didn't work)
Test fixes.
0.51 2011-04-18
Include IPCPipeHandle.pm in manifest (D'oh)
Overload <> operator for Forks::Super::Job to read from child stdout.
$job->wait(0) now waits with timeout of 0, behaves differently
from $job->wait().
0.50 2011-04-17
Support dir => $directory option to start child in arbitrary dir.
Introduced tied F::S::Tie::IPCPipeHandle class for testing/debugging
use of pipes.
Support cpu_affinty => [@list] syntax.
Calling exit from a child sub is allowed again.
0.49 2011-04-01
Bundle with Signals::XSIG v0.10 and drop Forks::Super::Sighandler.
Setting $ENV{IPC_DIR}="undef" to disable file-based IPC now functions
except on MSWin32.
0.48 2011-03-16
Fix compile error in t/49.
Refactoring of some large subroutines.
0.47 2011-03-15
Fix for IPC clean up. Removed obsolete files and tests.
Revised and reintroduced F::S::Tie::IPCFileHandle, IPCSocketHandle
tied classes for debugging. Ultimately these classes will provide
a common interface for file- and socket-based IPC.
Attach job information to all file handles opened in the module.
0.44 2011-02-12
Upgrade Sys-CpuAffinity bundle to 0.99.
Can use Proc::ProcessTable to clean up grandchild processes.
Introduced reuse, dispose methods in Forks::Super::Job.
Fix tied $fh call (deprecated in 5.13.8).
Implement -MForks::Super=cleanse for picking up IPC litter off-line.
0.43 2010-11-15
API change for bg_eval, bg_qx functions: return value is no longer a
reference to a tied variable, but an overloaded object that retrieves
its value only when it is used.
Support timeout=> option to F::S::J::Ipc::read_stdXXX methods.
0.42 2010-10-17
Implemented child_fh => block spec.
Moved some functionality checks into %Forks::Super::SysInfo::CONFIG.
Getting bg_eval, bg_qx to do the right thing in taint mode.
Fixed IPC failures in non-English locales bug (cf.
www.cpantesters.org/cpan/report/8376777)
Fix stdin,stdout,stderr options to fork to work better with socket IPC.
0.41 2010-10-10
overload behavior from v0.34 more stable, enabled by default.
Change name of $Forks::Super::FH_DIR to IPC_DIR and how it is set.
META.yml changes so bundled distributions aren't indexed by CPAN.
Check if sleep/alarm are compatible before some features can be used.
0.40 2010-09-28
Implemented Forks::Super::Sighandler module and enhanced
signal handling. Use with Time::HiRes::setitimer where
available to monitor the job queue instead of a separate process.
0.39 2010-09-16
Support for YAML::Tiny, Data::Dumper in Forks::Super::LazyEval package.
Enable default install for bundled Sys::CpuAffinity, Sys::CpuLoadX mods
Some efforts toward backporting to 5.6.
0.38 2010-09-08
Removed redundant Forks::Super::Util::Time() call.
Testing changes, including checking taint compatibility.
Unregister SIGCHLD handler at END{} to fix intermittent errors.
0.37 2010-08-27
Support block=>0|1 option to F::S::J::Ipc::read_stdXXX methods
to force blocking/non-blocking IPC I/O.
Natural language for timeout/expiration/delay/start_after options
(requires DateTime::Format::NaturalLanguage).
Support CONFIG{filehandles}=0 to only use sockets & pipes for IPC.
0.36 2010-08-23
Test case fixes only.
0.35 2010-08-12
New IPC methods F::S::Job::write_stdin, read_stdout, read_stderr;
refactored a lot of IPC code.
wait, waitpid can return overloaded F::S::Job objects like fork().
Documented $Forks::Super::Wait::WAIT_ACTION_ON_SUSPENDED_JOBS.
Implemented suspend callback.
0.34 2010-08-10
Return value from fork() can be an overloaded Forks::Super::Job
object that behaves like its pid in number context.
0.33 2010-07-29
Added open2 and open3 convenience methods.
Support for JSON v1 in Forks::Super::LazyEval package.
If $Forks::Super::SUPPORT_LIST_CONTEXT is non-zero, then
fork() in list context returns Forks::Super::Job object to parent.
0.32 2010-05-18
New system dependent Forks::Super::SysInfo package.
Changes to Ipc.pm for robustness and to ease testing/debugging.
Put README.txt file into temporary IPC directories.
Improved cleanup of queue monitor.
0.31 2010-05-04
Extend socket IPC to cmd/exec-style forks (except MSWin32).
Making use of tie behavior to more Forks::Super::Deferred variables.
0.30 2010-04-25
Implemented suspend/resume functionality (for Windows, too).
Implemented kill/kill_all functions to send signals to jobs.
Bundles Sys::CpuAffinity (released) and Sys::CpuLoadX (unreleased)
modules, and enables $Forks::Super::MAX_LOAD parameter and
max_load option to fork().
0.29 2010-04-13
Pipes for IPC. system-limits.PL obtains pipe, socket capacity.
0.28 2010-04-05
JSON support for bg_eval call. Improved IPC file cleanup in MSWin32.
0.27 2010-04-03
Makefile changes, doc fixes
0.26 2010-03-18
Built OS::Win32 and OS::Linux for os-specific system functions.
OS::Linux includes first "conditional Inline::C code".
Broke up some long running unit tests into small pieces.
0.25 2010-03-10
$Forks::Super::LAST_JOB,$Forks::Super::LAST_JOB_ID capture job state in
bg_eval/bg_qx calls. Special handling for bg_eval/bg_qx jobs in waitpid
Timeout in MSWin32 will now (maybe) kill the grandchildren too.
0.24 2010-03-05
Fix cleanup of IPC files.
0.23 2010-02-20
Implemented timeouts on wait,waitpid,waitall calls.
0.22 2010-02-19
Added bg_qx function
0.21 2010-02-19
Decomposed large source file into manageable chunks.
Added stdin, stdout, stderr options to fork call.
0.16 2010-02-16
test fixes
0.15 2010-02-13
Further improvements using setpgrp with timeout option, cleanup.
0.14 2010-02-11
Bug/test fix for setpgrp issue on Linux.
0.13 2010-02-10
Added exec and callback options. Added bg_eval function.
0.12 2009-12-31
Added name attribute. waitpid, dependencies, and job lookup by job
name. Fixed named subroutine. Impl tied scalars for $ON_BUSY,
$QUEUE_INTERRUPT. On child timeout, all child subprocesses are killed.
0.11 2009-12-18
Fixes for some tests.
0.10 2009-12-08
Added sockets for IPC ; Changed API for accessing child
STDxxx handles.
0.09 2009-12-06
Require 5.7.3 for "safe" signals -- see perlipc ; refined some tests
0.08 2009-12-03
job-level debugging ; recommended modules to README and META.yml ;
os_priority implemented in MSWin32
0.07 2009-12-01
implement cpu_affinity option for Cygwin, Win32, Linux
0.06 2009-11-25
pod fixes; adding module config to import method (though this isn't
documented yet); v5.6 compatibility changes, tested on MSWin32
(AS) v5.6.1; may not pass all CPAN testers, but I expect improvement
0.05 2009-11-19
API Change Forks::Super::Job::_get to Forks::Super::Job::get
0.04 2009-11-14
Alpha release.