Forks-Super
view release on metacpan or search on metacpan
___ Actually, this would be part of a good XSIG framework workout.
Some scripts with natural forks and wait/waitpid calls
should produce the same results with and without Forks::Super
(i.e., F::S is a drop-in replacement)
___ reinstate t/31? ok on Cygwin, MSWin32, Linux, FreeBSD ?
_X_ still doesn't work on Linux? Sure it does.
___ a "wrapper" script that executes an arbitrary command in a
separate process, but as if it had come from a fork call within
a program using Forks::Super. The purpose is to make sure that
a program runs in a detached process. The wrapper will set up
all the (almost surely file based) IPC and then run the desired
program. The other purpose is to execute a <XXX>command </XXX>
subroutine on a remote host.
_O_ are %CHILD_STDxxx variables obsolete? How to deprecate?
Not obsolete. At least not until we remove the setting
$Forks::Super::OVERLOAD_ENABLED.
_o_ setuid => option to fork
___ Anything to learn from python multiprocessing module? See
stackoverflow.com/questions/7931455/
_X_ synchronization objects, acquire and release methods
___ perm fix for 48b with sync?
___ anything else
___ exercise every method of FS::Tie::IPCDupSTDIN
(__config_fh_child_stdin_file, $job->{fh_config}{f_in},
sub/natural-style)
___ encryption and other layers on IO channels
___ parent_dump enhancements:
_X_ get and display stack trace of natural/sub-style children
___ measure input and output for IPCxxxHandle classes
___ CPAN testers find lots of timing errors in openbsd. Is pause(n)
on openbsd prone to returning significantly more or less than n
seconds later? Would a busy wait just for openbsd make things
better or worse?
_o_ async method like threads, forks, Coro?
bg_eval is like the async method
___ $job->{child_stdin}, {child_stdout}, {child_xxx} should be
restructured as $job->{child_fh}{stdin}, {stdout}, etc.
i.e., a dedicated member that holds a collection of iohandles
___ what happens if you mix Forks::Super and forks?
I'm guessing it's not good.
meh, it matters less than I thought
t/forked_harness.pl times out after 30 seconds but tests pass
regular make test worked?
t/24e-kill.t does not terminate
_X_ have a "remote_host" option to go with "cmd" option
_X_ remote_host => host
_X_ remote_host => [host, user, pwd]
to run on a remote server that requires some credentials
_X_ remote_host => [ \@hosts ] or [ \@hosts, user, pwd ]
to run on any of a cluster of available remote hosts
_X_ allow a separate MAX_PROC-like setting to be used for
remote hosts
___ remote_host_proto => 'ssh'
default is ssh and requires Net::OpenSSH
___ Net::OpenSSH doesn't work on cygwin, MSWin32. Alternatives?
___ support remote && dir
___ support remote && env
___ FS::Config::enable_signal_config not being tested?
___ determine in system-limits.PL if alternate alarm is needed
___ pmap or pgrep with chunking, more like mce_grep
chunking reduces overhead
chunking increases runtime in pathological cases or when there
is high variance in the runtime of individual jobs
_X_ is "share" the right framework to return data from a background job?
Yeah, it's pretty good.
_o_ job groups, where we can call wait or kill all of the jobs
in the group.
Can use {name} for this, right?
___ install Forks::Super::pause as CORE::GLOBAL::sleep on Windows?
___ a user SIGCHLD handler could run after the Forks::Super handler
and use overridden wait, waitpid calls, right?
___ Test <$pid> in list context, $] >= 5.018
_X_ remote testing needs a lot of improvement. How can you check
for passwordless publickey authentication without ever needing
to read from tty?
___ remote use case: executing long list of tasks on a cluster.
___ load balancing
___ ability to enable/disable hosts in-situ
___ more options for job "chunking" to pool background jobs.
This can reduce overhead and improve efficiency at the
expense of more complexity in managing exit codes,
child output streams, etc.
___ equal division among available cores
___ "fibonacci" chunking
___ use hints about what kinds of jobs are run in background
processes. Use more chunking as the job run times become
shorter and less variable.
( run in 0.625 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )