itsi-scheduler 0.1.5 → 0.2.3

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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +187 -62
  3. data/README.md +57 -24
  4. data/Rakefile +0 -4
  5. data/ext/itsi_acme/Cargo.toml +86 -0
  6. data/ext/itsi_acme/examples/high_level.rs +63 -0
  7. data/ext/itsi_acme/examples/high_level_warp.rs +52 -0
  8. data/ext/itsi_acme/examples/low_level.rs +87 -0
  9. data/ext/itsi_acme/examples/low_level_axum.rs +66 -0
  10. data/ext/itsi_acme/src/acceptor.rs +81 -0
  11. data/ext/itsi_acme/src/acme.rs +354 -0
  12. data/ext/itsi_acme/src/axum.rs +86 -0
  13. data/ext/itsi_acme/src/cache.rs +39 -0
  14. data/ext/itsi_acme/src/caches/boxed.rs +80 -0
  15. data/ext/itsi_acme/src/caches/composite.rs +69 -0
  16. data/ext/itsi_acme/src/caches/dir.rs +106 -0
  17. data/ext/itsi_acme/src/caches/mod.rs +11 -0
  18. data/ext/itsi_acme/src/caches/no.rs +78 -0
  19. data/ext/itsi_acme/src/caches/test.rs +136 -0
  20. data/ext/itsi_acme/src/config.rs +172 -0
  21. data/ext/itsi_acme/src/https_helper.rs +69 -0
  22. data/ext/itsi_acme/src/incoming.rs +142 -0
  23. data/ext/itsi_acme/src/jose.rs +161 -0
  24. data/ext/itsi_acme/src/lib.rs +142 -0
  25. data/ext/itsi_acme/src/resolver.rs +59 -0
  26. data/ext/itsi_acme/src/state.rs +424 -0
  27. data/ext/itsi_error/Cargo.toml +1 -0
  28. data/ext/itsi_error/src/lib.rs +106 -7
  29. data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/common.rs +355 -0
  30. data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/dynamic.rs +276 -0
  31. data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/macros.rs +49 -0
  32. data/ext/itsi_error/target/debug/build/rb-sys-49f554618693db24/out/bindings-0.9.110-mri-arm64-darwin23-3.4.2.rs +8865 -0
  33. data/ext/itsi_error/target/debug/incremental/itsi_error-1mmt5sux7jb0i/s-h510z7m8v9-0bxu7yd.lock +0 -0
  34. data/ext/itsi_error/target/debug/incremental/itsi_error-2vn3jey74oiw0/s-h5113n0e7e-1v5qzs6.lock +0 -0
  35. data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510ykifhe-0tbnep2.lock +0 -0
  36. data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510yyocpj-0tz7ug7.lock +0 -0
  37. data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510z0xc8g-14ol18k.lock +0 -0
  38. data/ext/itsi_error/target/debug/incremental/itsi_error-3g5qf4y7d54uj/s-h5113n0e7d-1trk8on.lock +0 -0
  39. data/ext/itsi_error/target/debug/incremental/itsi_error-3lpfftm45d3e2/s-h510z7m8r3-1pxp20o.lock +0 -0
  40. data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510ykifek-1uxasnk.lock +0 -0
  41. data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510yyocki-11u37qm.lock +0 -0
  42. data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510z0xc93-0pmy0zm.lock +0 -0
  43. data/ext/itsi_rb_helpers/Cargo.toml +1 -0
  44. data/ext/itsi_rb_helpers/src/heap_value.rs +18 -0
  45. data/ext/itsi_rb_helpers/src/lib.rs +63 -12
  46. data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/common.rs +355 -0
  47. data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/dynamic.rs +276 -0
  48. data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/macros.rs +49 -0
  49. data/ext/itsi_rb_helpers/target/debug/build/rb-sys-eb9ed4ff3a60f995/out/bindings-0.9.110-mri-arm64-darwin23-3.4.2.rs +8865 -0
  50. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-040pxg6yhb3g3/s-h5113n7a1b-03bwlt4.lock +0 -0
  51. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-131g1u4dzkt1a/s-h51113xnh3-1eik1ip.lock +0 -0
  52. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-131g1u4dzkt1a/s-h5111704jj-0g4rj8x.lock +0 -0
  53. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-1q2d3drtxrzs5/s-h5113n79yl-0bxcqc5.lock +0 -0
  54. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-374a9h7ovycj0/s-h51113xoox-10de2hp.lock +0 -0
  55. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-374a9h7ovycj0/s-h5111704w7-0vdq7gq.lock +0 -0
  56. data/ext/itsi_scheduler/Cargo.toml +1 -1
  57. data/ext/itsi_scheduler/src/itsi_scheduler.rs +9 -3
  58. data/ext/itsi_scheduler/src/lib.rs +1 -0
  59. data/ext/itsi_server/Cargo.lock +2956 -0
  60. data/ext/itsi_server/Cargo.toml +73 -29
  61. data/ext/itsi_server/src/default_responses/mod.rs +11 -0
  62. data/ext/itsi_server/src/env.rs +43 -0
  63. data/ext/itsi_server/src/lib.rs +114 -75
  64. data/ext/itsi_server/src/prelude.rs +2 -0
  65. data/ext/itsi_server/src/{body_proxy → ruby_types/itsi_body_proxy}/big_bytes.rs +10 -5
  66. data/ext/itsi_server/src/{body_proxy/itsi_body_proxy.rs → ruby_types/itsi_body_proxy/mod.rs} +29 -8
  67. data/ext/itsi_server/src/ruby_types/itsi_grpc_call.rs +344 -0
  68. data/ext/itsi_server/src/ruby_types/itsi_grpc_response_stream/mod.rs +264 -0
  69. data/ext/itsi_server/src/ruby_types/itsi_http_request.rs +362 -0
  70. data/ext/itsi_server/src/{response/itsi_response.rs → ruby_types/itsi_http_response.rs} +84 -40
  71. data/ext/itsi_server/src/ruby_types/itsi_server/file_watcher.rs +233 -0
  72. data/ext/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +588 -0
  73. data/ext/itsi_server/src/ruby_types/itsi_server.rs +86 -0
  74. data/ext/itsi_server/src/ruby_types/mod.rs +48 -0
  75. data/ext/itsi_server/src/server/{bind.rs → binds/bind.rs} +59 -24
  76. data/ext/itsi_server/src/server/binds/listener.rs +444 -0
  77. data/ext/itsi_server/src/server/binds/mod.rs +4 -0
  78. data/ext/itsi_server/src/server/{tls → binds/tls}/locked_dir_cache.rs +57 -19
  79. data/ext/itsi_server/src/server/{tls.rs → binds/tls.rs} +120 -31
  80. data/ext/itsi_server/src/server/byte_frame.rs +32 -0
  81. data/ext/itsi_server/src/server/http_message_types.rs +97 -0
  82. data/ext/itsi_server/src/server/io_stream.rs +2 -1
  83. data/ext/itsi_server/src/server/lifecycle_event.rs +3 -0
  84. data/ext/itsi_server/src/server/middleware_stack/middleware.rs +170 -0
  85. data/ext/itsi_server/src/server/middleware_stack/middlewares/allow_list.rs +63 -0
  86. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_api_key.rs +94 -0
  87. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_basic.rs +94 -0
  88. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_jwt.rs +343 -0
  89. data/ext/itsi_server/src/server/middleware_stack/middlewares/cache_control.rs +151 -0
  90. data/ext/itsi_server/src/server/middleware_stack/middlewares/compression.rs +316 -0
  91. data/ext/itsi_server/src/server/middleware_stack/middlewares/cors.rs +301 -0
  92. data/ext/itsi_server/src/server/middleware_stack/middlewares/csp.rs +193 -0
  93. data/ext/itsi_server/src/server/middleware_stack/middlewares/deny_list.rs +64 -0
  94. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response/default_responses.rs +192 -0
  95. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response.rs +171 -0
  96. data/ext/itsi_server/src/server/middleware_stack/middlewares/etag.rs +198 -0
  97. data/ext/itsi_server/src/server/middleware_stack/middlewares/header_interpretation.rs +82 -0
  98. data/ext/itsi_server/src/server/middleware_stack/middlewares/intrusion_protection.rs +209 -0
  99. data/ext/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs +82 -0
  100. data/ext/itsi_server/src/server/middleware_stack/middlewares/max_body.rs +47 -0
  101. data/ext/itsi_server/src/server/middleware_stack/middlewares/mod.rs +116 -0
  102. data/ext/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +411 -0
  103. data/ext/itsi_server/src/server/middleware_stack/middlewares/rate_limit.rs +142 -0
  104. data/ext/itsi_server/src/server/middleware_stack/middlewares/redirect.rs +55 -0
  105. data/ext/itsi_server/src/server/middleware_stack/middlewares/request_headers.rs +54 -0
  106. data/ext/itsi_server/src/server/middleware_stack/middlewares/response_headers.rs +51 -0
  107. data/ext/itsi_server/src/server/middleware_stack/middlewares/ruby_app.rs +126 -0
  108. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +187 -0
  109. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_response.rs +55 -0
  110. data/ext/itsi_server/src/server/middleware_stack/middlewares/string_rewrite.rs +173 -0
  111. data/ext/itsi_server/src/server/middleware_stack/middlewares/token_source.rs +31 -0
  112. data/ext/itsi_server/src/server/middleware_stack/mod.rs +381 -0
  113. data/ext/itsi_server/src/server/mod.rs +7 -5
  114. data/ext/itsi_server/src/server/process_worker.rs +65 -14
  115. data/ext/itsi_server/src/server/redirect_type.rs +26 -0
  116. data/ext/itsi_server/src/server/request_job.rs +11 -0
  117. data/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +150 -50
  118. data/ext/itsi_server/src/server/serve_strategy/mod.rs +9 -6
  119. data/ext/itsi_server/src/server/serve_strategy/single_mode.rs +399 -165
  120. data/ext/itsi_server/src/server/signal.rs +33 -26
  121. data/ext/itsi_server/src/server/size_limited_incoming.rs +107 -0
  122. data/ext/itsi_server/src/server/thread_worker.rs +218 -107
  123. data/ext/itsi_server/src/services/cache_store.rs +74 -0
  124. data/ext/itsi_server/src/services/itsi_http_service.rs +257 -0
  125. data/ext/itsi_server/src/services/mime_types.rs +1416 -0
  126. data/ext/itsi_server/src/services/mod.rs +6 -0
  127. data/ext/itsi_server/src/services/password_hasher.rs +83 -0
  128. data/ext/itsi_server/src/services/rate_limiter.rs +580 -0
  129. data/ext/itsi_server/src/services/static_file_server.rs +1340 -0
  130. data/ext/itsi_tracing/Cargo.toml +1 -0
  131. data/ext/itsi_tracing/src/lib.rs +362 -33
  132. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-0994n8rpvvt9m/s-h510hfz1f6-1kbycmq.lock +0 -0
  133. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-0bob7bf4yq34i/s-h5113125h5-0lh4rag.lock +0 -0
  134. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2fcodulrxbbxo/s-h510h2infk-0hp5kjw.lock +0 -0
  135. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2iak63r1woi1l/s-h510h2in4q-0kxfzw1.lock +0 -0
  136. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2kk4qj9gn5dg2/s-h5113124kv-0enwon2.lock +0 -0
  137. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2mwo0yas7dtw4/s-h510hfz1ha-1udgpei.lock +0 -0
  138. data/itsi-scheduler-100.png +0 -0
  139. data/lib/itsi/scheduler/version.rb +1 -1
  140. data/lib/itsi/scheduler.rb +11 -6
  141. metadata +119 -26
  142. data/CHANGELOG.md +0 -5
  143. data/CODE_OF_CONDUCT.md +0 -132
  144. data/LICENSE.txt +0 -21
  145. data/ext/itsi_error/src/from.rs +0 -71
  146. data/ext/itsi_server/extconf.rb +0 -6
  147. data/ext/itsi_server/src/body_proxy/mod.rs +0 -2
  148. data/ext/itsi_server/src/request/itsi_request.rs +0 -277
  149. data/ext/itsi_server/src/request/mod.rs +0 -1
  150. data/ext/itsi_server/src/response/mod.rs +0 -1
  151. data/ext/itsi_server/src/server/itsi_ca/itsi_ca.crt +0 -13
  152. data/ext/itsi_server/src/server/itsi_ca/itsi_ca.key +0 -5
  153. data/ext/itsi_server/src/server/itsi_server.rs +0 -244
  154. data/ext/itsi_server/src/server/listener.rs +0 -327
  155. /data/ext/itsi_server/src/server/{bind_protocol.rs → binds/bind_protocol.rs} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 75599726844e215e80b59ae8a95549e23024e4e070d768ca3f085a8fbb2591a9
4
- data.tar.gz: c84726c45c08562ad4b8ebd4a6c9eb4ebd1f50521afca027c1e6a69d8b2e4eb5
3
+ metadata.gz: 683d36dfdd824a4d0640252867beb3875fbe0406f29a421bdec7fb401f62a554
4
+ data.tar.gz: 822b0a8bf6b0f03308be76d35b738f2a39ea977c9e7de43e7c432a029540598b
5
5
  SHA512:
6
- metadata.gz: 0a944a2d952111520bf473853ec7b363ed16a53ddf4b0ae252c0fab36d70b4dedb561d55feab827d34c21b0d468cb6b0e978dba22584bc873092cc3d9515a7af
7
- data.tar.gz: 5e27924c41ebc8f6b84f8d1e507ff04d3d86d8326c2da21ca2cbe4b1fc703b7bd0026813cf8353775e126d562e25cae93ed8c03f714b07eb48c4d3e15b91fc94
6
+ metadata.gz: 70b32ef89c42624b44c5ad0dce35af94c3d685f13717e36b7897f422588a8254d20199d99502bcedf0bf332d4ebe8c1f567ec6bb0fc199b1adf9018aff2db8e3
7
+ data.tar.gz: 7c1b34f2bd362e310571e758fba867248dee214ad28d01a38872186b5f471258cf471bce4d07715431d8a164b14bb1580e162af5737e396d1d0509af9b007748
data/Cargo.lock CHANGED
@@ -11,6 +11,12 @@ dependencies = [
11
11
  "memchr",
12
12
  ]
13
13
 
14
+ [[package]]
15
+ name = "anyhow"
16
+ version = "1.0.98"
17
+ source = "registry+https://github.com/rust-lang/crates.io-index"
18
+ checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
19
+
14
20
  [[package]]
15
21
  name = "atty"
16
22
  version = "0.2.14"
@@ -51,14 +57,14 @@ dependencies = [
51
57
  "regex",
52
58
  "rustc-hash",
53
59
  "shlex",
54
- "syn 2.0.98",
60
+ "syn 2.0.100",
55
61
  ]
56
62
 
57
63
  [[package]]
58
64
  name = "bitflags"
59
- version = "2.8.0"
65
+ version = "2.9.0"
60
66
  source = "registry+https://github.com/rust-lang/crates.io-index"
61
- checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
67
+ checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
62
68
 
63
69
  [[package]]
64
70
  name = "bytes"
@@ -68,9 +74,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
68
74
 
69
75
  [[package]]
70
76
  name = "cc"
71
- version = "1.2.16"
77
+ version = "1.2.19"
72
78
  source = "registry+https://github.com/rust-lang/crates.io-index"
73
- checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c"
79
+ checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362"
74
80
  dependencies = [
75
81
  "shlex",
76
82
  ]
@@ -107,11 +113,26 @@ dependencies = [
107
113
  "libloading",
108
114
  ]
109
115
 
116
+ [[package]]
117
+ name = "crossbeam-channel"
118
+ version = "0.5.15"
119
+ source = "registry+https://github.com/rust-lang/crates.io-index"
120
+ checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
121
+ dependencies = [
122
+ "crossbeam-utils",
123
+ ]
124
+
125
+ [[package]]
126
+ name = "crossbeam-utils"
127
+ version = "0.8.21"
128
+ source = "registry+https://github.com/rust-lang/crates.io-index"
129
+ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
130
+
110
131
  [[package]]
111
132
  name = "deranged"
112
- version = "0.3.11"
133
+ version = "0.4.0"
113
134
  source = "registry+https://github.com/rust-lang/crates.io-index"
114
- checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
135
+ checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e"
115
136
  dependencies = [
116
137
  "powerfmt",
117
138
  ]
@@ -133,15 +154,15 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
133
154
  dependencies = [
134
155
  "proc-macro2",
135
156
  "quote",
136
- "syn 2.0.98",
157
+ "syn 2.0.100",
137
158
  "unicode-xid",
138
159
  ]
139
160
 
140
161
  [[package]]
141
162
  name = "either"
142
- version = "1.14.0"
163
+ version = "1.15.0"
143
164
  source = "registry+https://github.com/rust-lang/crates.io-index"
144
- checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d"
165
+ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
145
166
 
146
167
  [[package]]
147
168
  name = "getrandom"
@@ -192,7 +213,7 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
192
213
 
193
214
  [[package]]
194
215
  name = "itsi-scheduler"
195
- version = "0.1.0"
216
+ version = "0.2.3"
196
217
  dependencies = [
197
218
  "bytes",
198
219
  "derive_more",
@@ -212,11 +233,12 @@ dependencies = [
212
233
  name = "itsi_error"
213
234
  version = "0.1.0"
214
235
  dependencies = [
236
+ "anyhow",
215
237
  "httparse",
216
238
  "magnus",
217
239
  "nix",
218
240
  "rcgen",
219
- "thiserror",
241
+ "thiserror 2.0.12",
220
242
  ]
221
243
 
222
244
  [[package]]
@@ -236,6 +258,7 @@ dependencies = [
236
258
  "magnus",
237
259
  "nix",
238
260
  "rb-sys",
261
+ "serde",
239
262
  ]
240
263
 
241
264
  [[package]]
@@ -244,6 +267,7 @@ version = "0.1.0"
244
267
  dependencies = [
245
268
  "atty",
246
269
  "tracing",
270
+ "tracing-appender",
247
271
  "tracing-attributes",
248
272
  "tracing-subscriber",
249
273
  ]
@@ -262,9 +286,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
262
286
 
263
287
  [[package]]
264
288
  name = "libc"
265
- version = "0.2.170"
289
+ version = "0.2.172"
266
290
  source = "registry+https://github.com/rust-lang/crates.io-index"
267
- checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
291
+ checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
268
292
 
269
293
  [[package]]
270
294
  name = "libloading"
@@ -273,7 +297,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
273
297
  checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
274
298
  dependencies = [
275
299
  "cfg-if",
276
- "windows-targets",
300
+ "windows-targets 0.48.5",
277
301
  ]
278
302
 
279
303
  [[package]]
@@ -288,9 +312,9 @@ dependencies = [
288
312
 
289
313
  [[package]]
290
314
  name = "log"
291
- version = "0.4.26"
315
+ version = "0.4.27"
292
316
  source = "registry+https://github.com/rust-lang/crates.io-index"
293
- checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
317
+ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
294
318
 
295
319
  [[package]]
296
320
  name = "magnus"
@@ -313,7 +337,7 @@ checksum = "5968c820e2960565f647819f5928a42d6e874551cab9d88d75e3e0660d7f71e3"
313
337
  dependencies = [
314
338
  "proc-macro2",
315
339
  "quote",
316
- "syn 2.0.98",
340
+ "syn 2.0.100",
317
341
  ]
318
342
 
319
343
  [[package]]
@@ -389,9 +413,9 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
389
413
 
390
414
  [[package]]
391
415
  name = "once_cell"
392
- version = "1.20.3"
416
+ version = "1.21.3"
393
417
  source = "registry+https://github.com/rust-lang/crates.io-index"
394
- checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
418
+ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
395
419
 
396
420
  [[package]]
397
421
  name = "overload"
@@ -419,7 +443,7 @@ dependencies = [
419
443
  "libc",
420
444
  "redox_syscall",
421
445
  "smallvec",
422
- "windows-targets",
446
+ "windows-targets 0.52.6",
423
447
  ]
424
448
 
425
449
  [[package]]
@@ -446,18 +470,18 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
446
470
 
447
471
  [[package]]
448
472
  name = "proc-macro2"
449
- version = "1.0.93"
473
+ version = "1.0.95"
450
474
  source = "registry+https://github.com/rust-lang/crates.io-index"
451
- checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
475
+ checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
452
476
  dependencies = [
453
477
  "unicode-ident",
454
478
  ]
455
479
 
456
480
  [[package]]
457
481
  name = "quote"
458
- version = "1.0.38"
482
+ version = "1.0.40"
459
483
  source = "registry+https://github.com/rust-lang/crates.io-index"
460
- checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
484
+ checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
461
485
  dependencies = [
462
486
  "proc-macro2",
463
487
  ]
@@ -483,7 +507,7 @@ dependencies = [
483
507
  "quote",
484
508
  "regex",
485
509
  "shell-words",
486
- "syn 2.0.98",
510
+ "syn 2.0.100",
487
511
  ]
488
512
 
489
513
  [[package]]
@@ -507,9 +531,9 @@ dependencies = [
507
531
 
508
532
  [[package]]
509
533
  name = "redox_syscall"
510
- version = "0.5.10"
534
+ version = "0.5.11"
511
535
  source = "registry+https://github.com/rust-lang/crates.io-index"
512
- checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1"
536
+ checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3"
513
537
  dependencies = [
514
538
  "bitflags",
515
539
  ]
@@ -560,9 +584,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
560
584
 
561
585
  [[package]]
562
586
  name = "ring"
563
- version = "0.17.11"
587
+ version = "0.17.14"
564
588
  source = "registry+https://github.com/rust-lang/crates.io-index"
565
- checksum = "da5349ae27d3887ca812fb375b45a4fbb36d8d12d2df394968cd86e35683fe73"
589
+ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
566
590
  dependencies = [
567
591
  "cc",
568
592
  "cfg-if",
@@ -598,28 +622,28 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
598
622
 
599
623
  [[package]]
600
624
  name = "seq-macro"
601
- version = "0.3.5"
625
+ version = "0.3.6"
602
626
  source = "registry+https://github.com/rust-lang/crates.io-index"
603
- checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4"
627
+ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc"
604
628
 
605
629
  [[package]]
606
630
  name = "serde"
607
- version = "1.0.218"
631
+ version = "1.0.219"
608
632
  source = "registry+https://github.com/rust-lang/crates.io-index"
609
- checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
633
+ checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
610
634
  dependencies = [
611
635
  "serde_derive",
612
636
  ]
613
637
 
614
638
  [[package]]
615
639
  name = "serde_derive"
616
- version = "1.0.218"
640
+ version = "1.0.219"
617
641
  source = "registry+https://github.com/rust-lang/crates.io-index"
618
- checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
642
+ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
619
643
  dependencies = [
620
644
  "proc-macro2",
621
645
  "quote",
622
- "syn 2.0.98",
646
+ "syn 2.0.100",
623
647
  ]
624
648
 
625
649
  [[package]]
@@ -657,9 +681,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
657
681
 
658
682
  [[package]]
659
683
  name = "smallvec"
660
- version = "1.14.0"
684
+ version = "1.15.0"
661
685
  source = "registry+https://github.com/rust-lang/crates.io-index"
662
- checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
686
+ checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9"
663
687
 
664
688
  [[package]]
665
689
  name = "syn"
@@ -674,9 +698,9 @@ dependencies = [
674
698
 
675
699
  [[package]]
676
700
  name = "syn"
677
- version = "2.0.98"
701
+ version = "2.0.100"
678
702
  source = "registry+https://github.com/rust-lang/crates.io-index"
679
- checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
703
+ checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
680
704
  dependencies = [
681
705
  "proc-macro2",
682
706
  "quote",
@@ -685,22 +709,42 @@ dependencies = [
685
709
 
686
710
  [[package]]
687
711
  name = "thiserror"
688
- version = "2.0.11"
712
+ version = "1.0.69"
713
+ source = "registry+https://github.com/rust-lang/crates.io-index"
714
+ checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
715
+ dependencies = [
716
+ "thiserror-impl 1.0.69",
717
+ ]
718
+
719
+ [[package]]
720
+ name = "thiserror"
721
+ version = "2.0.12"
689
722
  source = "registry+https://github.com/rust-lang/crates.io-index"
690
- checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc"
723
+ checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
691
724
  dependencies = [
692
- "thiserror-impl",
725
+ "thiserror-impl 2.0.12",
693
726
  ]
694
727
 
695
728
  [[package]]
696
729
  name = "thiserror-impl"
697
- version = "2.0.11"
730
+ version = "1.0.69"
698
731
  source = "registry+https://github.com/rust-lang/crates.io-index"
699
- checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2"
732
+ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
700
733
  dependencies = [
701
734
  "proc-macro2",
702
735
  "quote",
703
- "syn 2.0.98",
736
+ "syn 2.0.100",
737
+ ]
738
+
739
+ [[package]]
740
+ name = "thiserror-impl"
741
+ version = "2.0.12"
742
+ source = "registry+https://github.com/rust-lang/crates.io-index"
743
+ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
744
+ dependencies = [
745
+ "proc-macro2",
746
+ "quote",
747
+ "syn 2.0.100",
704
748
  ]
705
749
 
706
750
  [[package]]
@@ -715,22 +759,34 @@ dependencies = [
715
759
 
716
760
  [[package]]
717
761
  name = "time"
718
- version = "0.3.37"
762
+ version = "0.3.41"
719
763
  source = "registry+https://github.com/rust-lang/crates.io-index"
720
- checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21"
764
+ checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40"
721
765
  dependencies = [
722
766
  "deranged",
767
+ "itoa",
723
768
  "num-conv",
724
769
  "powerfmt",
725
770
  "serde",
726
771
  "time-core",
772
+ "time-macros",
727
773
  ]
728
774
 
729
775
  [[package]]
730
776
  name = "time-core"
731
- version = "0.1.2"
777
+ version = "0.1.4"
732
778
  source = "registry+https://github.com/rust-lang/crates.io-index"
733
- checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
779
+ checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c"
780
+
781
+ [[package]]
782
+ name = "time-macros"
783
+ version = "0.2.22"
784
+ source = "registry+https://github.com/rust-lang/crates.io-index"
785
+ checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49"
786
+ dependencies = [
787
+ "num-conv",
788
+ "time-core",
789
+ ]
734
790
 
735
791
  [[package]]
736
792
  name = "tracing"
@@ -743,6 +799,18 @@ dependencies = [
743
799
  "tracing-core",
744
800
  ]
745
801
 
802
+ [[package]]
803
+ name = "tracing-appender"
804
+ version = "0.2.3"
805
+ source = "registry+https://github.com/rust-lang/crates.io-index"
806
+ checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf"
807
+ dependencies = [
808
+ "crossbeam-channel",
809
+ "thiserror 1.0.69",
810
+ "time",
811
+ "tracing-subscriber",
812
+ ]
813
+
746
814
  [[package]]
747
815
  name = "tracing-attributes"
748
816
  version = "0.1.28"
@@ -751,7 +819,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
751
819
  dependencies = [
752
820
  "proc-macro2",
753
821
  "quote",
754
- "syn 2.0.98",
822
+ "syn 2.0.100",
755
823
  ]
756
824
 
757
825
  [[package]]
@@ -808,9 +876,9 @@ dependencies = [
808
876
 
809
877
  [[package]]
810
878
  name = "unicode-ident"
811
- version = "1.0.17"
879
+ version = "1.0.18"
812
880
  source = "registry+https://github.com/rust-lang/crates.io-index"
813
- checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
881
+ checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
814
882
 
815
883
  [[package]]
816
884
  name = "unicode-xid"
@@ -864,7 +932,22 @@ version = "0.52.0"
864
932
  source = "registry+https://github.com/rust-lang/crates.io-index"
865
933
  checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
866
934
  dependencies = [
867
- "windows-targets",
935
+ "windows-targets 0.52.6",
936
+ ]
937
+
938
+ [[package]]
939
+ name = "windows-targets"
940
+ version = "0.48.5"
941
+ source = "registry+https://github.com/rust-lang/crates.io-index"
942
+ checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
943
+ dependencies = [
944
+ "windows_aarch64_gnullvm 0.48.5",
945
+ "windows_aarch64_msvc 0.48.5",
946
+ "windows_i686_gnu 0.48.5",
947
+ "windows_i686_msvc 0.48.5",
948
+ "windows_x86_64_gnu 0.48.5",
949
+ "windows_x86_64_gnullvm 0.48.5",
950
+ "windows_x86_64_msvc 0.48.5",
868
951
  ]
869
952
 
870
953
  [[package]]
@@ -873,28 +956,46 @@ version = "0.52.6"
873
956
  source = "registry+https://github.com/rust-lang/crates.io-index"
874
957
  checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
875
958
  dependencies = [
876
- "windows_aarch64_gnullvm",
877
- "windows_aarch64_msvc",
878
- "windows_i686_gnu",
959
+ "windows_aarch64_gnullvm 0.52.6",
960
+ "windows_aarch64_msvc 0.52.6",
961
+ "windows_i686_gnu 0.52.6",
879
962
  "windows_i686_gnullvm",
880
- "windows_i686_msvc",
881
- "windows_x86_64_gnu",
882
- "windows_x86_64_gnullvm",
883
- "windows_x86_64_msvc",
963
+ "windows_i686_msvc 0.52.6",
964
+ "windows_x86_64_gnu 0.52.6",
965
+ "windows_x86_64_gnullvm 0.52.6",
966
+ "windows_x86_64_msvc 0.52.6",
884
967
  ]
885
968
 
969
+ [[package]]
970
+ name = "windows_aarch64_gnullvm"
971
+ version = "0.48.5"
972
+ source = "registry+https://github.com/rust-lang/crates.io-index"
973
+ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
974
+
886
975
  [[package]]
887
976
  name = "windows_aarch64_gnullvm"
888
977
  version = "0.52.6"
889
978
  source = "registry+https://github.com/rust-lang/crates.io-index"
890
979
  checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
891
980
 
981
+ [[package]]
982
+ name = "windows_aarch64_msvc"
983
+ version = "0.48.5"
984
+ source = "registry+https://github.com/rust-lang/crates.io-index"
985
+ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
986
+
892
987
  [[package]]
893
988
  name = "windows_aarch64_msvc"
894
989
  version = "0.52.6"
895
990
  source = "registry+https://github.com/rust-lang/crates.io-index"
896
991
  checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
897
992
 
993
+ [[package]]
994
+ name = "windows_i686_gnu"
995
+ version = "0.48.5"
996
+ source = "registry+https://github.com/rust-lang/crates.io-index"
997
+ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
998
+
898
999
  [[package]]
899
1000
  name = "windows_i686_gnu"
900
1001
  version = "0.52.6"
@@ -907,24 +1008,48 @@ version = "0.52.6"
907
1008
  source = "registry+https://github.com/rust-lang/crates.io-index"
908
1009
  checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
909
1010
 
1011
+ [[package]]
1012
+ name = "windows_i686_msvc"
1013
+ version = "0.48.5"
1014
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1015
+ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
1016
+
910
1017
  [[package]]
911
1018
  name = "windows_i686_msvc"
912
1019
  version = "0.52.6"
913
1020
  source = "registry+https://github.com/rust-lang/crates.io-index"
914
1021
  checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
915
1022
 
1023
+ [[package]]
1024
+ name = "windows_x86_64_gnu"
1025
+ version = "0.48.5"
1026
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1027
+ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
1028
+
916
1029
  [[package]]
917
1030
  name = "windows_x86_64_gnu"
918
1031
  version = "0.52.6"
919
1032
  source = "registry+https://github.com/rust-lang/crates.io-index"
920
1033
  checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
921
1034
 
1035
+ [[package]]
1036
+ name = "windows_x86_64_gnullvm"
1037
+ version = "0.48.5"
1038
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1039
+ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
1040
+
922
1041
  [[package]]
923
1042
  name = "windows_x86_64_gnullvm"
924
1043
  version = "0.52.6"
925
1044
  source = "registry+https://github.com/rust-lang/crates.io-index"
926
1045
  checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
927
1046
 
1047
+ [[package]]
1048
+ name = "windows_x86_64_msvc"
1049
+ version = "0.48.5"
1050
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1051
+ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
1052
+
928
1053
  [[package]]
929
1054
  name = "windows_x86_64_msvc"
930
1055
  version = "0.52.6"
data/README.md CHANGED
@@ -1,43 +1,76 @@
1
- # ItsiScheduler
1
+ ---
2
+ title: Itsi Scheduler
3
+ type: docs
4
+ weight: 4
5
+ sidebar:
6
+ exclude: true
7
+ ---
8
+ <img src="itsi-scheduler-100.png" width="80px" style="display: block; margin-left: auto; margin-right: auto;">
2
9
 
3
- TODO: Delete this and the text below, and describe your gem
10
+ `Itsi Scheduler` is an implementation of a Ruby [Fiber Scheduler](https://docs.ruby-lang.org/en/3.2/Fiber/Scheduler.html).
4
11
 
5
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/itsi_scheduler`. To experiment with that code, run `bin/console` for an interactive prompt.
12
+ When combined with Itsi Server, you can write endpoints that look just like regular synchronous Ruby code. Behind the scenes, the scheduler will transparently pause and resume fibers to prevent threads from blocking, greatly increasing throughput for I/O-heavy workloads
6
13
 
7
- ## Installation
14
+ If you're purely after a lightweight, yet efficient Ruby scheduler,
15
+ you can use Itsi Scheduler as a standalone scheduler for any Ruby application.
8
16
 
9
- TODO: Replace `UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG` with your gem name right after releasing it to RubyGems.org. Please do not do it earlier due to security reasons. Alternatively, replace this section with instructions to install your gem from git if you don't plan to release to RubyGems.org.
17
+ Just use `Fiber.set_scheduler` to set an instance `Itsi::Scheduler` as a scheduler to opt in to this IO weaving behavior
18
+ *automatically* for all blocking IO.
10
19
 
11
- Install the gem and add to the application's Gemfile by executing:
20
+ ### Primer on Fiber Schedulers
12
21
 
13
- ```bash
14
- bundle add UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG
15
- ```
22
+ Fiber schedulers are a way to automatically manage the execution of non-blocking fibers in Ruby. A scheduler is responsible for the automatic pausing and resumption of Fibers based
23
+ on whether or not they are awaiting IO operations.
24
+ Ruby's Fiber scheduler implementation automatically invokes the current Fiber scheduler (if it exists) for each blocking operation, allowing it to seamlessly drive the execution of huge numbers of simultaneous non-blocking fibers
25
+ while ensuring the main thread is never blocked on IO.
16
26
 
17
- If bundler is not being used to manage dependencies, install the gem by executing:
27
+ This behind the scenes magic allows Ruby to provide async IO (just like we find in languages with `async/await` like `Rust`, `C#`, `JavaScript`) *but* with the added beauty
28
+ that synchronous and asynchronous code is identical! (I.e. Ruby's functions are [colorless](https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/))
18
29
 
19
- ```bash
20
- gem install UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG
21
- ```
30
+ ## Getting Started
31
+ To install and use Itsi Scheduler follow the instructions below:
22
32
 
23
- ## Usage
24
33
 
25
- TODO: Write usage instructions here
34
+ ### 1 - Install Itsi Scheduler
26
35
 
27
- ## Development
36
+ **Prerequisites**
28
37
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
38
+ You'll need at least `build-essential` and `libclang-dev` installed to build Itsi on Linux.
39
+ E.g.
40
+ ```bash
41
+ apt-get install build-essential libclang-dev
42
+ ```
30
43
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
44
+ Then use `gem` to install the Itsi package. This will in turn install both the
45
+ `itsi-server` gem, and the `itsi-scheduler` gem.
32
46
 
33
- ## Contributing
34
47
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/itsi_scheduler. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/itsi_scheduler/blob/master/CODE_OF_CONDUCT.md).
48
+ ```bash
49
+ gem install itsi-scheduler
50
+ ```
51
+
36
52
 
37
- ## License
53
+ ### 2 - Use Itsi Scheduler
38
54
 
39
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
55
+ Great! You now have Itsi Scheduler installed.
56
+ Now you can run code like this:
40
57
 
41
- ## Code of Conduct
58
+ ```ruby
59
+ require 'itsi/scheduler'
60
+ require 'socket'
61
+ results = Thread.new do
62
+ Fiber.set_scheduler Itsi::Scheduler.new
63
+ results = []
64
+ Fiber.schedule do
65
+ results << Addrinfo.getaddrinfo("www.ruby-lang.org", 80, nil, :STREAM)
66
+ end
67
+ Fiber.schedule do
68
+ results << Addrinfo.getaddrinfo("www.google.com", 80, nil, :STREAM)
69
+ end
70
+ results
71
+ end.value
72
+
73
+ puts results.map(&:inspect)
74
+ ```
42
75
 
43
- Everyone interacting in the ItsiScheduler project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/itsi_scheduler/blob/master/CODE_OF_CONDUCT.md).
76
+ to run many blocking operations simultaneously all while occupying only a single Ruby thread!
data/Rakefile CHANGED
@@ -11,10 +11,6 @@ Minitest::TestTask.create(:test) do |t|
11
11
  t.test_prelude = 'require "helpers/test_helper.rb"'
12
12
  end
13
13
 
14
- require "rubocop/rake_task"
15
-
16
- RuboCop::RakeTask.new
17
-
18
14
  require "rb_sys/extensiontask"
19
15
 
20
16
  task build: :compile