diff --git a/docs/source/history.rst b/docs/source/history.rst index 56f7112da6..d585f86eee 100644 --- a/docs/source/history.rst +++ b/docs/source/history.rst @@ -5,6 +5,47 @@ Release history .. towncrier release notes start +Trio 0.25.0 (2024-03-17) +------------------------ + +Breaking changes +~~~~~~~~~~~~~~~~ + +- The :ref:`strict_exception_groups ` parameter now defaults to `True` in `trio.run` and `trio.lowlevel.start_guest_run`. `trio.open_nursery` still defaults to the same value as was specified in `trio.run`/`trio.lowlevel.start_guest_run`, but if you didn't specify it there then all subsequent calls to `trio.open_nursery` will change. + This is unfortunately very tricky to change with a deprecation period, as raising a `DeprecationWarning` whenever :ref:`strict_exception_groups ` is not specified would raise a lot of unnecessary warnings. + + Notable side effects of changing code to run with ``strict_exception_groups==True`` + + * If an iterator raises `StopAsyncIteration` or `StopIteration` inside a nursery, then python will not recognize wrapped instances of those for stopping iteration. + * `trio.run_process` is now documented that it can raise an `ExceptionGroup`. It previously could do this in very rare circumstances, but with :ref:`strict_exception_groups ` set to `True` it will now do so whenever exceptions occur in ``deliver_cancel`` or with problems communicating with the subprocess. + + * Errors in opening the process is now done outside the internal nursery, so if code previously ran with ``strict_exception_groups=True`` there are cases now where an `ExceptionGroup` is *no longer* added. + * `trio.TrioInternalError` ``.__cause__`` might be wrapped in one or more `ExceptionGroups ` (`#2786 `__) + + +Features +~~~~~~~~ + +- Add `trio.testing.wait_all_threads_completed`, which blocks until no threads are running tasks. This is intended to be used in the same way as `trio.testing.wait_all_tasks_blocked`. (`#2937 `__) +- :class:`Path` is now a subclass of :class:`pathlib.PurePath`, allowing it to interoperate with other standard + :mod:`pathlib` types. + + Instantiating :class:`Path` now returns a concrete platform-specific subclass, one of :class:`PosixPath` or + :class:`WindowsPath`, matching the behavior of :class:`pathlib.Path`. (`#2959 `__) + + +Bugfixes +~~~~~~~~ + +- The pthread functions are now correctly found on systems using vanilla versions of musl libc. (`#2939 `__) + + +Miscellaneous internal changes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- use the regular readme for the PyPI long_description (`#2866 `__) + + Trio 0.24.0 (2024-01-10) ------------------------ diff --git a/newsfragments/2786.breaking.rst b/newsfragments/2786.breaking.rst deleted file mode 100644 index 2cf1289657..0000000000 --- a/newsfragments/2786.breaking.rst +++ /dev/null @@ -1,10 +0,0 @@ -The :ref:`strict_exception_groups ` parameter now defaults to `True` in `trio.run` and `trio.lowlevel.start_guest_run`. `trio.open_nursery` still defaults to the same value as was specified in `trio.run`/`trio.lowlevel.start_guest_run`, but if you didn't specify it there then all subsequent calls to `trio.open_nursery` will change. -This is unfortunately very tricky to change with a deprecation period, as raising a `DeprecationWarning` whenever :ref:`strict_exception_groups ` is not specified would raise a lot of unnecessary warnings. - -Notable side effects of changing code to run with ``strict_exception_groups==True`` - -* If an iterator raises `StopAsyncIteration` or `StopIteration` inside a nursery, then python will not recognize wrapped instances of those for stopping iteration. -* `trio.run_process` is now documented that it can raise an `ExceptionGroup`. It previously could do this in very rare circumstances, but with :ref:`strict_exception_groups ` set to `True` it will now do so whenever exceptions occur in ``deliver_cancel`` or with problems communicating with the subprocess. - - * Errors in opening the process is now done outside the internal nursery, so if code previously ran with ``strict_exception_groups=True`` there are cases now where an `ExceptionGroup` is *no longer* added. -* `trio.TrioInternalError` ``.__cause__`` might be wrapped in one or more `ExceptionGroups ` diff --git a/newsfragments/2866.misc.rst b/newsfragments/2866.misc.rst deleted file mode 100644 index 606f9ad15e..0000000000 --- a/newsfragments/2866.misc.rst +++ /dev/null @@ -1 +0,0 @@ -use the regular readme for the PyPI long_description diff --git a/newsfragments/2937.feature.rst b/newsfragments/2937.feature.rst deleted file mode 100644 index e7bdf57f81..0000000000 --- a/newsfragments/2937.feature.rst +++ /dev/null @@ -1 +0,0 @@ -Add `trio.testing.wait_all_threads_completed`, which blocks until no threads are running tasks. This is intended to be used in the same way as `trio.testing.wait_all_tasks_blocked`. diff --git a/newsfragments/2939.bugfix.rst b/newsfragments/2939.bugfix.rst deleted file mode 100644 index 7ce40e6933..0000000000 --- a/newsfragments/2939.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -The pthread functions are now correctly found on systems using vanilla versions of musl libc. diff --git a/newsfragments/2959.feature.rst b/newsfragments/2959.feature.rst deleted file mode 100644 index ca90d56c29..0000000000 --- a/newsfragments/2959.feature.rst +++ /dev/null @@ -1,5 +0,0 @@ -:class:`Path` is now a subclass of :class:`pathlib.PurePath`, allowing it to interoperate with other standard -:mod:`pathlib` types. - -Instantiating :class:`Path` now returns a concrete platform-specific subclass, one of :class:`PosixPath` or -:class:`WindowsPath`, matching the behavior of :class:`pathlib.Path`. diff --git a/src/trio/_version.py b/src/trio/_version.py index a7b8d6f0fe..c6f551b013 100644 --- a/src/trio/_version.py +++ b/src/trio/_version.py @@ -1,3 +1,3 @@ # This file is imported from __init__.py and parsed by setuptools -__version__ = "0.24.0+dev" +__version__ = "0.25.0"