From 02307d2656be896ea460e85242ac7ef546f42cb9 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Sun, 5 Sep 2021 15:22:16 -0400 Subject: [PATCH 1/3] Pump broadcasting support in readme --- docs/README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.rst b/docs/README.rst index 18afd26..1199d3d 100644 --- a/docs/README.rst +++ b/docs/README.rst @@ -21,7 +21,7 @@ Features -------- - **It's just** a ``trio`` API - *Infinitely nesteable* process trees -- Built-in inter-process streaming APIs +- Builtin IPC streaming APIs with task fan-out broadcasting - A (first ever?) "native" multi-core debugger UX for Python using `pdb++`_ - Support for a swappable, OS specific, process spawning layer - A modular transport stack, allowing for custom serialization, From 2b2c73905c726ce30e6f14dc43734382fec742aa Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Tue, 7 Sep 2021 21:49:18 -0400 Subject: [PATCH 2/3] Bump setup version to .alpha2 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b7a4610..2ffd6d2 100755 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ with open('docs/README.rst', encoding='utf-8') as f: setup( name="tractor", - version='0.1.0a2.dev0', # alpha zone + version='0.1.0a2', # alpha zone description='structured concurrrent "actors"', long_description=readme, license='GPLv3', From 95f2f10b6450424b02a7f40fd336b47170eb1d63 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Tue, 7 Sep 2021 21:54:57 -0400 Subject: [PATCH 3/3] Update news file --- NEWS.rst | 50 +++++++++++++++++++++++++++++++++++ newsfragments/229.feature.rst | 12 --------- newsfragments/230.removal.rst | 9 ------- newsfragments/232.removal.rst | 1 - newsfragments/234.bugfix | 6 ----- 5 files changed, 50 insertions(+), 28 deletions(-) delete mode 100644 newsfragments/229.feature.rst delete mode 100644 newsfragments/230.removal.rst delete mode 100644 newsfragments/232.removal.rst delete mode 100644 newsfragments/234.bugfix diff --git a/NEWS.rst b/NEWS.rst index afb856b..35e7980 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -4,6 +4,56 @@ Changelog .. towncrier release notes start +tractor 0.1.0a2 (2021-09-07) +============================ + +Features +-------- + +- Add `tokio-style broadcast channels + `_ as + a solution for `#204 `_ and + discussed thoroughly in `trio/#987 + `_. + + This gives us local task broadcast functionality using a new + ``BroadcastReceiver`` type which can wrap ``trio.ReceiveChannel`` and + provide fan-out copies of a stream of data to every subscribed consumer. + We use this new machinery to provide a ``ReceiveMsgStream.subscribe()`` + async context manager which can be used by actor-local concumers tasks + to easily pull from a shared and dynamic IPC stream. (`#229 + `_) + + +Bugfixes +-------- + +- Handle broken channel/stream faults where the root's tty lock is left + acquired by some child actor who went MIA and the root ends up hanging + indefinitely. (`#234 `_) + + There's two parts here: we no longer shield wait on the lock and, + now always do our best to release the lock on the expected worst + case connection faults. + + +Deprecations and Removals +------------------------- + +- Drop stream "shielding" support which was originally added to sidestep + a cancelled call to ``.receive()`` + + In the original api design a stream instance was returned directly from + a call to ``Portal.run()`` and thus there was no "exit phase" to handle + cancellations and errors which would trigger implicit closure. Now that + we have said enter/exit semantics with ``Portal.open_stream_from()`` and + ``Context.open_stream()`` we can drop this implicit (and arguably + confusing) behavior. (`#230 `_) + +- Drop Python 3.7 support in preparation for supporting 3.9+ syntax. + (`#232 `_) + + tractor 0.1.0a1 (2021-08-01) ============================ diff --git a/newsfragments/229.feature.rst b/newsfragments/229.feature.rst deleted file mode 100644 index bda005c..0000000 --- a/newsfragments/229.feature.rst +++ /dev/null @@ -1,12 +0,0 @@ -Add `tokio-style broadcast channels -`_ as -a solution for `#204 `_ and -discussed thoroughly in `trio/#987 -`_. - -This gives us local task broadcast functionality using a new -``BroadcastReceiver`` type which can wrap ``trio.ReceiveChannel`` and -provide fan-out copies of a stream of data to every subscribed consumer. -We use this new machinery to provide a ``ReceiveMsgStream.subscribe()`` -async context manager which can be used by actor-local concumers tasks -to easily pull from a shared and dynamic IPC stream. diff --git a/newsfragments/230.removal.rst b/newsfragments/230.removal.rst deleted file mode 100644 index afb7cdb..0000000 --- a/newsfragments/230.removal.rst +++ /dev/null @@ -1,9 +0,0 @@ -Drop stream "shielding" support which was originally added to sidestep -a cancelled call to ``.receive()`` - -In the original api design a stream instance was returned directly from -a call to ``Portal.run()`` and thus there was no "exit phase" to handle -cancellations and errors which would trigger implicit closure. Now that -we have said enter/exit semantics with ``Portal.open_stream_from()`` and -``Context.open_stream()`` we can drop this implicit (and arguably -confusing) behavior. diff --git a/newsfragments/232.removal.rst b/newsfragments/232.removal.rst deleted file mode 100644 index 728caee..0000000 --- a/newsfragments/232.removal.rst +++ /dev/null @@ -1 +0,0 @@ -Drop Python 3.7 support in preparation for supporting 3.9+ syntax. diff --git a/newsfragments/234.bugfix b/newsfragments/234.bugfix deleted file mode 100644 index 00a0ce9..0000000 --- a/newsfragments/234.bugfix +++ /dev/null @@ -1,6 +0,0 @@ -Handle broken channel/stream faults where the root's tty lock is left acquired by some -child actor who went MIA and the root ends up hanging indefinitely. - -There's two parts here: -- Don't shield wait on the lock -- Always do our best to release the lock on the expected worst case connection faults