rsloop 0.1.45__tar.gz → 0.1.48__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.
Files changed (294) hide show
  1. {rsloop-0.1.45 → rsloop-0.1.48}/.github/workflows/anyio.yml +1 -1
  2. {rsloop-0.1.45 → rsloop-0.1.48}/.github/workflows/tests.yml +66 -8
  3. {rsloop-0.1.45 → rsloop-0.1.48}/.github/workflows/wheels.yml +19 -4
  4. rsloop-0.1.48/.python-version +1 -0
  5. {rsloop-0.1.45 → rsloop-0.1.48}/Cargo.lock +90 -60
  6. rsloop-0.1.48/Cargo.toml +110 -0
  7. {rsloop-0.1.45 → rsloop-0.1.48}/PKG-INFO +115 -43
  8. {rsloop-0.1.45 → rsloop-0.1.48}/README.md +114 -42
  9. {rsloop-0.1.45 → rsloop-0.1.48}/benches/README.md +100 -8
  10. {rsloop-0.1.45 → rsloop-0.1.48}/benches/check_regression.py +45 -2
  11. rsloop-0.1.48/benches/idle_statistics.py +62 -0
  12. rsloop-0.1.48/benches/runtime.rs +67 -0
  13. rsloop-0.1.48/benches/timer.rs +81 -0
  14. rsloop-0.1.48/benches/vibeio-performance.md +208 -0
  15. {rsloop-0.1.45 → rsloop-0.1.48}/benches/workload_matrix.py +253 -38
  16. {rsloop-0.1.45 → rsloop-0.1.48}/build.rs +0 -17
  17. {rsloop-0.1.45 → rsloop-0.1.48}/docs/development.md +33 -2
  18. {rsloop-0.1.45 → rsloop-0.1.48}/docs/project-structure.md +3 -1
  19. rsloop-0.1.48/docs/vibeio-cleanup.md +2819 -0
  20. rsloop-0.1.48/docs/vibeio-findings.md +1283 -0
  21. {rsloop-0.1.45 → rsloop-0.1.48}/justfile +14 -1
  22. {rsloop-0.1.45 → rsloop-0.1.48}/pyproject.toml +9 -1
  23. rsloop-0.1.48/rust-toolchain.toml +4 -0
  24. {rsloop-0.1.45 → rsloop-0.1.48}/scripts/run_rust_tests.py +11 -1
  25. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/asyncgens.rs +25 -7
  26. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/connections.rs +4 -4
  27. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/methods.rs +2 -2
  28. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/servers.rs +1 -1
  29. {rsloop-0.1.45 → rsloop-0.1.48}/src/build_metadata.rs +1 -1
  30. {rsloop-0.1.45 → rsloop-0.1.48}/src/engine/callbacks.rs +2 -2
  31. {rsloop-0.1.45 → rsloop-0.1.48}/src/engine/commands.rs +6 -0
  32. {rsloop-0.1.45 → rsloop-0.1.48}/src/engine/dispatcher.rs +22 -22
  33. {rsloop-0.1.45 → rsloop-0.1.48}/src/engine/loop_core.rs +127 -25
  34. {rsloop-0.1.45 → rsloop-0.1.48}/src/lib.rs +5 -0
  35. {rsloop-0.1.45 → rsloop-0.1.48}/src/profiler.rs +22 -0
  36. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/process/core_events.rs +6 -6
  37. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/process/worker.rs +2 -2
  38. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/accept.rs +4 -4
  39. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/buffers.rs +95 -8
  40. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/builder.rs +3 -8
  41. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/core_events.rs +17 -17
  42. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/core_protocol.rs +45 -25
  43. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/core_state.rs +12 -0
  44. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/core_write.rs +3 -3
  45. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/py_transport.rs +1 -1
  46. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/reader.rs +19 -18
  47. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/reader_task.rs +3 -3
  48. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/server.rs +1 -1
  49. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/socket_transport.rs +3 -3
  50. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/tls_session.rs +1 -1
  51. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/tls_transport.rs +2 -2
  52. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/writer.rs +3 -3
  53. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/tls/material.rs +2 -2
  54. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/tls/mod.rs +2 -2
  55. rsloop-0.1.48/src/vibeio/blocking/default.rs +69 -0
  56. rsloop-0.1.48/src/vibeio/blocking/mod.rs +146 -0
  57. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/builder.rs +106 -51
  58. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/driver/iocp.rs +610 -94
  59. rsloop-0.1.48/src/vibeio/driver/kqueue.rs +963 -0
  60. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/driver/mio.rs +112 -14
  61. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/driver/mock.rs +45 -2
  62. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/driver/mod.rs +272 -4
  63. rsloop-0.1.48/src/vibeio/driver/uring.rs +1514 -0
  64. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/executor.rs +624 -155
  65. rsloop-0.1.48/src/vibeio/fd_inner.rs +415 -0
  66. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/fs/file.rs +330 -223
  67. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/fs/metadata.rs +17 -47
  68. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/fs/mod.rs +396 -146
  69. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/fs/open_options.rs +20 -33
  70. rsloop-0.1.48/src/vibeio/io/buf.rs +856 -0
  71. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/io/mod.rs +18 -17
  72. rsloop-0.1.48/src/vibeio/io/pipe.rs +467 -0
  73. rsloop-0.1.48/src/vibeio/io/splice.rs +393 -0
  74. rsloop-0.1.48/src/vibeio/io/stdio.rs +297 -0
  75. rsloop-0.1.48/src/vibeio/io/util.rs +594 -0
  76. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/lib.rs +14 -46
  77. rsloop-0.1.48/src/vibeio/net/mod.rs +245 -0
  78. rsloop-0.1.48/src/vibeio/net/tcp/listener.rs +257 -0
  79. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/net/tcp/stream.rs +144 -242
  80. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/net/udp.rs +197 -209
  81. rsloop-0.1.48/src/vibeio/net/unix/listener.rs +183 -0
  82. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/net/unix/stream.rs +128 -70
  83. rsloop-0.1.48/src/vibeio/op/accept.rs +727 -0
  84. rsloop-0.1.48/src/vibeio/op/accept_unix.rs +340 -0
  85. rsloop-0.1.48/src/vibeio/op/connect.rs +878 -0
  86. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/op/fsync.rs +3 -4
  87. rsloop-0.1.48/src/vibeio/op/hard_link.rs +165 -0
  88. rsloop-0.1.48/src/vibeio/op/io_util.rs +681 -0
  89. rsloop-0.1.48/src/vibeio/op/mkdir.rs +145 -0
  90. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/op/mod.rs +25 -36
  91. rsloop-0.1.48/src/vibeio/op/open.rs +212 -0
  92. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/op/read.rs +141 -63
  93. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/op/readat.rs +79 -26
  94. rsloop-0.1.48/src/vibeio/op/readv.rs +498 -0
  95. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/op/recv.rs +139 -46
  96. rsloop-0.1.48/src/vibeio/op/recvfrom.rs +612 -0
  97. rsloop-0.1.48/src/vibeio/op/rename.rs +165 -0
  98. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/op/send.rs +70 -42
  99. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/op/sendto.rs +138 -153
  100. rsloop-0.1.48/src/vibeio/op/socket_addr.rs +356 -0
  101. rsloop-0.1.48/src/vibeio/op/splice.rs +499 -0
  102. rsloop-0.1.48/src/vibeio/op/statx.rs +190 -0
  103. rsloop-0.1.48/src/vibeio/op/symlink.rs +164 -0
  104. rsloop-0.1.48/src/vibeio/op/unlink.rs +146 -0
  105. rsloop-0.1.48/src/vibeio/op/waitpid.rs +210 -0
  106. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/op/write.rs +81 -54
  107. rsloop-0.1.48/src/vibeio/op/writeat.rs +361 -0
  108. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/op/writev.rs +151 -69
  109. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/process/mod.rs +325 -279
  110. rsloop-0.1.48/src/vibeio/process/reaper.rs +669 -0
  111. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/signal/mod.rs +13 -9
  112. rsloop-0.1.48/src/vibeio/signal/unix.rs +823 -0
  113. rsloop-0.1.48/src/vibeio/signal/windows.rs +353 -0
  114. rsloop-0.1.48/src/vibeio/task.rs +191 -0
  115. rsloop-0.1.48/src/vibeio/time/interval.rs +239 -0
  116. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/time/mod.rs +79 -20
  117. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/time/sleep.rs +104 -29
  118. rsloop-0.1.48/src/vibeio/time/timeout.rs +272 -0
  119. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/timer.rs +184 -5
  120. rsloop-0.1.48/src/vibeio/util/async_wrap.rs +720 -0
  121. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/util/mod.rs +2 -0
  122. rsloop-0.1.48/tests/packages/beanie_test.py +49 -0
  123. rsloop-0.1.48/tests/packages/django_orm_test.py +66 -0
  124. rsloop-0.1.48/tests/packages/edgy_test.py +41 -0
  125. rsloop-0.1.48/tests/packages/ormar_test.py +46 -0
  126. rsloop-0.1.48/tests/packages/piccolo_test.py +40 -0
  127. rsloop-0.1.48/tests/packages/sqlalchemy_test.py +50 -0
  128. rsloop-0.1.48/tests/packages/sqlmodel_test.py +43 -0
  129. rsloop-0.1.48/tests/packages/tortoise_orm_test.py +42 -0
  130. {rsloop-0.1.45 → rsloop-0.1.48}/tests/test_compat.py +137 -0
  131. rsloop-0.1.48/tests/test_idle_benchmark.py +280 -0
  132. {rsloop-0.1.45 → rsloop-0.1.48}/tests/test_run.py +8 -1
  133. {rsloop-0.1.45 → rsloop-0.1.48}/uv.lock +718 -1
  134. rsloop-0.1.45/Cargo.toml +0 -109
  135. rsloop-0.1.45/src/vibeio/blocking/default.rs +0 -37
  136. rsloop-0.1.45/src/vibeio/blocking/mod.rs +0 -57
  137. rsloop-0.1.45/src/vibeio/driver/kqueue.rs +0 -515
  138. rsloop-0.1.45/src/vibeio/driver/uring.rs +0 -825
  139. rsloop-0.1.45/src/vibeio/fd_inner.rs +0 -179
  140. rsloop-0.1.45/src/vibeio/io/buf.rs +0 -469
  141. rsloop-0.1.45/src/vibeio/io/pipe.rs +0 -324
  142. rsloop-0.1.45/src/vibeio/io/splice.rs +0 -164
  143. rsloop-0.1.45/src/vibeio/io/stdio.rs +0 -268
  144. rsloop-0.1.45/src/vibeio/io/util.rs +0 -244
  145. rsloop-0.1.45/src/vibeio/net/mod.rs +0 -55
  146. rsloop-0.1.45/src/vibeio/net/tcp/listener.rs +0 -468
  147. rsloop-0.1.45/src/vibeio/net/unix/listener.rs +0 -145
  148. rsloop-0.1.45/src/vibeio/op/accept.rs +0 -690
  149. rsloop-0.1.45/src/vibeio/op/accept_unix.rs +0 -162
  150. rsloop-0.1.45/src/vibeio/op/connect.rs +0 -531
  151. rsloop-0.1.45/src/vibeio/op/hard_link.rs +0 -93
  152. rsloop-0.1.45/src/vibeio/op/io_util.rs +0 -76
  153. rsloop-0.1.45/src/vibeio/op/mkdir.rs +0 -89
  154. rsloop-0.1.45/src/vibeio/op/open.rs +0 -95
  155. rsloop-0.1.45/src/vibeio/op/readv.rs +0 -366
  156. rsloop-0.1.45/src/vibeio/op/recvfrom.rs +0 -460
  157. rsloop-0.1.45/src/vibeio/op/rename.rs +0 -93
  158. rsloop-0.1.45/src/vibeio/op/splice.rs +0 -127
  159. rsloop-0.1.45/src/vibeio/op/statx.rs +0 -119
  160. rsloop-0.1.45/src/vibeio/op/symlink.rs +0 -92
  161. rsloop-0.1.45/src/vibeio/op/unlink.rs +0 -90
  162. rsloop-0.1.45/src/vibeio/op/waitpid.rs +0 -233
  163. rsloop-0.1.45/src/vibeio/op/writeat.rs +0 -166
  164. rsloop-0.1.45/src/vibeio/process/reaper.rs +0 -332
  165. rsloop-0.1.45/src/vibeio/signal/unix.rs +0 -526
  166. rsloop-0.1.45/src/vibeio/signal/windows.rs +0 -154
  167. rsloop-0.1.45/src/vibeio/task.rs +0 -121
  168. rsloop-0.1.45/src/vibeio/time/interval.rs +0 -145
  169. rsloop-0.1.45/src/vibeio/time/timeout.rs +0 -104
  170. rsloop-0.1.45/src/vibeio/util/async_wrap.rs +0 -470
  171. {rsloop-0.1.45 → rsloop-0.1.48}/.cargo/config.toml +0 -0
  172. {rsloop-0.1.45 → rsloop-0.1.48}/.github/workflows/kani.yml +0 -0
  173. {rsloop-0.1.45 → rsloop-0.1.48}/.github/workflows/mkdocs.yml +0 -0
  174. {rsloop-0.1.45 → rsloop-0.1.48}/.github/workflows/update-version.yml +0 -0
  175. {rsloop-0.1.45 → rsloop-0.1.48}/.gitignore +0 -0
  176. {rsloop-0.1.45 → rsloop-0.1.48}/.vscode/settings.json +0 -0
  177. {rsloop-0.1.45 → rsloop-0.1.48}/LICENSE +0 -0
  178. {rsloop-0.1.45 → rsloop-0.1.48}/benches/compare_event_loops.py +0 -0
  179. {rsloop-0.1.45 → rsloop-0.1.48}/docs/examples.md +0 -0
  180. {rsloop-0.1.45 → rsloop-0.1.48}/docs/getting-started.md +0 -0
  181. {rsloop-0.1.45 → rsloop-0.1.48}/docs/how-it-works.md +0 -0
  182. {rsloop-0.1.45 → rsloop-0.1.48}/docs/index.md +0 -0
  183. {rsloop-0.1.45 → rsloop-0.1.48}/docs/rsloop.png +0 -0
  184. {rsloop-0.1.45 → rsloop-0.1.48}/docs/rust-extensions.md +0 -0
  185. {rsloop-0.1.45 → rsloop-0.1.48}/docs/verification.md +0 -0
  186. {rsloop-0.1.45 → rsloop-0.1.48}/examples/01_basics.py +0 -0
  187. {rsloop-0.1.45 → rsloop-0.1.48}/examples/02_fd_and_sockets.py +0 -0
  188. {rsloop-0.1.45 → rsloop-0.1.48}/examples/03_streams.py +0 -0
  189. {rsloop-0.1.45 → rsloop-0.1.48}/examples/04_unix_and_accepted_socket.py +0 -0
  190. {rsloop-0.1.45 → rsloop-0.1.48}/examples/05_pipes_signals_subprocesses.py +0 -0
  191. {rsloop-0.1.45 → rsloop-0.1.48}/examples/README.md +0 -0
  192. {rsloop-0.1.45 → rsloop-0.1.48}/examples/fastapi_service.py +0 -0
  193. {rsloop-0.1.45 → rsloop-0.1.48}/examples/picows_server.py +0 -0
  194. {rsloop-0.1.45 → rsloop-0.1.48}/examples/picows_test.py +0 -0
  195. {rsloop-0.1.45 → rsloop-0.1.48}/examples/wsbench_websockets.py +0 -0
  196. {rsloop-0.1.45 → rsloop-0.1.48}/mkdocs.yml +0 -0
  197. {rsloop-0.1.45 → rsloop-0.1.48}/pyrightconfig.json +0 -0
  198. {rsloop-0.1.45 → rsloop-0.1.48}/python/rsloop/__init__.py +0 -0
  199. {rsloop-0.1.45 → rsloop-0.1.48}/python/rsloop/__init__.pyi +0 -0
  200. {rsloop-0.1.45 → rsloop-0.1.48}/python/rsloop/_bootstrap.py +0 -0
  201. {rsloop-0.1.45 → rsloop-0.1.48}/python/rsloop/_loop.pyi +0 -0
  202. {rsloop-0.1.45 → rsloop-0.1.48}/python/rsloop/_loop_compat.py +0 -0
  203. {rsloop-0.1.45 → rsloop-0.1.48}/python/rsloop/_profile.py +0 -0
  204. {rsloop-0.1.45 → rsloop-0.1.48}/python/rsloop/_run.py +0 -0
  205. {rsloop-0.1.45 → rsloop-0.1.48}/python/rsloop/py.typed +0 -0
  206. {rsloop-0.1.45 → rsloop-0.1.48}/qualirs.toml +0 -0
  207. {rsloop-0.1.45 → rsloop-0.1.48}/scripts/build-pgo-wheels.sh +0 -0
  208. {rsloop-0.1.45 → rsloop-0.1.48}/scripts/build-wheels.sh +0 -0
  209. {rsloop-0.1.45 → rsloop-0.1.48}/scripts/generate_test_tls_certs.py +0 -0
  210. {rsloop-0.1.45 → rsloop-0.1.48}/scripts/prepare_anyio_rsloop_tests.py +0 -0
  211. {rsloop-0.1.45 → rsloop-0.1.48}/scripts/python-versions.sh +0 -0
  212. {rsloop-0.1.45 → rsloop-0.1.48}/scripts/run_python_tests.py +0 -0
  213. {rsloop-0.1.45 → rsloop-0.1.48}/scripts/test-supported-pythons.sh +0 -0
  214. {rsloop-0.1.45 → rsloop-0.1.48}/src/async_event.rs +0 -0
  215. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/asyncio_cache.rs +0 -0
  216. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/executor.rs +0 -0
  217. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/ffi_helpers.rs +0 -0
  218. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/lifecycle.rs +0 -0
  219. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/pipes.rs +0 -0
  220. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/pre_exec.rs +0 -0
  221. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/process_handles.rs +0 -0
  222. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/process_spawn.rs +0 -0
  223. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/process_stdio.rs +0 -0
  224. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/signals.rs +0 -0
  225. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/sock_ops.rs +0 -0
  226. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/socket_connect.rs +0 -0
  227. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/sockets.rs +0 -0
  228. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/spawn_env.rs +0 -0
  229. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/tasks.rs +0 -0
  230. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/tls_params.rs +0 -0
  231. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api/watchers.rs +0 -0
  232. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/loop_api.rs +0 -0
  233. {rsloop-0.1.45 → rsloop-0.1.48}/src/bindings/mod.rs +0 -0
  234. {rsloop-0.1.45 → rsloop-0.1.48}/src/blocking.rs +0 -0
  235. {rsloop-0.1.45 → rsloop-0.1.48}/src/context.rs +0 -0
  236. {rsloop-0.1.45 → rsloop-0.1.48}/src/engine/dispatcher/timer_entry.rs +0 -0
  237. {rsloop-0.1.45 → rsloop-0.1.48}/src/engine/mod.rs +0 -0
  238. {rsloop-0.1.45 → rsloop-0.1.48}/src/errors.rs +0 -0
  239. {rsloop-0.1.45 → rsloop-0.1.48}/src/module_init.rs +0 -0
  240. {rsloop-0.1.45 → rsloop-0.1.48}/src/platform/fd/mod.rs +0 -0
  241. {rsloop-0.1.45 → rsloop-0.1.48}/src/platform/fd/windows.rs +0 -0
  242. {rsloop-0.1.45 → rsloop-0.1.48}/src/platform/mod.rs +0 -0
  243. {rsloop-0.1.45 → rsloop-0.1.48}/src/platform/windows_vibeio.rs +0 -0
  244. {rsloop-0.1.45 → rsloop-0.1.48}/src/python_names.rs +0 -0
  245. {rsloop-0.1.45 → rsloop-0.1.48}/src/rust_async.rs +0 -0
  246. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/mod.rs +0 -0
  247. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/process/core_protocol.rs +0 -0
  248. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/process/core_state.rs +0 -0
  249. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/process/mod.rs +0 -0
  250. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/process/params.rs +0 -0
  251. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/process/py_pipes.rs +0 -0
  252. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/process/py_transport.rs +0 -0
  253. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/process/spawn.rs +0 -0
  254. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/connect.rs +0 -0
  255. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/fast.rs +0 -0
  256. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/io_targets.rs +0 -0
  257. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/mod.rs +0 -0
  258. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/pipe_transport.rs +0 -0
  259. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/platform.rs +0 -0
  260. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/poll.rs +0 -0
  261. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/protocol.rs +0 -0
  262. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/py_server.rs +0 -0
  263. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/server_core.rs +0 -0
  264. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/server_types.rs +0 -0
  265. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/stats.rs +0 -0
  266. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/tuning.rs +0 -0
  267. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/worker.rs +0 -0
  268. {rsloop-0.1.45 → rsloop-0.1.48}/src/transport/stream/write_queue.rs +0 -0
  269. {rsloop-0.1.45 → rsloop-0.1.48}/src/verification.rs +0 -0
  270. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/UPSTREAM.md +0 -0
  271. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/net/tcp/mod.rs +0 -0
  272. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/net/unix/mod.rs +0 -0
  273. {rsloop-0.1.45 → rsloop-0.1.48}/src/vibeio/op/readiness.rs +0 -0
  274. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/_smoke.py +0 -0
  275. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/aiohttp_test.py +0 -0
  276. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/anyio_test.py +0 -0
  277. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/daphne_test.py +0 -0
  278. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/django_asgi_test.py +0 -0
  279. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/falcon_test.py +0 -0
  280. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/fastapi_test.py +0 -0
  281. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/faststream_test.py +0 -0
  282. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/hypercorn_test.py +0 -0
  283. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/litestar_granian_test.py +0 -0
  284. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/litestar_test.py +0 -0
  285. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/mangum_test.py +0 -0
  286. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/quart_test.py +0 -0
  287. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/sanic_test.py +0 -0
  288. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/starlette_test.py +0 -0
  289. {rsloop-0.1.45 → rsloop-0.1.48}/tests/packages/uvicorn_test.py +0 -0
  290. {rsloop-0.1.45 → rsloop-0.1.48}/tests/proptest-regressions/transport/stream/fast.txt +0 -0
  291. {rsloop-0.1.45 → rsloop-0.1.48}/tests/test_free_threading.py +0 -0
  292. {rsloop-0.1.45 → rsloop-0.1.48}/tests/test_public_api.py +0 -0
  293. {rsloop-0.1.45 → rsloop-0.1.48}/tests/test_stream_reader.py +0 -0
  294. {rsloop-0.1.45 → rsloop-0.1.48}/tests/test_tls.py +0 -0
@@ -71,7 +71,7 @@ jobs:
71
71
  - name: Set up Rust
72
72
  uses: dtolnay/rust-toolchain@stable
73
73
  with:
74
- toolchain: 1.95.0
74
+ toolchain: "1.98.1"
75
75
 
76
76
  - name: Cache Cargo registry
77
77
  uses: Swatinem/rust-cache@v2
@@ -25,9 +25,17 @@ concurrency:
25
25
 
26
26
  jobs:
27
27
  rust-test:
28
- name: rust tests
28
+ name: rust tests (${{ matrix.features }})
29
29
  runs-on: ubuntu-latest
30
30
  timeout-minutes: 15
31
+ strategy:
32
+ fail-fast: false
33
+ matrix:
34
+ include:
35
+ - features: default
36
+ test_args: ""
37
+ - features: all
38
+ test_args: "--all-features"
31
39
  steps:
32
40
  - name: Check out repository
33
41
  uses: actions/checkout@v6
@@ -42,7 +50,7 @@ jobs:
42
50
  - name: Set up Rust
43
51
  uses: dtolnay/rust-toolchain@stable
44
52
  with:
45
- toolchain: 1.95.0
53
+ toolchain: "1.98.1"
46
54
 
47
55
  - name: Cache Cargo registry
48
56
  uses: Swatinem/rust-cache@v2
@@ -51,10 +59,60 @@ jobs:
51
59
  run: python3 scripts/generate_test_tls_certs.py
52
60
 
53
61
  - name: Run Rust tests
54
- run: python3 scripts/run_rust_tests.py
62
+ run: python3 scripts/run_rust_tests.py ${{ matrix.test_args }}
63
+
64
+ vibeio-native:
65
+ name: embedded runtime (${{ matrix.os }})
66
+ runs-on: ${{ matrix.os }}
67
+ timeout-minutes: 15
68
+ strategy:
69
+ fail-fast: false
70
+ matrix:
71
+ os: [ubuntu-latest, windows-latest, macos-latest]
72
+ steps:
73
+ - name: Check out repository
74
+ uses: actions/checkout@v6
75
+ with:
76
+ persist-credentials: false
77
+
78
+ - name: Set up Rust
79
+ uses: dtolnay/rust-toolchain@stable
80
+ with:
81
+ toolchain: "1.98.1"
82
+ components: clippy, rustfmt
83
+
84
+ - name: Cache runtime harness build
85
+ uses: Swatinem/rust-cache@v2
86
+ with:
87
+ workspaces: tools/vibeio-check
88
+
89
+ - name: Check embedded runtime formatting
90
+ run: cargo fmt --manifest-path tools/vibeio-check/Cargo.toml --all -- --check
91
+
92
+ - name: Check embedded runtime documentation
93
+ env:
94
+ RUSTDOCFLAGS: -D warnings
95
+ run: cargo doc --manifest-path tools/vibeio-check/Cargo.toml --all-features --no-deps --locked
96
+
97
+ - name: Lint embedded runtime on the native target
98
+ run: cargo clippy --manifest-path tools/vibeio-check/Cargo.toml --all-targets --all-features --locked -- -D warnings
99
+
100
+ - name: Check isolated embedded runtime features
101
+ shell: bash
102
+ run: |
103
+ for feature in '' fs process signal pipe stdio splice blocking-default; do
104
+ cargo clippy --manifest-path tools/vibeio-check/Cargo.toml --all-targets --no-default-features --features "$feature" --locked -- -D warnings
105
+ cargo test --manifest-path tools/vibeio-check/Cargo.toml --no-default-features --features "$feature" --locked
106
+ done
107
+
108
+ - name: Run default-feature embedded runtime tests
109
+ run: cargo test --manifest-path tools/vibeio-check/Cargo.toml --locked
110
+
111
+ - name: Run all-feature embedded runtime tests
112
+ run: cargo test --manifest-path tools/vibeio-check/Cargo.toml --all-features --locked
55
113
 
56
114
  clippy:
57
- name: clippy (pedantic)
115
+ name: clippy (risk-focused)
58
116
  runs-on: ubuntu-latest
59
117
  timeout-minutes: 15
60
118
  steps:
@@ -71,14 +129,14 @@ jobs:
71
129
  - name: Set up Rust
72
130
  uses: dtolnay/rust-toolchain@stable
73
131
  with:
74
- toolchain: 1.95.0
132
+ toolchain: "1.98.1"
75
133
  components: clippy
76
134
 
77
135
  - name: Cache Cargo registry
78
136
  uses: Swatinem/rust-cache@v2
79
137
 
80
138
  - name: Run Clippy
81
- run: cargo clippy --all-targets --all-features -- -D warnings
139
+ run: cargo clippy --all-targets --all-features --locked -- -D warnings
82
140
 
83
141
  type-check:
84
142
  name: pyright
@@ -135,7 +193,7 @@ jobs:
135
193
  - name: Set up Rust
136
194
  uses: dtolnay/rust-toolchain@stable
137
195
  with:
138
- toolchain: 1.95.0
196
+ toolchain: "1.98.1"
139
197
 
140
198
  - name: Cache Cargo registry
141
199
  uses: Swatinem/rust-cache@v2
@@ -245,7 +303,7 @@ jobs:
245
303
  - name: Set up Rust
246
304
  uses: dtolnay/rust-toolchain@stable
247
305
  with:
248
- toolchain: 1.95.0
306
+ toolchain: "1.98.1"
249
307
 
250
308
  - name: Cache Cargo registry
251
309
  uses: Swatinem/rust-cache@v2
@@ -5,6 +5,12 @@ on:
5
5
  tags:
6
6
  - "v*"
7
7
  workflow_dispatch:
8
+ inputs:
9
+ pgo:
10
+ description: "Build wheels with profile-guided optimization (slower)"
11
+ type: boolean
12
+ required: false
13
+ default: false
8
14
 
9
15
  permissions:
10
16
  contents: read
@@ -62,8 +68,11 @@ jobs:
62
68
  - name: Set up Rust
63
69
  uses: dtolnay/rust-toolchain@stable
64
70
  with:
65
- toolchain: stable
66
- components: llvm-tools-preview
71
+ toolchain: "1.98.1"
72
+
73
+ - name: Install LLVM tools for PGO
74
+ if: github.event_name == 'workflow_dispatch' && inputs.pgo
75
+ run: rustup component add llvm-tools-preview
67
76
 
68
77
  - name: Cache Cargo registry and target
69
78
  uses: Swatinem/rust-cache@v2
@@ -73,7 +82,13 @@ jobs:
73
82
  shell: bash
74
83
  env:
75
84
  RSLOOP_PYTHON_VERSIONS: ${{ matrix.python_versions }}
76
- run: scripts/build-pgo-wheels.sh --out dist --target "${{ matrix.rust_target }}"
85
+ PGO_ENABLED: ${{ github.event_name == 'workflow_dispatch' && inputs.pgo }}
86
+ run: |
87
+ if [[ "$PGO_ENABLED" == "true" ]]; then
88
+ scripts/build-pgo-wheels.sh --out dist --target "${{ matrix.rust_target }}"
89
+ else
90
+ scripts/build-wheels.sh --out dist --target "${{ matrix.rust_target }}"
91
+ fi
77
92
 
78
93
  - name: Upload wheel artifacts
79
94
  uses: actions/upload-artifact@v4
@@ -103,7 +118,7 @@ jobs:
103
118
  - name: Set up Rust
104
119
  uses: dtolnay/rust-toolchain@stable
105
120
  with:
106
- toolchain: stable
121
+ toolchain: "1.98.1"
107
122
 
108
123
  - name: Cache Cargo registry and target
109
124
  uses: Swatinem/rust-cache@v2
@@ -0,0 +1 @@
1
+ 3.14.7
@@ -4,9 +4,9 @@ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "aho-corasick"
7
- version = "1.1.4"
7
+ version = "1.1.5"
8
8
  source = "registry+https://github.com/rust-lang/crates.io-index"
9
- checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
9
+ checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba"
10
10
  dependencies = [
11
11
  "memchr",
12
12
  ]
@@ -197,15 +197,9 @@ dependencies = [
197
197
 
198
198
  [[package]]
199
199
  name = "bitflags"
200
- version = "1.3.2"
201
- source = "registry+https://github.com/rust-lang/crates.io-index"
202
- checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
203
-
204
- [[package]]
205
- name = "bitflags"
206
- version = "2.13.0"
200
+ version = "2.13.1"
207
201
  source = "registry+https://github.com/rust-lang/crates.io-index"
208
- checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
202
+ checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
209
203
 
210
204
  [[package]]
211
205
  name = "blocking"
@@ -234,9 +228,9 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
234
228
 
235
229
  [[package]]
236
230
  name = "cc"
237
- version = "1.2.65"
231
+ version = "1.4.4"
238
232
  source = "registry+https://github.com/rust-lang/crates.io-index"
239
- checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96"
233
+ checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273"
240
234
  dependencies = [
241
235
  "find-msvc-tools",
242
236
  "jobserver",
@@ -359,9 +353,9 @@ checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
359
353
 
360
354
  [[package]]
361
355
  name = "find-msvc-tools"
362
- version = "0.1.9"
356
+ version = "0.1.11"
363
357
  source = "registry+https://github.com/rust-lang/crates.io-index"
364
- checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
358
+ checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890"
365
359
 
366
360
  [[package]]
367
361
  name = "fs_extra"
@@ -399,6 +393,17 @@ version = "0.3.33"
399
393
  source = "registry+https://github.com/rust-lang/crates.io-index"
400
394
  checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7"
401
395
 
396
+ [[package]]
397
+ name = "futures-executor"
398
+ version = "0.3.33"
399
+ source = "registry+https://github.com/rust-lang/crates.io-index"
400
+ checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458"
401
+ dependencies = [
402
+ "futures-core",
403
+ "futures-task",
404
+ "futures-util",
405
+ ]
406
+
402
407
  [[package]]
403
408
  name = "futures-io"
404
409
  version = "0.3.33"
@@ -492,10 +497,21 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
492
497
  dependencies = [
493
498
  "cfg-if",
494
499
  "libc",
495
- "r-efi",
500
+ "r-efi 5.3.0",
496
501
  "wasip2",
497
502
  ]
498
503
 
504
+ [[package]]
505
+ name = "getrandom"
506
+ version = "0.4.3"
507
+ source = "registry+https://github.com/rust-lang/crates.io-index"
508
+ checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
509
+ dependencies = [
510
+ "cfg-if",
511
+ "libc",
512
+ "r-efi 6.0.0",
513
+ ]
514
+
499
515
  [[package]]
500
516
  name = "gloo-timers"
501
517
  version = "0.3.0"
@@ -522,21 +538,22 @@ checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
522
538
 
523
539
  [[package]]
524
540
  name = "io-uring"
525
- version = "0.6.4"
541
+ version = "0.7.14"
526
542
  source = "registry+https://github.com/rust-lang/crates.io-index"
527
- checksum = "595a0399f411a508feb2ec1e970a4a30c249351e30208960d58298de8660b0e5"
543
+ checksum = "d64d8ca234d152948ceaede1f419b6a83983a5ecccaac05fb337a809c96d3aa6"
528
544
  dependencies = [
529
- "bitflags 1.3.2",
545
+ "bitflags",
546
+ "cfg-if",
530
547
  "libc",
531
548
  ]
532
549
 
533
550
  [[package]]
534
551
  name = "jobserver"
535
- version = "0.1.34"
552
+ version = "0.1.35"
536
553
  source = "registry+https://github.com/rust-lang/crates.io-index"
537
- checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
554
+ checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3"
538
555
  dependencies = [
539
- "getrandom 0.3.4",
556
+ "getrandom 0.4.3",
540
557
  "libc",
541
558
  ]
542
559
 
@@ -568,9 +585,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
568
585
 
569
586
  [[package]]
570
587
  name = "libc"
571
- version = "0.2.186"
588
+ version = "0.2.189"
572
589
  source = "registry+https://github.com/rust-lang/crates.io-index"
573
- checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
590
+ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
574
591
 
575
592
  [[package]]
576
593
  name = "linux-raw-sys"
@@ -580,9 +597,9 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
580
597
 
581
598
  [[package]]
582
599
  name = "log"
583
- version = "0.4.33"
600
+ version = "0.4.34"
584
601
  source = "registry+https://github.com/rust-lang/crates.io-index"
585
- checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
602
+ checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6"
586
603
  dependencies = [
587
604
  "value-bag",
588
605
  ]
@@ -645,6 +662,16 @@ dependencies = [
645
662
  "autocfg",
646
663
  ]
647
664
 
665
+ [[package]]
666
+ name = "num_cpus"
667
+ version = "1.17.0"
668
+ source = "registry+https://github.com/rust-lang/crates.io-index"
669
+ checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
670
+ dependencies = [
671
+ "hermit-abi",
672
+ "libc",
673
+ ]
674
+
648
675
  [[package]]
649
676
  name = "once_cell"
650
677
  version = "1.21.4"
@@ -730,33 +757,13 @@ dependencies = [
730
757
  "unicode-ident",
731
758
  ]
732
759
 
733
- [[package]]
734
- name = "profiling"
735
- version = "1.0.18"
736
- source = "registry+https://github.com/rust-lang/crates.io-index"
737
- checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5"
738
- dependencies = [
739
- "profiling-procmacros",
740
- "tracy-client",
741
- ]
742
-
743
- [[package]]
744
- name = "profiling-procmacros"
745
- version = "1.0.18"
746
- source = "registry+https://github.com/rust-lang/crates.io-index"
747
- checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb"
748
- dependencies = [
749
- "quote",
750
- "syn",
751
- ]
752
-
753
760
  [[package]]
754
761
  name = "proptest"
755
762
  version = "1.11.0"
756
763
  source = "registry+https://github.com/rust-lang/crates.io-index"
757
764
  checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744"
758
765
  dependencies = [
759
- "bitflags 2.13.0",
766
+ "bitflags",
760
767
  "num-traits",
761
768
  "rand",
762
769
  "rand_chacha",
@@ -851,6 +858,12 @@ version = "5.3.0"
851
858
  source = "registry+https://github.com/rust-lang/crates.io-index"
852
859
  checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
853
860
 
861
+ [[package]]
862
+ name = "r-efi"
863
+ version = "6.0.0"
864
+ source = "registry+https://github.com/rust-lang/crates.io-index"
865
+ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
866
+
854
867
  [[package]]
855
868
  name = "rand"
856
869
  version = "0.9.5"
@@ -891,9 +904,9 @@ dependencies = [
891
904
 
892
905
  [[package]]
893
906
  name = "regex-automata"
894
- version = "0.4.14"
907
+ version = "0.4.18"
895
908
  source = "registry+https://github.com/rust-lang/crates.io-index"
896
- checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
909
+ checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2"
897
910
  dependencies = [
898
911
  "aho-corasick",
899
912
  "memchr",
@@ -922,20 +935,23 @@ dependencies = [
922
935
 
923
936
  [[package]]
924
937
  name = "rsloop"
925
- version = "0.1.45"
938
+ version = "0.1.48"
926
939
  dependencies = [
940
+ "async-channel 2.5.0",
927
941
  "async-io",
928
942
  "async-std",
929
943
  "crossbeam-channel",
930
944
  "crossbeam-queue",
945
+ "errno",
931
946
  "futures",
932
947
  "futures-util",
933
948
  "io-uring",
934
949
  "libc",
935
950
  "memchr",
936
951
  "mio",
952
+ "once_cell",
937
953
  "oneshot",
938
- "profiling",
954
+ "pin-project-lite",
939
955
  "proptest",
940
956
  "pyo3",
941
957
  "pyo3-async-runtimes",
@@ -943,11 +959,13 @@ dependencies = [
943
959
  "rustls",
944
960
  "rustls-native-certs",
945
961
  "rustls-pemfile",
962
+ "rusty_pool",
946
963
  "signal-hook",
947
964
  "slab",
948
965
  "socket2",
949
966
  "tokio",
950
967
  "tracy-client",
968
+ "tracy-client-sys",
951
969
  "windows-sys 0.61.2",
952
970
  ]
953
971
 
@@ -957,7 +975,7 @@ version = "1.1.4"
957
975
  source = "registry+https://github.com/rust-lang/crates.io-index"
958
976
  checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
959
977
  dependencies = [
960
- "bitflags 2.13.0",
978
+ "bitflags",
961
979
  "errno",
962
980
  "libc",
963
981
  "linux-raw-sys",
@@ -1023,9 +1041,21 @@ dependencies = [
1023
1041
 
1024
1042
  [[package]]
1025
1043
  name = "rustversion"
1026
- version = "1.0.22"
1044
+ version = "1.0.23"
1027
1045
  source = "registry+https://github.com/rust-lang/crates.io-index"
1028
- checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
1046
+ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
1047
+
1048
+ [[package]]
1049
+ name = "rusty_pool"
1050
+ version = "0.7.0"
1051
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1052
+ checksum = "4ed36cdb20de66d89a17ea04b8883fc7a386f2cf877aaedca5005583ce4876ff"
1053
+ dependencies = [
1054
+ "crossbeam-channel",
1055
+ "futures-channel",
1056
+ "futures-executor",
1057
+ "num_cpus",
1058
+ ]
1029
1059
 
1030
1060
  [[package]]
1031
1061
  name = "schannel"
@@ -1048,7 +1078,7 @@ version = "3.7.0"
1048
1078
  source = "registry+https://github.com/rust-lang/crates.io-index"
1049
1079
  checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
1050
1080
  dependencies = [
1051
- "bitflags 2.13.0",
1081
+ "bitflags",
1052
1082
  "core-foundation",
1053
1083
  "core-foundation-sys",
1054
1084
  "libc",
@@ -1147,9 +1177,9 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
1147
1177
 
1148
1178
  [[package]]
1149
1179
  name = "thread_local"
1150
- version = "1.1.9"
1180
+ version = "1.1.10"
1151
1181
  source = "registry+https://github.com/rust-lang/crates.io-index"
1152
- checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
1182
+ checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070"
1153
1183
  dependencies = [
1154
1184
  "cfg-if",
1155
1185
  ]
@@ -1215,9 +1245,9 @@ dependencies = [
1215
1245
 
1216
1246
  [[package]]
1217
1247
  name = "tracy-client"
1218
- version = "0.18.4"
1248
+ version = "0.19.0"
1219
1249
  source = "registry+https://github.com/rust-lang/crates.io-index"
1220
- checksum = "a4f6fc3baeac5d86ab90c772e9e30620fc653bf1864295029921a15ef478e6a5"
1250
+ checksum = "d93fd676d8946eaeaff4881d26d2240a8d106fcaccbd47cb9f1389e3561ba490"
1221
1251
  dependencies = [
1222
1252
  "loom",
1223
1253
  "once_cell",
@@ -1226,9 +1256,9 @@ dependencies = [
1226
1256
 
1227
1257
  [[package]]
1228
1258
  name = "tracy-client-sys"
1229
- version = "0.28.0"
1259
+ version = "0.30.0"
1230
1260
  source = "registry+https://github.com/rust-lang/crates.io-index"
1231
- checksum = "c5f7c95348f20c1c913d72157b3c6dee6ea3e30b3d19502c5a7f6d3f160dacbf"
1261
+ checksum = "eef8a023d2b19f44e430da334f7dfb5e5db219bb83e2b4f56a09c1cb12abe915"
1232
1262
  dependencies = [
1233
1263
  "cc",
1234
1264
  "windows-targets",
@@ -0,0 +1,110 @@
1
+ [package]
2
+ name = "rsloop"
3
+ version = "0.1.48"
4
+ edition = "2024"
5
+ description = "An event loop for asyncio written in Rust"
6
+ license = "Apache-2.0"
7
+ readme = "README.md"
8
+ repository = "https://github.com/RustedBytes/rsloop"
9
+ homepage = "https://github.com/RustedBytes/rsloop"
10
+ documentation = "https://github.com/RustedBytes/rsloop#readme"
11
+
12
+ [lib]
13
+ name = "rsloop"
14
+ crate-type = ["cdylib", "rlib"]
15
+
16
+ [features]
17
+ default = []
18
+ profiler = ["dep:tracy-client", "dep:tracy-client-sys"]
19
+ # Embedded-runtime modules are opt-in; production wheels retain the default
20
+ # networking/timer build unless a feature is explicitly requested.
21
+ fs = []
22
+ process = ["dep:async-channel"]
23
+ signal = ["dep:once_cell", "dep:errno"]
24
+ pipe = []
25
+ stdio = []
26
+ splice = []
27
+ blocking-default = ["dep:rusty_pool"]
28
+
29
+ [dependencies]
30
+ errno = { version = "0.3", optional = true }
31
+ async-channel = { version = "2", optional = true }
32
+ async-io = "2"
33
+ async-std = "1"
34
+ crossbeam-channel = "0.5"
35
+ crossbeam-queue = "0.3"
36
+ futures = { version = "0.3", default-features = false, features = ["std"] }
37
+ futures-util = "0.3"
38
+ libc = "0.2"
39
+ memchr = "2"
40
+ mio = "1"
41
+ oneshot = { version = "0.2", features = ["async", "std"] }
42
+ pin-project-lite = "0.2"
43
+ once_cell = { version = "1", optional = true }
44
+ pyo3 = { version = "0.29.2" }
45
+ pyo3-async-runtimes = { version = "0.29", features = ["async-std-runtime"] }
46
+ rustls = "0.23"
47
+ rustls-native-certs = "0.8"
48
+ rustls-pemfile = "2"
49
+ rusty_pool = { version = "0.7", default-features = false, optional = true }
50
+ signal-hook = "0.4"
51
+ slab = "0.4"
52
+ socket2 = "0.6"
53
+ tokio = { version = "1", default-features = false, features = ["io-util"] }
54
+ tracy-client = { version = "0.19", default-features = false, features = ["enable", "only-localhost", "sampling"], optional = true }
55
+ # tracy-client 0.19 accepts older sys releases whose generated API is
56
+ # incompatible with the wrapper. Keep the matching bindings selected.
57
+ tracy-client-sys = { version = "=0.30.0", default-features = false, optional = true }
58
+ [target.'cfg(target_os = "linux")'.dependencies]
59
+ io-uring = "0.7"
60
+
61
+ [target.'cfg(unix)'.dependencies]
62
+ mio = { version = "1", features = ["os-poll", "os-ext"] }
63
+
64
+ [target.'cfg(windows)'.dependencies]
65
+ windows-sys = { version = "0.61", features = ["Wdk_Foundation", "Wdk_Storage_FileSystem", "Wdk_System_IO", "Wdk_System_SystemServices", "Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_SystemInformation", "Win32_System_Threading"] }
66
+
67
+ [build-dependencies]
68
+ pyo3-build-config = "0.29.2"
69
+
70
+ [dev-dependencies]
71
+ proptest = { version = "1", default-features = false, features = ["std"] }
72
+
73
+ [lints.clippy]
74
+ # Enforce bug, concurrency, and performance checks rather than style preferences.
75
+ correctness = { level = "deny", priority = -1 }
76
+ suspicious = { level = "warn", priority = -1 }
77
+ perf = { level = "warn", priority = -1 }
78
+ complexity = { level = "warn", priority = -1 }
79
+ style = { level = "allow", priority = -1 }
80
+ pedantic = { level = "allow", priority = -1 }
81
+ # Keep safety checks even when they belong to an otherwise disabled group.
82
+ missing_safety_doc = "warn"
83
+ cast_ptr_alignment = "warn"
84
+ await_holding_lock = "warn"
85
+ await_holding_refcell_ref = "warn"
86
+
87
+ [lints.rust]
88
+ unexpected_cfgs = { level = "warn", check-cfg = ["cfg(kani)", "cfg(musl_v1_2_3)", "cfg(syscall_accept4)", "cfg(feature, values(\"blocking-default\", \"fs\", \"pipe\", \"process\", \"signal\", \"splice\", \"stdio\"))"] }
89
+
90
+ [package.metadata.kani.flags]
91
+ # Force every proof that reaches a loop to state and review its own bound.
92
+ default-unwind = "1"
93
+
94
+ [profile.release]
95
+ opt-level = 3
96
+ lto = "fat"
97
+ codegen-units = 1
98
+ incremental = false
99
+ # strip = true
100
+
101
+ [profile.bench]
102
+ inherits = "release"
103
+
104
+ [[bench]]
105
+ name = "runtime"
106
+ harness = false
107
+
108
+ [[bench]]
109
+ name = "timer"
110
+ harness = false