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.