              Apache Commons Exec 1.3 RELEASE NOTES

The Apache Commons Exec team is pleased to announce the commons-exec-1.3 release!

Apache Commons Exec is a library to reliably execute external processes from within the JVM.

Changes in this version include:

New features:
o DefaultExecutor async execute prevents shutdown hooks running.  
  Issue: EXEC-69. Thanks to Richard Atkins, Michael Vorburger. 

Fixed Bugs:
o Remove remaining raw types, unchecked conversions  
  Issue: EXEC-81. Thanks to Stephen Compall.
   
o NPE in EnvironmentUtils.toString(map)  
  Issue: EXEC-80. 

Changes:
o No need to use System.class.getMethod("getenv",...) any more  
  Issue: EXEC-78.
   
o Update JUnit dependency to 4.11  
  Issue: EXEC-77.
   
o Update to Java 5  
  Issue: EXEC-76. 


Have fun!
-Apache Commons Exec team


-------------------------------------------------------------------------------
              Apache Commons Exec 1.2 RELEASE NOTES

The Apache Commons Exec team is pleased to announce the Apache commons-exec-1.2 release!

Apache Commons Exec is a library to reliably execute external processes from within the JVM.

Feature and fix release. Requires a minimum of Java 1.3.

Changes in this version include:

New features:

o Set names for started threads.  Issue: EXEC-55. Thanks to Dominik Stadler. 

Fixed Bugs:

o Issue: EXEC-68. 
  Watchdog kills process immediately if timeout is too large. 
  Thanks to Joel McCance. 
  
o Issue: EXEC-57. 
  Applied the patch from Nickolay Martinov but the timeout disguises the fact that the process might be still running.
  Therefore added a sanity check in order to throw an exception if the the timeout for join() was exceeded. 
  Thanks to Nickolay Martinov.
   
o Issue: EXEC-60. 
  Fixed deadlock by calling the timeout observers outside of the synchronized block thereby removing a prerequisite of a deadlock. 
  Also added a test case to demonstrate that this problem is fixed (which of course can not guarantee the absence of a dead lock). 
  Thanks to Peter Kofler.
   
o Issue: EXEC-52. 
  Tests fail on HP-UX, because it uses a different syntax for the ping command. 
  Thanks to Nickolay Martinov.
   
o Issue: EXEC-49. 
  "Write dead end" IOException when using Piped streams w/PumpStreamHandler.
  When encountering a PipedOutputStream we will automatically close it to avoid the exception.  
  Thanks to Kevin Telford. 
  
o Issue: EXEC-34. 
  Race condition prevent watchdog working using ExecuteStreamHandler.
  Patch submittd by Kristian Rosenvold. 
  Thanks to Marco Ferrante. 

For complete information on Apache Commons Exec, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Commons Exec website:

https://commons.apache.org/proper/commons-exec/


Have fun!
-Apache Commons Exec team

