Releases: ZeroIntensity/pyawaitable
Releases · ZeroIntensity/pyawaitable
2.0.0
Woah, is that a new major version bump I smell?
What's New?
- Added a simple CLI, primarily for getting the include directory from
meson-python
(pyawaitable --include
). - Improved performance with compiler optimizations.
- Moved away from function pointer tables for loading PyAwaitable; everything is now vendored upon installation! This means that PyAwaitable is no longer required as a runtime dependency!
- Completely remastered the documentation!
What's Fixed?
- PyAwaitable objects now support garbage collection.
What's Changed?
- 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 Changes in 2.0.0
PyAwaitable_
prefixes are now required, and the oldpyawaitable_*
functions have been removed.PyAwaitable_Init
no longer takes a module object.- Renamed
awaitcallback
toPyAwaitable_Callback
- Renamed
awaitcallback_err
toPyAwaitable_Error
- Renamed
defercallback
toPyAwaitable_Defer
- Removed the integer value APIs (
SaveIntValues
,LoadIntValues
,SetIntValue
,GetIntValue
). They proved to be maintenance heavy, unintuitive, and most of all replaceable with the arbitrary values API (viamalloc
ing an integer and storing it).
1.4.0
This will be the final release of PyAwaitable 1.x!
What's New?
- Added
PyAwaitable_DeferAwait
for executing code without a coroutine when the awaitable object is called by the event loop.
What's Fixed?
- Objects returned by a PyAwaitable object's
__await__
are now garbage collected (i.e., they don't leak with rare circular references).
What's Changed?
- Significantly reduced
PyAwaitable
object size by dynamically allocating it. - Reduced memory footprint by removing preallocated awaitable objects.
- Removed limit on the number of stored callbacks or values.
- Switched some user-error messages to
RuntimeError
instead ofSystemError
.
1.3.0
- Added support for
async with
viapyawaitable_async_with
. - Dropped support for Python 3.8 (now EOL).
- Added support for Python 3.13.
1.2.0
- Added getting and setting of value storage.
pyawaitable_get
pyawaitable_get_arb
pyawaitable_get_int
pyawaitable_set
pyawaitable_set_arb
pyawaitable_set_int
1.1.0
- 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.
1.0.0
The stable release of PyAwaitable!
1.0.0 Release Candidate 2
- Switched to fixed-length pre-allocated arrays for values and callbacks
- Added a limit to both values and callbacks (as they are now preallocated)
- Added a pre-allocated pool of objects
pyawaitable_new()
now returns an object from the pre-allocated object pool, but then goes back to using the heap once the pool has been emptied.
1.0.0 Release Candidate
- Switched to the
pyawaitable_
prefix - Renamed
awaitable.h
topyawaitable.h
- Added
pyawaitable_await_function
- Added
pyawaitable.include
- Added required usage of
PYAWAITABLE_THIS_FILE_INIT
define in the file that callspyawaitable_init()
1.0.0 Beta
- Initial release (again, first build failed)