getStatus() was changed to not throw when several threads want to wait for a child and the later ones thereby wait for a child that does not exist anymore. kill() and suggestTermination() were changed to not throw when they send a signal to a child that no longer exists. This can happen due to a race condition with setting the child's status to terminated.
kill() and suggestTermination() were implemented to preempt operation of a subprocess. Access to a subprocesses was changed from using the index in the pipeline to the name. Some of the C code was refactored to make it more readable.
This release added JUnit tests and code coverage for the Java part. A core dump triggered by an empty command of a process was prevented with an IllegalArgumentException. Debug output was removed from native interface code. The documentation was improved.