Releases: MagicStack/uvloop
v0.11.3
Bug Fixes
-
Use new
PyOS_BeforeFork
andPyOS_AfterFork_*
3.7 APIs when available
(by @1st1 in 75e7c32) -
Fix async generators finalization to function correctly in debug mode
(by @1st1 in dcbb1f4 for #200) -
Pass
backlog
toloop.create_unix_server()
when a server is created via
loop.create_server(sock=unix_sock, backlog=backlog)
.
(by @hikoz in 40ad257) -
Don't raise "requires a DNS lookup" error on Unix Domain Socket (#204)
(by @pax0r in 9fc3ca2 for #204)
Build
v0.11.2
v0.10.3
v0.11.1
Bug Fixes
-
Fix server to shutdown when alive connections exist
(by @ciscorn in 5f71e29 for #180 in PR #181) -
Fix a few bugs and crashes in UDP layer
(by @1st1 in e0b5ea0, 5eef2d5 for #190) -
Fix FD leakage if spawning a subprocess fails
(by @1st1 in 4f6621e for #185, #186) -
Fix libuv process handles leak when
uv_spawn()
fails
(by @1st1 in 92ea517 for #187)
v0.11.0
New Features
Bug Fixes
-
Fix Server to wait in wait_closed() until all transports are done.
(by @1st1 in 124e981) -
SSLTransport.abort() should mark the transport as closed.
(by @1st1 in 4d6621f) -
Fix 3.7 32bit builds.
(by @1st1 in a68f3c9, b5b4abb for #172)
Build
v0.10.2
Bug Fixes
-
Use a proper type for the thread indent (fixes 32-bit build for 3.7.)
(by @1st1 in 700582a for #172) -
Fix cancellation race in
loop.sock_recv()
andloop.sock_recv_into()
methods. (by @andr-04 and @1st1 in 298851b for #169) -
Sync SSL error messages with CPython's SSL implementation.
(by @1st1 in c3aeff2) -
Fix
SSLTransport.abort()
to mark the transport as closed.
(by @1st1 in ba25d8b) -
Detect if libuv submodule has not been checked out in
setup.py
.
(by @1st1 in dd8060d)
v0.10.1
Bug Fixes
-
Increase default SSL handshake timeout to 60 seconds.
(by @1st1 in 70c332c, fixes #161) -
Add
ssl_handshake_timeout
parameter toloop.create_connection()
,
loop.create_server()
,loop.create_unix_connection()
,
loop.create_unix_server()
,loop.connect_accepted_socket()
.
(by @1st1 in 68dd733, addresses #161) -
Consistently close transports if create_server/create_connection/etc
timeout or cancelled.
(by @1st1 in ac90d8b and 77ee4f9)
v0.10.0
New Features
-
Initial support for Python 3.7.
(by @pfreixes in c3a5ec8 for #138) -
Implement PEP 567 support (contextvars module) for Python 3.7.
(by @1st1 in 2a4fab4, 878e416, and b2bdaae for #155) -
Add uvloop's own version of
asyncio/sslproto.py
. SSL is now ~50% faster.
(by @1st1 in 4d91264) -
Convert Future-returning loop methods to coroutines to match asyncio 3.7.
(by @1st1 in 7384b22) -
Allow file objects to be passed to
loop.subprocess*()
functions.
(by @1st1 in f083090 for #136) -
Make signals processing more reliable.
(by @1st1 in 6e03e51) -
Prohibit adding a signal handler for
SIGCHLD
.
(by @1st1 in cd53b7f for #156)
Bug Fixes
-
Make sure UDP handles are cleaned-up properly.
(by @1st1 in 13f63e0) -
Fix
subprocess.close()
to let its processes die gracefully.
(by @1st1 in a78e4d2 and a455af3 for #128) -
Fix
sock_connect()
to resolve addresses for correct socket family.
(by @1st1 in ce2bd4f for #139) -
Fix a race condition in SSL handshake.
(by @1st1 in 447e124)
v0.9.1
-
Stop using malloc for
uv_request*
handlers. -
Fix
loop.add_reader()
,loop.add_writer()
,loop.remove_reader()
,
andloop.remove_writer()
to better track socket objects. -
Fix
loop.sock_recv()
,loop.sock_sendall()
,loop.sock_recv_into()
,
andloop.sock_connect()
to correctly handleTask.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.
v0.9.0
TCP & UDP Transports
-
transport.get_extra_info('socket')
now returns a socket-like
object. It supports socket methods likesetsockopts()
, but
prohibitssend()
,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()
andpause_reading()
idempotent.
This will match asyncio in Python 3.7. Issue #93. -
loop.create_server()
keeps a strong reference to theServer
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-leveluv_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()
andloop.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 inloop.subprocess_shell()
andloop.subprocess_exec()
making them more stable. Issue #39. -
loop.call_later()
accepts infinite timefloat('inf')
.
Issue #102. -
loop.subprocess_exec()
acceptspathlib.Path
objects for its
cwd
parameter. Issue #90. -
Support
pathlib.Path
objects inloop.create_unix_connection()
andloop.create_unix_server()
. -
Try removing existing stale Unix socket paths in
loop.create_unix_server()
. -
ascii
encoding is tried before encoding withidna
.
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.