----------------- 2019-05-20 3.5.4 ----------------- * Promoted 3.5.4rc2 to become 3.5.4. ----------------- 2019-05-13 3.5.4rc2 ----------------- * GitHub [#57]: TimeoutExpired and CalledProcessError exceptions can now be unpickled. ----------------- 2019-05-10 3.5.4rc1 ----------------- * GitHub [#61]: Backport the fixes for https://bugs.python.org/issue10963, https://bugs.python.org/issue19612, and https://bugs.python.org/issue30418. When a child process was so short lived it dies or closes its pipes before you call communicate(). When supplying stdin or reading its output in this scenario, do not raise an unexpected broken pipe or interrupted system call exception. ----------------- 2018-10-09 3.5.3 ----------------- * Disallow ridiculously large numbers (millions) of arguments. [#54] ----------------- 2018-06-07 3.5.2 ----------------- * Explicitly include in _posixsubprocess_helpers.c; it already gets configure checked and pulled in via Python's own in many circumstances but it is better to be explicit. #IWYU If you were using subprocess32 on a Python interpreter built *without* the --with-fpectl configure option enabled, restore_signals is now useful rather than a no-op. I do not know if such builds were common. * Adds a functional test for restore_signals=True behavior. ----------------- 2018-05-21 3.5.1 ----------------- * Fix AttributeError: 'module' object has no attribute 'Signals' when constructing a CalledProcessError exception. [#49] ----------------- 2018-05-13 3.5.0 (3.5.0rc3) ----------------- * Fixed the packaging problem where the stdlib python3_redirect shim is supposed to be installed on Python 3. * Renamed _posixsubprocess to _posixsubprocess32 for consistency. * Unset CLOEXEC on file descriptors given to Popen pass_fds. (GH #4) * Drop support for Python 2.4 and 2.5. * Adds a configure script - run by setup.py - to supply the missing feature #define's for the _posixsubprocess32 extension module for the things that Python 2's own configure generated pyconfig.h does not already provide. ----------------- 2017-10-18 3.5.0rc1 ----------------- * Backport the new subprocess.run() API from Python 3.5. * Backport subprocess.DEVNULL support from 3.3. * Allow stderr to be redirected to stdout even when stdout is not redirected. https://bugs.python.org/issue22274 * Fix subprocess.Popen.wait() when the child process has exited to a a stopped instead of terminated state (ex: when under ptrace). https://bugs.python.org/issue29335 * Include the private API needed by the multiprocessing module for people who want to drop subprocess32 in as a replacement for their standard library subprocess module. * Fix a compilation issue regarding O_CLOEXEC not being defined on ancient Linux distros such as RHEL 5. ----------------- 2015-11-15 3.2.7 ----------------- * Issue #6973: When we know a subprocess.Popen process has died, do not allow the send_signal(), terminate(), or kill() methods to do anything as they could potentially signal a different process. * Issue #23564: Fixed a partially broken sanity check in the _posixsubprocess internals regarding how fds_to_pass were passed to the child. The bug had no actual impact as subprocess32.py already avoided it. ----------------- 2015-11-14 3.2.7rc2 ----------------- * Moved the repository from code.google.com to github. * Added a _WAIT_TIMEOUT to satisfy the unsupported people entirely on their own trying to use this on Windows. * Similarly: Updated setup.py to not build the extension on non-posix. ----------------- 2014-06-01 3.2.7rc1 ----------------- * Issue #21618: The subprocess module could fail to close open fds that were inherited by the calling process and already higher than POSIX resource limits would otherwise allow. On systems with a functioning /proc/self/fd or /dev/fd interface the max is now ignored and all fds are closed. ----------------- 2014-04-23 3.2.6 ----------------- * Fixes issue #21291: Popen.wait() is now thread safe so that multiple threads may be calling wait() or poll() on a Popen instance at the same time without losing the Popen.returncode value. * Fixes issue #14396: Handle the odd rare case of waitpid returning 0 when not expected in Popen.wait(). * Fixes issue #16962: Use getdents64 instead of the obsolete getdents syscall on Linux. Some architectures do not implement the latter. ----------------- 2013-12-10 3.2.5 ----------------- * Fixes issue #15798: subprocess.Popen() no longer fails if file descriptor 0, 1 or 2 is closed. * Fixes issue #18763: close_fd file descriptors are now closed after any preexec_fn call. ----------------- 2013-06-15 3.2.5rc1 ----------------- * Fixes issue #16650 - Don't reference ECHILD from outside the local scope. * Unittests no longer spew any test data for human verification to stdout. * Remove a bare print to stdout that could have happened if the child process wrote garbage to its pre-exec error pipe. * Fixes issue #16327 - the subprocess module no longer leaks file descriptors used for stdin/stdout/stderr pipes to the child when the fork() fails. It also no longer potentially double closes these pipe fds. * Correct the Python version check around use of imp_module to specify 2.6.3 as the minimum version that exists in. Why is anyone using such an old 2.6? * Fixes Issue #16114: The subprocess module no longer provides a misleading error message stating that args[0] did not exist when either the cwd or executable keyword arguments specified a path that did not exist. * Add more Popen cwd tests. * Handle errno.ECHILD in poll. * Don't leak a reference to the gc module on capi use error. * Check return value to avoid a crash if the capi were misused. * Check result of PyObject_IsTrue(). * Adds test_universal_newlines_communicate_input_none. * Most everything above consists of backports. See the hg logs for their upstream hg.python.org cpython revision numbers. ---------------- 2012-06-10 3.2.3 ---------------- * Fixes the references to the 'surrogateescape' unicode encoding error handler that does not exist in Python 2.x. 'strict' is used so that a UnicodeEncodeError exception is raised in these situations. These MAY occur if your sys.getfilesystemencoding() is not UTF-8 and attempt to use a non-ascii executable, args or env values. Prior to this change, those would result in a hard to debug LookupError for surrogateescape. * Issue #15000: Support the "unique" x32 architecture in _posixsubprocess.c. * Fix a compilation problem when O_CLOEXEC is not defined. ------------------ 2012-02-18 3.2.3b1 ------------------ This release brings in the last year and a half's worth of bugfixes and improvements to Python 3.2's subprocess module: Off the top of my head, some major bugfix highlights include: * Timeout support on the APIs. * close_fds=True is now the default (as it is in 3.2) and performs much faster. * Fixed EINTR handling. * Fixed SIGCHLD handling. * Fixed several race conditions. * Many more bug fixes too numerous to list. You can grep out the full list of improvements related to subprocess in: http://hg.python.org/cpython/file/9ce5d456138b/Misc/NEWS ------------- 2010-06 3.2.0 ------------- This was the first release. Roughly equivalent to Python 3.2.0a1.