Changes in 3.0.0
- Drop support for Java 7. Artifact is now Java 8+ only.
- Fix race condition for fast exiting processes (#158).
- Alter thread name from "ProcessQueue" to "NuProcessQueue".
Changes in 2.0.6
- Fix environment variable injection vulnerability. This is a follow-up from CVE-2022-39243 and does not have its own CVE assigned
Changes in 2.0.5
- Fix command line injection vulnerability (CVE-2022-39243) (#143)
Changes in 2.0.4
- Add
Automatic-Module-Name
toMANIFEST.MF
to better support Java 9+ modules (#142)
Changes in 2.0.3
- Add handling for
EINTR
duringepoll_wait
andESRCH
fromkill
to prevent zombie processes (#125, #131) - Remove static
EpollEvent
queue to avoid blocking under heavy load, which can lead to leaking zombie processes if a blocked thread is interrupted (#138)
Changes in 2.0.2
- Ensure pipes are closed after failing to start a process on Linux, to prevent leaking descriptors (#120)
- Reduce pipe buffer size on Windows to increase process throughput to
stdout
andstderr
(#118) - Update JNA dependency to v5.8.0 to pick up support for the Apple M1 (#123)
Changes in 2.0.1
- Fix race condition between the
onStdinReady()
anduserWantsWrite()
methods that causes the state to become incorrect, resulting in failure to continue processing wantedstdin
writes (#113)
Changes in 2.0.0
- Update JNA dependency to v5.5.0
- Add ability to run processes synchronously (#104)
- Handle detecting Java versions when non-numbers are present (#105)
Changes in 1.2.6
- Fix linkage issues with Azul JVMs. Special thanks to Bryan Turner for this pull request and extensive testing across a wide variety of JVMs. (#107)
Changes in 1.2.5
- Handle
SystemRoot
case-insensitively (Windows) (#103). - Compatibility changes for JNA 5.2.0 (#99).
Changes in 1.2.4
- Fix structure alignment (
ALIGN_GNUC
) on various platforms (#94). - Add support for JDK 10/11. (#92)
Changes in 1.2.3
- Resolve launch issue on Linux/macOS w/Zulu JVM.
Changes in 1.2.2
- Fix race condition seen (once) on Linux after moving to JVM internal API for process spawning.
Changes in 1.2.1
- On macOS, continue to use
posix_spawnp
directly,POSIX_SPAWN_START_SUSPENDED
solves a lot of potential race conditions that we have to contend with on Linux.
Changes in 1.2.0
- Spawn processes on Linux and macOS using JVM internal method
Java_java_lang_UNIXProcess_forkAndExec
.
Changes in 1.1.3
- Add constructor with
Pointer
toLibKevent.Kevent
(#82) that reduces reflection code executed in JNA. - Change to Linux
epoll
implementation that massively decreases the amount of memory used. - Optimize
epoll_wait
loop to avoid memory churn. (#80)
Changes in 1.1.2
- Fix issue on macOS where pipes would leak after many calls to
closeStdin
Changes in 1.1.1
- Fixed issue where calling
writeStdin
with a buffer larger than 65kb would hang.
Changes in 1.1.0
- Expose new
NuProcess.getPID()
method on all platforms. - Fix wrong position and limit value on
inBuffer
caused by incorrectinBuffer
clear. - Fix source of memory leak and
DirectWriteTest
failure on macOS; clearwantsWrite
queue on process exit. - Remove
System.exit()
call from unit test.
Changes in 1.0.4
- Update OSGi manifest with correct exports.
- Fix moar Windows argument escaping.
- Introduce 'force' parameter to
NuProcess.closeStdin()
, and enqueue special tombstone marker into thependingWrites
queue for non-forced closes. - Remove use of
sun.misc.Unsafe
.
Changes in 1.0.3
- Remove dependency on
jna-platform
. - Handle fast-exiting processes on Linux.
- Fix Windows argument escaping.
- Handle race condition in named pipe creation on Windows.
Changes in 1.0.2
- Process
cwd
support for Mac, Linux, and Win32. - Remove
ThreadLocal
usage for macOS.
Changes in 1.0.1
- Performance improvements for macOS
kqueue
/kevent
. - Fix issue where
stdout
andstderr
are empty for quick exiting processes.
Changes in 1.0.0
- Genesis. See the git history for previous evolution.