uvloop

Ultra fast asyncio event loop.

APACHE-2.0 License

Downloads
23.4M
Stars
10.2K
Committers
65

Bot releases are hidden (Show)

uvloop -

Published by 1st1 almost 5 years ago

New Features

  • Add support for Python 3.8.
    (by @1st1 in 5f48dab8, 51636f7b)

Bug Fixes

  • Multiple fixes in the SSL/TLS layer.
    (by @fantix in 82104fb6 for #263, 7fcbfed1 for #255, e6fd6377)

  • Restore signal.wakeup_fd after the event loop is closed.
    (by @vladima in 48d376d3, @1st1 in d76d9827)

  • Handle large timeouts in loop.call_later().
    (by @1st1 in 1a0d6578 for #259)

  • Fix possible feezing of uvloop on os.fork.
    (by @grungy-ado in fde5d14f)

  • Better handle Unix sockets for datagram transports.
    (by @mosquito and @1st1 in dd4cb7ac for #269)

  • Avoid double connecting to remote_addr for datagram transports.
    (by @1st1 in bed926c5 for #276)

Build

  • Bump Cython to 0.29.13.
    (by @1st1 in 65c1a045)

  • Bump libuv to v1.33.1.
    (by @1st1 in 34fd827e)

uvloop - v0.14.0rc2

Published by 1st1 almost 5 years ago

This is the second release candidate.

See the full list of updates in 0.14.0rc1 release notes.

RC2 Bug Fixes

  • Fix libuv not waking up on SIGINT.
    (by @1st1 in c32c703 for #295)

  • Fix SSL proto to better handle EOF.
    (by @fantix in 6476aad)

uvloop - v0.14.0rc1

Published by 1st1 almost 5 years ago

New Features

  • Add support for Python 3.8.
    (by @1st1 in 5f48dab8, 51636f7b)

Bug Fixes

  • Multiple fixes in the SSL/TLS layer.
    (by @fantix in 82104fb6 for #263, 7fcbfed1 for #255)

  • Restore signal.wakeup_fd after the event loop is closed.
    (by @vladima in 48d376d3)

  • Handle large timeouts in loop.call_later().
    (by @1st1 in 1a0d6578 for #259)

  • Fix possible feezing of uvloop on os.fork.
    (by @grungy-ado in fde5d14f)

  • Better handle Unix sockets for datagram transports.
    (by @mosquito and @1st1 in dd4cb7ac for #269)

  • Avoid double connecting to remote_addr for datagram transports.
    (by @1st1 in bed926c5 for #276)

Build

  • Bump Cython to 0.29.13.
    (by @1st1 in 65c1a045)

  • Bump libuv to v1.33.1.
    (by @1st1 in 34fd827e)

uvloop -

Published by 1st1 about 5 years ago

New Features

  • Implement Server.start_serving() and related APIs.
    (by @jlaine in 7a4f00a3)

  • Make Server an asynchronous context manager.
    (by @jlaine in d6c67e7a for #221)

Performance

  • Start using high-performance uv_udp_t handle. This
    should result in a significantly faster UDP support.
    (by @1st1 in c2b65bc8)

  • Make address validation faster in udp.sendto().
    (by @1st1 in 46c5e9eb)

Misc

  • OSError is no longer logged by Transports.
    This matches asyncio behaviour in 3.8.
    (by @Tobotimus in ef29dab2)

Build

  • Upgrade to libuv v1.31.0.
    (by @1st1 in c2b65bc8 and 1fad621f)

  • Use manylinux-2010. This means we no longer provide
    32bit builds for Linux.
    (by @1st1 in 3174b7d3)

uvloop - v0.13.0rc1

Published by 1st1 over 5 years ago

New Features

  • Implement Server.start_serving() and related APIs.
    (by @jlaine in 7a4f00a3)

  • Make Server an asynchronous context manager.
    (by @jlaine in d6c67e7a for #221)

Performance

  • Start using high-performance uv_udp_t handle. This
    should result in a significantly faster UDP support.
    (by @1st1 in c2b65bc8)

  • Make address validation faster in udp.sendto().
    (by @1st1 in 46c5e9eb)

Build

  • Upgrade to libuv v1.28.0.
    This is a minimum requirement now.
    (by @1st1 in c2b65bc8)

  • Use manylinux-2010. This means we no longer provide
    32bit builds for Linux.
    (by @1st1 in 3174b7d3)

uvloop -

Published by 1st1 over 5 years ago

Bug Fixes

  • Fix circular references in SSL implementation to reduce
    the need for GC.
    (by @fantix in 3070ec85)

  • Fix a memory leak in call_later() and call_at().
    The leak occurred when a callback argument had a reference to
    the event loop.
    (by @1st1 in 1a5dbc28 for #239)

  • Fix compilation warnings.
    (by @JelleZijlstra in d9a111be)

  • Round (instead of flooring) delay in call_later().
    This ensures that the callback is never called slightly before
    the specified time.
    (by @fantix in 8f037a68 for #233)

uvloop -

Published by 1st1 over 5 years ago

Bug Fixes

  • Fix a circular references case in SSL implementation.
    (by @fantix in a2e0dd8e for #220)

  • Cleanup references to callbacks in canceled callback handles.

    This removes potential reference cycles between bound methods
    and cancelled Handle / TimerHandle objects.

    (by @1st1 in f0a945df)

uvloop -

Published by 1st1 over 5 years ago

New Features

  • New SSL implementation. The new implementation is faster and
    and more complete, and might become the default SSL implementation
    in asyncio 3.9.

    See the linked issue for more details.

    (by @fantix in 9cba7493 for #158, #176)

  • New uvloop.install() helper function.

    Instead of

    import asyncio
    import uvloop
    asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
    

    it is now possible to simply write

    import uvloop
    uvloop.install()
    

    (by @1st1 in a3d8d401)

Bug Fixes

  • All bug fixes from 0.11.00.11.3 are included in
    this release.

  • ssl.CertificateError is no longer logged as it's delivered to
    the Protocol.connection_lost() anyways.
    (by @fantix in 848e4785 for #195, #199)

  • Don't use non-existent UDPTransport._address attribute.
    (by @jlaine in f24c2c56 for #207)

Performance

  • Improve UDPTransport.sendto() performance.
    (by @jlaine in d5ad2b86 for #214)

Build

  • Upgrade Cython 0.28.x -> 0.29.0.

  • Upgrade libuv v1.22.0 -> v1.23.0.

uvloop -

Published by 1st1 almost 6 years ago

New Features

  • New SSL implementation. The new implementation is faster and
    and more complete, and will become the default SSL implementation
    in asyncio 3.8. This is a significant change that warrants a release
    candidate to make sure it is tested properly.

    See the linked issue for more details.

    (by @fantix in 9cba7493 for #158, #176)

  • New uvloop.install() helper function.

    Instead of

    import asyncio
    import uvloop
    asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
    

    it is now possible to simply write

    import uvloop
    uvloop.install()
    

    (by @1st1 in a3d8d401)

Bug Fixes

  • All bug fixes from 0.11.00.11.3 are included in
    this release.

  • ssl.CertificateError is no longer logged as it's delivered to
    the Protocol.connection_lost() anyways.
    (by @fantix in 848e4785 for #195, #199)

Build

  • Upgrade Cython 0.28.x -> 0.29.0.

  • Upgrade libuv v1.22.0 -> v1.23.0.

uvloop -

Published by 1st1 almost 6 years ago

Bug Fixes

  • Use new PyOS_BeforeFork and PyOS_AfterFork_* 3.7 APIs when available
    (by @1st1 in 75e7c32a)

  • Fix async generators finalization to function correctly in debug mode
    (by @1st1 in dcbb1f4f for #200)

  • Pass backlog to loop.create_unix_server() when a server is created via
    loop.create_server(sock=unix_sock, backlog=backlog).
    (by @hikoz in 40ad257b)

  • Don't raise "requires a DNS lookup" error on Unix Domain Socket (#204)
    (by @pax0r in 9fc3ca2a for #204)

  • Fix use of PyContext* APIs in 3.7.1
    (by @1st1 in 74748005)

Build

  • Bump Cython to 0.28.5
    (by @1st1 in 1bbd6a82)
uvloop -

Published by 1st1 about 6 years ago

Bug Fixes

  • Fix a memory leak related to contextvars support.
    (by @hellysmile and @1st1 in 2ddb4807 for #192)
uvloop -

Published by 1st1 about 6 years ago

Note: this is a bugfix release for 0.10.x branch. It's recommended to upgrade to 0.11.x.

Bug Fixes

uvloop -

Published by 1st1 about 6 years ago

Bug Fixes

  • Fix server to shutdown when alive connections exist
    (by @ciscorn in 5f71e29f for #180 in PR #181)

  • Fix a few bugs and crashes in UDP layer
    (by @1st1 in e0b5ea03, 5eef2d5f for #190)

  • Fix FD leakage if spawning a subprocess fails
    (by @1st1 in 4f6621eb for #185, #186)

  • Fix libuv process handles leak when uv_spawn() fails
    (by @1st1 in 92ea5179 for #187)

uvloop -

Published by 1st1 over 6 years ago

New Features

  • Implement support for BufferedProtocol.
    (by @1st1 in a959f274, 76b34bef, f9c43937)

  • Implement loop.start_tls().
    (by @1st1 in 622ed9c5)

  • Add Server.get_loop().
    (by @1st1 in 6a42f841)

Bug Fixes

  • Fix Server to wait in wait_closed() until all transports are done.
    (by @1st1 in 124e981b)

  • SSLTransport.abort() should mark the transport as closed.
    (by @1st1 in 4d6621f7)

  • Fix 3.7 32bit builds.
    (by @1st1 in a68f3c9a, b5b4abb1 for #172)

Build

  • setup.py: Detect if the libuv submodule has not been checked out.
    (by @1st1 in a190cddb)

  • Fix race between futures cancellation and loop.remove_reader() /
    loop.remove_writer().
    (by @andr-04 and @1st1 in cb0a65ae for #169)

  • Enable 3.7 CI on Travis and build wheels for 3.7.
    (by @1st1 in 37f964b7 for #179)

uvloop -

Published by 1st1 over 6 years ago

Bug Fixes

  • Use a proper type for the thread indent (fixes 32-bit build for 3.7.)
    (by @1st1 in 700582a9 for #172)

  • Fix cancellation race in loop.sock_recv() and loop.sock_recv_into()
    methods. (by @andr-04 and @1st1 in 298851bf for #169)

  • Sync SSL error messages with CPython's SSL implementation.
    (by @1st1 in c3aeff2a)

  • Fix SSLTransport.abort() to mark the transport as closed.
    (by @1st1 in ba25d8be)

  • Detect if libuv submodule has not been checked out in setup.py.
    (by @1st1 in dd8060d2)

uvloop -

Published by 1st1 over 6 years ago

Bug Fixes

  • Bump Cython from 0.28.2 to 0.28.3.
    (by @1st1 in 5044d240)

  • Increase default SSL handshake timeout to 60 seconds.
    (by @1st1 in 70c332cf, fixes #161)

  • Add ssl_handshake_timeout parameter to loop.create_connection(),
    loop.create_server(), loop.create_unix_connection(),
    loop.create_unix_server(), loop.connect_accepted_socket().
    (by @1st1 in 68dd7337, addresses #161)

  • Consistently close transports if create_server/create_connection/etc
    timeout or cancelled.
    (by @1st1 in ac90d8bd and 77ee4f96)

uvloop - v0.10.0

Published by 1st1 over 6 years ago

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)

uvloop -

Published by 1st1 almost 7 years ago

  • 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.

uvloop -

Published by 1st1 almost 7 years ago

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.

uvloop -

Published by 1st1 about 7 years ago