- Moved away from function pointer tables for loading PyAwaitable--everything is now vendored upon installation.
- Improved performance with compiler optimizations.
PyAwaitable_
prefixes are now required, and the oldpyawaitable_*
functions have been removed.- The warning emitted when a PyAwaitable object is not awaited is now a
ResourceWarning
(was aRuntimeWarning
). PyAwaitable_AddAwait
now raises aValueError
if the passed object isNULL
or self, and also now raises aTypeError
if the passed object is not a coroutine.- Breaking Change:
PyAwaitable_Init
no longer takes a module object. - Breaking Change: Renamed
awaitcallback
toPyAwaitable_Callback
- Breaking Change: Renamed
awaitcallback_err
toPyAwaitable_Error
- Breaking Change: Renamed
defercallback
toPyAwaitable_Defer
- Significantly reduced awaitable object size by dynamically allocating it.
- Reduced memory footprint by removing preallocated awaitable objects.
- Objects returned by a PyAwaitable object's
__await__
are now garbage collected (i.e., they don't leak with rare circular references). - Removed limit on number of stored callbacks or values.
- Switched some user-error messages to
RuntimeError
instead ofSystemError
. - Added
PyAwaitable_DeferAwait
for executing code without a coroutine when the awaitable object is called by the event loop.
- Added support for
async with
viapyawaitable_async_with
.
- Added getting and setting of value storage.
- Changed error message when attempting to await a non-awaitable object (i.e., it has no
__await__
). - Fixed coroutine iterator reference leak.
- Fixed reference leak in error callbacks.
- Fixed early exit of
pyawaitable_unpack_arb
if aNULL
value was saved. - Added integer value saving and unpacking (
pyawaitable_save_int
andpyawaitable_unpack_int
). - Callbacks are now preallocated for better performance.
- Fixed reference leak in the coroutine
send()
method.
- Initial release.