rsloop 0.1.26__tar.gz → 0.1.28__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 (164) hide show
  1. {rsloop-0.1.26 → rsloop-0.1.28}/.gitignore +1 -0
  2. {rsloop-0.1.26 → rsloop-0.1.28}/Cargo.lock +3 -398
  3. {rsloop-0.1.26 → rsloop-0.1.28}/Cargo.toml +5 -5
  4. {rsloop-0.1.26 → rsloop-0.1.28}/PKG-INFO +18 -18
  5. {rsloop-0.1.26 → rsloop-0.1.28}/README.md +17 -17
  6. rsloop-0.1.28/benchmarks/README.md +145 -0
  7. {rsloop-0.1.26 → rsloop-0.1.28}/benchmarks/compare_event_loops.py +2 -2
  8. rsloop-0.1.28/benchmarks/workload_matrix.py +938 -0
  9. {rsloop-0.1.26 → rsloop-0.1.28}/docs/how-it-works.md +4 -3
  10. {rsloop-0.1.26 → rsloop-0.1.28}/justfile +7 -1
  11. {rsloop-0.1.26 → rsloop-0.1.28}/pyproject.toml +3 -3
  12. {rsloop-0.1.26 → rsloop-0.1.28}/python/rsloop/__init__.py +2 -0
  13. {rsloop-0.1.26 → rsloop-0.1.28}/python/rsloop/_bootstrap.py +14 -0
  14. {rsloop-0.1.26 → rsloop-0.1.28}/python/rsloop/_loop_compat.py +121 -32
  15. {rsloop-0.1.26 → rsloop-0.1.28}/python/rsloop/_profile.py +6 -0
  16. rsloop-0.1.28/scripts/generate_test_tls_certs.py +196 -0
  17. {rsloop-0.1.26 → rsloop-0.1.28}/scripts/test-supported-pythons.sh +1 -1
  18. {rsloop-0.1.26 → rsloop-0.1.28}/src/fast_streams.rs +168 -10
  19. {rsloop-0.1.26 → rsloop-0.1.28}/src/fd_ops.rs +64 -21
  20. {rsloop-0.1.26 → rsloop-0.1.28}/src/lib.rs +1 -1
  21. {rsloop-0.1.26 → rsloop-0.1.28}/src/loop_core/commands.rs +30 -3
  22. {rsloop-0.1.26 → rsloop-0.1.28}/src/loop_core.rs +428 -72
  23. {rsloop-0.1.26 → rsloop-0.1.28}/src/module_init.rs +3 -2
  24. {rsloop-0.1.26 → rsloop-0.1.28}/src/profiler.rs +7 -0
  25. {rsloop-0.1.26 → rsloop-0.1.28}/src/python_api/ffi_helpers.rs +1 -0
  26. {rsloop-0.1.26 → rsloop-0.1.28}/src/python_api.rs +282 -36
  27. {rsloop-0.1.26 → rsloop-0.1.28}/src/python_names.rs +5 -0
  28. rsloop-0.1.28/src/runtime.rs +567 -0
  29. {rsloop-0.1.26 → rsloop-0.1.28}/src/stream_transport.rs +899 -337
  30. {rsloop-0.1.26 → rsloop-0.1.28}/src/tls.rs +48 -2
  31. {rsloop-0.1.26 → rsloop-0.1.28}/tests/test_compat.py +96 -15
  32. {rsloop-0.1.26 → rsloop-0.1.28}/tests/test_tls.py +68 -2
  33. {rsloop-0.1.26 → rsloop-0.1.28}/uv.lock +19 -54
  34. rsloop-0.1.28/vendor/vibeio/.cargo-ok +1 -0
  35. rsloop-0.1.28/vendor/vibeio/Cargo.lock +352 -0
  36. rsloop-0.1.28/vendor/vibeio/Cargo.toml +131 -0
  37. rsloop-0.1.28/vendor/vibeio/README.md +89 -0
  38. rsloop-0.1.28/vendor/vibeio/build.rs +42 -0
  39. rsloop-0.1.28/vendor/vibeio/src/blocking/default.rs +37 -0
  40. rsloop-0.1.28/vendor/vibeio/src/blocking/mod.rs +57 -0
  41. rsloop-0.1.28/vendor/vibeio/src/builder.rs +136 -0
  42. rsloop-0.1.28/vendor/vibeio/src/driver/iocp.rs +923 -0
  43. rsloop-0.1.28/vendor/vibeio/src/driver/mio.rs +337 -0
  44. rsloop-0.1.28/vendor/vibeio/src/driver/mock.rs +79 -0
  45. rsloop-0.1.28/vendor/vibeio/src/driver/mod.rs +595 -0
  46. rsloop-0.1.28/vendor/vibeio/src/driver/uring.rs +636 -0
  47. rsloop-0.1.28/vendor/vibeio/src/executor.rs +892 -0
  48. rsloop-0.1.28/vendor/vibeio/src/fd_inner.rs +179 -0
  49. rsloop-0.1.28/vendor/vibeio/src/fs/file.rs +764 -0
  50. rsloop-0.1.28/vendor/vibeio/src/fs/metadata.rs +254 -0
  51. rsloop-0.1.28/vendor/vibeio/src/fs/mod.rs +1416 -0
  52. rsloop-0.1.28/vendor/vibeio/src/fs/open_options.rs +329 -0
  53. rsloop-0.1.28/vendor/vibeio/src/io/buf.rs +460 -0
  54. rsloop-0.1.28/vendor/vibeio/src/io/mod.rs +150 -0
  55. rsloop-0.1.28/vendor/vibeio/src/io/pipe.rs +324 -0
  56. rsloop-0.1.28/vendor/vibeio/src/io/splice.rs +164 -0
  57. rsloop-0.1.28/vendor/vibeio/src/io/stdio.rs +266 -0
  58. rsloop-0.1.28/vendor/vibeio/src/io/util.rs +226 -0
  59. rsloop-0.1.28/vendor/vibeio/src/lib.rs +103 -0
  60. rsloop-0.1.28/vendor/vibeio/src/net/mod.rs +55 -0
  61. rsloop-0.1.28/vendor/vibeio/src/net/tcp/listener.rs +469 -0
  62. rsloop-0.1.28/vendor/vibeio/src/net/tcp/mod.rs +128 -0
  63. rsloop-0.1.28/vendor/vibeio/src/net/tcp/stream.rs +794 -0
  64. rsloop-0.1.28/vendor/vibeio/src/net/udp.rs +1534 -0
  65. rsloop-0.1.28/vendor/vibeio/src/net/unix/listener.rs +145 -0
  66. rsloop-0.1.28/vendor/vibeio/src/net/unix/mod.rs +149 -0
  67. rsloop-0.1.28/vendor/vibeio/src/net/unix/stream.rs +568 -0
  68. rsloop-0.1.28/vendor/vibeio/src/op/accept.rs +681 -0
  69. rsloop-0.1.28/vendor/vibeio/src/op/accept_unix.rs +162 -0
  70. rsloop-0.1.28/vendor/vibeio/src/op/connect.rs +531 -0
  71. rsloop-0.1.28/vendor/vibeio/src/op/fsync.rs +90 -0
  72. rsloop-0.1.28/vendor/vibeio/src/op/hard_link.rs +93 -0
  73. rsloop-0.1.28/vendor/vibeio/src/op/io_util.rs +76 -0
  74. rsloop-0.1.28/vendor/vibeio/src/op/mkdir.rs +89 -0
  75. rsloop-0.1.28/vendor/vibeio/src/op/mod.rs +273 -0
  76. rsloop-0.1.28/vendor/vibeio/src/op/open.rs +95 -0
  77. rsloop-0.1.28/vendor/vibeio/src/op/read.rs +306 -0
  78. rsloop-0.1.28/vendor/vibeio/src/op/readat.rs +171 -0
  79. rsloop-0.1.28/vendor/vibeio/src/op/readiness.rs +51 -0
  80. rsloop-0.1.28/vendor/vibeio/src/op/readv.rs +366 -0
  81. rsloop-0.1.28/vendor/vibeio/src/op/recv.rs +287 -0
  82. rsloop-0.1.28/vendor/vibeio/src/op/recvfrom.rs +458 -0
  83. rsloop-0.1.28/vendor/vibeio/src/op/rename.rs +93 -0
  84. rsloop-0.1.28/vendor/vibeio/src/op/send.rs +256 -0
  85. rsloop-0.1.28/vendor/vibeio/src/op/sendto.rs +442 -0
  86. rsloop-0.1.28/vendor/vibeio/src/op/splice.rs +127 -0
  87. rsloop-0.1.28/vendor/vibeio/src/op/statx.rs +119 -0
  88. rsloop-0.1.28/vendor/vibeio/src/op/symlink.rs +92 -0
  89. rsloop-0.1.28/vendor/vibeio/src/op/unlink.rs +90 -0
  90. rsloop-0.1.28/vendor/vibeio/src/op/waitpid.rs +233 -0
  91. rsloop-0.1.28/vendor/vibeio/src/op/write.rs +289 -0
  92. rsloop-0.1.28/vendor/vibeio/src/op/writeat.rs +165 -0
  93. rsloop-0.1.28/vendor/vibeio/src/op/writev.rs +363 -0
  94. rsloop-0.1.28/vendor/vibeio/src/process/mod.rs +1064 -0
  95. rsloop-0.1.28/vendor/vibeio/src/process/reaper.rs +329 -0
  96. rsloop-0.1.28/vendor/vibeio/src/signal/mod.rs +32 -0
  97. rsloop-0.1.28/vendor/vibeio/src/signal/unix.rs +526 -0
  98. rsloop-0.1.28/vendor/vibeio/src/signal/windows.rs +154 -0
  99. rsloop-0.1.28/vendor/vibeio/src/task.rs +124 -0
  100. rsloop-0.1.28/vendor/vibeio/src/time/interval.rs +145 -0
  101. rsloop-0.1.28/vendor/vibeio/src/time/mod.rs +130 -0
  102. rsloop-0.1.28/vendor/vibeio/src/time/sleep.rs +209 -0
  103. rsloop-0.1.28/vendor/vibeio/src/time/timeout.rs +104 -0
  104. rsloop-0.1.28/vendor/vibeio/src/timer.rs +791 -0
  105. rsloop-0.1.28/vendor/vibeio/src/util/async_wrap.rs +423 -0
  106. rsloop-0.1.28/vendor/vibeio/src/util/mod.rs +110 -0
  107. rsloop-0.1.26/benchmarks/README.md +0 -69
  108. rsloop-0.1.26/scripts/generate-test-tls-certs.sh +0 -97
  109. rsloop-0.1.26/src/runtime.rs +0 -845
  110. {rsloop-0.1.26 → rsloop-0.1.28}/.cargo/config.toml +0 -0
  111. {rsloop-0.1.26 → rsloop-0.1.28}/.github/workflows/mkdocs.yml +0 -0
  112. {rsloop-0.1.26 → rsloop-0.1.28}/.github/workflows/tests.yml +0 -0
  113. {rsloop-0.1.26 → rsloop-0.1.28}/.github/workflows/wheels.yml +0 -0
  114. {rsloop-0.1.26 → rsloop-0.1.28}/.vscode/settings.json +0 -0
  115. {rsloop-0.1.26 → rsloop-0.1.28}/LICENSE +0 -0
  116. {rsloop-0.1.26 → rsloop-0.1.28}/build.rs +0 -0
  117. {rsloop-0.1.26 → rsloop-0.1.28}/demo/README.md +0 -0
  118. {rsloop-0.1.26 → rsloop-0.1.28}/demo/fastapi_service.py +0 -0
  119. {rsloop-0.1.26 → rsloop-0.1.28}/demo/picows_server.py +0 -0
  120. {rsloop-0.1.26 → rsloop-0.1.28}/demo/picows_test.py +0 -0
  121. {rsloop-0.1.26 → rsloop-0.1.28}/demo/wsbench_websockets.py +0 -0
  122. {rsloop-0.1.26 → rsloop-0.1.28}/docs/development.md +0 -0
  123. {rsloop-0.1.26 → rsloop-0.1.28}/docs/examples.md +0 -0
  124. {rsloop-0.1.26 → rsloop-0.1.28}/docs/getting-started.md +0 -0
  125. {rsloop-0.1.26 → rsloop-0.1.28}/docs/index.md +0 -0
  126. {rsloop-0.1.26 → rsloop-0.1.28}/docs/project-structure.md +0 -0
  127. {rsloop-0.1.26 → rsloop-0.1.28}/docs/rust-extensions.md +0 -0
  128. {rsloop-0.1.26 → rsloop-0.1.28}/examples/01_basics.py +0 -0
  129. {rsloop-0.1.26 → rsloop-0.1.28}/examples/02_fd_and_sockets.py +0 -0
  130. {rsloop-0.1.26 → rsloop-0.1.28}/examples/03_streams.py +0 -0
  131. {rsloop-0.1.26 → rsloop-0.1.28}/examples/04_unix_and_accepted_socket.py +0 -0
  132. {rsloop-0.1.26 → rsloop-0.1.28}/examples/05_pipes_signals_subprocesses.py +0 -0
  133. {rsloop-0.1.26 → rsloop-0.1.28}/mkdocs.yml +0 -0
  134. {rsloop-0.1.26 → rsloop-0.1.28}/python/rsloop/_run.py +0 -0
  135. {rsloop-0.1.26 → rsloop-0.1.28}/qualirs.toml +0 -0
  136. {rsloop-0.1.26 → rsloop-0.1.28}/rsloop.png +0 -0
  137. {rsloop-0.1.26 → rsloop-0.1.28}/scripts/build-wheels.sh +0 -0
  138. {rsloop-0.1.26 → rsloop-0.1.28}/scripts/python-versions.sh +0 -0
  139. {rsloop-0.1.26 → rsloop-0.1.28}/src/async_event.rs +0 -0
  140. {rsloop-0.1.26 → rsloop-0.1.28}/src/blocking.rs +0 -0
  141. {rsloop-0.1.26 → rsloop-0.1.28}/src/callbacks.rs +0 -0
  142. {rsloop-0.1.26 → rsloop-0.1.28}/src/context.rs +0 -0
  143. {rsloop-0.1.26 → rsloop-0.1.28}/src/errors.rs +0 -0
  144. {rsloop-0.1.26 → rsloop-0.1.28}/src/fd_ops/windows.rs +0 -0
  145. {rsloop-0.1.26 → rsloop-0.1.28}/src/process_transport.rs +0 -0
  146. {rsloop-0.1.26 → rsloop-0.1.28}/src/python_api/pre_exec.rs +0 -0
  147. {rsloop-0.1.26 → rsloop-0.1.28}/src/python_api/process_handles.rs +0 -0
  148. {rsloop-0.1.26 → rsloop-0.1.28}/src/runtime/timer_entry.rs +0 -0
  149. {rsloop-0.1.26 → rsloop-0.1.28}/src/rust_async.rs +0 -0
  150. {rsloop-0.1.26 → rsloop-0.1.28}/src/tls/material.rs +0 -0
  151. {rsloop-0.1.26 → rsloop-0.1.28}/src/windows_vibeio.rs +0 -0
  152. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/_smoke.py +0 -0
  153. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/aiohttp_test.py +0 -0
  154. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/django_asgi_test.py +0 -0
  155. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/falcon_test.py +0 -0
  156. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/fastapi_test.py +0 -0
  157. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/faststream_test.py +0 -0
  158. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/litestar_granian_test.py +0 -0
  159. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/litestar_test.py +0 -0
  160. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/quart_test.py +0 -0
  161. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/sanic_test.py +0 -0
  162. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/starlette_test.py +0 -0
  163. {rsloop-0.1.26 → rsloop-0.1.28}/tests/packages/uvicorn_test.py +0 -0
  164. {rsloop-0.1.26 → rsloop-0.1.28}/tests/test_run.py +0 -0
@@ -9,6 +9,7 @@ tmp/
9
9
  *.pyd
10
10
 
11
11
  python/rsloop/_loop.*
12
+ python/rsloop/rsloop.pdb
12
13
 
13
14
  benchmarks/profiles*
14
15
  benchmarks/compare_event_loops.results.json
@@ -11,12 +11,6 @@ dependencies = [
11
11
  "memchr",
12
12
  ]
13
13
 
14
- [[package]]
15
- name = "arrayvec"
16
- version = "0.7.6"
17
- source = "registry+https://github.com/rust-lang/crates.io-index"
18
- checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
19
-
20
14
  [[package]]
21
15
  name = "async-channel"
22
16
  version = "1.9.0"
@@ -256,12 +250,6 @@ version = "1.0.4"
256
250
  source = "registry+https://github.com/rust-lang/crates.io-index"
257
251
  checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
258
252
 
259
- [[package]]
260
- name = "cfg_aliases"
261
- version = "0.2.1"
262
- source = "registry+https://github.com/rust-lang/crates.io-index"
263
- checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
264
-
265
253
  [[package]]
266
254
  name = "cmake"
267
255
  version = "0.1.58"
@@ -271,164 +259,6 @@ dependencies = [
271
259
  "cc",
272
260
  ]
273
261
 
274
- [[package]]
275
- name = "compio"
276
- version = "0.19.1"
277
- source = "registry+https://github.com/rust-lang/crates.io-index"
278
- checksum = "e5cf9e29d3c2d2a37078198795631b61d2b5c9cab68191e31526fe342d742135"
279
- dependencies = [
280
- "compio-buf",
281
- "compio-driver",
282
- "compio-io",
283
- "compio-log",
284
- "compio-net",
285
- "compio-runtime",
286
- "compio-signal",
287
- ]
288
-
289
- [[package]]
290
- name = "compio-buf"
291
- version = "0.8.3"
292
- source = "registry+https://github.com/rust-lang/crates.io-index"
293
- checksum = "b51a2c35873865376ed4cdb6cfeb602b6cf569815f017ddd7bd8f86ad49b34c7"
294
- dependencies = [
295
- "arrayvec",
296
- "bytes",
297
- "libc",
298
- ]
299
-
300
- [[package]]
301
- name = "compio-driver"
302
- version = "0.12.3"
303
- source = "registry+https://github.com/rust-lang/crates.io-index"
304
- checksum = "a580d231c022f336ccb7a2e133eaf56e34bf586417176a1a8d392a4a6e9a41f4"
305
- dependencies = [
306
- "bitflags 2.13.0",
307
- "cfg_aliases",
308
- "compio-buf",
309
- "compio-log",
310
- "compio-send-wrapper",
311
- "crossbeam-queue",
312
- "flume",
313
- "futures-util",
314
- "io-uring 0.7.12",
315
- "libc",
316
- "linux-raw-sys",
317
- "mod_use",
318
- "once_cell",
319
- "pastey",
320
- "polling",
321
- "rustix",
322
- "smallvec",
323
- "socket2",
324
- "synchrony",
325
- "thin-cell",
326
- "windows-sys 0.61.2",
327
- ]
328
-
329
- [[package]]
330
- name = "compio-executor"
331
- version = "0.1.2"
332
- source = "registry+https://github.com/rust-lang/crates.io-index"
333
- checksum = "809fc31e0180a97ea760300b9aa97d99fbb19c9831cc49cebfd5a98f44a8371b"
334
- dependencies = [
335
- "compio-log",
336
- "compio-send-wrapper",
337
- "crossbeam-queue",
338
- "loom",
339
- "slotmap",
340
- ]
341
-
342
- [[package]]
343
- name = "compio-io"
344
- version = "0.10.1"
345
- source = "registry+https://github.com/rust-lang/crates.io-index"
346
- checksum = "c3a354e085c4046dd8d2d9d514cf8c15c615eb8adf6c5f41dbf7899420457e9b"
347
- dependencies = [
348
- "compio-buf",
349
- "futures-util",
350
- "libc",
351
- "pastey",
352
- "pin-project-lite",
353
- "rustix",
354
- "synchrony",
355
- "windows-sys 0.61.2",
356
- ]
357
-
358
- [[package]]
359
- name = "compio-log"
360
- version = "0.2.0"
361
- source = "registry+https://github.com/rust-lang/crates.io-index"
362
- checksum = "ef39fff6341af7ab6c27fae9a3887e1ec618320d43f3b9c924c7a644f693a859"
363
- dependencies = [
364
- "tracing",
365
- ]
366
-
367
- [[package]]
368
- name = "compio-net"
369
- version = "0.12.1"
370
- source = "registry+https://github.com/rust-lang/crates.io-index"
371
- checksum = "0a985ea5d7580318104d44f4a3c8ae48a7ee750e9c98b68a69a869e01d4d6df0"
372
- dependencies = [
373
- "compio-buf",
374
- "compio-driver",
375
- "compio-io",
376
- "compio-runtime",
377
- "either",
378
- "futures-util",
379
- "libc",
380
- "once_cell",
381
- "pin-project-lite",
382
- "socket2",
383
- "synchrony",
384
- "widestring",
385
- "windows-sys 0.61.2",
386
- ]
387
-
388
- [[package]]
389
- name = "compio-runtime"
390
- version = "0.12.2"
391
- source = "registry+https://github.com/rust-lang/crates.io-index"
392
- checksum = "dde4b0b7de96fc8b99e089964d65e9ed5669f8ea39bc46381f7fd563dc10a753"
393
- dependencies = [
394
- "compio-buf",
395
- "compio-driver",
396
- "compio-executor",
397
- "compio-io",
398
- "compio-log",
399
- "compio-send-wrapper",
400
- "core_affinity",
401
- "futures-util",
402
- "libc",
403
- "pin-project-lite",
404
- "scoped-tls",
405
- "synchrony",
406
- "windows-sys 0.61.2",
407
- ]
408
-
409
- [[package]]
410
- name = "compio-send-wrapper"
411
- version = "0.7.1"
412
- source = "registry+https://github.com/rust-lang/crates.io-index"
413
- checksum = "4f1ef3947d751725afe49ab18ce447d819cd8f4ea9b58ae94b8498eb8ad1f864"
414
- dependencies = [
415
- "cfg-if",
416
- "loom",
417
- ]
418
-
419
- [[package]]
420
- name = "compio-signal"
421
- version = "0.10.0"
422
- source = "registry+https://github.com/rust-lang/crates.io-index"
423
- checksum = "b1748b284601a5a267824b36894c7fc5e488b503f14a0a508f3b457ae018a451"
424
- dependencies = [
425
- "nix",
426
- "once_cell",
427
- "slab",
428
- "synchrony",
429
- "windows-sys 0.61.2",
430
- ]
431
-
432
262
  [[package]]
433
263
  name = "concurrent-queue"
434
264
  version = "2.5.0"
@@ -454,17 +284,6 @@ version = "0.8.7"
454
284
  source = "registry+https://github.com/rust-lang/crates.io-index"
455
285
  checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
456
286
 
457
- [[package]]
458
- name = "core_affinity"
459
- version = "0.8.3"
460
- source = "registry+https://github.com/rust-lang/crates.io-index"
461
- checksum = "a034b3a7b624016c6e13f5df875747cc25f884156aad2abd12b6c46797971342"
462
- dependencies = [
463
- "libc",
464
- "num_cpus",
465
- "winapi",
466
- ]
467
-
468
287
  [[package]]
469
288
  name = "crossbeam-channel"
470
289
  version = "0.5.15"
@@ -495,12 +314,6 @@ version = "1.0.5"
495
314
  source = "registry+https://github.com/rust-lang/crates.io-index"
496
315
  checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
497
316
 
498
- [[package]]
499
- name = "either"
500
- version = "1.16.0"
501
- source = "registry+https://github.com/rust-lang/crates.io-index"
502
- checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
503
-
504
317
  [[package]]
505
318
  name = "errno"
506
319
  version = "0.3.14"
@@ -550,15 +363,6 @@ version = "0.1.9"
550
363
  source = "registry+https://github.com/rust-lang/crates.io-index"
551
364
  checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
552
365
 
553
- [[package]]
554
- name = "flume"
555
- version = "0.12.0"
556
- source = "registry+https://github.com/rust-lang/crates.io-index"
557
- checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be"
558
- dependencies = [
559
- "spin",
560
- ]
561
-
562
366
  [[package]]
563
367
  name = "fs_extra"
564
368
  version = "1.3.0"
@@ -726,23 +530,6 @@ dependencies = [
726
530
  "libc",
727
531
  ]
728
532
 
729
- [[package]]
730
- name = "io-uring"
731
- version = "0.7.12"
732
- source = "registry+https://github.com/rust-lang/crates.io-index"
733
- checksum = "4d09b98f7eace8982db770e4408e7470b028ce513ac28fecdc6bf4c30fe92b62"
734
- dependencies = [
735
- "bitflags 2.13.0",
736
- "cfg-if",
737
- "libc",
738
- ]
739
-
740
- [[package]]
741
- name = "itoa"
742
- version = "1.0.18"
743
- source = "registry+https://github.com/rust-lang/crates.io-index"
744
- checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
745
-
746
533
  [[package]]
747
534
  name = "jobserver"
748
535
  version = "0.1.34"
@@ -791,21 +578,6 @@ version = "0.12.1"
791
578
  source = "registry+https://github.com/rust-lang/crates.io-index"
792
579
  checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
793
580
 
794
- [[package]]
795
- name = "local-event"
796
- version = "0.1.2"
797
- source = "registry+https://github.com/rust-lang/crates.io-index"
798
- checksum = "76dda8459b10a8960dfae91c1c77316fc15e7caf94f9f18794126512a8dc77e5"
799
-
800
- [[package]]
801
- name = "lock_api"
802
- version = "0.4.14"
803
- source = "registry+https://github.com/rust-lang/crates.io-index"
804
- checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
805
- dependencies = [
806
- "scopeguard",
807
- ]
808
-
809
581
  [[package]]
810
582
  name = "log"
811
583
  version = "0.4.33"
@@ -823,10 +595,7 @@ checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"
823
595
  dependencies = [
824
596
  "cfg-if",
825
597
  "generator",
826
- "pin-utils",
827
598
  "scoped-tls",
828
- "serde",
829
- "serde_json",
830
599
  "tracing",
831
600
  "tracing-subscriber",
832
601
  ]
@@ -858,24 +627,6 @@ dependencies = [
858
627
  "windows-sys 0.61.2",
859
628
  ]
860
629
 
861
- [[package]]
862
- name = "mod_use"
863
- version = "0.2.3"
864
- source = "registry+https://github.com/rust-lang/crates.io-index"
865
- checksum = "21909324aa58f5c284d91cac514c6d081210901dc372d7c8ea6a9d7e0406097a"
866
-
867
- [[package]]
868
- name = "nix"
869
- version = "0.31.3"
870
- source = "registry+https://github.com/rust-lang/crates.io-index"
871
- checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d"
872
- dependencies = [
873
- "bitflags 2.13.0",
874
- "cfg-if",
875
- "cfg_aliases",
876
- "libc",
877
- ]
878
-
879
630
  [[package]]
880
631
  name = "nu-ansi-term"
881
632
  version = "0.50.3"
@@ -885,16 +636,6 @@ dependencies = [
885
636
  "windows-sys 0.61.2",
886
637
  ]
887
638
 
888
- [[package]]
889
- name = "num_cpus"
890
- version = "1.17.0"
891
- source = "registry+https://github.com/rust-lang/crates.io-index"
892
- checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
893
- dependencies = [
894
- "hermit-abi",
895
- "libc",
896
- ]
897
-
898
639
  [[package]]
899
640
  name = "once_cell"
900
641
  version = "1.21.4"
@@ -919,12 +660,6 @@ version = "2.2.1"
919
660
  source = "registry+https://github.com/rust-lang/crates.io-index"
920
661
  checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
921
662
 
922
- [[package]]
923
- name = "pastey"
924
- version = "0.2.3"
925
- source = "registry+https://github.com/rust-lang/crates.io-index"
926
- checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4"
927
-
928
663
  [[package]]
929
664
  name = "pin-project-lite"
930
665
  version = "0.2.17"
@@ -1116,10 +851,10 @@ dependencies = [
1116
851
 
1117
852
  [[package]]
1118
853
  name = "rsloop"
1119
- version = "0.1.26"
854
+ version = "0.1.28"
1120
855
  dependencies = [
856
+ "async-io",
1121
857
  "async-std",
1122
- "compio",
1123
858
  "crossbeam-channel",
1124
859
  "futures",
1125
860
  "libc",
@@ -1229,12 +964,6 @@ version = "1.0.1"
1229
964
  source = "registry+https://github.com/rust-lang/crates.io-index"
1230
965
  checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
1231
966
 
1232
- [[package]]
1233
- name = "scopeguard"
1234
- version = "1.2.0"
1235
- source = "registry+https://github.com/rust-lang/crates.io-index"
1236
- checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
1237
-
1238
967
  [[package]]
1239
968
  name = "security-framework"
1240
969
  version = "3.7.0"
@@ -1258,49 +987,6 @@ dependencies = [
1258
987
  "libc",
1259
988
  ]
1260
989
 
1261
- [[package]]
1262
- name = "serde"
1263
- version = "1.0.228"
1264
- source = "registry+https://github.com/rust-lang/crates.io-index"
1265
- checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
1266
- dependencies = [
1267
- "serde_core",
1268
- "serde_derive",
1269
- ]
1270
-
1271
- [[package]]
1272
- name = "serde_core"
1273
- version = "1.0.228"
1274
- source = "registry+https://github.com/rust-lang/crates.io-index"
1275
- checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
1276
- dependencies = [
1277
- "serde_derive",
1278
- ]
1279
-
1280
- [[package]]
1281
- name = "serde_derive"
1282
- version = "1.0.228"
1283
- source = "registry+https://github.com/rust-lang/crates.io-index"
1284
- checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
1285
- dependencies = [
1286
- "proc-macro2",
1287
- "quote",
1288
- "syn",
1289
- ]
1290
-
1291
- [[package]]
1292
- name = "serde_json"
1293
- version = "1.0.150"
1294
- source = "registry+https://github.com/rust-lang/crates.io-index"
1295
- checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
1296
- dependencies = [
1297
- "itoa",
1298
- "memchr",
1299
- "serde",
1300
- "serde_core",
1301
- "zmij",
1302
- ]
1303
-
1304
990
  [[package]]
1305
991
  name = "sharded-slab"
1306
992
  version = "0.1.7"
@@ -1342,15 +1028,6 @@ version = "0.4.12"
1342
1028
  source = "registry+https://github.com/rust-lang/crates.io-index"
1343
1029
  checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
1344
1030
 
1345
- [[package]]
1346
- name = "slotmap"
1347
- version = "1.1.1"
1348
- source = "registry+https://github.com/rust-lang/crates.io-index"
1349
- checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038"
1350
- dependencies = [
1351
- "version_check",
1352
- ]
1353
-
1354
1031
  [[package]]
1355
1032
  name = "smallvec"
1356
1033
  version = "1.15.2"
@@ -1367,15 +1044,6 @@ dependencies = [
1367
1044
  "windows-sys 0.61.2",
1368
1045
  ]
1369
1046
 
1370
- [[package]]
1371
- name = "spin"
1372
- version = "0.9.8"
1373
- source = "registry+https://github.com/rust-lang/crates.io-index"
1374
- checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
1375
- dependencies = [
1376
- "lock_api",
1377
- ]
1378
-
1379
1047
  [[package]]
1380
1048
  name = "subtle"
1381
1049
  version = "2.6.1"
@@ -1393,33 +1061,12 @@ dependencies = [
1393
1061
  "unicode-ident",
1394
1062
  ]
1395
1063
 
1396
- [[package]]
1397
- name = "synchrony"
1398
- version = "0.1.8"
1399
- source = "registry+https://github.com/rust-lang/crates.io-index"
1400
- checksum = "416090a4d8f6358526df5f9f65dfe28750b8b7bfd1fd8a5620f483fc4a75722c"
1401
- dependencies = [
1402
- "event-listener 5.4.1",
1403
- "futures-util",
1404
- "local-event",
1405
- "loom",
1406
- ]
1407
-
1408
1064
  [[package]]
1409
1065
  name = "target-lexicon"
1410
1066
  version = "0.13.5"
1411
1067
  source = "registry+https://github.com/rust-lang/crates.io-index"
1412
1068
  checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
1413
1069
 
1414
- [[package]]
1415
- name = "thin-cell"
1416
- version = "0.2.1"
1417
- source = "registry+https://github.com/rust-lang/crates.io-index"
1418
- checksum = "a9d3c47fea6e344ef1ac01be266c27945ec30ae8049c3292c897f0878de5c784"
1419
- dependencies = [
1420
- "synchrony",
1421
- ]
1422
-
1423
1070
  [[package]]
1424
1071
  name = "thread_local"
1425
1072
  version = "1.1.9"
@@ -1533,21 +1180,13 @@ version = "1.12.0"
1533
1180
  source = "registry+https://github.com/rust-lang/crates.io-index"
1534
1181
  checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0"
1535
1182
 
1536
- [[package]]
1537
- name = "version_check"
1538
- version = "0.9.5"
1539
- source = "registry+https://github.com/rust-lang/crates.io-index"
1540
- checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
1541
-
1542
1183
  [[package]]
1543
1184
  name = "vibeio"
1544
1185
  version = "0.2.15"
1545
- source = "registry+https://github.com/rust-lang/crates.io-index"
1546
- checksum = "63b968e30d91bc5c14d23f9af184f26ea7f0d886ab309d11b37148b244d7dfa4"
1547
1186
  dependencies = [
1548
1187
  "crossbeam-queue",
1549
1188
  "futures-util",
1550
- "io-uring 0.6.4",
1189
+ "io-uring",
1551
1190
  "libc",
1552
1191
  "mio",
1553
1192
  "oneshot",
@@ -1626,34 +1265,6 @@ dependencies = [
1626
1265
  "unicode-ident",
1627
1266
  ]
1628
1267
 
1629
- [[package]]
1630
- name = "widestring"
1631
- version = "1.2.1"
1632
- source = "registry+https://github.com/rust-lang/crates.io-index"
1633
- checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471"
1634
-
1635
- [[package]]
1636
- name = "winapi"
1637
- version = "0.3.9"
1638
- source = "registry+https://github.com/rust-lang/crates.io-index"
1639
- checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
1640
- dependencies = [
1641
- "winapi-i686-pc-windows-gnu",
1642
- "winapi-x86_64-pc-windows-gnu",
1643
- ]
1644
-
1645
- [[package]]
1646
- name = "winapi-i686-pc-windows-gnu"
1647
- version = "0.4.0"
1648
- source = "registry+https://github.com/rust-lang/crates.io-index"
1649
- checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
1650
-
1651
- [[package]]
1652
- name = "winapi-x86_64-pc-windows-gnu"
1653
- version = "0.4.0"
1654
- source = "registry+https://github.com/rust-lang/crates.io-index"
1655
- checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
1656
-
1657
1268
  [[package]]
1658
1269
  name = "windows-link"
1659
1270
  version = "0.2.1"
@@ -1762,9 +1373,3 @@ name = "zeroize"
1762
1373
  version = "1.8.2"
1763
1374
  source = "registry+https://github.com/rust-lang/crates.io-index"
1764
1375
  checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
1765
-
1766
- [[package]]
1767
- name = "zmij"
1768
- version = "1.0.21"
1769
- source = "registry+https://github.com/rust-lang/crates.io-index"
1770
- checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rsloop"
3
- version = "0.1.26"
3
+ version = "0.1.28"
4
4
  edition = "2024"
5
5
  description = "An event loop for asyncio written in Rust"
6
6
  license = "Apache-2.0"
@@ -18,8 +18,8 @@ default = []
18
18
  profiler = ["dep:tracy-client", "profiling/profile-with-tracy"]
19
19
 
20
20
  [dependencies]
21
+ async-io = "2"
21
22
  async-std = "1"
22
- compio = { version = "0.19", default-features = false, features = ["runtime", "net", "io", "signal", "time", "io-uring"] }
23
23
  crossbeam-channel = "0.5"
24
24
  futures = { version = "0.3", default-features = false, features = ["std"] }
25
25
  libc = "0.2"
@@ -31,12 +31,12 @@ rustls-native-certs = "0.8"
31
31
  rustls-pemfile = "2"
32
32
  signal-hook = "0.4"
33
33
  socket2 = "0.6"
34
+ tokio = { version = "1", default-features = false, features = ["io-util"] }
34
35
  tracy-client = { version = "0.18", default-features = false, features = ["enable", "only-localhost", "sampling"], optional = true }
36
+ vibeio = { path = "vendor/vibeio", default-features = false, features = ["time"] }
35
37
 
36
38
  [target.'cfg(windows)'.dependencies]
37
- tokio = { version = "1", default-features = false, features = ["io-util"] }
38
- vibeio = { version = "0.2.15", default-features = false }
39
- windows-sys = { version = "0.61", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_System_Pipes", "Win32_System_Threading"] }
39
+ windows-sys = { version = "0.61", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_Threading"] }
40
40
 
41
41
  [build-dependencies]
42
42
  pyo3-build-config = "0.29"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rsloop
3
- Version: 0.1.26
3
+ Version: 0.1.28
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: Apache Software License
@@ -41,11 +41,11 @@ Project-URL: Repository, https://github.com/RustedBytes/rsloop
41
41
  `rsloop` is a PyO3-based `asyncio` event loop implemented in Rust.
42
42
 
43
43
  Each `rsloop.Loop` owns a dedicated Rust runtime thread for loop coordination
44
- and I/O work. On Linux, low-level fd watchers plus plain TCP / Unix socket
45
- readiness, socket reads, and non-TLS server accepts are driven from that thread
46
- through `compio` with `io_uring` support enabled. Python callbacks, tasks, and
47
- coroutines still run on the thread that calls `run_forever()` or
48
- `run_until_complete()` (usually the main Python thread).
44
+ and I/O work. That thread runs a `vibeio` runtime, using io_uring on Linux,
45
+ IOCP on Windows, and mio-backed readiness on other supported platforms. Plain
46
+ TCP / Unix socket reads and non-TLS server accepts run on that runtime. Python
47
+ callbacks, tasks, and coroutines still run on the thread that calls
48
+ `run_forever()` or `run_until_complete()` (usually the main Python thread).
49
49
 
50
50
  The package exposes:
51
51
 
@@ -239,16 +239,18 @@ is backed by the lower level transport code in
239
239
 
240
240
  ## Runtime Model
241
241
 
242
- Today the runtime is hybrid rather than fully single-threaded:
242
+ The runtime is centered on one `vibeio` runtime per loop:
243
243
 
244
244
  - the loop coordination thread is always the central scheduler
245
- - on Linux, `add_reader` / `add_writer`, plain socket reads, and non-TLS socket
246
- accept loops use the `compio` runtime on that thread
245
+ - plain TCP / Unix socket reads and non-TLS accept loops use `vibeio` on that
246
+ thread across supported platforms
247
+ - generic `add_reader` / `add_writer` descriptors use cancellable OS-poll
248
+ workers because `vibeio` does not expose arbitrary raw-descriptor registration
247
249
  - some transport paths still fall back to helper threads, especially TLS I/O,
248
250
  TLS server accept, and parts of the legacy transport write path
249
251
 
250
- That means the codebase has started the move toward a single-runtime-thread I/O
251
- model, but has not finished eliminating every helper thread yet.
252
+ The runtime dependency is now unified, but the codebase has not finished
253
+ eliminating every helper thread yet.
252
254
 
253
255
  ## Current Limitations
254
256
 
@@ -258,7 +260,7 @@ These gaps are visible in the current implementation.
258
260
  CPython's OpenSSL-backed `ssl` module. In particular, encrypted private keys
259
261
  are not supported yet, and the fast-stream monkeypatch still falls back to
260
262
  stdlib helpers whenever `ssl` is enabled. TLS transport internals also still
261
- use helper-thread paths instead of the newer runtime-thread `compio` socket
263
+ use helper-thread paths instead of the runtime-thread `vibeio` socket
262
264
  path.
263
265
  - Subprocess support still has one notable gap:
264
266
  `preexec_fn` remains unsupported because running arbitrary Python between
@@ -272,8 +274,9 @@ These gaps are visible in the current implementation.
272
274
  still specific to Unix process spawning.
273
275
  - The transport runtime model is still in transition:
274
276
  plain socket reads and non-TLS accepts now run on the loop runtime thread on
275
- Linux, but writes and TLS-heavy paths are not fully collapsed onto that same
276
- single-threaded I/O path yet.
277
+ all supported platforms, but generic descriptor watches, writes, and
278
+ TLS-heavy paths are not fully collapsed onto that same single-threaded I/O
279
+ path yet.
277
280
 
278
281
  ## Build
279
282
 
@@ -408,10 +411,7 @@ comparison demo.
408
411
  ## Acknowledgements
409
412
 
410
413
  `rsloop` builds on the Python `asyncio` model and is implemented with
411
- [PyO3](https://pyo3.rs/) on the Rust side. The runtime and I/O work in the
412
- current implementation rely in part on
413
- [compio](https://github.com/compio-rs/compio). On Windows, parts of the
414
- runtime also rely on
414
+ [PyO3](https://pyo3.rs/) on the Rust side. Runtime and socket I/O are powered by
415
415
  [vibeio](https://crates.io/crates/vibeio).
416
416
 
417
417
  ## License