@@ -5,13 +5,108 @@ Release history
55
66.. towncrier release notes start
77
8+ trio-asyncio 0.11.0 (2020-03-09)
9+ --------------------------------
10+
11+ Features
12+ ~~~~~~~~
13+
14+ - Substantially reorganize monkeypatching for asyncio event loop and
15+ event loop policy accessors, fixing support for Python 3.8. Also, stop
16+ using features deprecated in Trio 0.12. (`#66 <https://github.com/python-trio/trio-asyncio/issues/66 >`__)
17+
18+ Bugfixes
19+ ~~~~~~~~
20+
21+ - Calling ``loop.stop `` manually no longer causes a deadlock when
22+ exiting the context of ``trio_asyncio.open_loop `` (`#58 <https://github.com/python-trio/trio-asyncio/issues/58 >`__)
23+
24+ - :func: `trio_asyncio.run ` now properly returns whatever was returned by
25+ the async function it ran, like :func: `trio.run ` does. (`#57 <https://github.com/python-trio/trio-asyncio/issues/57 >`__)
26+
27+ - Replace uses of deprecated ``trio.open_cancel_scope() `` with `trio.CancelScope `.
28+
29+ Deprecations and Removals
30+ ~~~~~~~~~~~~~~~~~~~~~~~~~
31+
32+ - The non-underscore-prefixed names of trio-asyncio submodules (``trio_asyncio.loop ``,
33+ ``trio_asyncio.adapter ``, etc) have been deprecated; public names should be
34+ imported from ``trio_asyncio `` directly.
35+
36+ ``trio_asyncio.current_policy ``, ``trio_asyncio.TrioChildWatcher ``,
37+ and ``trio_asyncio.TrioPolicy `` have been deprecated with no
38+ replacement. ``current_policy `` is no longer used at all, and the
39+ other two are singletons that can't be customized so there's no reason
40+ to make them publicly visible.
41+
42+ A number of functions which were already documented as deprecated now
43+ raise the new :exc: `~trio_asyncio.TrioAsyncioDeprecationWarning ` where
44+ previously they provided either no runtime warning or a generic
45+ :exc: `DeprecationWarning `. (`#64 <https://github.com/python-trio/trio-asyncio/issues/64 >`__)
46+
47+ trio-asyncio 0.10.0 (2018-12-09)
48+ --------------------------------
49+
50+ Bugfixes
51+ ~~~~~~~~
52+
53+ - Replace deprecated ``trio.Queue `` with new channels, requiring Trio 0.9 or later. (`#49 <https://github.com/python-trio/trio-asyncio/issues/49 >`__)
54+
55+ trio-asyncio 0.9.1 (2018-09-06)
56+ -------------------------------
57+
58+ Bugfixes
59+ ~~~~~~~~
60+
61+ - Defer creating an asyncio coroutine until asyncio mode is actually entered. (`#40 <https://github.com/python-trio/trio-asyncio/issues/40 >`__)
62+
63+ trio-asyncio 0.9.0 (2018-08-31)
64+ -------------------------------
65+
66+ Features
67+ ~~~~~~~~
68+
69+ - **Major reorganization: ** The main entry point for calling asyncio
70+ from trio is now the :func: `trio_asyncio.aio_as_trio ` adapter.
71+ Instead of calling :func: `asyncio.get_event_loop `, directly access the
72+ contextvar ``trio_aio_loop `` (aka :data: `trio_asyncio.current_loop `). (`#36 <https://github.com/python-trio/trio-asyncio/issues/36 >`__)
73+
74+ Deprecations and Removals
75+ ~~~~~~~~~~~~~~~~~~~~~~~~~
76+
77+ - ``run_asyncio() `` is deprecated: replace with a :func: `aio_as_trio ` wrapper.
78+
79+ ``trio2aio() `` is deprecated: replace with :func: `aio_as_trio `.
80+
81+ ``run_future() `` and ``TrioEventLoop.run_future() `` are deprecated:
82+ replace with :func: `run_aio_future `.
83+
84+ ``run_coroutine() `` and ``TrioEventLoop.run_coroutine() `` are
85+ deprecated: replace with :func: `run_aio_coroutine `.
86+
87+ ``TrioEventLoop.wrap_generator() `` is deprecated: replace with a
88+ :func: `aio_as_trio ` wrapper.
89+
90+ ``TrioEventLoop.run_iterator() `` is deprecated: replace with
91+ :func: `aio_as_trio `. (`#36
92+ <https://github.com/python-trio/trio-asyncio/issues/36> `__)
93+
94+ trio-asyncio 0.8.2 (2018-08-25)
95+ -------------------------------
96+
97+ Features
98+ ~~~~~~~~
99+
100+ - :func: `sniffio.current_async_library ` in a trio-asyncio program now returns
101+ the correct value for the current mode (``"trio" `` or ``"asyncio" ``).
102+
8103trio-asyncio 0.8.1 (2018-08-25)
9104-------------------------------
10105
11106Features
12107~~~~~~~~
13108
14- - `trio_asyncio ` now contains an `allow_asyncio ` wrapper which allows you to
109+ - `trio_asyncio ` now contains an :func: `allow_asyncio ` wrapper which allows you to
15110 seamlessly mix asyncio and trio semantics::
16111
17112 import asyncio
@@ -29,10 +124,86 @@ Features
29124 code. This may or may not be an issue for your code. (`#30
30125 <https://github.com/python-trio/trio-asyncio/issues/30> `__)
31126
127+ - While the test suite still requires Python 3.6, :mod: `trio_asyncio ` itself
128+ now works on Python 3.5.3 and later. (`#33
129+ <https://github.com/python-trio/trio-asyncio/issues/33> `__)
32130
33- Bugfixes
34- ~~~~~~~~
131+ - ``TrioEventLoop.run_asyncio() `` now supports wrapping async iterators
132+ and async context managers, in addition to its existing support for async
133+ functions.
134+
135+ trio-asyncio 0.8.0 (2018-08-03)
136+ -------------------------------
137+
138+ * Add ``TrioEventLoop.run_iterator() `` as an alias for ``run_generator() ``.
139+
140+ * Add support for Python 3.7 via a monkey-patch to
141+ :func: `asyncio.set_event_loop_policy `. (`#23
142+ <https://github.com/python-trio/trio-asyncio/issues/23> `__)
143+
144+ * Deprecate the use of "compatibility mode" / "sync event loops", except
145+ as a tool for running the test suites of existing asyncio projects.
146+
147+ trio-asyncio 0.7.5 (2018-07-23)
148+ -------------------------------
149+
150+ * Use a contextvar to represent the current trio-asyncio loop, rather
151+ than the deprecated ``trio.TaskLocal ``.
152+
153+ * Use the ``outcome `` library rather than the deprecated ``trio.hazmat.Result ``.
154+
155+ * Better handle errors in wrapped async generators.
156+
157+ trio-asyncio 0.7.0 (2018-03-27)
158+ -------------------------------
159+
160+ * The ``@trio2aio `` and ``@aio2trio `` decorators now can be used to decorate
161+ both async generator functions and async functions that take keyword
162+ arguments.
163+
164+ * :func: `open_loop ` now takes an optional ``queue_len= `` parameter to specify
165+ the length of the internal callback queue (for performance tuning).
166+
167+ * Add :meth: `BaseTrioEventLoop.synchronize `.
168+
169+ * Monkey-patch :func: `asyncio.get_event_loop_policy ` and
170+ :func: `asyncio.get_event_loop ` so trio-asyncio works correctly in
171+ multithreaded programs that use a different asyncio event loop in
172+ other threads.
173+
174+ * Add ``wrap_generator() `` and ``run_generator() `` which adapt an asyncio-flavored
175+ async generator to be used from Trio code.
176+
177+ trio-asyncio 0.5.0 (2018-02-20)
178+ -------------------------------
179+
180+ * Support contextvars on Python 3.7 and later.
181+
182+ * Support waiting for child processes even though Trio doesn't (yet).
183+
184+ trio-asyncio 0.4.2 (2018-02-12)
185+ -------------------------------
186+
187+ * Add :func: `trio_asyncio.run `.
188+
189+ * Fix a deadlock in ``SyncTrioEventLoop ``. Encourage people to use the
190+ async ``TrioEventLoop `` instead.
191+
192+ trio-asyncio 0.4.1 (2018-02-08)
193+ -------------------------------
194+
195+ * Add ``TrioEventLoop.run_task() `` as an entry point for running Trio code
196+ in a context that allows asyncio calls, for use when neither a Trio nor
197+ an asyncio event loop is running.
198+
199+ trio-asyncio 0.4.0 (2018-02-07)
200+ -------------------------------
201+
202+ * Add support for async loops (:func: `open_loop `) and encourage their use.
203+ Numerous functions renamed.
204+
205+ trio-asyncio 0.3.0 (2017-10-17)
206+ -------------------------------
207+
208+ * Initial release.
35209
36- - The test suite requires Python 3.6. :mod: `trio_asyncio ` itself requires
37- Python 3.5.3. (`#33
38- <https://github.com/python-trio/trio-asyncio/issues/33> `__)
0 commit comments