IPC-Run

 view release on metacpan or  search on metacpan

Changelog  view on Meta::CPAN

	- Win32 SUPPORT!!!!!
	- Added support for env. var. IPCRUNDEBUG=1 (or 2, 3, 4) to make it
	  easier for users to debug the test suite.
	- Adapt to IO::Pty 0.91, which creates slave fds in new(), forcing us to
	  close them in the parent after the fork().  We don't check for IO::Pty's
	  version number, perhaps we should (waiting for a response from Roland
	  Giersig <RGiersig@cpan.org> about what he intends, since this could affect
	  all users of older IO::Ptys that upgrade).
	- Add a sleep(1) to allow the slave pty to be initted, otherwise a premature
	  write() to the slave's input can be lost.  This is a bogus hack, but
	  IO::Pty 0.9x should fix it when it's released.
	- removed spurious use Errno qw( EAGAIN ), since this causes warnings with
	  perl5.00505.  Reported by  Christian Jaeger <christian.jaeger@sl.ethz.ch>
	  (pflanze).
	- IPC::Run::start() now does a kill_kill() if called on an already started
	  harness.  This is needed on Win32 to pass the test suite, but it's also a
	  nice thing.
	- The debug file descriptor is built by dup()ing STDERR in the parent and
	  passing it to the kids.  This keeps us from needing to worry about
	  debugging info in the select() loop and removes unnecessary complications.
	  Still needs a bit of work: it should be dup()ed in _open_pipes and its
	  value should be stored in the harness, not a global.
	- child processes are now a little more clearly identified in debug output.
	- Some debugging messages are now clearer.
	- debugging is now almost ready to be compile-time optimized away.
	- "time since script start" is now shown when debugging.  We should check to
	  see if Time::HiRes is loaded and make this more accurate.
	- pipe opens are now down in Run::IO::open_pipe().
	- map_fds won't complain about no open fds unnecessarily (which was rare,
	  but still).
	- the debug fd is now determined per-harness, not globally.  This requires a
	  bit of a hack (since I don't want to require $harness->_debug everywhere
	  _debug might be called), but it seems worthwhile.

0.5 Sat Nov 10 21:32:58 EST 2001
	- confess() when undef passed to _exec()
	- Cleaned up some POD and code comments.
	- Added patch to make the write side of pipes & ptys that IPC::Run must
	  write to be non-blocking. Added a test for pipes, but Boris reports that
	  Solaris 8 something seems to still block in the pty case, though Linux
	  does not, so I did not add a test for that case.  Probably should add one
	  and complain bitterly if it fails (rather than actually failing the tests)
	  and ptys are used.  Patch from Borislav Deianov
	  <borislav@users.sourceforge.net>.
	- Added a patch to invalidate the search path cache if the file is no longer
	  executable, also from Borislav Deianov <borislav@users.sourceforge.net>
	- Started implementation of an adopt() external call that would let you
	  aggregate harnesses, and a t/adopt.t, but different children need to
	  properly close all FDs: they're inheriting each other's FDs and not
	  properly closing them.
	- Close $debug_fd in &sub coprocesses.
	- Document the problems with &sub coprocesses.
	- Fixed fork error return detection to actually work, spotted by Dave
	  Mitchell <davem@fdgroup.co.uk>.
	- Give errors if a path with a directory separator is passed in if the
	  indicated filename does not exist, is not a file, or is not executable.
	  They're unixish errors, but hey...
	- Allowed harness \@cmd, '>', $foo, timeout 10 ; to parse (it was mistakenly
	  thinking I wanted to send output to the IPC::Run::Timer created by
	  timeout().
	- pumpable() now returns true if there are any kids left alive, so that
	  timers may continue to run.
	- A timeout of 1 second is forced if there are no I/O pipes left open, so
	  that the select loop won't hang in select() if there is no I/O to do.
	  Perhaps should only do that if there are timers.
	- Added a signal() to send specified signals to processes.  Chose this over
	  the more traditional Unix kill() to avoid people thinking that kill()
	  should kill off processes.
	- Added kill_kill() which does kill off processes and clean up the harness.
	  Sends TERM then (if need be) waits and sends KILL.
	- timeouts now work.
	- Removed eval{}s from a few subs, we were being over protective.
	- Preserve pos() across updates to scalars we append to, so m//g
	  matches will work.
	- Cleaned up the examples/
	- Added abuse/ for (mostly user contributed) scripts that I can use as
	  a manual regression test.  Most/all are reflected in t/*.t, but not
	  verbatim, so it's good to have to originals around in case they
	  happen to trigger something t/*.t miss.
	- Cleaned up SYNOPSIS a bit: it was too scary.  Still is, but less so.

0.44 Mon Oct  2 17:20:29 EDT 2000
	- Commented out all code dealing with select()'s exception file descriptor
	  mask.  Exceptions are vaguely defined and until somebody asks for them
	  I don't want to do anything automatic with them.  Croaking on them
	  was certainly a bad idea: FreeBSD and some other platforms raise an
	  exception when a pipe is closed, even if there's data in the pipe.
	  IPC::Run closes a pipe filehandle if it sees sysread() return an
	  error or 0 bytes read.

0.43 Thu Aug 17 23:26:34 EDT 2000
	- Added flushing of STDOUT and STDERR before fork()/spawn() so that the
	  children won't inherit bufferloads of unflushed output.  This seems
	  to be automatic in 5.6.0, but can cause loads of grief in 5.00503.
	  I wish there were a way to flush all open filehandles, like stdio's
	  fflush( NULL ) ;

0.42 Thu Aug 17 23:26:34 EDT 2000
	- Worked around pseudo-hash features not implemented in perl5.00503
	- Deprecated passing hashes of options in favor of just passing
	  name-value pairs.

0.41 (missing)
	- Added result, results, full_result, full_results.  I added so many
	  variations because I expect that result and full_result are the most
	  likely to get a lot of use, but I wanted to be able to return a list
	  as well, without misusing wantarray.

0.4  Thu Jun 15 14:59:22 EDT 2000
	- Added IPC::Run::IO and IPC::Run::Timer, bunches of tests.  IPC::Run
	  can now do more than just run child processes.
	- Scribbled more documentation.  Needs a good edit.
	- Fixed some minor bugs here and there.

0.34 Thu Jun  8 06:39:23 EDT 2000
	- Fixed bug in t/pty.t that prevented it from noticing IO::Pty
	- Converted IPC::Run to use fields.

0.32 Thu Jun  8 06:15:17 EDT 2000
	- Added warning about missing IO::Pty in MakeMaker.PL.  Thought about
	  making it a prerequisite, but it's not: IPC::Run can do pipes, etc,



( run in 2.071 seconds using v1.01-cache-2.11-cpan-5735350b133 )