Changelog
### 0.10.0
```
New Features
============
* Initial support for Python 3.7.
(by pfreixes in c3a5ec8e for 138)
* Implement PEP 567 support (contextvars module) for Python 3.7.
(by 1st1 in 2a4fab44, 878e4163, and b2bdaae3 for 155)
* Add uvloop's own version of `asyncio/sslproto.py`. SSL is now ~50% faster.
(by 1st1 in 4d912643)
* Convert Future-returning loop methods to coroutines to match asyncio 3.7.
(by 1st1 in 7384b22f)
* Allow file objects to be passed to `loop.subprocess*()` functions.
(by 1st1 in f0830901 for 136)
* Make signals processing more reliable.
(by 1st1 in 6e03e513)
* Prohibit adding a signal handler for `SIGCHLD`.
(by 1st1 in cd53b7f5 for 156)
* Add `uvloop.__version__`.
(by 1st1 in 740cb7f3 for 137)
Bug Fixes
=========
* Upgrade to Cython 0.28.2.
(by 1st1 in 98bdb553 for 122)
* Update libuv from v1.17.0 to v1.20.3.
(by 1st1 in 572524a6)
* Make sure UDP handles are cleaned-up properly.
(by 1st1 in 13f63e00)
* Fix `subprocess.close()` to let its processes die gracefully.
(by 1st1 in a78e4d27 and a455af3d for 128)
* Fix `sock_connect()` to resolve addresses for correct socket family.
(by 1st1 in ce2bd4fb for 139)
* Fix a race condition in SSL handshake.
(by 1st1 in 447e124f)
```
### 0.9.1
```
* Stop using malloc for `uv_request*` handlers.
* Fix `loop.add_reader()`, `loop.add_writer()`, `loop.remove_reader()`,
and `loop.remove_writer()` to better track socket objects.
* Fix `loop.sock_recv()`, `loop.sock_sendall()`, `loop.sock_recv_into()`,
and `loop.sock_connect()` to correctly handle `Task.cancel()`.
* Better handle immediate cancellation of `loop.create_connection()`.
* Make unit tests stricter: ensure `loop.call_exception_handler()`
does not get called, unless it's expected.
```
### 0.9.0
```
TCP & UDP Transports
* `transport.get_extra_info('socket')` now returns a socket-like
object. It supports socket methods like `setsockopts()`, but
prohibits `send()`, `recv()`, `close()` and any other calls that
can interfere with the transport that ultimately owns this file
descriptor.
* `TCP_NODELAY` is used by default for all TCP connections.
* Make `Transport.resume_reading()` and `pause_reading()` idempotent.
This will match asyncio in Python 3.7. Issue 93.
* `loop.create_server()` keeps a strong reference to the `Server`
object it returns until its closed. Fixes 81.
* Fix `loop.connect_accepted_socket()` to return correct SSL
transport.
* The UDP transport layer was rewritten from scratch. Now it uses
`uv_poll_*` libuv APIs, instead of high-level `uv_udp_*` ones.
This could mean a slight performance regression, and will be
reverted when we port uvloop to Windows. For now this is
the only viable option to make uvloop fully compatible with asyncio.
When libuv gets an API to connect UDP sockets, `uv_udp_connect()`,
we'll be able to switch to a better UDP implementation. Issue 109.
* `UDPTransport.sendto(data, addr)` will raise an exception if
`addr` requires a name resolution. Issue 91.
Low-level sockets
* `loop.add_reader()` and `loop.add_writer()` accept file-like
objects. Issue 97.
* `loop.sock_connect()` supports 4 element address tuples for
IPv6 sockets. Issue 99.
* Protect sockets from closing while they are in use by
`loop.sock_*()` methods. Close all reader/writer sockets the
loop owns when it closes. Issue 100.
Other event loop APIs
* `loop.run_until_complete()` cleans up done callbacks in all
situations. By jimmylai.
See also Python issue: https://bugs.python.org/issue30423.
* New `uv_loop_fork()` libuv API is used in `loop.subprocess_shell()`
and `loop.subprocess_exec()` making them more stable. Issue 39.
* `loop.call_later()` accepts infinite time `float('inf')`.
Issue 102.
* `loop.subprocess_exec()` accepts `pathlib.Path` objects for its
`cwd` parameter. Issue 90.
* Support `pathlib.Path` objects in `loop.create_unix_connection()`
and `loop.create_unix_server()`.
* Try removing existing stale Unix socket paths in
`loop.create_unix_server()`.
* `ascii` encoding is tried before encoding with `idna`.
Issue 95.
* Fix `slow_callback_duration` repr in warnings for callback handles
and Tasks. Issue 103.
Python 3.7
Some APIs that will be available in Python 3.7 in vanilla asyncio,
but can be used with uvloop today.
* Implement `.cancelled()` method for callback and timer handles.
* Add `Transport.is_reading()`.
* Implement `loop.sock_recv_into()`.
* Python 3.7.0a1 is now supported. Issue 110.
Miscellaneous
* Drop custom uvloop Future and Task implementations. This means
that there will be a tiny performance regression for Python 3.5
deploys.
* Limit stack traces in debug mode to make it faster.
* `signal.siginterrupt` is now used by signals machinery to let
system calls to be repeated by default, instead of raising an
`EINTR`.
Build
* libuv in uvloop has been upgraded from v1.11.0 to v1.17.0. Aside
from bug fixes and performance improvements, libuv survives
`fork`.
* `LIBUV_CONFIGURE_HOST` environment variable can be used to
cross-compile uvloop/libuv. By cmcqueen, for issue 104.
* Cyhton was upgraded from 0.25.2 to 0.27.3.
* uvloop binary is linked with `pthread`. By frederikaalund,
for issue 87.
```
Links
- PyPI: https://pypi.org/project/uvloop
- Changelog: https://pyup.io/changelogs/uvloop/
- Repo: http://github.com/MagicStack/uvloop
This PR updates uvloop from 0.8.1 to 0.10.1.
Changelog
### 0.10.0 ``` New Features ============ * Initial support for Python 3.7. (by pfreixes in c3a5ec8e for 138) * Implement PEP 567 support (contextvars module) for Python 3.7. (by 1st1 in 2a4fab44, 878e4163, and b2bdaae3 for 155) * Add uvloop's own version of `asyncio/sslproto.py`. SSL is now ~50% faster. (by 1st1 in 4d912643) * Convert Future-returning loop methods to coroutines to match asyncio 3.7. (by 1st1 in 7384b22f) * Allow file objects to be passed to `loop.subprocess*()` functions. (by 1st1 in f0830901 for 136) * Make signals processing more reliable. (by 1st1 in 6e03e513) * Prohibit adding a signal handler for `SIGCHLD`. (by 1st1 in cd53b7f5 for 156) * Add `uvloop.__version__`. (by 1st1 in 740cb7f3 for 137) Bug Fixes ========= * Upgrade to Cython 0.28.2. (by 1st1 in 98bdb553 for 122) * Update libuv from v1.17.0 to v1.20.3. (by 1st1 in 572524a6) * Make sure UDP handles are cleaned-up properly. (by 1st1 in 13f63e00) * Fix `subprocess.close()` to let its processes die gracefully. (by 1st1 in a78e4d27 and a455af3d for 128) * Fix `sock_connect()` to resolve addresses for correct socket family. (by 1st1 in ce2bd4fb for 139) * Fix a race condition in SSL handshake. (by 1st1 in 447e124f) ``` ### 0.9.1 ``` * Stop using malloc for `uv_request*` handlers. * Fix `loop.add_reader()`, `loop.add_writer()`, `loop.remove_reader()`, and `loop.remove_writer()` to better track socket objects. * Fix `loop.sock_recv()`, `loop.sock_sendall()`, `loop.sock_recv_into()`, and `loop.sock_connect()` to correctly handle `Task.cancel()`. * Better handle immediate cancellation of `loop.create_connection()`. * Make unit tests stricter: ensure `loop.call_exception_handler()` does not get called, unless it's expected. ``` ### 0.9.0 ``` TCP & UDP Transports * `transport.get_extra_info('socket')` now returns a socket-like object. It supports socket methods like `setsockopts()`, but prohibits `send()`, `recv()`, `close()` and any other calls that can interfere with the transport that ultimately owns this file descriptor. * `TCP_NODELAY` is used by default for all TCP connections. * Make `Transport.resume_reading()` and `pause_reading()` idempotent. This will match asyncio in Python 3.7. Issue 93. * `loop.create_server()` keeps a strong reference to the `Server` object it returns until its closed. Fixes 81. * Fix `loop.connect_accepted_socket()` to return correct SSL transport. * The UDP transport layer was rewritten from scratch. Now it uses `uv_poll_*` libuv APIs, instead of high-level `uv_udp_*` ones. This could mean a slight performance regression, and will be reverted when we port uvloop to Windows. For now this is the only viable option to make uvloop fully compatible with asyncio. When libuv gets an API to connect UDP sockets, `uv_udp_connect()`, we'll be able to switch to a better UDP implementation. Issue 109. * `UDPTransport.sendto(data, addr)` will raise an exception if `addr` requires a name resolution. Issue 91. Low-level sockets * `loop.add_reader()` and `loop.add_writer()` accept file-like objects. Issue 97. * `loop.sock_connect()` supports 4 element address tuples for IPv6 sockets. Issue 99. * Protect sockets from closing while they are in use by `loop.sock_*()` methods. Close all reader/writer sockets the loop owns when it closes. Issue 100. Other event loop APIs * `loop.run_until_complete()` cleans up done callbacks in all situations. By jimmylai. See also Python issue: https://bugs.python.org/issue30423. * New `uv_loop_fork()` libuv API is used in `loop.subprocess_shell()` and `loop.subprocess_exec()` making them more stable. Issue 39. * `loop.call_later()` accepts infinite time `float('inf')`. Issue 102. * `loop.subprocess_exec()` accepts `pathlib.Path` objects for its `cwd` parameter. Issue 90. * Support `pathlib.Path` objects in `loop.create_unix_connection()` and `loop.create_unix_server()`. * Try removing existing stale Unix socket paths in `loop.create_unix_server()`. * `ascii` encoding is tried before encoding with `idna`. Issue 95. * Fix `slow_callback_duration` repr in warnings for callback handles and Tasks. Issue 103. Python 3.7 Some APIs that will be available in Python 3.7 in vanilla asyncio, but can be used with uvloop today. * Implement `.cancelled()` method for callback and timer handles. * Add `Transport.is_reading()`. * Implement `loop.sock_recv_into()`. * Python 3.7.0a1 is now supported. Issue 110. Miscellaneous * Drop custom uvloop Future and Task implementations. This means that there will be a tiny performance regression for Python 3.5 deploys. * Limit stack traces in debug mode to make it faster. * `signal.siginterrupt` is now used by signals machinery to let system calls to be repeated by default, instead of raising an `EINTR`. Build * libuv in uvloop has been upgraded from v1.11.0 to v1.17.0. Aside from bug fixes and performance improvements, libuv survives `fork`. * `LIBUV_CONFIGURE_HOST` environment variable can be used to cross-compile uvloop/libuv. By cmcqueen, for issue 104. * Cyhton was upgraded from 0.25.2 to 0.27.3. * uvloop binary is linked with `pthread`. By frederikaalund, for issue 87. ```Links
- PyPI: https://pypi.org/project/uvloop - Changelog: https://pyup.io/changelogs/uvloop/ - Repo: http://github.com/MagicStack/uvloop