zuvloop 0.0.2__tar.gz → 0.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {zuvloop-0.0.2 → zuvloop-0.0.4}/PKG-INFO +12 -8
- {zuvloop-0.0.2 → zuvloop-0.0.4}/README.md +11 -7
- {zuvloop-0.0.2 → zuvloop-0.0.4}/pyproject.toml +17 -2
- zuvloop-0.0.4/vendor/README.md +17 -0
- zuvloop-0.0.4/vendor/libuv-maintainer-keys.txt +12 -0
- zuvloop-0.0.4/vendor/update-libuv.sh +38 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/addr.zig +4 -3
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/datagram.zig +8 -6
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/dns.zig +5 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/handle.zig +15 -4
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/loop.zig +7 -3
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/process.zig +4 -4
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/transport.zig +45 -12
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zuvloop/_base.py +115 -16
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zuvloop/_connect.py +3 -3
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zuvloop/_instrumentation.py +2 -2
- zuvloop-0.0.4/zuvloop/_loop.py +105 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zuvloop/_process.py +117 -49
- zuvloop-0.0.4/zuvloop/_sendfile.py +268 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zuvloop/_sockets.py +9 -25
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zuvloop/_zuvloop.pyi +2 -0
- zuvloop-0.0.2/vendor/README.md +0 -13
- zuvloop-0.0.2/vendor/update-libuv.sh +0 -21
- zuvloop-0.0.2/zuvloop/_loop.py +0 -64
- {zuvloop-0.0.2 → zuvloop-0.0.4}/.gitignore +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/LICENSE +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/build.zig +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/build.zig.zon +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/.gitattributes +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/.github/ISSUE_TEMPLATE.md +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/.github/dependabot.yml +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/.github/workflows/CI-docs.yml +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/.github/workflows/CI-sample.yml +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/.github/workflows/CI-unix.yml +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/.github/workflows/CI-win.yml +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/.github/workflows/sanitizer.yml +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/.gitignore +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/.mailmap +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/.readthedocs.yaml +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/AUTHORS +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/CMakeLists.txt +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/CONTRIBUTING.md +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/ChangeLog +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/LICENSE +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/LICENSE-docs +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/LICENSE-extra +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/LINKS.md +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/MAINTAINERS.md +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/Makefile.am +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/README.md +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/SECURITY.md +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/SUPPORTED_PLATFORMS.md +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/autogen.sh +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/cmake-toolchains/cross-mingw32.cmake +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/configure.ac +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/.gitignore +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/CMakeLists.txt +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/cgi/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/cgi/tick.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/default-loop/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/detach/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/dns/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/helloworld/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/idle-basic/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/idle-compute/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/interfaces/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/locks/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/multi-echo-server/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/multi-echo-server/worker.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/onchange/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/pipe-echo-server/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/plugin/hello.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/plugin/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/plugin/plugin.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/proc-streams/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/proc-streams/test.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/progress/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/queue-cancel/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/queue-work/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/ref-timer/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/signal/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/spawn/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/tcp-echo-server/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/thread-create/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/tty/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/tty-gravity/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/udp-dhcp/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/uvcat/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/uvstop/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/uvtee/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/code/uvwget/main.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/make.bat +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/requirements.txt +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/api.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/async.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/check.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/conf.py +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/design.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/dll.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/dns.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/errors.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/fs.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/fs_event.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/fs_poll.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/guide/about.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/guide/basics.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/guide/eventloops.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/guide/filesystem.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/guide/introduction.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/guide/networking.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/guide/processes.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/guide/threads.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/guide/utilities.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/guide.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/handle.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/idle.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/index.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/loop.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/metrics.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/migration_010_100.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/misc.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/pipe.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/poll.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/prepare.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/process.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/request.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/signal.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/sphinx-plugins/manpage.py +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/architecture.png +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/diagrams.key/Data/st0-311.jpg +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/diagrams.key/Data/st1-475.jpg +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/diagrams.key/Index.zip +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/diagrams.key/Metadata/BuildVersionHistory.plist +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/diagrams.key/Metadata/DocumentIdentifier +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/diagrams.key/Metadata/Properties.plist +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/diagrams.key/preview-micro.jpg +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/diagrams.key/preview-web.jpg +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/diagrams.key/preview.jpg +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/favicon.ico +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/logo.png +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/static/loop_iteration.png +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/stream.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/tcp.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/threading.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/threadpool.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/timer.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/tty.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/udp.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/upgrading.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/docs/src/version.rst +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/img/banner.png +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/img/logos.svg +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/aix.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/bsd.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/darwin.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/errno.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/linux.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/os390.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/posix.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/sunos.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/threadpool.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/tree.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/unix.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/version.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv/win.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/include/uv.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/libuv-static.pc.in +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/libuv.pc.in +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/m4/.gitignore +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/m4/as_case.m4 +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/m4/ax_pthread.m4 +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/m4/libuv-check-flags.m4 +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/fs-poll.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/heap-inl.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/idna.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/idna.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/inet.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/queue.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/random.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/strscpy.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/strscpy.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/strtok.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/strtok.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/thread-common.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/threadpool.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/timer.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/aix-common.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/aix.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/async.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/bsd-ifaddrs.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/bsd-proctitle.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/core.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/cygwin.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/darwin-proctitle.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/darwin-stub.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/darwin-syscalls.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/darwin.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/dl.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/freebsd.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/fs.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/fsevents.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/getaddrinfo.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/getnameinfo.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/haiku.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/hurd.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/ibmi.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/internal.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/kqueue.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/linux.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/loop-watcher.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/loop.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/netbsd.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/no-fsevents.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/no-proctitle.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/openbsd.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/os390-proctitle.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/os390-syscalls.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/os390-syscalls.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/os390.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/pipe.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/poll.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/posix-hrtime.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/posix-poll.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/process.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/procfs-exepath.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/proctitle.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/qnx.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/random-devurandom.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/random-getentropy.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/random-getrandom.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/random-sysctl-linux.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/signal.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/stream.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/sunos.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/sysinfo-loadavg.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/sysinfo-memory.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/tcp.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/thread.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/tty.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/unix/udp.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/uv-common.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/uv-common.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/uv-data-getter-setters.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/version.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/async.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/atomicops-inl.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/core.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/detect-wakeup.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/dl.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/error.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/fs-event.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/fs-fd-hash-inl.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/fs.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/getaddrinfo.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/getnameinfo.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/handle-inl.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/handle.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/internal.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/loop-watcher.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/pipe.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/poll.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/process-stdio.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/process.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/req-inl.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/signal.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/snprintf.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/stream-inl.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/stream.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/tcp.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/thread.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/tty.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/udp.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/util.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/winapi.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/winapi.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/winsock.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/src/win/winsock.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-async-pummel.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-async.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-fs-stat.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-getaddrinfo.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-list.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-loop-count.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-million-async.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-million-timers.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-multi-accept.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-ping-pongs.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-ping-udp.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-pound.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-pump.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-queue-work.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-sizes.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-spawn.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-tcp-write-batch.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-thread.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/benchmark-udp-pummel.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/blackhole-server.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/echo-server.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/fixtures/empty_file +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/fixtures/load_error.node +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/fixtures/lorem_ipsum.txt +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/fixtures/one_file/one_file +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/run-benchmarks.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/run-tests.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/runner-unix.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/runner-unix.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/runner-win.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/runner-win.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/runner.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/runner.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/task.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-active.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-async-null-cb.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-async.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-barrier.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-callback-stack.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-close-fd.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-close-order.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-condvar.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-connect-unspecified.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-connection-fail.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-cwd-and-chdir.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-default-loop-close.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-delayed-accept.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-dlerror.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-eintr-handling.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-embed.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-emfile.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-env-vars.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-error.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-fail-always.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-fork.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-fs-copyfile.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-fs-event.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-fs-fd-hash.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-fs-open-flags.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-fs-poll.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-fs-readdir.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-fs.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-get-currentexe.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-get-loadavg.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-get-memory.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-get-passwd.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-getaddrinfo.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-gethostname.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-getnameinfo.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-getsockname.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-getters-setters.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-gettimeofday.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-handle-fileno.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-homedir.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-hrtime.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-idle.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-idna.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-iouring-pollhup.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-ip-name.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-ip4-addr.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-ip6-addr.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-ipc-heavy-traffic-deadlock-bug.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-ipc-send-recv.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-ipc.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-list.h +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-loop-alive.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-loop-close.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-loop-configure.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-loop-handles.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-loop-oom.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-loop-stop.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-loop-time.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-metrics.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-multiple-listen.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-mutexes.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-not-readable-nor-writable-on-read-error.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-not-writable-after-shutdown.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-osx-select.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pass-always.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-ping-pong.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pipe-bind-error.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pipe-close-stdout-read-stdin.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pipe-connect-error.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pipe-connect-multiple.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pipe-connect-prepare.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pipe-getsockname.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pipe-pending-instances.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pipe-sendmsg.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pipe-server-close.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pipe-set-fchmod.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-pipe-set-non-blocking.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-platform-output.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-poll-close-doesnt-corrupt-stack.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-poll-close.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-poll-closesocket.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-poll-multiple-handles.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-poll-oob.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-poll.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-process-priority.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-process-title-threadsafe.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-process-title.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-queue-foreach-delete.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-random.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-readable-on-eof.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-ref.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-run-nowait.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-run-once.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-semaphore.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-shutdown-close.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-shutdown-eof.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-shutdown-simultaneous.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-shutdown-twice.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-signal-multiple-loops.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-signal-pending-on-close.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-signal.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-socket-buffer-size.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-spawn.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-stdio-over-pipes.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-strscpy.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-strtok.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-alloc-cb-fail.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-bind-error.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-bind6-error.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-close-accept.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-close-after-read-timeout.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-close-reset.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-close-while-connecting.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-close.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-connect-error-after-write.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-connect-error.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-connect-timeout.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-connect6-error.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-create-socket-early.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-flags.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-oob.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-open.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-read-stop-start.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-read-stop.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-reuseport.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-rst.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-shutdown-after-write.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-try-write-error.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-try-write.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-unexpected-read.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-write-after-connect.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-write-fail.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-write-in-a-row.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-write-queue-order.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-write-to-half-open-connection.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tcp-writealot.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-test-macros.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-thread-affinity.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-thread-equal.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-thread-name.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-thread-priority.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-thread.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-threadpool-cancel.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-threadpool.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-timer-again.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-timer-from-check.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-timer.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tmpdir.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tty-duplicate-key.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tty-escape-sequence-processing.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-tty.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-alloc-cb-fail.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-bind.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-connect.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-connect6.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-create-socket-early.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-dgram-too-big.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-ipv6.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-mmsg.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-multicast-interface.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-multicast-interface6.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-multicast-join.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-multicast-join6.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-multicast-ttl.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-open.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-options.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-recv-in-a-row.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-reuseport.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-send-and-recv.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-send-hang-loop.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-send-immediate.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-send-unreachable.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-sendmmsg-error.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-udp-try-send.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-uname.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-walk-handles.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/test/test-watcher-cross-stop.c +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/tools/make_dist_html.py +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/tools/vswhere_usability_wrapper.cmd +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/tsansupp.txt +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/vendor/libuv/uv_win_longpath.manifest +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/c.zig +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/collections.zig +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/module.zig +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/poller.zig +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/py.zig +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/timer.zig +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/tshandle.zig +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zig/uv.zig +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zuvloop/__init__.py +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zuvloop/_runner.py +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zuvloop/_server.py +0 -0
- {zuvloop-0.0.2 → zuvloop-0.0.4}/zuvloop/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: zuvloop
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.4
|
|
4
4
|
Summary: A libuv event loop for asyncio, written in Zig.
|
|
5
5
|
Project-URL: Source, https://github.com/Kludex/zuvloop
|
|
6
6
|
Author-email: Marcelo Trylesinski <marcelotryle@gmail.com>
|
|
@@ -122,9 +122,11 @@ That's it. That's the migration. 🎉
|
|
|
122
122
|
## Observability
|
|
123
123
|
|
|
124
124
|
zuvloop emits plain OpenTelemetry. The only runtime dependency is `opentelemetry-api` — not the
|
|
125
|
-
SDK, nothing vendor-specific.
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
SDK, nothing vendor-specific. Providers can be configured before the loop starts or from inside
|
|
126
|
+
it — `logfire.configure()` in `main()` works: zuvloop checks at each `run_forever()` entry and
|
|
127
|
+
re-checks on its sampling interval (`loop.metrics_interval`, 10 seconds by default) while the
|
|
128
|
+
loop runs. Until a provider is installed the instruments are no-ops and slow-callback timing
|
|
129
|
+
stays off.
|
|
128
130
|
|
|
129
131
|
Anything that speaks OpenTelemetry can collect it. For example, with
|
|
130
132
|
<a href="https://logfire.pydantic.dev" target="_blank">Logfire</a>:
|
|
@@ -144,8 +146,8 @@ zuvloop.run(main())
|
|
|
144
146
|
|
|
145
147
|
That's all — there is no zuvloop-specific setup. Spans and counters are emitted
|
|
146
148
|
as events happen, and the loop gauges are sampled automatically while the loop
|
|
147
|
-
runs (only
|
|
148
|
-
|
|
149
|
+
runs (published only once a real provider is installed; without one the
|
|
150
|
+
snapshot is dropped).
|
|
149
151
|
|
|
150
152
|
You get:
|
|
151
153
|
|
|
@@ -193,7 +195,7 @@ zuvloop keeps its timer heap in native code and reads the clock directly, so mon
|
|
|
193
195
|
returns and nothing else. A loop that needs a controllable clock should schedule against one
|
|
194
196
|
explicitly.
|
|
195
197
|
|
|
196
|
-
|
|
198
|
+
One more deliberate divergence: handles
|
|
197
199
|
returned by `call_soon` implement the `asyncio.Handle` interface but are not instances of it:
|
|
198
200
|
the base class is 56 bytes of storage such a handle never writes, measured at 2% of `call_soon`,
|
|
199
201
|
which is the object the loop allocates more often than any other. `call_later` and `call_at`
|
|
@@ -209,6 +211,8 @@ $ uv pip install -e . --group dev
|
|
|
209
211
|
$ uv run pytest
|
|
210
212
|
$ uv run mypy
|
|
211
213
|
$ uv run ruff check
|
|
214
|
+
$ uv run ruff format --check
|
|
215
|
+
$ ./scripts/check-zig # requires ZLint 0.9.1 on PATH
|
|
212
216
|
$ uv run --group bench python benchmarks/run.py
|
|
213
217
|
```
|
|
214
218
|
|
|
@@ -219,7 +223,7 @@ $ python scripts/build.py
|
|
|
219
223
|
```
|
|
220
224
|
|
|
221
225
|
`vendor/libuv` is an unmodified upstream release tarball; see `vendor/README.md`. Update it with
|
|
222
|
-
`./vendor/update-libuv.sh <version>`.
|
|
226
|
+
`./vendor/update-libuv.sh <version> <sha256>`.
|
|
223
227
|
|
|
224
228
|
## License
|
|
225
229
|
|
|
@@ -98,9 +98,11 @@ That's it. That's the migration. 🎉
|
|
|
98
98
|
## Observability
|
|
99
99
|
|
|
100
100
|
zuvloop emits plain OpenTelemetry. The only runtime dependency is `opentelemetry-api` — not the
|
|
101
|
-
SDK, nothing vendor-specific.
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
SDK, nothing vendor-specific. Providers can be configured before the loop starts or from inside
|
|
102
|
+
it — `logfire.configure()` in `main()` works: zuvloop checks at each `run_forever()` entry and
|
|
103
|
+
re-checks on its sampling interval (`loop.metrics_interval`, 10 seconds by default) while the
|
|
104
|
+
loop runs. Until a provider is installed the instruments are no-ops and slow-callback timing
|
|
105
|
+
stays off.
|
|
104
106
|
|
|
105
107
|
Anything that speaks OpenTelemetry can collect it. For example, with
|
|
106
108
|
<a href="https://logfire.pydantic.dev" target="_blank">Logfire</a>:
|
|
@@ -120,8 +122,8 @@ zuvloop.run(main())
|
|
|
120
122
|
|
|
121
123
|
That's all — there is no zuvloop-specific setup. Spans and counters are emitted
|
|
122
124
|
as events happen, and the loop gauges are sampled automatically while the loop
|
|
123
|
-
runs (only
|
|
124
|
-
|
|
125
|
+
runs (published only once a real provider is installed; without one the
|
|
126
|
+
snapshot is dropped).
|
|
125
127
|
|
|
126
128
|
You get:
|
|
127
129
|
|
|
@@ -169,7 +171,7 @@ zuvloop keeps its timer heap in native code and reads the clock directly, so mon
|
|
|
169
171
|
returns and nothing else. A loop that needs a controllable clock should schedule against one
|
|
170
172
|
explicitly.
|
|
171
173
|
|
|
172
|
-
|
|
174
|
+
One more deliberate divergence: handles
|
|
173
175
|
returned by `call_soon` implement the `asyncio.Handle` interface but are not instances of it:
|
|
174
176
|
the base class is 56 bytes of storage such a handle never writes, measured at 2% of `call_soon`,
|
|
175
177
|
which is the object the loop allocates more often than any other. `call_later` and `call_at`
|
|
@@ -185,6 +187,8 @@ $ uv pip install -e . --group dev
|
|
|
185
187
|
$ uv run pytest
|
|
186
188
|
$ uv run mypy
|
|
187
189
|
$ uv run ruff check
|
|
190
|
+
$ uv run ruff format --check
|
|
191
|
+
$ ./scripts/check-zig # requires ZLint 0.9.1 on PATH
|
|
188
192
|
$ uv run --group bench python benchmarks/run.py
|
|
189
193
|
```
|
|
190
194
|
|
|
@@ -195,7 +199,7 @@ $ python scripts/build.py
|
|
|
195
199
|
```
|
|
196
200
|
|
|
197
201
|
`vendor/libuv` is an unmodified upstream release tarball; see `vendor/README.md`. Update it with
|
|
198
|
-
`./vendor/update-libuv.sh <version>`.
|
|
202
|
+
`./vendor/update-libuv.sh <version> <sha256>`.
|
|
199
203
|
|
|
200
204
|
## License
|
|
201
205
|
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
|
|
2
|
+
# hatch-ziglang is pinned exactly: it runs during the isolated wheel build and
|
|
3
|
+
# invokes the native compiler, so a future version resolved from a lower bound
|
|
4
|
+
# could execute unreviewed code into the wheels the publish job trusts. The
|
|
5
|
+
# compiler is pinned for the same reason. Bump both deliberately.
|
|
6
|
+
requires = ["hatchling", "hatch-vcs==0.5.0", "hatch-ziglang==0.2.1", "ziglang==0.16.0"]
|
|
3
7
|
build-backend = "hatchling.build"
|
|
4
8
|
|
|
5
9
|
[project]
|
|
6
10
|
name = "zuvloop"
|
|
7
|
-
version = "0.0.2"
|
|
8
11
|
description = "A libuv event loop for asyncio, written in Zig."
|
|
9
12
|
readme = "README.md"
|
|
10
13
|
requires-python = ">=3.14"
|
|
11
14
|
license = "MIT"
|
|
15
|
+
dynamic = ["version"]
|
|
12
16
|
# libuv is compiled into the extension, so its licence ships with the wheel.
|
|
13
17
|
license-files = ["LICENSE", "vendor/libuv/LICENSE*"]
|
|
14
18
|
authors = [{ name = "Marcelo Trylesinski", email = "marcelotryle@gmail.com" }]
|
|
@@ -40,6 +44,17 @@ dev = [
|
|
|
40
44
|
bench = ["aiohttp", "httptools", "pytest-codspeed>=5", "uvicorn", "uvloop>=0.21"]
|
|
41
45
|
docs = ["zensical"]
|
|
42
46
|
|
|
47
|
+
[tool.hatch.version]
|
|
48
|
+
source = "vcs"
|
|
49
|
+
|
|
50
|
+
[tool.hatch.version.raw-options]
|
|
51
|
+
# A tag is the version; commits after it are the next patch's dev builds, so an
|
|
52
|
+
# untagged build can never claim to be the release. `no-local-version` drops the
|
|
53
|
+
# `+<hash>` segment, which PyPI refuses on upload.
|
|
54
|
+
version_scheme = "guess-next-dev"
|
|
55
|
+
local_scheme = "no-local-version"
|
|
56
|
+
fallback_version = "0.0.0"
|
|
57
|
+
|
|
43
58
|
[tool.hatch.build.targets.wheel]
|
|
44
59
|
packages = ["zuvloop"]
|
|
45
60
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Vendored dependencies
|
|
2
|
+
|
|
3
|
+
## libuv
|
|
4
|
+
|
|
5
|
+
- Version: **1.51.0**
|
|
6
|
+
- Source: <https://dist.libuv.org/dist/v1.51.0/libuv-v1.51.0.tar.gz>
|
|
7
|
+
- SHA-256: `5f0557b90b1106de71951a3c3931de5e0430d78da1d9a10287ebc7a3f78ef8eb`
|
|
8
|
+
|
|
9
|
+
The tree under `libuv/` is the upstream release tarball, extracted verbatim. **Never edit it.**
|
|
10
|
+
Everything zuvloop adds lives in `zig/`, and `build.zig` compiles the vendored sources with the same
|
|
11
|
+
defines and file lists as upstream's `CMakeLists.txt`.
|
|
12
|
+
|
|
13
|
+
A weekly workflow checks for a new signed release, verifies its signer against
|
|
14
|
+
`libuv-maintainer-keys.txt`, tests every supported target, and opens an update pull request. For a
|
|
15
|
+
manual update, verify the checksum through an independent channel, then run
|
|
16
|
+
`./vendor/update-libuv.sh <version> <sha256>` and re-check the file lists at the top of `build.zig`
|
|
17
|
+
against the new `CMakeLists.txt`.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Full fingerprint and libuv git tag containing the public key.
|
|
2
|
+
# Keep this trust root in sync with https://github.com/libuv/libuv/blob/v1.x/MAINTAINERS.md.
|
|
3
|
+
D77B1E34243FBAF05F8E9CC34F55C8C846AB89B9 pubkey-bnoordhuis
|
|
4
|
+
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 pubkey-cjihrig
|
|
5
|
+
57353E0DBDAAA7E839B66A1AFF47D5E4AD8B4FDC pubkey-cjihrig-kb
|
|
6
|
+
AEAD0A4B686767751A0E4AEF34A25FB128246514 pubkey-vtjnash
|
|
7
|
+
CFBB9CA9A5BEAFD70E2B3C5A79A67C55A3679C8B pubkey2022-vtjnash
|
|
8
|
+
5804F9998A922AFBA39847A0718350906134887F github:erw7
|
|
9
|
+
C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C pubkey-richardlau
|
|
10
|
+
612F0EAD9401622379DF4402F28C3C8DA33C03BE pubkey-santigimeno
|
|
11
|
+
FDF519364458319FA8233DC9410E5553AE9BC059 pubkey-saghul
|
|
12
|
+
AEFC279A0C9306767E5829A1251CA676820DC7F3 pubkey-trevnorris
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Replace vendor/libuv with a pristine upstream release tarball.
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
version="${1:?usage: update-libuv.sh <version> <sha256>, e.g. 1.51.0 5f0557...}"
|
|
6
|
+
checksum="${2:?supply the SHA-256 published for libuv ${version}}"
|
|
7
|
+
if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
8
|
+
echo "invalid libuv version: $version" >&2
|
|
9
|
+
exit 2
|
|
10
|
+
fi
|
|
11
|
+
if [[ ! "$checksum" =~ ^[[:xdigit:]]{64}$ ]]; then
|
|
12
|
+
echo "invalid SHA-256: $checksum" >&2
|
|
13
|
+
exit 2
|
|
14
|
+
fi
|
|
15
|
+
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
16
|
+
url="https://dist.libuv.org/dist/v${version}/libuv-v${version}.tar.gz"
|
|
17
|
+
|
|
18
|
+
tmp="$(mktemp -d)"
|
|
19
|
+
trap 'rm -rf "$tmp"' EXIT
|
|
20
|
+
|
|
21
|
+
curl -fsSL "$url" -o "$tmp/libuv.tar.gz"
|
|
22
|
+
printf '%s %s\n' "$checksum" "$tmp/libuv.tar.gz" | shasum -a 256 -c -
|
|
23
|
+
tar xzf "$tmp/libuv.tar.gz" -C "$tmp"
|
|
24
|
+
rm -rf "$here/libuv"
|
|
25
|
+
mv "$tmp/libuv-v${version}" "$here/libuv"
|
|
26
|
+
|
|
27
|
+
sed -i.bak -E "s/\*\*[0-9]+\.[0-9]+\.[0-9]+\*\*/**${version}**/; s|dist/v[0-9]+\.[0-9]+\.[0-9]+/libuv-v[0-9]+\.[0-9]+\.[0-9]+|dist/v${version}/libuv-v${version}|g; s|SHA-256: \`[[:xdigit:]]{64}\`|SHA-256: \`${checksum}\`|" "$here/README.md"
|
|
28
|
+
if ! grep -Fq -- "- Version: **${version}**" "$here/README.md" ||
|
|
29
|
+
! grep -Fq -- "dist/v${version}/libuv-v${version}.tar.gz" "$here/README.md" ||
|
|
30
|
+
! grep -Fq -- "SHA-256: \`${checksum}\`" "$here/README.md"; then
|
|
31
|
+
mv "$here/README.md.bak" "$here/README.md"
|
|
32
|
+
echo "failed to update vendor/README.md; check its format" >&2
|
|
33
|
+
exit 1
|
|
34
|
+
fi
|
|
35
|
+
rm -f "$here/README.md.bak"
|
|
36
|
+
|
|
37
|
+
echo "vendored libuv ${version} from ${url}"
|
|
38
|
+
echo "now diff vendor/libuv/CMakeLists.txt against the source lists in build.zig"
|
|
@@ -35,6 +35,7 @@ fn tupleItem(t: *py.Object, i: c.Py_ssize_t) py.Error!*py.Object {
|
|
|
35
35
|
pub fn fromPython(family: c_int, address: *py.Object, out: *Storage) py.Error!c_int {
|
|
36
36
|
out.* = .{};
|
|
37
37
|
if (family == AF_UNIX) {
|
|
38
|
+
// SAFETY: each accepted address type assigns path, and every other type returns.
|
|
38
39
|
var path: [*c]const u8 = undefined;
|
|
39
40
|
var len: c.Py_ssize_t = 0;
|
|
40
41
|
if (c.PyUnicode_Check(address) != 0) {
|
|
@@ -146,9 +147,9 @@ pub fn same(a: *const posix.sockaddr, a_len: c_int, b: *const posix.sockaddr, b_
|
|
|
146
147
|
const x: *const posix.sockaddr.in6 = @ptrCast(@alignCast(a));
|
|
147
148
|
const y: *const posix.sockaddr.in6 = @ptrCast(@alignCast(b));
|
|
148
149
|
if (x.port != y.port or !std.mem.eql(u8, &x.addr, &y.addr)) return false;
|
|
149
|
-
// asyncio compares tuples, so
|
|
150
|
-
// treating
|
|
151
|
-
return x.scope_id == y.scope_id;
|
|
150
|
+
// asyncio compares the complete tuples, so both ancillary fields must
|
|
151
|
+
// be stated exactly rather than treating zero as a wildcard.
|
|
152
|
+
return x.flowinfo == y.flowinfo and x.scope_id == y.scope_id;
|
|
152
153
|
}
|
|
153
154
|
return false;
|
|
154
155
|
}
|
|
@@ -392,6 +392,7 @@ fn sendto(self_obj: *py.Object, args: []const ?*py.Object, nargs: usize, kwnames
|
|
|
392
392
|
return py.errValue("sendto() requires an address on an unconnected transport");
|
|
393
393
|
}
|
|
394
394
|
|
|
395
|
+
// SAFETY: PyObject_GetBuffer initializes view or returns an error.
|
|
395
396
|
var view: c.Py_buffer = undefined;
|
|
396
397
|
if (c.PyObject_GetBuffer(args[0].?, &view, c.PyBUF_SIMPLE) < 0) return py.Error.Python;
|
|
397
398
|
defer c.PyBuffer_Release(&view);
|
|
@@ -596,12 +597,13 @@ pub fn makeDatagram(self_obj: *py.Object, args: []const ?*py.Object) py.Error!*p
|
|
|
596
597
|
self.flags |= OPEN;
|
|
597
598
|
uv.setData(self.udp(), self);
|
|
598
599
|
|
|
599
|
-
|
|
600
|
+
const status = uv.uv_udp_open(self.udp(), fd);
|
|
601
|
+
if (status < 0) {
|
|
600
602
|
// libuv never took the descriptor, so the caller still owns it.
|
|
601
603
|
self.flags &= ~OPEN;
|
|
602
604
|
py.incref(obj);
|
|
603
605
|
uv.uv_close(uv.asHandle(self.udp()), onOpenFailed);
|
|
604
|
-
return py.errUv(
|
|
606
|
+
return py.errUv(status);
|
|
605
607
|
}
|
|
606
608
|
|
|
607
609
|
py.incref(obj);
|
|
@@ -704,11 +706,11 @@ var methods = [_]c.PyMethodDef{
|
|
|
704
706
|
};
|
|
705
707
|
|
|
706
708
|
var slots = [_]c.PyType_Slot{
|
|
707
|
-
.{ .slot = c.Py_tp_dealloc, .pfunc = @
|
|
708
|
-
.{ .slot = c.Py_tp_traverse, .pfunc = @
|
|
709
|
-
.{ .slot = c.Py_tp_clear, .pfunc = @
|
|
709
|
+
.{ .slot = c.Py_tp_dealloc, .pfunc = @ptrCast(@constCast(&dealloc)) },
|
|
710
|
+
.{ .slot = c.Py_tp_traverse, .pfunc = @ptrCast(@constCast(&traverse)) },
|
|
711
|
+
.{ .slot = c.Py_tp_clear, .pfunc = @ptrCast(@constCast(&clear_)) },
|
|
710
712
|
.{ .slot = c.Py_tp_methods, .pfunc = @ptrCast(&methods) },
|
|
711
|
-
.{ .slot = c.Py_tp_doc, .pfunc = @
|
|
713
|
+
.{ .slot = c.Py_tp_doc, .pfunc = @ptrCast(@constCast("A libuv-backed datagram transport.")) },
|
|
712
714
|
.{ .slot = 0, .pfunc = null },
|
|
713
715
|
};
|
|
714
716
|
|
|
@@ -36,7 +36,9 @@ const Request = struct {
|
|
|
36
36
|
prev: ?*Request = null,
|
|
37
37
|
next: ?*Request = null,
|
|
38
38
|
hints: std.c.addrinfo = std.mem.zeroes(std.c.addrinfo),
|
|
39
|
+
// SAFETY: request construction fills this array before libuv receives it.
|
|
39
40
|
host: [max_host]u8 = undefined,
|
|
41
|
+
// SAFETY: request construction fills this array before libuv receives it.
|
|
40
42
|
service: [32]u8 = undefined,
|
|
41
43
|
|
|
42
44
|
inline fn addrReq(self: *Request) *uv.GetAddrInfo {
|
|
@@ -117,6 +119,7 @@ pub fn traverse(st: *loopmod.State, visitproc: c.visitproc, arg: ?*anyopaque) c_
|
|
|
117
119
|
fn copyZ(dst: []u8, value: *py.Object, what: [:0]const u8) py.Error!?[*:0]const u8 {
|
|
118
120
|
if (py.isNone(value)) return null;
|
|
119
121
|
var len: c.Py_ssize_t = 0;
|
|
122
|
+
// SAFETY: each accepted Python type assigns src, and every other type returns.
|
|
120
123
|
var src: [*c]const u8 = undefined;
|
|
121
124
|
if (c.PyUnicode_Check(value) != 0) {
|
|
122
125
|
src = c.PyUnicode_AsUTF8AndSize(value, &len) orelse return py.Error.Python;
|
|
@@ -368,6 +371,8 @@ fn resolveLiteral(hints: *const std.c.addrinfo, host: ?[*:0]const u8, service: ?
|
|
|
368
371
|
port = std.fmt.parseInt(u16, text, 10) catch return null;
|
|
369
372
|
}
|
|
370
373
|
|
|
374
|
+
// SAFETY: inet_pton initializes the address and the successful branch fills
|
|
375
|
+
// the remaining sockaddr fields before storage is read.
|
|
371
376
|
var storage: addr.Storage = undefined;
|
|
372
377
|
const family = hints.family;
|
|
373
378
|
if (family == std.c.AF.INET or family == std.c.AF.UNSPEC) {
|
|
@@ -17,6 +17,7 @@ const inline_args = 3;
|
|
|
17
17
|
const arg_alloc = std.heap.c_allocator;
|
|
18
18
|
|
|
19
19
|
pub const CANCELLED: u32 = 1 << 0;
|
|
20
|
+
const RUNNING: u32 = 1 << 1;
|
|
20
21
|
|
|
21
22
|
pub const Handle = extern struct {
|
|
22
23
|
ob_base: c.PyObject,
|
|
@@ -86,6 +87,14 @@ pub fn create(
|
|
|
86
87
|
pub fn run(self: *Handle) void {
|
|
87
88
|
if (self.isCancelled()) return;
|
|
88
89
|
const callback = self.callback orelse return;
|
|
90
|
+
self.flags |= RUNNING;
|
|
91
|
+
defer {
|
|
92
|
+
self.flags &= ~RUNNING;
|
|
93
|
+
if (self.isCancelled()) {
|
|
94
|
+
clearArgs(self);
|
|
95
|
+
py.clear(&self.callback);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
89
98
|
invoke(@ptrCast(self), self.loop, callback, self.argv(), self.nargs, self.context.?);
|
|
90
99
|
}
|
|
91
100
|
|
|
@@ -168,8 +177,12 @@ fn cancel(self_obj: *py.Object) py.Error!*py.Object {
|
|
|
168
177
|
const self: *Handle = @ptrCast(@alignCast(self_obj));
|
|
169
178
|
if (!self.isCancelled()) {
|
|
170
179
|
self.flags |= CANCELLED;
|
|
171
|
-
|
|
172
|
-
|
|
180
|
+
// Vectorcall borrows these references. A callback may cancel its own
|
|
181
|
+
// handle, so release them when run() regains control instead.
|
|
182
|
+
if (self.flags & RUNNING == 0) {
|
|
183
|
+
clearArgs(self);
|
|
184
|
+
py.clear(&self.callback);
|
|
185
|
+
}
|
|
173
186
|
}
|
|
174
187
|
return py.noneRef();
|
|
175
188
|
}
|
|
@@ -179,7 +192,6 @@ fn cancelled(self_obj: *py.Object) py.Error!*py.Object {
|
|
|
179
192
|
return py.boolRef(self.isCancelled());
|
|
180
193
|
}
|
|
181
194
|
|
|
182
|
-
|
|
183
195
|
fn getCallback(self_obj: ?*py.Object, _: ?*anyopaque) callconv(.c) ?*py.Object {
|
|
184
196
|
const self: *Handle = @ptrCast(@alignCast(self_obj.?));
|
|
185
197
|
return py.newref(self.callback orelse py.none());
|
|
@@ -243,7 +255,6 @@ var handle_spec = c.PyType_Spec{
|
|
|
243
255
|
.slots = &handle_slots,
|
|
244
256
|
};
|
|
245
257
|
|
|
246
|
-
|
|
247
258
|
pub fn register(module: *py.Object) py.Error!void {
|
|
248
259
|
handle_type = @ptrCast(c.PyType_FromModuleAndSpec(module, &handle_spec, null) orelse return py.Error.Python);
|
|
249
260
|
if (c.PyModule_AddObjectRef(module, "Handle", @ptrCast(handle_type)) < 0) return py.Error.Python;
|
|
@@ -904,7 +904,7 @@ fn dealloc(obj: ?*py.Object) callconv(.c) void {
|
|
|
904
904
|
if (needs_close) {
|
|
905
905
|
st.ready.deinit();
|
|
906
906
|
st.timers.deinit();
|
|
907
|
-
|
|
907
|
+
}
|
|
908
908
|
// The flush list owns one Python reference per transport regardless of
|
|
909
909
|
// how the loop reached deallocation, including partially completed
|
|
910
910
|
// explicit close paths.
|
|
@@ -951,8 +951,12 @@ fn traverse(obj: ?*py.Object, visitproc: c.visitproc, arg: ?*anyopaque) callconv
|
|
|
951
951
|
if (r != 0) return r;
|
|
952
952
|
transport = owned.owner_next;
|
|
953
953
|
}
|
|
954
|
-
|
|
955
|
-
|
|
954
|
+
// Once close hands resolver requests to the native reaper, their
|
|
955
|
+
// futures are gone and the request list mutates without the GIL.
|
|
956
|
+
if (!isReaping(st)) {
|
|
957
|
+
r = dns.traverse(st, visitproc, arg);
|
|
958
|
+
if (r != 0) return r;
|
|
959
|
+
}
|
|
956
960
|
r = pollermod.traverse(st, visitproc, arg);
|
|
957
961
|
if (r != 0) return r;
|
|
958
962
|
}
|
|
@@ -347,11 +347,11 @@ var methods = [_]c.PyMethodDef{
|
|
|
347
347
|
};
|
|
348
348
|
|
|
349
349
|
var slots = [_]c.PyType_Slot{
|
|
350
|
-
.{ .slot = c.Py_tp_dealloc, .pfunc = @
|
|
351
|
-
.{ .slot = c.Py_tp_traverse, .pfunc = @
|
|
352
|
-
.{ .slot = c.Py_tp_clear, .pfunc = @
|
|
350
|
+
.{ .slot = c.Py_tp_dealloc, .pfunc = @ptrCast(@constCast(&dealloc)) },
|
|
351
|
+
.{ .slot = c.Py_tp_traverse, .pfunc = @ptrCast(@constCast(&traverse)) },
|
|
352
|
+
.{ .slot = c.Py_tp_clear, .pfunc = @ptrCast(@constCast(&clear_)) },
|
|
353
353
|
.{ .slot = c.Py_tp_methods, .pfunc = @ptrCast(&methods) },
|
|
354
|
-
.{ .slot = c.Py_tp_doc, .pfunc = @
|
|
354
|
+
.{ .slot = c.Py_tp_doc, .pfunc = @ptrCast(@constCast("A libuv-backed child process.")) },
|
|
355
355
|
.{ .slot = 0, .pfunc = null },
|
|
356
356
|
};
|
|
357
357
|
|
|
@@ -136,12 +136,12 @@ pub const Transport = extern struct {
|
|
|
136
136
|
|
|
137
137
|
var handle_offset: usize = 0;
|
|
138
138
|
|
|
139
|
-
/// A queued write: the libuv request,
|
|
140
|
-
///
|
|
139
|
+
/// A queued write: the libuv request, immutable buffer views, and the vector
|
|
140
|
+
/// libuv reads from - all in one allocation.
|
|
141
141
|
///
|
|
142
|
-
///
|
|
143
|
-
///
|
|
144
|
-
/// until libuv reports
|
|
142
|
+
/// An exact `bytes` object is retained without copying. Every other exporter is
|
|
143
|
+
/// snapshotted first, so its view owns immutable bytes rather than caller memory;
|
|
144
|
+
/// either way the backing object stays alive until libuv reports completion.
|
|
145
145
|
///
|
|
146
146
|
/// The request does not take another Python reference to `transport`. The
|
|
147
147
|
/// loop-owned handle reference remains alive until `onClosed`, and libuv runs
|
|
@@ -178,6 +178,23 @@ fn releaseViews(views: []c.Py_buffer) void {
|
|
|
178
178
|
for (views) |*view| c.PyBuffer_Release(view);
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
+
/// Hold immutable bytes directly; snapshot every other exporter before write()
|
|
182
|
+
/// returns so queued I/O cannot observe later mutations by the caller.
|
|
183
|
+
fn acquireWriteView(data: *py.Object, view: *c.Py_buffer) py.Error!void {
|
|
184
|
+
if (c.PyBytes_CheckExact(data) != 0) {
|
|
185
|
+
if (c.PyObject_GetBuffer(data, view, c.PyBUF_SIMPLE) < 0) return py.Error.Python;
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// SAFETY: PyObject_GetBuffer initializes source or returns an error.
|
|
190
|
+
var source: c.Py_buffer = undefined;
|
|
191
|
+
if (c.PyObject_GetBuffer(data, &source, c.PyBUF_SIMPLE) < 0) return py.Error.Python;
|
|
192
|
+
defer c.PyBuffer_Release(&source);
|
|
193
|
+
const snapshot = c.PyBytes_FromStringAndSize(@ptrCast(source.buf), source.len) orelse return py.Error.Python;
|
|
194
|
+
defer py.decref(snapshot);
|
|
195
|
+
if (c.PyObject_GetBuffer(snapshot, view, c.PyBUF_SIMPLE) < 0) return py.Error.Python;
|
|
196
|
+
}
|
|
197
|
+
|
|
181
198
|
// ---------------------------------------------------------------------------
|
|
182
199
|
// protocol dispatch
|
|
183
200
|
|
|
@@ -550,9 +567,13 @@ fn queueWrite(self: *Transport, bufs: []const uv.Buf, views: []c.Py_buffer) py.E
|
|
|
550
567
|
/// Whether a write may proceed, releasing `views` if it may not.
|
|
551
568
|
///
|
|
552
569
|
/// A close only drops the data; raising would turn an ordinary shutdown race
|
|
553
|
-
/// into an exception. `write_eof()` is the caller's mistake and
|
|
554
|
-
///
|
|
570
|
+
/// into an exception. `write_eof()` is the caller's mistake, and must be checked
|
|
571
|
+
/// here too because acquiring an iterable or buffer can reenter the transport.
|
|
555
572
|
fn acceptsWrite(self: *Transport, views: []c.Py_buffer) py.Error!bool {
|
|
573
|
+
if (self.flags & EOF_WRITTEN != 0) {
|
|
574
|
+
releaseViews(views);
|
|
575
|
+
return py.errRuntime("Cannot write after write_eof()");
|
|
576
|
+
}
|
|
556
577
|
if (self.flags & (CONN_LOST | CLOSING) != 0) {
|
|
557
578
|
releaseViews(views);
|
|
558
579
|
return false;
|
|
@@ -875,8 +896,9 @@ pub fn startReadingMethod(self_obj: *py.Object) py.Error!*py.Object {
|
|
|
875
896
|
|
|
876
897
|
fn write(self_obj: *py.Object, data: *py.Object) py.Error!*py.Object {
|
|
877
898
|
const self = asTransport(self_obj);
|
|
899
|
+
// SAFETY: acquireWriteView initializes the only element or returns an error.
|
|
878
900
|
var views = [_]c.Py_buffer{undefined};
|
|
879
|
-
|
|
901
|
+
try acquireWriteView(data, &views[0]);
|
|
880
902
|
if (self.flags & EOF_WRITTEN != 0) {
|
|
881
903
|
c.PyBuffer_Release(&views[0]);
|
|
882
904
|
return py.errRuntime("Cannot call write() after write_eof()");
|
|
@@ -912,12 +934,12 @@ fn writelines(self_obj: *py.Object, data: *py.Object) py.Error!*py.Object {
|
|
|
912
934
|
return py.Error.Python;
|
|
913
935
|
};
|
|
914
936
|
// The buffer view keeps the exporter alive, so the item reference can go.
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
if (acquired < 0) {
|
|
937
|
+
acquireWriteView(item, &views[filled]) catch {
|
|
938
|
+
py.decref(item);
|
|
918
939
|
releaseViews(views[0..filled]);
|
|
919
940
|
return py.Error.Python;
|
|
920
|
-
}
|
|
941
|
+
};
|
|
942
|
+
py.decref(item);
|
|
921
943
|
bufs[filled] = .{ .base = @ptrCast(views[filled].buf), .len = @intCast(views[filled].len) };
|
|
922
944
|
}
|
|
923
945
|
try submitWrite(self, bufs, views);
|
|
@@ -1005,6 +1027,10 @@ fn forceCloseMethod(self_obj: *py.Object, exc: *py.Object) py.Error!*py.Object {
|
|
|
1005
1027
|
return py.noneRef();
|
|
1006
1028
|
}
|
|
1007
1029
|
|
|
1030
|
+
fn getProtocolPaused(self_obj: ?*py.Object, _: ?*anyopaque) callconv(.c) ?*py.Object {
|
|
1031
|
+
return py.boolRef(asTransport(self_obj.?).flags & PROTOCOL_PAUSED != 0);
|
|
1032
|
+
}
|
|
1033
|
+
|
|
1008
1034
|
// ---------------------------------------------------------------------------
|
|
1009
1035
|
// construction
|
|
1010
1036
|
|
|
@@ -1225,12 +1251,19 @@ var methods = [_]c.PyMethodDef{
|
|
|
1225
1251
|
py.sentinel,
|
|
1226
1252
|
};
|
|
1227
1253
|
|
|
1254
|
+
// asyncio's name for this state; its sendfile machinery reads it off transports.
|
|
1255
|
+
var getsets = [_]c.PyGetSetDef{
|
|
1256
|
+
.{ .name = "_protocol_paused", .get = getProtocolPaused, .set = null, .doc = "Whether flow control has paused the protocol.", .closure = null },
|
|
1257
|
+
.{ .name = null, .get = null, .set = null, .doc = null, .closure = null },
|
|
1258
|
+
};
|
|
1259
|
+
|
|
1228
1260
|
var slots = [_]c.PyType_Slot{
|
|
1229
1261
|
.{ .slot = c.Py_tp_dealloc, .pfunc = @ptrCast(@constCast(&dealloc)) },
|
|
1230
1262
|
.{ .slot = c.Py_tp_traverse, .pfunc = @ptrCast(@constCast(&traverse)) },
|
|
1231
1263
|
.{ .slot = c.Py_tp_clear, .pfunc = @ptrCast(@constCast(&clear_)) },
|
|
1232
1264
|
.{ .slot = c.Py_tp_repr, .pfunc = @ptrCast(@constCast(&repr)) },
|
|
1233
1265
|
.{ .slot = c.Py_tp_methods, .pfunc = @ptrCast(&methods) },
|
|
1266
|
+
.{ .slot = c.Py_tp_getset, .pfunc = @ptrCast(&getsets) },
|
|
1234
1267
|
.{ .slot = c.Py_tp_doc, .pfunc = @ptrCast(@constCast("A libuv-backed stream transport.")) },
|
|
1235
1268
|
.{ .slot = 0, .pfunc = null },
|
|
1236
1269
|
};
|