28a0c4d5e2
Trio 0.20.0 (2022-02-21) ------------------------ Features - You can now conveniently spawn a child process in a background task and interact it with on the fly using ``process = await nursery.start(run_process, ...)``. See `run_process` for more details. We recommend most users switch to this new API. Also note that: - ``trio.open_process`` has been deprecated in favor of `trio.lowlevel.open_process`, - The ``aclose`` method on `Process` has been deprecated along with ``async with process_obj``. - Now context variables set with `contextvars` are preserved when running functions in a worker thread with `trio.to_thread.run_sync`, or when running functions from the worker thread in the parent Trio thread with `trio.from_thread.run`, and `trio.from_thread.run_sync`. This is done by automatically copying the `contextvars` context. `trio.lowlevel.spawn_system_task` now also receives an optional ``context`` argument. Bugfixes - Trio now avoids creating cyclic garbage when a `MultiError` is generated and filtered, including invisibly within the cancellation system. This means errors raised through nurseries and cancel scopes should result in less GC latency. - Trio now deterministically cleans up file descriptors that were opened before subprocess creation fails. Previously, they would remain open until the next run of the garbage collector. - Add compatibility with OpenSSL 3.0 on newer Python and PyPy versions by working around ``SSLEOFError`` not being raised properly. - Fix a bug that could cause `Process.wait` to hang on Linux systems using pidfds, if another task were to access `Process.returncode` after the process exited but before ``wait`` woke up |
||
---|---|---|
.. | ||
DESCR | ||
distinfo | ||
Makefile | ||
PLIST |