winloop 0.3.0__tar.gz → 0.4.0__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.
- {winloop-0.3.0 → winloop-0.4.0}/PKG-INFO +15 -15
- {winloop-0.3.0 → winloop-0.4.0}/README.md +13 -13
- {winloop-0.3.0 → winloop-0.4.0}/examples/bench/echoclient.py +22 -24
- {winloop-0.3.0 → winloop-0.4.0}/examples/bench/echoserver.py +52 -46
- {winloop-0.3.0 → winloop-0.4.0}/examples/bench/rlserver.py +20 -22
- {winloop-0.3.0 → winloop-0.4.0}/pyproject.toml +6 -2
- {winloop-0.3.0 → winloop-0.4.0}/setup.py +130 -116
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_aiohttp.py +1 -1
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_base.py +4 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_process.py +0 -1
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_tcp.py +0 -1
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/autom4te.cache/requests +259 -259
- {winloop-0.3.0 → winloop-0.4.0}/winloop/__init__.py +37 -49
- {winloop-0.3.0 → winloop-0.4.0}/winloop/_testbase.py +0 -1
- {winloop-0.3.0 → winloop-0.4.0}/winloop/_version.py +1 -1
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/stream.pyx +9 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/loop.c +25037 -27613
- {winloop-0.3.0 → winloop-0.4.0}/winloop/loop.pyi +66 -77
- {winloop-0.3.0 → winloop-0.4.0}/winloop.egg-info/PKG-INFO +15 -15
- {winloop-0.3.0 → winloop-0.4.0}/winloop.egg-info/requires.txt +1 -1
- {winloop-0.3.0 → winloop-0.4.0}/.flake8 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/LICENSE-APACHE +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/LICENSE-MIT +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/MANIFEST.in +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/Makefile +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/mypy.ini +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/setup.cfg +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/__init__.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/__main__.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/certs/ssl_cert.pem +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/certs/ssl_key.pem +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/conftest.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_aiodns.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_aiomultiprocess.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_context.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_cython.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_dealloc.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_dns.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_executors.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_fs_event.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_libuv_api.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_pipes.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_playwright.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_process_spawning.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_regr1.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_runner.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_signals.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_sockets.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_sourcecode.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_testbase.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_udp.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/tests/test_unix.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.git +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.gitattributes +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.github/ISSUE_TEMPLATE.md +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.github/dependabot.yml +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.github/workflows/CI-docs.yml +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.github/workflows/CI-sample.yml +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.github/workflows/CI-unix.yml +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.github/workflows/CI-win.yml +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.github/workflows/sanitizer.yml +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.gitignore +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.mailmap +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/.readthedocs.yaml +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/AUTHORS +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/CMakeLists.txt +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/CONTRIBUTING.md +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/ChangeLog +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/LICENSE +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/LICENSE-docs +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/LICENSE-extra +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/LINKS.md +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/MAINTAINERS.md +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/Makefile.am +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/Makefile.in +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/README.md +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/SECURITY.md +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/SUPPORTED_PLATFORMS.md +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/aclocal.m4 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/ar-lib +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/autogen.sh +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/autom4te.cache/output.0 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/autom4te.cache/output.1 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/autom4te.cache/output.2 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/autom4te.cache/traces.0 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/autom4te.cache/traces.1 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/autom4te.cache/traces.2 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/cmake-toolchains/cross-mingw32.cmake +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/compile +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/config.guess +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/config.sub +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/configure +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/configure.ac +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/depcomp +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/aix.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/bsd.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/darwin.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/errno.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/linux.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/os390.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/posix.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/sunos.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/threadpool.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/tree.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/unix.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/version.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv/win.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/include/uv.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/install-sh +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/libuv-static.pc.in +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/libuv.pc.in +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/ltmain.sh +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/m4/.gitignore +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/m4/as_case.m4 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/m4/ax_pthread.m4 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/m4/libtool.m4 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/m4/libuv-check-flags.m4 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/m4/libuv-check-versions.m4 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/m4/libuv-extra-automake-flags.m4 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/m4/ltoptions.m4 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/m4/ltsugar.m4 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/m4/ltversion.m4 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/m4/lt~obsolete.m4 +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/missing +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/fs-poll.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/heap-inl.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/idna.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/idna.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/inet.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/queue.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/random.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/strscpy.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/strscpy.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/strtok.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/strtok.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/thread-common.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/threadpool.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/timer.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/aix-common.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/aix.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/async.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/bsd-ifaddrs.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/bsd-proctitle.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/core.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/cygwin.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/darwin-proctitle.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/darwin-stub.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/darwin-syscalls.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/darwin.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/dl.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/freebsd.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/fs.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/fsevents.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/getaddrinfo.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/getnameinfo.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/haiku.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/hurd.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/ibmi.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/internal.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/kqueue.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/linux.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/loop-watcher.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/loop.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/netbsd.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/no-fsevents.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/no-proctitle.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/openbsd.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/os390-proctitle.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/os390-syscalls.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/os390-syscalls.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/os390.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/pipe.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/poll.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/posix-hrtime.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/posix-poll.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/process.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/procfs-exepath.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/proctitle.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/qnx.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/random-devurandom.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/random-getentropy.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/random-getrandom.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/random-sysctl-linux.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/signal.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/stream.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/sunos.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/sysinfo-loadavg.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/sysinfo-memory.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/tcp.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/thread.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/tty.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/unix/udp.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/uv-common.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/uv-common.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/uv-data-getter-setters.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/version.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/async.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/core.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/detect-wakeup.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/dl.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/error.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/fs-event.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/fs-fd-hash-inl.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/fs.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/getaddrinfo.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/getnameinfo.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/handle-inl.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/handle.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/internal.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/loop-watcher.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/pipe.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/poll.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/process-stdio.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/process.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/req-inl.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/signal.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/snprintf.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/stream-inl.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/stream.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/tcp.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/thread.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/tty.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/udp.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/util.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/winapi.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/winapi.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/winsock.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/src/win/winsock.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-async-pummel.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-async.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-fs-stat.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-getaddrinfo.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-list.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-loop-count.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-million-async.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-million-timers.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-multi-accept.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-ping-pongs.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-ping-udp.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-pound.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-pump.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-queue-work.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-sizes.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-spawn.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-tcp-write-batch.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-thread.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/benchmark-udp-pummel.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/blackhole-server.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/echo-server.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/fixtures/empty_file +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/fixtures/load_error.node +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/fixtures/lorem_ipsum.txt +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/fixtures/one_file/one_file +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/run-benchmarks.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/run-tests.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/runner-unix.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/runner-unix.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/runner-win.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/runner-win.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/runner.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/runner.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/task.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-active.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-async-null-cb.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-async.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-barrier.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-callback-stack.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-close-fd.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-close-order.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-condvar.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-connect-unspecified.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-connection-fail.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-cwd-and-chdir.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-default-loop-close.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-delayed-accept.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-dlerror.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-eintr-handling.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-embed.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-emfile.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-env-vars.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-error.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-fail-always.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-fork.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-fs-copyfile.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-fs-event.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-fs-fd-hash.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-fs-open-flags.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-fs-poll.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-fs-readdir.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-fs.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-get-currentexe.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-get-loadavg.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-get-memory.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-get-passwd.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-getaddrinfo.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-gethostname.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-getnameinfo.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-getsockname.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-getters-setters.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-gettimeofday.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-handle-fileno.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-homedir.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-hrtime.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-idle.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-idna.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-iouring-pollhup.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-ip-name.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-ip4-addr.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-ip6-addr.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-ipc-heavy-traffic-deadlock-bug.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-ipc-send-recv.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-ipc.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-list.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-loop-alive.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-loop-close.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-loop-configure.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-loop-handles.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-loop-oom.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-loop-stop.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-loop-time.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-metrics.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-multiple-listen.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-mutexes.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-not-readable-nor-writable-on-read-error.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-not-writable-after-shutdown.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-osx-select.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pass-always.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-ping-pong.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pipe-bind-error.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pipe-close-stdout-read-stdin.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pipe-connect-error.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pipe-connect-multiple.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pipe-connect-prepare.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pipe-getsockname.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pipe-pending-instances.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pipe-sendmsg.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pipe-server-close.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pipe-set-fchmod.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-pipe-set-non-blocking.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-platform-output.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-poll-close-doesnt-corrupt-stack.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-poll-close.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-poll-closesocket.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-poll-multiple-handles.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-poll-oob.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-poll.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-process-priority.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-process-title-threadsafe.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-process-title.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-queue-foreach-delete.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-random.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-readable-on-eof.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-ref.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-run-nowait.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-run-once.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-semaphore.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-shutdown-close.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-shutdown-eof.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-shutdown-simultaneous.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-shutdown-twice.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-signal-multiple-loops.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-signal-pending-on-close.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-signal.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-socket-buffer-size.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-spawn.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-stdio-over-pipes.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-strscpy.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-strtok.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-alloc-cb-fail.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-bind-error.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-bind6-error.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-close-accept.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-close-after-read-timeout.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-close-reset.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-close-while-connecting.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-close.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-connect-error-after-write.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-connect-error.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-connect-timeout.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-connect6-error.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-create-socket-early.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-flags.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-oob.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-open.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-read-stop-start.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-read-stop.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-reuseport.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-rst.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-shutdown-after-write.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-try-write-error.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-try-write.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-unexpected-read.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-write-after-connect.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-write-fail.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-write-in-a-row.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-write-queue-order.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-write-to-half-open-connection.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tcp-writealot.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-test-macros.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-thread-affinity.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-thread-equal.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-thread-name.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-thread-priority.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-thread.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-threadpool-cancel.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-threadpool.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-timer-again.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-timer-from-check.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-timer.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tmpdir.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tty-duplicate-key.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tty-escape-sequence-processing.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-tty.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-alloc-cb-fail.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-bind.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-connect.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-connect6.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-create-socket-early.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-dgram-too-big.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-ipv6.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-mmsg.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-multicast-interface.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-multicast-interface6.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-multicast-join.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-multicast-join6.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-multicast-ttl.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-open.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-options.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-recv-in-a-row.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-reuseport.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-send-and-recv.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-send-hang-loop.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-send-immediate.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-send-unreachable.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-sendmmsg-error.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-udp-try-send.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-uname.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-walk-handles.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/test/test-watcher-cross-stop.c +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/tools/make_dist_html.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/tools/vswhere_usability_wrapper.cmd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/tsansupp.txt +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/vendor/libuv/uv_win_longpath.manifest +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/_noop.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/cbhandles.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/cbhandles.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/dns.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/errors.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/async_.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/async_.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/basetransport.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/basetransport.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/check.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/check.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/fsevent.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/fsevent.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/handle.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/handle.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/idle.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/idle.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/pipe.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/pipe.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/poll.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/poll.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/process.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/process.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/stream.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/streamserver.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/streamserver.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/tcp.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/tcp.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/timer.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/timer.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/udp.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/handles/udp.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/includes/__init__.py +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/includes/compat.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/includes/consts.pxi +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/includes/debug.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/includes/debug.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/includes/flowcontrol.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/includes/fork_handler.h +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/includes/python.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/includes/stdlib.pxi +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/includes/system.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/includes/uv.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/loop.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/loop.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/lru.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/pseudosock.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/py.typed +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/request.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/request.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/server.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/server.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/shlex.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/shlex.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/sslproto.pxd +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop/sslproto.pyx +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop.egg-info/SOURCES.txt +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop.egg-info/dependency_links.txt +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop.egg-info/not-zip-safe +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop.egg-info/top_level.txt +0 -0
- {winloop-0.3.0 → winloop-0.4.0}/winloop.png +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: winloop
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Windows version of uvloop
|
|
5
5
|
Author-email: Vizonex <VizonexBusiness@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -36,7 +36,7 @@ Requires-Dist: pyOpenSSL<25.4,>=23.0; extra == "test"
|
|
|
36
36
|
Requires-Dist: mypy>=0.800; extra == "test"
|
|
37
37
|
Provides-Extra: dev
|
|
38
38
|
Requires-Dist: setuptools>=60; extra == "dev"
|
|
39
|
-
Requires-Dist: Cython==3.
|
|
39
|
+
Requires-Dist: Cython==3.2.2; extra == "dev"
|
|
40
40
|
Provides-Extra: docs
|
|
41
41
|
Requires-Dist: Sphinx<7.5.0,>=4.1.2; extra == "docs"
|
|
42
42
|
Requires-Dist: sphinxcontrib-asyncio~=0.3.0; extra == "docs"
|
|
@@ -51,16 +51,16 @@ Dynamic: license-file
|
|
|
51
51
|
[](https://badge.fury.io/py/winloop)
|
|
52
52
|

|
|
53
53
|
[](https://opensource.org/licenses/MIT)
|
|
54
|
-
[](https://opensource.org/licenses/Apache-2-0)
|
|
55
55
|
|
|
56
|
-
An
|
|
57
|
-
I never really liked the fact that I couldn't make anything run faster especially when you have fiber internet connections in place and you've done all the optimizations you could possibly think of. It always felt disappointing when `libuv` is available for
|
|
56
|
+
An alternative library for uvloop compatibility with Windows because let's face it. Windows' Python asyncio standard library is garbage, especially when Windows Defender decides to eat half of your RAM.
|
|
57
|
+
I never really liked the fact that I couldn't make anything run faster especially when you have fiber internet connections in place and you've done all the optimizations you could possibly think of. It always felt disappointing when `libuv` is available for Windows [but Windows was never compatible with uvloop.](https://github.com/MagicStack/uvloop/issues/14#issuecomment-575826367])
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
Since nobody was willing to step in after so many years of waiting, I went ahead and downloaded the source code for uvloop and started modifying the source code to be Windows compatible by carefully removing and changing parts that were not made for Windows. Many hours of research went into making this library.
|
|
60
60
|
|
|
61
|
-
The differences with __uvloop__ is that forking has been fully disabled and some smaller
|
|
61
|
+
The differences with __uvloop__ is that forking has been fully disabled and some smaller API calls had to be changed, error handling has been carefully modified and subprocesses release the GIL instead of forking out...
|
|
62
62
|
|
|
63
|
-
There is a performance increase of about 5 times
|
|
63
|
+
There is a performance increase of about 5 times with Winloop compared to using the `WindowsSelectorEventLoopPolicy` and `WindowsProactorEventLoopPolicy` which have been known to trigger SSL problems in `Python 3.9`. Winloop is a very good replacement for solving those SSL problems as well. This library also has comparable performance to its brother uvloop.
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
|
|
@@ -70,20 +70,20 @@ There is a performance increase of about 5 times vs using the `WindowsSelectorEv
|
|
|
70
70
|
pip install winloop
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
You can also clone the repository and build the extension yourself by running the command below if you wish to use or build this library locally
|
|
73
|
+
You can also clone the repository and build the extension yourself by running the command below if you wish to use or build this library locally. Note that you will need Cython and The Visual C++ extensions
|
|
74
74
|
to compile this library on your own.
|
|
75
75
|
|
|
76
76
|
```
|
|
77
77
|
python setup.py build_ext --inplace
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
##
|
|
80
|
+
## Reporting issues
|
|
81
81
|
|
|
82
|
-
If you find any bugs with this library be sure to open up an issue
|
|
82
|
+
If you find any bugs with this library be sure to open up an issue in the [issuetracker](https://github.com/Vizonex/Winloop/issues). Me and other contributors will be happy try to help you figure out and diagnose your problems.
|
|
83
83
|
|
|
84
84
|
## Making pull requests
|
|
85
|
-
We encourage anyone to make pull-requests to
|
|
86
|
-
Make sure that you are able to compile the library with the steps shown above. We plan to implement a nightly workflow to verify one's pull
|
|
85
|
+
We encourage anyone to make pull-requests to Winloop, containing anything from spelling mistakes to vulnerability patches. Every little bit helps keep this library maintained and alive.
|
|
86
|
+
Make sure that you are able to compile the library with the steps shown above. We plan to implement a nightly workflow to verify one's pull-request in the future.
|
|
87
87
|
|
|
88
88
|
|
|
89
89
|
|
|
@@ -223,13 +223,13 @@ The benchmarks for the code above are as follows
|
|
|
223
223
|
| WindowsSelectorEventLoopPolicy | 2.723s |
|
|
224
224
|
|
|
225
225
|
|
|
226
|
-
That's a massive increase and jump from just TCP alone I'll be posting more benchmarks soon as
|
|
226
|
+
That's a massive increase and jump from just TCP alone! I'll be posting more benchmarks soon, as
|
|
227
227
|
I modify more of the current test suites made by uvloop...
|
|
228
228
|
|
|
229
229
|
|
|
230
230
|
## How to Use Winloop with Fastapi
|
|
231
231
|
|
|
232
|
-
This was a cool little script I put together
|
|
232
|
+
This was a cool little script I put together just to make Fastapi that much faster to handle:
|
|
233
233
|
|
|
234
234
|
```python
|
|
235
235
|
|
|
@@ -6,16 +6,16 @@
|
|
|
6
6
|
[](https://badge.fury.io/py/winloop)
|
|
7
7
|

|
|
8
8
|
[](https://opensource.org/licenses/MIT)
|
|
9
|
-
[](https://opensource.org/licenses/Apache-2-0)
|
|
10
10
|
|
|
11
|
-
An
|
|
12
|
-
I never really liked the fact that I couldn't make anything run faster especially when you have fiber internet connections in place and you've done all the optimizations you could possibly think of. It always felt disappointing when `libuv` is available for
|
|
11
|
+
An alternative library for uvloop compatibility with Windows because let's face it. Windows' Python asyncio standard library is garbage, especially when Windows Defender decides to eat half of your RAM.
|
|
12
|
+
I never really liked the fact that I couldn't make anything run faster especially when you have fiber internet connections in place and you've done all the optimizations you could possibly think of. It always felt disappointing when `libuv` is available for Windows [but Windows was never compatible with uvloop.](https://github.com/MagicStack/uvloop/issues/14#issuecomment-575826367])
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Since nobody was willing to step in after so many years of waiting, I went ahead and downloaded the source code for uvloop and started modifying the source code to be Windows compatible by carefully removing and changing parts that were not made for Windows. Many hours of research went into making this library.
|
|
15
15
|
|
|
16
|
-
The differences with __uvloop__ is that forking has been fully disabled and some smaller
|
|
16
|
+
The differences with __uvloop__ is that forking has been fully disabled and some smaller API calls had to be changed, error handling has been carefully modified and subprocesses release the GIL instead of forking out...
|
|
17
17
|
|
|
18
|
-
There is a performance increase of about 5 times
|
|
18
|
+
There is a performance increase of about 5 times with Winloop compared to using the `WindowsSelectorEventLoopPolicy` and `WindowsProactorEventLoopPolicy` which have been known to trigger SSL problems in `Python 3.9`. Winloop is a very good replacement for solving those SSL problems as well. This library also has comparable performance to its brother uvloop.
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
@@ -25,20 +25,20 @@ There is a performance increase of about 5 times vs using the `WindowsSelectorEv
|
|
|
25
25
|
pip install winloop
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
You can also clone the repository and build the extension yourself by running the command below if you wish to use or build this library locally
|
|
28
|
+
You can also clone the repository and build the extension yourself by running the command below if you wish to use or build this library locally. Note that you will need Cython and The Visual C++ extensions
|
|
29
29
|
to compile this library on your own.
|
|
30
30
|
|
|
31
31
|
```
|
|
32
32
|
python setup.py build_ext --inplace
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
##
|
|
35
|
+
## Reporting issues
|
|
36
36
|
|
|
37
|
-
If you find any bugs with this library be sure to open up an issue
|
|
37
|
+
If you find any bugs with this library be sure to open up an issue in the [issuetracker](https://github.com/Vizonex/Winloop/issues). Me and other contributors will be happy try to help you figure out and diagnose your problems.
|
|
38
38
|
|
|
39
39
|
## Making pull requests
|
|
40
|
-
We encourage anyone to make pull-requests to
|
|
41
|
-
Make sure that you are able to compile the library with the steps shown above. We plan to implement a nightly workflow to verify one's pull
|
|
40
|
+
We encourage anyone to make pull-requests to Winloop, containing anything from spelling mistakes to vulnerability patches. Every little bit helps keep this library maintained and alive.
|
|
41
|
+
Make sure that you are able to compile the library with the steps shown above. We plan to implement a nightly workflow to verify one's pull-request in the future.
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
|
|
@@ -178,13 +178,13 @@ The benchmarks for the code above are as follows
|
|
|
178
178
|
| WindowsSelectorEventLoopPolicy | 2.723s |
|
|
179
179
|
|
|
180
180
|
|
|
181
|
-
That's a massive increase and jump from just TCP alone I'll be posting more benchmarks soon as
|
|
181
|
+
That's a massive increase and jump from just TCP alone! I'll be posting more benchmarks soon, as
|
|
182
182
|
I modify more of the current test suites made by uvloop...
|
|
183
183
|
|
|
184
184
|
|
|
185
185
|
## How to Use Winloop with Fastapi
|
|
186
186
|
|
|
187
|
-
This was a cool little script I put together
|
|
187
|
+
This was a cool little script I put together just to make Fastapi that much faster to handle:
|
|
188
188
|
|
|
189
189
|
```python
|
|
190
190
|
|
|
@@ -9,53 +9,51 @@ import ssl
|
|
|
9
9
|
import time
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
if __name__ ==
|
|
12
|
+
if __name__ == "__main__":
|
|
13
13
|
parser = argparse.ArgumentParser()
|
|
14
|
-
parser.add_argument(
|
|
15
|
-
|
|
16
|
-
parser.add_argument(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
parser.add_argument(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
parser.add_argument(
|
|
25
|
-
help='address:port of echoserver')
|
|
26
|
-
parser.add_argument('--ssl', default=False, action='store_true')
|
|
14
|
+
parser.add_argument("--msize", default=1000, type=int, help="message size in bytes")
|
|
15
|
+
parser.add_argument("--mpr", default=1, type=int, help="messages per request")
|
|
16
|
+
parser.add_argument("--num", default=200000, type=int, help="number of messages")
|
|
17
|
+
parser.add_argument(
|
|
18
|
+
"--times", default=1, type=int, help="number of times to run the test"
|
|
19
|
+
)
|
|
20
|
+
parser.add_argument("--workers", default=3, type=int, help="number of workers")
|
|
21
|
+
parser.add_argument(
|
|
22
|
+
"--addr", default="127.0.0.1:25000", type=str, help="address:port of echoserver"
|
|
23
|
+
)
|
|
24
|
+
parser.add_argument("--ssl", default=False, action="store_true")
|
|
27
25
|
args = parser.parse_args()
|
|
28
26
|
|
|
29
27
|
client_context = None
|
|
30
28
|
if args.ssl:
|
|
31
|
-
print(
|
|
32
|
-
if hasattr(ssl,
|
|
29
|
+
print("with SSL")
|
|
30
|
+
if hasattr(ssl, "PROTOCOL_TLS"):
|
|
33
31
|
client_context = ssl.SSLContext(ssl.PROTOCOL_TLS)
|
|
34
32
|
else:
|
|
35
33
|
client_context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
|
|
36
|
-
if hasattr(client_context,
|
|
34
|
+
if hasattr(client_context, "check_hostname"):
|
|
37
35
|
client_context.check_hostname = False
|
|
38
36
|
client_context.verify_mode = ssl.CERT_NONE
|
|
39
37
|
|
|
40
38
|
unix = False
|
|
41
|
-
if args.addr.startswith(
|
|
39
|
+
if args.addr.startswith("file:"):
|
|
42
40
|
unix = True
|
|
43
41
|
addr = args.addr[5:]
|
|
44
42
|
else:
|
|
45
|
-
addr = args.addr.split(
|
|
43
|
+
addr = args.addr.split(":")
|
|
46
44
|
addr[1] = int(addr[1])
|
|
47
45
|
addr = tuple(addr)
|
|
48
|
-
print(
|
|
46
|
+
print("will connect to: {}".format(addr))
|
|
49
47
|
|
|
50
48
|
MSGSIZE = args.msize
|
|
51
49
|
REQSIZE = MSGSIZE * args.mpr
|
|
52
50
|
|
|
53
|
-
msg = b
|
|
51
|
+
msg = b"x" * (MSGSIZE - 1) + b"\n"
|
|
54
52
|
if args.mpr:
|
|
55
53
|
msg *= args.mpr
|
|
56
54
|
|
|
57
55
|
def run_test(n):
|
|
58
|
-
print(
|
|
56
|
+
print("Sending", NMESSAGES, "messages")
|
|
59
57
|
if args.mpr:
|
|
60
58
|
n //= args.mpr
|
|
61
59
|
|
|
@@ -96,5 +94,5 @@ if __name__ == '__main__':
|
|
|
96
94
|
e.submit(run_test, NMESSAGES)
|
|
97
95
|
end = time.time()
|
|
98
96
|
duration = end - start
|
|
99
|
-
print(NMESSAGES * N * TIMES,
|
|
100
|
-
print(NMESSAGES * N * TIMES / duration,
|
|
97
|
+
print(NMESSAGES * N * TIMES, "in", duration)
|
|
98
|
+
print(NMESSAGES * N * TIMES / duration, "requests/sec")
|
|
@@ -20,12 +20,12 @@ async def echo_server(loop, address, unix):
|
|
|
20
20
|
sock.listen(5)
|
|
21
21
|
sock.setblocking(False)
|
|
22
22
|
if PRINT:
|
|
23
|
-
print(
|
|
23
|
+
print("Server listening at", address)
|
|
24
24
|
with sock:
|
|
25
25
|
while True:
|
|
26
26
|
client, addr = await loop.sock_accept(sock)
|
|
27
27
|
if PRINT:
|
|
28
|
-
print(
|
|
28
|
+
print("Connection from", addr)
|
|
29
29
|
loop.create_task(echo_client(loop, client))
|
|
30
30
|
|
|
31
31
|
|
|
@@ -42,24 +42,24 @@ async def echo_client(loop, client):
|
|
|
42
42
|
break
|
|
43
43
|
await loop.sock_sendall(client, data)
|
|
44
44
|
if PRINT:
|
|
45
|
-
print(
|
|
45
|
+
print("Connection closed")
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
async def echo_client_streams(reader, writer):
|
|
49
|
-
sock = writer.get_extra_info(
|
|
49
|
+
sock = writer.get_extra_info("socket")
|
|
50
50
|
try:
|
|
51
51
|
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
|
|
52
52
|
except (OSError, NameError):
|
|
53
53
|
pass
|
|
54
54
|
if PRINT:
|
|
55
|
-
print(
|
|
55
|
+
print("Connection from", sock.getpeername())
|
|
56
56
|
while True:
|
|
57
57
|
data = await reader.read(1000000)
|
|
58
58
|
if not data:
|
|
59
59
|
break
|
|
60
60
|
writer.write(data)
|
|
61
61
|
if PRINT:
|
|
62
|
-
print(
|
|
62
|
+
print("Connection closed")
|
|
63
63
|
writer.close()
|
|
64
64
|
|
|
65
65
|
|
|
@@ -98,24 +98,25 @@ async def print_debug(loop):
|
|
|
98
98
|
await asyncio.sleep(0.5)
|
|
99
99
|
|
|
100
100
|
|
|
101
|
-
if __name__ ==
|
|
101
|
+
if __name__ == "__main__":
|
|
102
102
|
parser = argparse.ArgumentParser()
|
|
103
|
-
parser.add_argument(
|
|
104
|
-
parser.add_argument(
|
|
105
|
-
parser.add_argument(
|
|
106
|
-
parser.add_argument(
|
|
107
|
-
parser.add_argument(
|
|
108
|
-
parser.add_argument(
|
|
109
|
-
parser.add_argument(
|
|
103
|
+
parser.add_argument("--uvloop", default=False, action="store_true")
|
|
104
|
+
parser.add_argument("--streams", default=False, action="store_true")
|
|
105
|
+
parser.add_argument("--proto", default=False, action="store_true")
|
|
106
|
+
parser.add_argument("--addr", default="127.0.0.1:25000", type=str)
|
|
107
|
+
parser.add_argument("--print", default=False, action="store_true")
|
|
108
|
+
parser.add_argument("--ssl", default=False, action="store_true")
|
|
109
|
+
parser.add_argument("--buffered", default=False, action="store_true")
|
|
110
110
|
args = parser.parse_args()
|
|
111
111
|
|
|
112
112
|
if args.uvloop:
|
|
113
113
|
import winloop as uvloop
|
|
114
|
+
|
|
114
115
|
loop = uvloop.new_event_loop()
|
|
115
|
-
print(
|
|
116
|
+
print("using UVLoop")
|
|
116
117
|
else:
|
|
117
118
|
loop = asyncio.new_event_loop()
|
|
118
|
-
print(
|
|
119
|
+
print("using asyncio loop")
|
|
119
120
|
|
|
120
121
|
asyncio.set_event_loop(loop)
|
|
121
122
|
loop.set_debug(False)
|
|
@@ -123,88 +124,93 @@ if __name__ == '__main__':
|
|
|
123
124
|
if args.print:
|
|
124
125
|
PRINT = 1
|
|
125
126
|
|
|
126
|
-
if hasattr(loop,
|
|
127
|
+
if hasattr(loop, "print_debug_info"):
|
|
127
128
|
loop.create_task(print_debug(loop))
|
|
128
129
|
PRINT = 0
|
|
129
130
|
|
|
130
131
|
unix = False
|
|
131
|
-
if args.addr.startswith(
|
|
132
|
+
if args.addr.startswith("file:"):
|
|
132
133
|
unix = True
|
|
133
134
|
addr = args.addr[5:]
|
|
134
135
|
if os.path.exists(addr):
|
|
135
136
|
os.remove(addr)
|
|
136
137
|
else:
|
|
137
|
-
addr = args.addr.split(
|
|
138
|
+
addr = args.addr.split(":")
|
|
138
139
|
addr[1] = int(addr[1])
|
|
139
140
|
addr = tuple(addr)
|
|
140
141
|
|
|
141
|
-
print(
|
|
142
|
+
print("serving on: {}".format(addr))
|
|
142
143
|
|
|
143
144
|
server_context = None
|
|
144
145
|
if args.ssl:
|
|
145
|
-
print(
|
|
146
|
-
if hasattr(ssl,
|
|
146
|
+
print("with SSL")
|
|
147
|
+
if hasattr(ssl, "PROTOCOL_TLS"):
|
|
147
148
|
server_context = ssl.SSLContext(ssl.PROTOCOL_TLS)
|
|
148
149
|
else:
|
|
149
150
|
server_context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
|
|
150
151
|
server_context.load_cert_chain(
|
|
151
|
-
(
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
152
|
+
(
|
|
153
|
+
pathlib.Path(__file__).parent.parent.parent
|
|
154
|
+
/ "tests"
|
|
155
|
+
/ "certs"
|
|
156
|
+
/ "ssl_cert.pem"
|
|
157
|
+
),
|
|
158
|
+
(
|
|
159
|
+
pathlib.Path(__file__).parent.parent.parent
|
|
160
|
+
/ "tests"
|
|
161
|
+
/ "certs"
|
|
162
|
+
/ "ssl_key.pem"
|
|
163
|
+
),
|
|
164
|
+
)
|
|
165
|
+
if hasattr(server_context, "check_hostname"):
|
|
156
166
|
server_context.check_hostname = False
|
|
157
167
|
server_context.verify_mode = ssl.CERT_NONE
|
|
158
168
|
|
|
159
169
|
if args.streams:
|
|
160
170
|
if args.proto:
|
|
161
|
-
print(
|
|
171
|
+
print("cannot use --stream and --proto simultaneously")
|
|
162
172
|
exit(1)
|
|
163
173
|
|
|
164
174
|
if args.buffered:
|
|
165
|
-
print(
|
|
175
|
+
print("cannot use --stream and --buffered simultaneously")
|
|
166
176
|
exit(1)
|
|
167
177
|
|
|
168
|
-
print(
|
|
178
|
+
print("using asyncio/streams")
|
|
169
179
|
if unix:
|
|
170
|
-
coro = asyncio.start_unix_server(
|
|
171
|
-
|
|
172
|
-
|
|
180
|
+
coro = asyncio.start_unix_server(
|
|
181
|
+
echo_client_streams, addr, ssl=server_context
|
|
182
|
+
)
|
|
173
183
|
else:
|
|
174
|
-
coro = asyncio.start_server(echo_client_streams,
|
|
175
|
-
*addr,
|
|
176
|
-
ssl=server_context)
|
|
184
|
+
coro = asyncio.start_server(echo_client_streams, *addr, ssl=server_context)
|
|
177
185
|
srv = loop.run_until_complete(coro)
|
|
178
186
|
elif args.proto:
|
|
179
187
|
if args.streams:
|
|
180
|
-
print(
|
|
188
|
+
print("cannot use --stream and --proto simultaneously")
|
|
181
189
|
exit(1)
|
|
182
190
|
|
|
183
191
|
if args.buffered:
|
|
184
|
-
print(
|
|
192
|
+
print("using buffered protocol")
|
|
185
193
|
protocol = EchoBufferedProtocol
|
|
186
194
|
else:
|
|
187
|
-
print(
|
|
195
|
+
print("using simple protocol")
|
|
188
196
|
protocol = EchoProtocol
|
|
189
197
|
|
|
190
198
|
if unix:
|
|
191
|
-
coro = loop.create_unix_server(protocol, addr,
|
|
192
|
-
ssl=server_context)
|
|
199
|
+
coro = loop.create_unix_server(protocol, addr, ssl=server_context)
|
|
193
200
|
else:
|
|
194
|
-
coro = loop.create_server(protocol, *addr,
|
|
195
|
-
ssl=server_context)
|
|
201
|
+
coro = loop.create_server(protocol, *addr, ssl=server_context)
|
|
196
202
|
srv = loop.run_until_complete(coro)
|
|
197
203
|
else:
|
|
198
204
|
if args.ssl:
|
|
199
|
-
print(
|
|
205
|
+
print("cannot use SSL for loop.sock_* methods")
|
|
200
206
|
exit(1)
|
|
201
207
|
|
|
202
|
-
print(
|
|
208
|
+
print("using sock_recv/sock_sendall")
|
|
203
209
|
loop.create_task(echo_server(loop, addr, unix))
|
|
204
210
|
try:
|
|
205
211
|
loop.run_forever()
|
|
206
212
|
finally:
|
|
207
|
-
if hasattr(loop,
|
|
213
|
+
if hasattr(loop, "print_debug_info"):
|
|
208
214
|
gc.collect()
|
|
209
215
|
print(chr(27) + "[2J")
|
|
210
216
|
loop.print_debug_info()
|
|
@@ -9,21 +9,20 @@ PRINT = 0
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
async def echo_client_streams(reader, writer):
|
|
12
|
-
sock = writer.get_extra_info(
|
|
12
|
+
sock = writer.get_extra_info("socket")
|
|
13
13
|
try:
|
|
14
|
-
sock.setsockopt(
|
|
15
|
-
stdsock.IPPROTO_TCP, stdsock.TCP_NODELAY, 1)
|
|
14
|
+
sock.setsockopt(stdsock.IPPROTO_TCP, stdsock.TCP_NODELAY, 1)
|
|
16
15
|
except (OSError, NameError):
|
|
17
16
|
pass
|
|
18
17
|
if PRINT:
|
|
19
|
-
print(
|
|
18
|
+
print("Connection from", sock.getpeername())
|
|
20
19
|
while True:
|
|
21
20
|
data = await reader.readline()
|
|
22
21
|
if not data:
|
|
23
22
|
break
|
|
24
23
|
writer.write(data)
|
|
25
24
|
if PRINT:
|
|
26
|
-
print(
|
|
25
|
+
print("Connection closed")
|
|
27
26
|
writer.close()
|
|
28
27
|
|
|
29
28
|
|
|
@@ -34,20 +33,21 @@ async def print_debug(loop):
|
|
|
34
33
|
await asyncio.sleep(0.5)
|
|
35
34
|
|
|
36
35
|
|
|
37
|
-
if __name__ ==
|
|
36
|
+
if __name__ == "__main__":
|
|
38
37
|
parser = argparse.ArgumentParser()
|
|
39
|
-
parser.add_argument(
|
|
40
|
-
parser.add_argument(
|
|
41
|
-
parser.add_argument(
|
|
38
|
+
parser.add_argument("--uvloop", default=False, action="store_true")
|
|
39
|
+
parser.add_argument("--addr", default="127.0.0.1:25000", type=str)
|
|
40
|
+
parser.add_argument("--print", default=False, action="store_true")
|
|
42
41
|
args = parser.parse_args()
|
|
43
42
|
|
|
44
43
|
if args.uvloop:
|
|
45
44
|
import winloop as uvloop
|
|
45
|
+
|
|
46
46
|
loop = uvloop.new_event_loop()
|
|
47
|
-
print(
|
|
47
|
+
print("using UVLoop")
|
|
48
48
|
else:
|
|
49
49
|
loop = asyncio.new_event_loop()
|
|
50
|
-
print(
|
|
50
|
+
print("using asyncio loop")
|
|
51
51
|
|
|
52
52
|
asyncio.set_event_loop(loop)
|
|
53
53
|
loop.set_debug(False)
|
|
@@ -55,37 +55,35 @@ if __name__ == '__main__':
|
|
|
55
55
|
if args.print:
|
|
56
56
|
PRINT = 1
|
|
57
57
|
|
|
58
|
-
if hasattr(loop,
|
|
58
|
+
if hasattr(loop, "print_debug_info"):
|
|
59
59
|
loop.create_task(print_debug(loop))
|
|
60
60
|
PRINT = 0
|
|
61
61
|
|
|
62
62
|
unix = False
|
|
63
|
-
if args.addr.startswith(
|
|
63
|
+
if args.addr.startswith("file:"):
|
|
64
64
|
unix = True
|
|
65
65
|
addr = args.addr[5:]
|
|
66
66
|
if os.path.exists(addr):
|
|
67
67
|
os.remove(addr)
|
|
68
68
|
else:
|
|
69
|
-
addr = args.addr.split(
|
|
69
|
+
addr = args.addr.split(":")
|
|
70
70
|
addr[1] = int(addr[1])
|
|
71
71
|
addr = tuple(addr)
|
|
72
72
|
|
|
73
|
-
print(
|
|
74
|
-
print(
|
|
73
|
+
print("readline performance test")
|
|
74
|
+
print("serving on: {}".format(addr))
|
|
75
75
|
|
|
76
|
-
print(
|
|
76
|
+
print("using asyncio/streams")
|
|
77
77
|
if unix:
|
|
78
|
-
coro = asyncio.start_unix_server(echo_client_streams,
|
|
79
|
-
addr, limit=256000)
|
|
78
|
+
coro = asyncio.start_unix_server(echo_client_streams, addr, limit=256000)
|
|
80
79
|
else:
|
|
81
|
-
coro = asyncio.start_server(echo_client_streams,
|
|
82
|
-
*addr, limit=256000)
|
|
80
|
+
coro = asyncio.start_server(echo_client_streams, *addr, limit=256000)
|
|
83
81
|
srv = loop.run_until_complete(coro)
|
|
84
82
|
|
|
85
83
|
try:
|
|
86
84
|
loop.run_forever()
|
|
87
85
|
finally:
|
|
88
|
-
if hasattr(loop,
|
|
86
|
+
if hasattr(loop, "print_debug_info"):
|
|
89
87
|
gc.collect()
|
|
90
88
|
print(chr(27) + "[2J")
|
|
91
89
|
loop.print_debug_info()
|
|
@@ -49,7 +49,7 @@ test = [
|
|
|
49
49
|
]
|
|
50
50
|
dev = [
|
|
51
51
|
'setuptools>=60',
|
|
52
|
-
'Cython==3.
|
|
52
|
+
'Cython==3.2.2',
|
|
53
53
|
]
|
|
54
54
|
docs = [
|
|
55
55
|
'Sphinx>=4.1.2,<7.5.0',
|
|
@@ -61,7 +61,7 @@ docs = [
|
|
|
61
61
|
requires = [
|
|
62
62
|
"setuptools>=60",
|
|
63
63
|
"wheel",
|
|
64
|
-
"Cython==3.
|
|
64
|
+
"Cython==3.2.2",
|
|
65
65
|
]
|
|
66
66
|
build-backend = "setuptools.build_meta"
|
|
67
67
|
|
|
@@ -81,3 +81,7 @@ build-frontend = "build"
|
|
|
81
81
|
addopts = "--capture=no --assert=plain --strict-markers --tb=native --import-mode=importlib"
|
|
82
82
|
testpaths = "tests"
|
|
83
83
|
filterwarnings = "default"
|
|
84
|
+
|
|
85
|
+
[tool.ruff.lint]
|
|
86
|
+
# Upgrade annotations
|
|
87
|
+
select = ["UP045", "UP007", "UP035"]
|