Revision history for IPC::Exe
2.002001 2011/11/14
+ Added syntax sugar: @REDIRECTS can be specified after LIST.
+ Redirects may be specified with file descriptors > 2. They refer to
temporary filehandles that may be used for intermediate redirection.
Those filehandles do not necessarily have the same fd fileno.
- A &READER that dies will not leave STDIN in a bad state.
- Better localization of error variables.
2.001001 2011/10/22
+ Able to pass scalar references to \%EXE_OPTIONS for 'pid', 'stdin',
'stdout', and 'stderr' options. Each referenced scalar will be
assigned its corresponding value and will not be returned by exe().
+ &PREEXEC can return array references to perform open().
If references to array refs are returned, perform sysopen() instead.
+ Added taint checking.
+ Raised minimum Perl version required to v5.8.8.
This is for better handling of filehandles and PerlIO layers.
+ Changed release to semantic versioning.
- Pass along $@ upon each call to exe().
Do not modify $@ for bg().
1.010 2010/07/25
- Pass along $! and $^E upon each call to exe().
Do not modify $?, $! and $^E for bg().
- Hopeful robustness improvements for non-Unix.
1.009 2009/10/03
- Do not wait on child with returned STDOUT/STDERR filehandles.
- Removed dependency on POSIX module.
- Minor pod rearrangement.
1.008 2009/05/13
- Added: arguments, exit_waitpid and exit_close_pipe tests.
- Changed: tests no longer use ualarm() because it is unavailable sometimes.
- Further improvement of non-Unix quoting.
- Cleaned up aliasing code.
- Tried another fix for smoke test failures duplicating STDIN.
1.007 2009/05/05
- Changed: removed POSIX::_exit() because it got in the way of threads.
Unfortunately, END blocks are performed as a result of die() or exit().
I haven't found a reliable way to avoid END blocks inside a thread.
Addressed by updating CAVEAT section in pod.
- Added: $IPC::Exe::is_forked to tell if code is not in main process/thread.
Added is_forked test.
- Fixed: smoke test failures duplicating STDIN. We'll see if the fix works.
- Added: check for undef values in LIST. Added undef_cmd test.
- Minor pod corrections.
1.006 2009/05/02
- RT #45413: A chain of trivial scripts is stuck under Win2k, works under Linux
Threaded fork-emulation has limitations.
Addressed by updating CAVEAT section in pod.
Added *_pipe tests to account for this.
- RT #45263: wrong constant intermediate exit code
Fixed: $? was getting clobbered by waitpid(). Added exit tests.
- &READER is now called with ($child_pid, LIST) as arguments.
$child_pid allows waitpid($_[0], 0); to be called in &READER to set $?
- Deprecated 'exec' option in %EXE_OPTIONS. No more use of system().
- Changed: improved non-Unix quoting. Added quoting test.
- Added: manually flush STDERR/STDOUT after &PREEXEC.
- Added: use POSIX::_exit() upon failed exec to avoid calling END blocks.
- Added: use lib "../lib"; to examples/*.pl
- Minor changes to "README" and "Makefile.PL".
1.005 2009/04/21
- Fixed: unknown open() mode '>&' to be compatible with Perl 5.6+.
- Minor changes.
- Added: LICENSE to "META.yml".
1.004 2009/04/20
- Fixed: found = in conditional, should be ==.
use warnings; doesn't understand what I mean.
1.003 2009/04/20
- Changed: exec() failure code sequence.
- Fixed: unknown open() mode '<&' to be compatible with Perl 5.6+.
- Fixed: minor mistakes in pod.
- Added: PREREQ_PM for POSIX module.
1.002 2009/04/17
- Fixed: barewords STDIN/STDOUT/STDERR while "strict subs".
- Extracted examples into new EXAMPLES section in pod.
- Included "META.yml" in dist.
- Extracted license info from "README" into its own file "LICENSE".
- Skip 'background' test in "02_IPC-Exe.t" if not in DEBUG mode.
Testing bg() requires manual inspection.
1.001 2009/04/02
- Initial revision.