spikard 0.12.0 → 0.13.0

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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +64 -46
  3. data/ext/spikard_rb/Cargo.lock +106 -55
  4. data/ext/spikard_rb/Cargo.toml +1 -1
  5. data/lib/spikard/app.rb +42 -12
  6. data/lib/spikard/config.rb +1 -1
  7. data/lib/spikard/grpc.rb +56 -6
  8. data/lib/spikard/provide.rb +112 -11
  9. data/lib/spikard/response.rb +25 -0
  10. data/lib/spikard/testing.rb +43 -1
  11. data/lib/spikard/version.rb +1 -1
  12. data/lib/spikard.rb +7 -0
  13. data/sig/spikard.rbs +22 -2
  14. data/vendor/crates/spikard-bindings-shared/Cargo.toml +5 -10
  15. data/vendor/crates/spikard-core/Cargo.toml +5 -10
  16. data/vendor/crates/spikard-core/src/di/container.rs +19 -10
  17. data/vendor/crates/spikard-core/src/di/factory.rs +39 -29
  18. data/vendor/crates/spikard-core/src/di/mod.rs +3 -3
  19. data/vendor/crates/spikard-core/src/router.rs +1 -1
  20. data/vendor/crates/spikard-http/Cargo.toml +7 -12
  21. data/vendor/crates/spikard-http/src/background.rs +0 -1
  22. data/vendor/crates/spikard-http/src/grpc/framing.rs +215 -31
  23. data/vendor/crates/spikard-http/src/grpc/handler.rs +114 -25
  24. data/vendor/crates/spikard-http/src/grpc/mod.rs +167 -45
  25. data/vendor/crates/spikard-http/src/grpc/service.rs +132 -48
  26. data/vendor/crates/spikard-http/src/jsonrpc/mod.rs +2 -0
  27. data/vendor/crates/spikard-http/src/jsonrpc/openrpc.rs +325 -0
  28. data/vendor/crates/spikard-http/src/lib.rs +21 -3
  29. data/vendor/crates/spikard-http/src/middleware/multipart.rs +1 -1
  30. data/vendor/crates/spikard-http/src/server/grpc_routing.rs +424 -39
  31. data/vendor/crates/spikard-http/src/server/mod.rs +120 -52
  32. data/vendor/crates/spikard-http/src/testing/test_client.rs +95 -57
  33. data/vendor/crates/spikard-http/tests/grpc_integration_test.rs +10 -10
  34. data/vendor/crates/spikard-http/tests/grpc_server_streaming.rs +54 -53
  35. data/vendor/crates/spikard-http/tests/server_config_builder.rs +21 -0
  36. data/vendor/crates/spikard-http/tests/server_configured_router_behavior.rs +175 -1
  37. data/vendor/crates/spikard-http/tests/server_openapi_jsonrpc_static.rs +6 -0
  38. data/vendor/crates/spikard-rb/Cargo.toml +4 -9
  39. data/vendor/crates/spikard-rb/src/di/mod.rs +57 -22
  40. data/vendor/crates/spikard-rb/src/grpc/handler.rs +43 -2
  41. data/vendor/crates/spikard-rb/src/lib.rs +5 -1
  42. data/vendor/crates/spikard-rb/src/lifecycle.rs +34 -3
  43. data/vendor/crates/spikard-rb/src/runtime/server_runner.rs +37 -13
  44. data/vendor/crates/spikard-rb/src/server.rs +8 -11
  45. data/vendor/crates/spikard-rb/src/websocket.rs +47 -1
  46. data/vendor/crates/spikard-rb-macros/Cargo.toml +3 -8
  47. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b6d3ace9a6aa31de25bf31238a3a2425546c5137f85036cce599ac251cf63e25
4
- data.tar.gz: b60af042fe08fca1e779d15fea771e6f29c864491cad98260fd3c1aa4887f538
3
+ metadata.gz: 19a8c424b2a28b7b7a5419ad4354f6ea8a35eb5a10f11384c5b833b3fd8080d3
4
+ data.tar.gz: 9073abf09c3edc934f134e48c5f132b1dc52b445d296d07ccb2690ca087c4ab9
5
5
  SHA512:
6
- metadata.gz: 8786dce5521a0d9d4c38dbcb4c433bed930bc77dba34ad149a42a00d03803ffba58318f87c44abee93175d842ba2d94bb3af0b3c6a0e156179d431c441921473
7
- data.tar.gz: 6cf9e10315120acf2593693f9a998487e0c3613ba50a3c4693ae408747f7b9efae82cc57a4962c9d32eb337745593e70fbc00bd2cb1e57949d72363db0da265b
6
+ metadata.gz: 9998c67c34244330096ba18251d755d75a86f202242e088ace812457c3d78b26f41396df829ddeab150f89863395f47b8073787d93af653d9cabf41ef4b4f8b0
7
+ data.tar.gz: 3db6b8e27e3b28dac4b9ff752a70965b3f8dbdd24c7fa33dd4707b560668f4ac07e05fb1aae342d72e1cd13e3a81628a94355424856a6ad0354b74f11b98c34c
data/README.md CHANGED
@@ -1,18 +1,37 @@
1
+ <!-- GENERATED FILE — DO NOT EDIT DIRECTLY. Run: task readme:generate -->
2
+
1
3
  # Spikard Ruby
2
4
 
3
- [![Documentation](https://img.shields.io/badge/docs-spikard.dev-blue)](https://spikard.dev)
4
- [![Crates.io](https://img.shields.io/crates/v/spikard.svg?color=blue)](https://crates.io/crates/spikard)
5
- [![PyPI](https://img.shields.io/pypi/v/spikard.svg?color=blue)](https://pypi.org/project/spikard/)
6
- [![npm](https://img.shields.io/npm/v/@spikard/node.svg?color=blue)](https://www.npmjs.com/package/@spikard/node)
7
- [![Gem](https://img.shields.io/gem/v/spikard.svg?color=blue)](https://rubygems.org/gems/spikard)
8
- [![Packagist](https://img.shields.io/packagist/v/spikard/spikard.svg?color=blue)](https://packagist.org/packages/spikard/spikard)
9
- [![Hex.pm](https://img.shields.io/hexpm/v/spikard.svg?color=blue)](https://hex.pm/packages/spikard)
10
- [![License](https://img.shields.io/badge/license-MIT-blue.svg)](../../LICENSE)
5
+ <div align="center" style="display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin: 20px 0;">
6
+ <a href="https://spikard.dev">
7
+ <img src="https://img.shields.io/badge/docs-spikard.dev-007ec6" alt="Documentation">
8
+ </a>
9
+ <a href="https://crates.io/crates/spikard">
10
+ <img src="https://img.shields.io/crates/v/spikard.svg?color=007ec6" alt="Crates.io">
11
+ </a>
12
+ <a href="https://pypi.org/project/spikard/">
13
+ <img src="https://img.shields.io/pypi/v/spikard.svg?color=007ec6" alt="PyPI">
14
+ </a>
15
+ <a href="https://www.npmjs.com/package/@spikard/node">
16
+ <img src="https://img.shields.io/npm/v/@spikard/node.svg?color=007ec6" alt="npm">
17
+ </a>
18
+ <a href="https://rubygems.org/gems/spikard">
19
+ <img src="https://img.shields.io/gem/v/spikard.svg?color=007ec6" alt="RubyGems">
20
+ </a>
21
+ <a href="https://packagist.org/packages/spikard/spikard">
22
+ <img src="https://img.shields.io/packagist/v/spikard/spikard.svg?color=007ec6" alt="Packagist">
23
+ </a>
24
+ <a href="https://hex.pm/packages/spikard">
25
+ <img src="https://img.shields.io/hexpm/v/spikard.svg?color=007ec6" alt="Hex.pm">
26
+ </a>
27
+ <a href="https://github.com/Goldziher/spikard/blob/main/LICENSE">
28
+ <img src="https://img.shields.io/badge/license-MIT-007ec6" alt="License">
29
+ </a>
30
+ </div>
11
31
 
12
32
  Ruby bindings for Spikard: a Rust-centric web framework with type-safe code generation from OpenAPI, GraphQL, AsyncAPI, and OpenRPC specifications. Leverage Sinatra-style routing with zero-copy FFI performance.
13
33
 
14
34
  ## Key Features
15
-
16
35
  - **Type-safe with RBS**: Full RBS type definitions for Steep type checking
17
36
  - **Zero-copy FFI**: Magnus/rb-sys bindings eliminate serialization overhead
18
37
  - **Sinatra-style routing**: Familiar `get`, `post`, `put`, `patch`, `delete` DSL
@@ -33,11 +52,10 @@ gem install spikard
33
52
  **From source:**
34
53
 
35
54
  ```bash
36
- bundle install
37
- bundle exec rake ext:build
55
+ bundle install && bundle exec rake ext:build
38
56
  ```
39
57
 
40
- **Requirements:** Ruby 3.2-4.x, Bundler, and Rust toolchain (for building from source). On Windows, use RubyInstaller with MSYS2 DevKit and the GNU Rust toolchain.
58
+ **Requirements:** Ruby 3.2-4.x, Bundler, and Rust toolchain (for building from source)
41
59
 
42
60
  ## Quick Start
43
61
 
@@ -59,7 +77,7 @@ app.post "/users" do |request|
59
77
  { id: 1, name: request[:body]["name"] }
60
78
  end
61
79
 
62
- app.run(port: 8000)
80
+ app.run(config: { port: 8000 })
63
81
  ```
64
82
 
65
83
  The `request` hash provides access to:
@@ -70,7 +88,6 @@ The `request` hash provides access to:
70
88
  - `request[:headers]` - Request headers
71
89
  - `request[:cookies]` - Request cookies
72
90
  - `request[:body]` - Parsed request body
73
-
74
91
  ## Validation
75
92
 
76
93
  Pass a `request_schema` to validate incoming JSON:
@@ -204,6 +221,26 @@ app.post "/process" do
204
221
  end
205
222
  ```
206
223
 
224
+ ## Type Safety with RBS & Steep
225
+
226
+ Full RBS type definitions are included in `sig/spikard.rbs`. Use Steep for type checking:
227
+
228
+ ```bash
229
+ bundle exec steep check
230
+ ```
231
+
232
+ ## Performance
233
+
234
+ Benchmarked across 34 workloads at 100 concurrency ([methodology](../../docs/benchmarks/methodology.md)):
235
+
236
+ | Framework | Avg RPS | P50 (ms) | P99 (ms) |
237
+ |-----------|--------:|----------:|----------:|
238
+ | **spikard** | 7,151 | 14.62 | 18.98 |
239
+ | roda | 5,038 | 26.89 | 35.61 |
240
+ | hanami-api | 5,032 | 76.1 | 414.35 |
241
+
242
+ Spikard is **1.4x faster than Roda with significantly lower tail latency**.
243
+
207
244
  ## Testing
208
245
 
209
246
  Use the TestClient for integration tests:
@@ -224,43 +261,24 @@ sse = client.sse("/events")
224
261
  client.close
225
262
  ```
226
263
 
227
- ## Type Safety with RBS & Steep
228
-
229
- Full RBS type definitions are included in `sig/spikard.rbs`. Use Steep for type checking:
230
-
231
- ```bash
232
- bundle exec steep check
233
- ```
234
-
235
- ## Performance
264
+ ## Examples
236
265
 
237
- Benchmarked across 34 workloads at 100 concurrency ([methodology](../../docs/benchmarks/methodology.md)):
266
+ **Examples & Code Generation:**
267
+ - [Runnable Examples](../../examples/) - Ruby, Python, TypeScript, PHP, Elixir, and Rust
268
+ - [Code Generation Guide](../../examples/README.md) - Generate from OpenAPI, GraphQL, AsyncAPI, OpenRPC, Protobuf
238
269
 
239
- | Framework | Avg RPS | P50 (ms) | P99 (ms) |
240
- |-----------|--------:|----------:|----------:|
241
- | **spikard** | 7,151 | 14.62 | 18.98 |
242
- | roda | 5,038 | 26.89 | 35.61 |
243
- | hanami-api | 5,032 | 76.10 | 414.35 |
270
+ ## Documentation
244
271
 
245
- Spikard is **1.4x faster** than Roda with significantly lower tail latency.
272
+ Full documentation at [spikard.dev](https://spikard.dev). See also [CONTRIBUTING.md](../../CONTRIBUTING.md).
246
273
 
247
- ## Learn More
274
+ ## Other Languages
248
275
 
249
- **Examples & Code Generation:**
250
- - [Runnable Examples](../../examples/) - Ruby, Python, TypeScript, PHP, Elixir, and Rust
251
- - [Code Generation Guide](../../examples/README.md) - Generate from OpenAPI, GraphQL, AsyncAPI, OpenRPC
252
-
253
- **Documentation:**
254
- - Full documentation at [spikard.dev](https://spikard.dev)
255
- - [Type Definitions (RBS)](sig/spikard.rbs) - Full Steep type signatures
256
- - [CONTRIBUTING.md](../../CONTRIBUTING.md) - Development workflow
257
-
258
- **Other Languages:**
259
- - [Python (PyPI)](https://pypi.org/project/spikard/)
260
- - [TypeScript (npm)](https://www.npmjs.com/package/@spikard/node)
261
- - [PHP (Packagist)](https://packagist.org/packages/spikard/spikard)
262
- - [Elixir (Hex.pm)](https://hex.pm/packages/spikard)
263
- - [Rust (Crates.io)](https://crates.io/crates/spikard)
276
+ - **Rust:** [Crates.io](https://crates.io/crates/spikard)
277
+ - **Python:** [PyPI](https://pypi.org/project/spikard/)
278
+ - **TypeScript:** [npm (@spikard/node)](https://www.npmjs.com/package/@spikard/node)
279
+ - **Ruby:** [RubyGems](https://rubygems.org/gems/spikard)
280
+ - **PHP:** [Packagist](https://packagist.org/packages/spikard/spikard)
281
+ - **Elixir:** [Hex.pm](https://hex.pm/packages/spikard)
264
282
 
265
283
  ## License
266
284
 
@@ -63,9 +63,9 @@ dependencies = [
63
63
 
64
64
  [[package]]
65
65
  name = "anyhow"
66
- version = "1.0.101"
66
+ version = "1.0.102"
67
67
  source = "registry+https://github.com/rust-lang/crates.io-index"
68
- checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea"
68
+ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
69
69
 
70
70
  [[package]]
71
71
  name = "arbitrary"
@@ -191,9 +191,9 @@ dependencies = [
191
191
 
192
192
  [[package]]
193
193
  name = "axum-test"
194
- version = "18.7.0"
194
+ version = "19.1.1"
195
195
  source = "registry+https://github.com/rust-lang/crates.io-index"
196
- checksum = "0ce2a8627e8d8851f894696b39f2b67807d6375c177361d376173ace306a21e2"
196
+ checksum = "6a28640adad0e99978d38bc455b323c62a5cddc4e22f83eacde93f8c395ae7e3"
197
197
  dependencies = [
198
198
  "anyhow",
199
199
  "axum",
@@ -214,7 +214,6 @@ dependencies = [
214
214
  "serde",
215
215
  "serde_json",
216
216
  "serde_urlencoded",
217
- "smallvec",
218
217
  "tokio",
219
218
  "tokio-tungstenite",
220
219
  "tower",
@@ -366,11 +365,22 @@ version = "1.0.4"
366
365
  source = "registry+https://github.com/rust-lang/crates.io-index"
367
366
  checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
368
367
 
368
+ [[package]]
369
+ name = "chacha20"
370
+ version = "0.10.0"
371
+ source = "registry+https://github.com/rust-lang/crates.io-index"
372
+ checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601"
373
+ dependencies = [
374
+ "cfg-if",
375
+ "cpufeatures 0.3.0",
376
+ "rand_core 0.10.0",
377
+ ]
378
+
369
379
  [[package]]
370
380
  name = "chrono"
371
- version = "0.4.43"
381
+ version = "0.4.44"
372
382
  source = "registry+https://github.com/rust-lang/crates.io-index"
373
- checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118"
383
+ checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0"
374
384
  dependencies = [
375
385
  "iana-time-zone",
376
386
  "js-sys",
@@ -439,6 +449,15 @@ dependencies = [
439
449
  "libc",
440
450
  ]
441
451
 
452
+ [[package]]
453
+ name = "cpufeatures"
454
+ version = "0.3.0"
455
+ source = "registry+https://github.com/rust-lang/crates.io-index"
456
+ checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
457
+ dependencies = [
458
+ "libc",
459
+ ]
460
+
442
461
  [[package]]
443
462
  name = "crc32fast"
444
463
  version = "1.5.0"
@@ -483,7 +502,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
483
502
  checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
484
503
  dependencies = [
485
504
  "cfg-if",
486
- "cpufeatures",
505
+ "cpufeatures 0.2.17",
487
506
  "curve25519-dalek-derive",
488
507
  "digest",
489
508
  "fiat-crypto",
@@ -695,9 +714,9 @@ dependencies = [
695
714
 
696
715
  [[package]]
697
716
  name = "expect-json"
698
- version = "1.9.0"
717
+ version = "1.10.1"
699
718
  source = "registry+https://github.com/rust-lang/crates.io-index"
700
- checksum = "5325e3924286c2263a3f01ddd09ddae9ded098fffffe4182dad3b140243119f3"
719
+ checksum = "869f97f4abe8e78fc812a94ad6b721d72c4fb5532877c79610f2c238d7ccf6c4"
701
720
  dependencies = [
702
721
  "chrono",
703
722
  "email_address",
@@ -713,9 +732,9 @@ dependencies = [
713
732
 
714
733
  [[package]]
715
734
  name = "expect-json-macros"
716
- version = "1.9.0"
735
+ version = "1.10.1"
717
736
  source = "registry+https://github.com/rust-lang/crates.io-index"
718
- checksum = "f464e1e518bc97a6749590758411784df7dda4f36384e1fb11a58f040c1d0459"
737
+ checksum = "6e6fdf550180a6c29a28cb9aac262dc0064c25735641d2317f670075e9a469d9"
719
738
  dependencies = [
720
739
  "proc-macro2",
721
740
  "quote",
@@ -850,9 +869,9 @@ dependencies = [
850
869
 
851
870
  [[package]]
852
871
  name = "futures-channel"
853
- version = "0.3.31"
872
+ version = "0.3.32"
854
873
  source = "registry+https://github.com/rust-lang/crates.io-index"
855
- checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
874
+ checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
856
875
  dependencies = [
857
876
  "futures-core",
858
877
  "futures-sink",
@@ -860,9 +879,9 @@ dependencies = [
860
879
 
861
880
  [[package]]
862
881
  name = "futures-core"
863
- version = "0.3.31"
882
+ version = "0.3.32"
864
883
  source = "registry+https://github.com/rust-lang/crates.io-index"
865
- checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
884
+ checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
866
885
 
867
886
  [[package]]
868
887
  name = "futures-executor"
@@ -877,15 +896,15 @@ dependencies = [
877
896
 
878
897
  [[package]]
879
898
  name = "futures-io"
880
- version = "0.3.31"
899
+ version = "0.3.32"
881
900
  source = "registry+https://github.com/rust-lang/crates.io-index"
882
- checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
901
+ checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
883
902
 
884
903
  [[package]]
885
904
  name = "futures-macro"
886
- version = "0.3.31"
905
+ version = "0.3.32"
887
906
  source = "registry+https://github.com/rust-lang/crates.io-index"
888
- checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
907
+ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
889
908
  dependencies = [
890
909
  "proc-macro2",
891
910
  "quote",
@@ -894,15 +913,15 @@ dependencies = [
894
913
 
895
914
  [[package]]
896
915
  name = "futures-sink"
897
- version = "0.3.31"
916
+ version = "0.3.32"
898
917
  source = "registry+https://github.com/rust-lang/crates.io-index"
899
- checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
918
+ checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
900
919
 
901
920
  [[package]]
902
921
  name = "futures-task"
903
- version = "0.3.31"
922
+ version = "0.3.32"
904
923
  source = "registry+https://github.com/rust-lang/crates.io-index"
905
- checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
924
+ checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
906
925
 
907
926
  [[package]]
908
927
  name = "futures-timer"
@@ -912,9 +931,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24"
912
931
 
913
932
  [[package]]
914
933
  name = "futures-util"
915
- version = "0.3.31"
934
+ version = "0.3.32"
916
935
  source = "registry+https://github.com/rust-lang/crates.io-index"
917
- checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
936
+ checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
918
937
  dependencies = [
919
938
  "futures-channel",
920
939
  "futures-core",
@@ -924,7 +943,6 @@ dependencies = [
924
943
  "futures-task",
925
944
  "memchr",
926
945
  "pin-project-lite",
927
- "pin-utils",
928
946
  "slab",
929
947
  ]
930
948
 
@@ -973,6 +991,7 @@ dependencies = [
973
991
  "cfg-if",
974
992
  "libc",
975
993
  "r-efi",
994
+ "rand_core 0.10.0",
976
995
  "wasip2",
977
996
  "wasip3",
978
997
  ]
@@ -1433,9 +1452,9 @@ dependencies = [
1433
1452
 
1434
1453
  [[package]]
1435
1454
  name = "jsonschema"
1436
- version = "0.41.0"
1455
+ version = "0.45.0"
1437
1456
  source = "registry+https://github.com/rust-lang/crates.io-index"
1438
- checksum = "9320368abda84a3aad44953d61e70515681fe43ae94529dff5567e0215b88438"
1457
+ checksum = "6f29616f6e19415398eb186964fb7cbbeef572c79bede3622a8277667924bbe3"
1439
1458
  dependencies = [
1440
1459
  "ahash",
1441
1460
  "bytecount",
@@ -2069,9 +2088,9 @@ dependencies = [
2069
2088
 
2070
2089
  [[package]]
2071
2090
  name = "quote"
2072
- version = "1.0.44"
2091
+ version = "1.0.45"
2073
2092
  source = "registry+https://github.com/rust-lang/crates.io-index"
2074
- checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
2093
+ checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
2075
2094
  dependencies = [
2076
2095
  "proc-macro2",
2077
2096
  ]
@@ -2103,6 +2122,17 @@ dependencies = [
2103
2122
  "rand_core 0.9.5",
2104
2123
  ]
2105
2124
 
2125
+ [[package]]
2126
+ name = "rand"
2127
+ version = "0.10.0"
2128
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2129
+ checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8"
2130
+ dependencies = [
2131
+ "chacha20",
2132
+ "getrandom 0.4.1",
2133
+ "rand_core 0.10.0",
2134
+ ]
2135
+
2106
2136
  [[package]]
2107
2137
  name = "rand_chacha"
2108
2138
  version = "0.3.1"
@@ -2141,6 +2171,12 @@ dependencies = [
2141
2171
  "getrandom 0.3.4",
2142
2172
  ]
2143
2173
 
2174
+ [[package]]
2175
+ name = "rand_core"
2176
+ version = "0.10.0"
2177
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2178
+ checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba"
2179
+
2144
2180
  [[package]]
2145
2181
  name = "raw-cpuid"
2146
2182
  version = "11.6.0"
@@ -2211,9 +2247,9 @@ dependencies = [
2211
2247
 
2212
2248
  [[package]]
2213
2249
  name = "referencing"
2214
- version = "0.41.0"
2250
+ version = "0.45.0"
2215
2251
  source = "registry+https://github.com/rust-lang/crates.io-index"
2216
- checksum = "d5773259506800a8c6ef38df3674b061c62c5941162507891ff8b580e93d954e"
2252
+ checksum = "b8a618c14f8ba29d8193bb55e2bf13e4fb2b1115313ecb7ae94b43100c7ac7d5"
2217
2253
  dependencies = [
2218
2254
  "ahash",
2219
2255
  "fluent-uri",
@@ -2255,9 +2291,9 @@ checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c"
2255
2291
 
2256
2292
  [[package]]
2257
2293
  name = "reserve-port"
2258
- version = "2.3.0"
2294
+ version = "2.4.0"
2259
2295
  source = "registry+https://github.com/rust-lang/crates.io-index"
2260
- checksum = "21918d6644020c6f6ef1993242989bf6d4952d2e025617744f184c02df51c356"
2296
+ checksum = "94070964579245eb2f76e62a7668fe87bd9969ed6c41256f3bf614e3323dd3cc"
2261
2297
  dependencies = [
2262
2298
  "thiserror 2.0.18",
2263
2299
  ]
@@ -2328,16 +2364,16 @@ dependencies = [
2328
2364
 
2329
2365
  [[package]]
2330
2366
  name = "rust-multipart-rfc7578_2"
2331
- version = "0.8.0"
2367
+ version = "0.9.0"
2332
2368
  source = "registry+https://github.com/rust-lang/crates.io-index"
2333
- checksum = "c839d037155ebc06a571e305af66ff9fd9063a6e662447051737e1ac75beea41"
2369
+ checksum = "00bdaa068902270ca7fa8619775e1838e23a63620abac0947ce0f715819b8cec"
2334
2370
  dependencies = [
2335
2371
  "bytes",
2336
2372
  "futures-core",
2337
2373
  "futures-util",
2338
2374
  "http",
2339
2375
  "mime",
2340
- "rand 0.9.2",
2376
+ "rand 0.10.0",
2341
2377
  "thiserror 2.0.18",
2342
2378
  ]
2343
2379
 
@@ -2500,7 +2536,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2500
2536
  checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
2501
2537
  dependencies = [
2502
2538
  "cfg-if",
2503
- "cpufeatures",
2539
+ "cpufeatures 0.2.17",
2504
2540
  "digest",
2505
2541
  ]
2506
2542
 
@@ -2511,7 +2547,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2511
2547
  checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
2512
2548
  dependencies = [
2513
2549
  "cfg-if",
2514
- "cpufeatures",
2550
+ "cpufeatures 0.2.17",
2515
2551
  "digest",
2516
2552
  ]
2517
2553
 
@@ -2618,7 +2654,7 @@ dependencies = [
2618
2654
 
2619
2655
  [[package]]
2620
2656
  name = "spikard-bindings-shared"
2621
- version = "0.10.2"
2657
+ version = "0.12.0"
2622
2658
  dependencies = [
2623
2659
  "axum",
2624
2660
  "bytes",
@@ -2637,7 +2673,7 @@ dependencies = [
2637
2673
 
2638
2674
  [[package]]
2639
2675
  name = "spikard-core"
2640
- version = "0.10.2"
2676
+ version = "0.12.0"
2641
2677
  dependencies = [
2642
2678
  "anyhow",
2643
2679
  "base64",
@@ -2661,13 +2697,12 @@ dependencies = [
2661
2697
 
2662
2698
  [[package]]
2663
2699
  name = "spikard-http"
2664
- version = "0.10.2"
2700
+ version = "0.12.0"
2665
2701
  dependencies = [
2666
2702
  "ahash",
2667
2703
  "anyhow",
2668
2704
  "axum",
2669
2705
  "axum-test",
2670
- "base64",
2671
2706
  "brotli",
2672
2707
  "bytes",
2673
2708
  "cookie",
@@ -2710,7 +2745,7 @@ dependencies = [
2710
2745
 
2711
2746
  [[package]]
2712
2747
  name = "spikard-rb"
2713
- version = "0.10.2"
2748
+ version = "0.12.0"
2714
2749
  dependencies = [
2715
2750
  "async-stream",
2716
2751
  "axum",
@@ -2735,14 +2770,14 @@ dependencies = [
2735
2770
  "tokio",
2736
2771
  "tonic",
2737
2772
  "tracing",
2738
- "tungstenite",
2773
+ "tungstenite 0.29.0",
2739
2774
  "url",
2740
2775
  "urlencoding",
2741
2776
  ]
2742
2777
 
2743
2778
  [[package]]
2744
2779
  name = "spikard-rb-ext"
2745
- version = "0.10.2"
2780
+ version = "0.12.0"
2746
2781
  dependencies = [
2747
2782
  "magnus",
2748
2783
  "spikard-rb",
@@ -2750,7 +2785,7 @@ dependencies = [
2750
2785
 
2751
2786
  [[package]]
2752
2787
  name = "spikard-rb-macros"
2753
- version = "0.10.2"
2788
+ version = "0.12.0"
2754
2789
  dependencies = [
2755
2790
  "proc-macro2",
2756
2791
  "quote",
@@ -2796,9 +2831,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
2796
2831
 
2797
2832
  [[package]]
2798
2833
  name = "syn"
2799
- version = "2.0.115"
2834
+ version = "2.0.117"
2800
2835
  source = "registry+https://github.com/rust-lang/crates.io-index"
2801
- checksum = "6e614ed320ac28113fa64972c4262d5dbc89deacdfd00c34a3e4cea073243c12"
2836
+ checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
2802
2837
  dependencies = [
2803
2838
  "proc-macro2",
2804
2839
  "quote",
@@ -2914,9 +2949,9 @@ dependencies = [
2914
2949
 
2915
2950
  [[package]]
2916
2951
  name = "tokio"
2917
- version = "1.49.0"
2952
+ version = "1.50.0"
2918
2953
  source = "registry+https://github.com/rust-lang/crates.io-index"
2919
- checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86"
2954
+ checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d"
2920
2955
  dependencies = [
2921
2956
  "bytes",
2922
2957
  "libc",
@@ -2960,7 +2995,7 @@ dependencies = [
2960
2995
  "futures-util",
2961
2996
  "log",
2962
2997
  "tokio",
2963
- "tungstenite",
2998
+ "tungstenite 0.28.0",
2964
2999
  ]
2965
3000
 
2966
3001
  [[package]]
@@ -3167,6 +3202,22 @@ dependencies = [
3167
3202
  "utf-8",
3168
3203
  ]
3169
3204
 
3205
+ [[package]]
3206
+ name = "tungstenite"
3207
+ version = "0.29.0"
3208
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3209
+ checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8"
3210
+ dependencies = [
3211
+ "bytes",
3212
+ "data-encoding",
3213
+ "http",
3214
+ "httparse",
3215
+ "log",
3216
+ "rand 0.9.2",
3217
+ "sha1",
3218
+ "thiserror 2.0.18",
3219
+ ]
3220
+
3170
3221
  [[package]]
3171
3222
  name = "typeid"
3172
3223
  version = "1.0.3"
@@ -3321,9 +3372,9 @@ checksum = "e2eebbbfe4093922c2b6734d7c679ebfebd704a0d7e56dfcb0d05818ce28977d"
3321
3372
 
3322
3373
  [[package]]
3323
3374
  name = "uuid"
3324
- version = "1.21.0"
3375
+ version = "1.22.0"
3325
3376
  source = "registry+https://github.com/rust-lang/crates.io-index"
3326
- checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb"
3377
+ checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37"
3327
3378
  dependencies = [
3328
3379
  "getrandom 0.4.1",
3329
3380
  "js-sys",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "spikard-rb-ext"
3
- version = "0.12.0"
3
+ version = "0.13.0"
4
4
  edition = "2024"
5
5
  license = "MIT"
6
6
  authors = ["Na'aman Hirschfeld <nhirschfeld@gmail.com>"]