Forks-Super

 view release on metacpan or  search on metacpan

TODO  view on Meta::CPAN

        ___ 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 )