microsandbox-rb 0.17.0 → 0.17.2

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +229 -8
  3. data/Cargo.lock +45 -46
  4. data/DESIGN.md +90 -72
  5. data/README.md +178 -669
  6. data/SECURITY.md +65 -0
  7. data/docs/configuration.md +154 -0
  8. data/docs/errors.md +74 -0
  9. data/docs/execution.md +108 -0
  10. data/docs/filesystem.md +45 -0
  11. data/docs/images.md +65 -0
  12. data/docs/lifecycle.md +141 -0
  13. data/docs/observability.md +99 -0
  14. data/docs/releasing.md +117 -0
  15. data/docs/runtime.md +154 -0
  16. data/docs/surface.md +75 -0
  17. data/ext/microsandbox/Cargo.toml +9 -5
  18. data/ext/microsandbox/src/agent.rs +13 -11
  19. data/ext/microsandbox/src/backend.rs +1 -1
  20. data/ext/microsandbox/src/exec.rs +12 -8
  21. data/ext/microsandbox/src/fs_stream.rs +19 -7
  22. data/ext/microsandbox/src/host_path.rs +108 -0
  23. data/ext/microsandbox/src/image.rs +2 -2
  24. data/ext/microsandbox/src/lib.rs +3 -2
  25. data/ext/microsandbox/src/runtime.rs +189 -13
  26. data/ext/microsandbox/src/sandbox.rs +149 -102
  27. data/ext/microsandbox/src/snapshot.rs +17 -11
  28. data/ext/microsandbox/src/ssh.rs +22 -16
  29. data/ext/microsandbox/src/stream.rs +6 -2
  30. data/ext/microsandbox/src/volume.rs +50 -17
  31. data/lib/microsandbox/fs.rb +4 -8
  32. data/lib/microsandbox/image.rb +2 -2
  33. data/lib/microsandbox/log_entry.rb +1 -1
  34. data/lib/microsandbox/metrics.rb +1 -1
  35. data/lib/microsandbox/outbound_proxy.rb +8 -0
  36. data/lib/microsandbox/sandbox.rb +128 -13
  37. data/lib/microsandbox/snapshot.rb +1 -1
  38. data/lib/microsandbox/ssh.rb +2 -10
  39. data/lib/microsandbox/streams.rb +8 -5
  40. data/lib/microsandbox/version.rb +1 -1
  41. data/lib/microsandbox/volume.rb +31 -14
  42. data/lib/microsandbox-rb.rb +7 -0
  43. data/lib/microsandbox.rb +88 -31
  44. data/sig/microsandbox.rbs +24 -0
  45. metadata +14 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37f44ca952f2885719237b06ea10b5316c383fee0a2fdfa5c51c76fd295c1591
4
- data.tar.gz: 81e55203c1aea73d0368d93d7c36c73015b9a5a97634b69a3f5d805a48c7446c
3
+ metadata.gz: f76670a6753a6503a0764ed173db3c33a1eff9a62de7a7d9343bc76f8143c1ba
4
+ data.tar.gz: 80d4d4f1c2bbb3f47dd8f714602e6b01a841d62971b70b5682d3ad0c7dcff904
5
5
  SHA512:
6
- metadata.gz: 49876e1d24e9e64ab486932f6180c511ea5142a93f8b1c0edb67f04847b861310a4972046b08babe11679f88835883fa80b739fd2f8d5f7ff5d49316f6c26c8d
7
- data.tar.gz: 3bf053fb8c2e63099c128655fce91335c3ce35c7459af3616acad7d3b773f32184107740c124df2e7f122053d807f74c2d9f6337f66d0c6ed9121c4ddadd2eb3
6
+ metadata.gz: 74429f29417c1b2c2e6aeee35948d3c5201d5ac9d001beba4efceca484dbea53f0041e84f0f7fa0fef5933a89f3e317737fb134d6329267eb5e239fe56d7e297
7
+ data.tar.gz: d4d5072d1a68079a8bfe199e8c53e0d92e7614515e1326e81333f857c1b53b681575f8df2162abb167ea6228841ffba2631f4d2b8df38552040c946966223c2c
data/CHANGELOG.md CHANGED
@@ -6,6 +6,212 @@ All notable changes to this gem are documented here. The format is based on
6
6
  microsandbox runtime it embeds; each release notes the upstream runtime tag it
7
7
  wraps, and the README's Versioning section keeps the full gem→runtime map.
8
8
 
9
+ ## [Unreleased]
10
+
11
+ ## [0.17.2] - 2026-10-12
12
+
13
+ Gem-only fix and release-pipeline hardening release; the embedded runtime
14
+ stays at **`v0.6.18`**. One behaviour change is visible: under
15
+ `Thread.handle_interrupt(X => :on_blocking)` a native call now raises an
16
+ already-deferred exception before it starts instead of after it finishes,
17
+ except in the four sandbox-acquisition methods, which deliver it after the
18
+ acquisition (see the first Fixed entry).
19
+
20
+ ### Added
21
+
22
+ - Two contract specs keep the hand-maintained parts honest:
23
+ `spec/unit/rbs_contract_spec.rb` compares `sig/microsandbox.rbs` with the
24
+ loaded gem, and `spec/unit/docs_contract_spec.rb` checks the docs against
25
+ the code (version table, CHANGELOG links, error table, option list,
26
+ examples, release checklist). CI also runs `rbs -I sig validate`.
27
+
28
+ ### Changed
29
+
30
+ - **Release pipeline hardened** (no change to the gem's code or API). A tag
31
+ now publishes only after a preflight passes — the tag equals the three
32
+ version constants, its commit is on `main`, and CI is green for that exact
33
+ commit — and after the companion `microsandbox-rb-binaries` gems have built
34
+ (a companion build failure now blocks the SDK publish; a companion push
35
+ failure still needs a re-run of `publish-binaries`). The published gem is built
36
+ with plain `gem build`, every workflow action is pinned to a commit SHA
37
+ (kept current by Dependabot), and CI checks `Cargo.lock` against the RustSec
38
+ advisory database with `cargo deny`. See [docs/releasing.md](docs/releasing.md).
39
+ - **The precompiled-extension release job is removed.** The manual-dispatch
40
+ `cross-gems` job never produced a gem. Precompiled extension gems are not
41
+ built or published; every platform installs the source gem (compiled via
42
+ `rb_sys`), exactly as before. The `microsandbox-rb-binaries` gems are
43
+ unaffected.
44
+
45
+ ### Fixed
46
+
47
+ - **An interrupted call no longer leaks what it produced.** A `Timeout.timeout`
48
+ (or any `Thread#raise`), a `Thread#kill` or a Ctrl-C that arrived while a
49
+ native call was in flight used to discard the call's result without
50
+ releasing it: `Timeout.timeout { Sandbox.create(...) }` raised
51
+ `Timeout::Error` and left the sandbox running with no Ruby object owning it
52
+ until the process exited, an interrupted `exec_stream` left its guest
53
+ session open with nothing able to kill it, and an interrupted `exec` kept
54
+ its collected output in memory. The result now always reaches Ruby, and
55
+ what happens to it depends on the interrupt:
56
+ - **`Timeout`/`Thread#raise` and `Thread#kill`** during `Sandbox.create`,
57
+ `Sandbox.connect_or_create`, `Sandbox.start` or `PullSession#sandbox`: the
58
+ sandbox is stopped before the exception propagates — only one the call
59
+ owns; a sandbox `connect_or_create` merely connected to is left running.
60
+ The stop is best-effort: if it fails, the interrupt is still what you
61
+ see, and the sandbox is torn down when its object is garbage-collected.
62
+ - **Ctrl-C (`SIGINT`)** during those four, and **any interrupt** during
63
+ every other call (`exec_stream`, streams, SSH clients, …): nothing is
64
+ stopped at once; the result is released — and a sandbox torn down — when
65
+ its unreferenced object is garbage-collected.
66
+
67
+ Native calls are still uninterruptible, so the exception is raised once the
68
+ call has finished, and in the first case only after the cleanup stop as well
69
+ (a timed-out create therefore returns later than before). One visible
70
+ difference for `Thread.handle_interrupt(X => :on_blocking)`: a native call
71
+ now raises an exception that is already deferred *before* it starts, where
72
+ it used to raise it after finishing. The four acquisition methods above are
73
+ the exception — they hold every queued interrupt back until the sandbox is
74
+ in the caller's hands, so there a deferred exception is delivered after the
75
+ acquisition (at the thread's next blocking operation), not before it.
76
+ - **RBS: `Klass.new` now type-checks with its real arguments.** 24 classes
77
+ whose constructor takes arguments had no `initialize` declaration, so RBS
78
+ synthesized a zero-argument `new` for them.
79
+ - **Docs:** `docs/surface.md` now lists every `create`/`modify` keyword;
80
+ `DESIGN.md` no longer names a runtime tag the gem stopped pinning long ago;
81
+ the `with_backend` example in `docs/runtime.md` is valid Ruby. `0.9.3`
82
+ (never tagged or published) is folded into `0.10.0`, both in this file and
83
+ in the README's Versioning table, and this file now defines the compare
84
+ links for `0.9.1`–`0.13.0`.
85
+
86
+ ## [0.17.1] - 2026-10-12
87
+
88
+ Gem-only security and hardening release; the embedded runtime stays at
89
+ **`v0.6.18`**. Upgrading is recommended for everyone on `0.17.0` or earlier.
90
+ Two fixes tighten input handling and can reject input that used to be
91
+ accepted: `Volume.fs` paths containing a `..` segment, and
92
+ `Microsandbox.runtime_path = nil`.
93
+
94
+ ### Security
95
+
96
+ - **Relative host paths are pinned when a sandbox is created**
97
+ ([GHSA-mcw9-9rf6-p4rm](https://github.com/superradcompany/microsandbox/security/advisories/GHSA-mcw9-9rf6-p4rm),
98
+ high; fixed upstream in runtime `v0.7.6`, which this gem does not embed yet).
99
+ The embedded runtime stored a relative host path exactly as written and
100
+ resolved it against the working directory of whichever process later
101
+ started the sandbox, so restarting a sandbox from another directory mounted
102
+ a different host directory than the one originally intended. The native
103
+ layer now anchors every relative host path to the creating process's
104
+ directory before the configuration is persisted: bind and disk mount
105
+ sources in `volumes:`, a directory or disk-image `image:`, a `root_disk:`
106
+ image path, `Patch.copy_file` / `Patch.copy_dir` sources, the `tls:`
107
+ certificate paths, and a path-form `from_snapshot:`. This covers sandboxes
108
+ created through the gem; the `msb` CLI the gem installs is unchanged, so use
109
+ absolute paths with it. Paths are anchored
110
+ without following symlinks and without requiring the target to exist, so a
111
+ symlinked bind-mount root is still refused unless
112
+ `follow_root_symlinks: true`. Absolute paths, named volumes, and OCI
113
+ references are unchanged, and on a cloud backend paths are forwarded as
114
+ written (they belong to the remote host).
115
+
116
+ **Existing sandboxes are not rewritten.** A sandbox created by an earlier
117
+ gem version with a relative path keeps that saved path and its old
118
+ behaviour: recreate it, or only ever start it from its original directory.
119
+ Affects every earlier `microsandbox-rb` release; the upstream advisory does
120
+ not list this gem.
121
+ - **Errors no longer repeat values that can be credentials.** A URL-style
122
+ proxy address (`socks5://user:pass@host:port`) is refused by shape without
123
+ being echoed; an `env:` / `labels:` / `scripts:` value that is not a Hash
124
+ (or convertible to one, like `ENV`), a malformed patch, and a non-Hash
125
+ secret spec are reported by class name only.
126
+ - **Dependencies with published advisories updated in `Cargo.lock`**:
127
+ `russh` 0.63.1 → 0.63.3 (GHSA-35g8-35p8-c8fw, SSH server side),
128
+ `rustls` 0.23.41 → 0.23.45 (RUSTSEC-2026-0285), `h2` 0.4.15 → 0.4.16
129
+ (RUSTSEC-2026-0258), plus `anyhow` 1.0.104 and `event-listener` 5.4.2
130
+ (unsoundness fixes). Those pulled in `aws-lc-rs` 1.18.1, `aws-lc-sys`
131
+ 0.45.0, `rustls-webpki` 0.103.15, and `num-bigint` 0.5.1 in place of
132
+ `internal-russh-num-bigint`. `rkyv` and `rsa` have no compatible fixed
133
+ release at the pinned runtime and are unchanged.
134
+
135
+ ### Added
136
+
137
+ - `SECURITY.md`: how to report a vulnerability privately, and a table mapping
138
+ upstream microsandbox advisories to the `microsandbox-rb` versions they
139
+ affect (upstream advisories do not list this gem). Shipped in the gem.
140
+ - `require "microsandbox-rb"` as an entry point named after the gem. Outside
141
+ Bundler, `require "microsandbox"` can resolve to the unrelated `microsandbox`
142
+ gem on RubyGems.
143
+
144
+ ### Fixed
145
+
146
+ - **Documentation examples that did not run.** The README quick start failed
147
+ on its second run (`SandboxAlreadyExistsError`; it now uses
148
+ `ephemeral: true`), and the README / configuration-guide `secrets:` example
149
+ used the `#modify` shape and raised `TypeError`. The observability and
150
+ errors guides named the wrong error class for the metrics startup window
151
+ (it is the base `Microsandbox::Error`, matched by message), and
152
+ `log_stream(follow: true)` was documented as ending when the sandbox stops
153
+ (it does not). The guides now also state that an inline secret `value:` is
154
+ stored in cleartext in the local catalog until the sandbox is removed, that
155
+ the block form stops but does not remove, that a runtime home belongs to one
156
+ runtime line (`MSB_HOME`), and list known issues at the pinned runtime
157
+ (including guest `fallocate` truncating bind-mounted files on macOS hosts).
158
+ - **A rejected option no longer triggers a runtime download.** The first-use
159
+ runtime check ran before most argument validation, so `Sandbox.create` with
160
+ a bad option downloaded and installed `msb` before raising. It now runs
161
+ after the options are validated, in `create`, `connect_or_create` and
162
+ `create_with_progress`.
163
+ - **First-use provisioning is serialized within a process.** Several threads
164
+ making their first `Sandbox.create` at once each ran the installer, which
165
+ replaces files in place. `Microsandbox.install`, `Microsandbox.setup` and
166
+ the first-use check now share one lock, and the check runs once.
167
+ - **`Microsandbox.runtime_path = nil` / `libkrunfw_path = nil`** (or `""`)
168
+ raise `ArgumentError` instead of writing an empty path into the set-once
169
+ slot for the rest of the process.
170
+ - **Companion gem detection no longer depends on the host project's name.**
171
+ When the host project is itself a gem with its bundle installed inside the
172
+ project directory, `microsandbox-rb-binaries` could be attributed to the
173
+ host project and ignored, depending on gem load order. The owner is now
174
+ the gem with the innermost matching root.
175
+ - **`patches:` with `from_snapshot:`** raises `ArgumentError` up front. The
176
+ runtime rejects the pair only after claiming the sandbox name on disk,
177
+ which left an empty directory holding the name.
178
+ - **Block forms keep the caller's exception.** `fs.write_stream { }`,
179
+ `ssh.open_client { }` and `client.sftp { }` closed in a bare `ensure`, so a
180
+ failing close replaced whatever the block had raised. The block's exception
181
+ now wins; a close failure is still raised when the block itself succeeded.
182
+ - **`PullSession#sandbox`** re-raises the original create failure when called
183
+ again, instead of an unrelated "already taken" error.
184
+ - **Timestamps are exact to the millisecond.** `Time.at(ms / 1000.0)` went
185
+ through a Float and reported one millisecond low for about half of all
186
+ values (`FsEntry#modified`, `FsMetadata#modified` / `#created`,
187
+ `LogEntry#timestamp`, `Metrics#timestamp`, and every `created_at` /
188
+ `updated_at` / `last_used_at` / `observed_at` reader).
189
+ - **`secrets:` given as a `{ "NAME" => { ... } }` Hash** (the `#modify`
190
+ shape) raises a descriptive `ArgumentError` instead of `TypeError`; a single
191
+ bare spec Hash is accepted as a list of one, as is a single patch Hash for
192
+ `patches:`.
193
+
194
+ ### Changed
195
+
196
+ - **`Volume.fs` paths may not contain a `..` segment.** Every `VolumeFs` operation
197
+ (`read`, `read_text`, `write`, `list`, `mkdir`, `remove_file`, `remove_dir`,
198
+ `exists?`, `copy`, `rename`, `stat`) now refuses a path that contains a `..`
199
+ segment with `FilesystemError`, in the native layer as well as the Ruby
200
+ wrapper. Volume paths are relative to the volume root and never need one.
201
+ A path such as `"a/../b"` that used to be accepted must now be written as
202
+ `"b"`. Names that merely contain dots (`"..hidden"`, `"a..b"`) are fine.
203
+ - **README restructured** along the lines of a conventional Ruby SDK README:
204
+ badges, a Highlights list, a short install + quick start, a Documentation
205
+ table, and a sourced comparison with the official `microsandbox` gem. The
206
+ detailed guides moved into `docs/` (`lifecycle`, `configuration`,
207
+ `execution`, `filesystem`, `observability`, `images`, `runtime`, `errors`,
208
+ `surface`, `releasing`), which the gem now ships (`spec.files`), so the
209
+ links resolve on rubygems.org and rubydoc.info. `docs/surface.md` replaces
210
+ the duplicated implemented-surface prose in README and `DESIGN.md` as the
211
+ single scope statement. `docs/errors.md` lists every error class and marks
212
+ the four the native layer does not currently raise (`PathNotFoundError`,
213
+ `ImagePullFailedError`, `SecretViolationError`, `TlsError`) as reserved.
214
+
9
215
  ## [0.17.0] - 2026-09-13
10
216
 
11
217
  Adopts upstream runtime **`v0.6.16` → `v0.6.18`**, stepping through the
@@ -528,8 +734,10 @@ could make a later CLI copy-out overwrite an arbitrary host file — the SDK
528
734
 
529
735
  Ruby bindings for the additive `v0.6.6` SDK surface (upstream #1099 / #1128),
530
736
  bringing the gem to parity with the Python and Node SDKs, which already ship
531
- this API. The embedded runtime tag is unchanged (`v0.6.6`); this is a pure
532
- binding addition with no breaking change.
737
+ this API. This release also adopts the upstream runtime **`v0.6.3` →
738
+ `v0.6.6`**: that work was prepared as `0.9.3`, which was never tagged or
739
+ published, so the runtime bump and the bindings for its new surface first
740
+ shipped together here. Neither part is a breaking change.
533
741
 
534
742
  ### Added
535
743
 
@@ -562,16 +770,18 @@ Deliberately **not** exposed, matching the Python and Node SDKs (both surface
562
770
  these only through the CLI): `modify`'s `oci_upper_size` overlay-grow field, and
563
771
  the `SandboxMetricsReport` / per-sandbox metrics-report helpers.
564
772
 
565
- ## [0.9.3] - 2026-07-09
773
+ ### Runtime adoption v0.6.3 → v0.6.6 (prepared as 0.9.3, first released in 0.10.0)
774
+
775
+ `0.9.3` was never tagged or published; everything below shipped in `0.10.0`.
566
776
 
567
777
  Adopts upstream runtime **`v0.6.3` → `v0.6.6`** (spanning upstream `v0.6.4` and
568
778
  `v0.6.6`; `v0.6.5` was yanked upstream — its GitHub release was pulled and the
569
779
  type-model refactor it shipped, #1014, was reverted in `v0.6.6`, #1143). The
570
780
  upstream SDK crate's public API grew only *additive* surface (live
571
- modify/resize, ping/touch — Ruby bindings for these land in the next minor),
572
- so this is a pure runtime bump with no Ruby API change.
781
+ modify/resize, ping/touch). The Ruby bindings for it are the `### Added`
782
+ entries above.
573
783
 
574
- ### Fixed
784
+ #### Fixed
575
785
 
576
786
  - **Snapshot restore survives upstream tag republishes** (upstream #1130):
577
787
  restore now pulls the OCI image by its pinned manifest digest
@@ -591,7 +801,7 @@ so this is a pure runtime bump with no Ruby API change.
591
801
  - **Filesystem snapshot `readdir` streams entries** (upstream #1133), fixing
592
802
  unbounded memory growth (RSS leak) when listing very large directories.
593
803
 
594
- ### Changed
804
+ #### Changed
595
805
 
596
806
  - **Embedded runtime is now `v0.6.6`** (`Microsandbox::RUNTIME_VERSION` /
597
807
  `Microsandbox.runtime_version`). Also inherited:
@@ -1260,8 +1470,19 @@ microsandbox runtime, aligned with the official Python/Node/Go SDKs.
1260
1470
  core crate has Apple-native deps). Until precompiled gems are published,
1261
1471
  installing from source requires a Rust toolchain (stable >= 1.91).
1262
1472
 
1263
- [Unreleased]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.14.0...HEAD
1473
+ [Unreleased]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.17.2...HEAD
1474
+ [0.17.2]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.17.1...v0.17.2
1475
+ [0.17.1]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.17.0...v0.17.1
1476
+ [0.17.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.16.0...v0.17.0
1477
+ [0.16.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.15.0...v0.16.0
1478
+ [0.15.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.14.0...v0.15.0
1264
1479
  [0.14.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.13.0...v0.14.0
1480
+ [0.13.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.12.0...v0.13.0
1481
+ [0.12.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.11.0...v0.12.0
1482
+ [0.11.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.10.0...v0.11.0
1483
+ [0.10.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.9.2...v0.10.0
1484
+ [0.9.2]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.9.1...v0.9.2
1485
+ [0.9.1]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.9.0...v0.9.1
1265
1486
  [0.9.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.8.2...v0.9.0
1266
1487
  [0.8.2]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.8.1...v0.8.2
1267
1488
  [0.8.1]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.8.0...v0.8.1
data/Cargo.lock CHANGED
@@ -169,9 +169,9 @@ dependencies = [
169
169
 
170
170
  [[package]]
171
171
  name = "anyhow"
172
- version = "1.0.102"
172
+ version = "1.0.104"
173
173
  source = "registry+https://github.com/rust-lang/crates.io-index"
174
- checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
174
+ checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
175
175
 
176
176
  [[package]]
177
177
  name = "argon2"
@@ -249,7 +249,7 @@ checksum = "b9552f96391c005e6ab449fa941420935e7e062489b12b8b1b08879b2163f5b5"
249
249
  dependencies = [
250
250
  "bytes",
251
251
  "half",
252
- "num-bigint",
252
+ "num-bigint 0.4.6",
253
253
  "num-traits",
254
254
  ]
255
255
 
@@ -579,9 +579,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
579
579
 
580
580
  [[package]]
581
581
  name = "aws-lc-rs"
582
- version = "1.17.0"
582
+ version = "1.18.1"
583
583
  source = "registry+https://github.com/rust-lang/crates.io-index"
584
- checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00"
584
+ checksum = "b281d307588d634de920874890732659e2e7672f72b5e10e81badc1a8a83621e"
585
585
  dependencies = [
586
586
  "aws-lc-sys",
587
587
  "untrusted 0.7.1",
@@ -590,14 +590,15 @@ dependencies = [
590
590
 
591
591
  [[package]]
592
592
  name = "aws-lc-sys"
593
- version = "0.41.0"
593
+ version = "0.45.0"
594
594
  source = "registry+https://github.com/rust-lang/crates.io-index"
595
- checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4"
595
+ checksum = "9bff6c3b54fad79a2e60b8102caf565819711497c1f5f092f49508e2f5c31b27"
596
596
  dependencies = [
597
597
  "cc",
598
598
  "cmake",
599
599
  "dunce",
600
600
  "fs_extra",
601
+ "pkg-config",
601
602
  ]
602
603
 
603
604
  [[package]]
@@ -643,7 +644,7 @@ checksum = "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695"
643
644
  dependencies = [
644
645
  "autocfg",
645
646
  "libm",
646
- "num-bigint",
647
+ "num-bigint 0.4.6",
647
648
  "num-integer",
648
649
  "num-traits",
649
650
  "serde",
@@ -1614,7 +1615,7 @@ dependencies = [
1614
1615
  "asn1-rs",
1615
1616
  "displaydoc",
1616
1617
  "nom",
1617
- "num-bigint",
1618
+ "num-bigint 0.4.6",
1618
1619
  "num-traits",
1619
1620
  "rusticata-macros",
1620
1621
  ]
@@ -1922,7 +1923,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1922
1923
  checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1923
1924
  dependencies = [
1924
1925
  "libc",
1925
- "windows-sys 0.61.2",
1926
+ "windows-sys 0.52.0",
1926
1927
  ]
1927
1928
 
1928
1929
  [[package]]
@@ -1937,11 +1938,10 @@ dependencies = [
1937
1938
 
1938
1939
  [[package]]
1939
1940
  name = "event-listener"
1940
- version = "5.4.1"
1941
+ version = "5.4.2"
1941
1942
  source = "registry+https://github.com/rust-lang/crates.io-index"
1942
- checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
1943
+ checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2"
1943
1944
  dependencies = [
1944
- "concurrent-queue",
1945
1945
  "parking",
1946
1946
  "pin-project-lite",
1947
1947
  ]
@@ -2051,7 +2051,7 @@ checksum = "94e7099f6313ecacbe1256e8ff9d617b75d1bcb16a6fddef94866d225a01a14a"
2051
2051
  dependencies = [
2052
2052
  "io-lifetimes 2.0.4",
2053
2053
  "rustix",
2054
- "windows-sys 0.59.0",
2054
+ "windows-sys 0.52.0",
2055
2055
  ]
2056
2056
 
2057
2057
  [[package]]
@@ -2300,9 +2300,9 @@ dependencies = [
2300
2300
 
2301
2301
  [[package]]
2302
2302
  name = "h2"
2303
- version = "0.4.15"
2303
+ version = "0.4.16"
2304
2304
  source = "registry+https://github.com/rust-lang/crates.io-index"
2305
- checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155"
2305
+ checksum = "a9f37a958b41b3b19ee2707c06439c0e9e547e847223eb791ecb0cb821c65e27"
2306
2306
  dependencies = [
2307
2307
  "atomic-waker",
2308
2308
  "bytes",
@@ -2851,18 +2851,6 @@ dependencies = [
2851
2851
  "hybrid-array",
2852
2852
  ]
2853
2853
 
2854
- [[package]]
2855
- name = "internal-russh-num-bigint"
2856
- version = "0.5.0"
2857
- source = "registry+https://github.com/rust-lang/crates.io-index"
2858
- checksum = "ae8e22120c32fb4d19ec55fba35015f57095cd95a2e3b732e44457f5915b2ee8"
2859
- dependencies = [
2860
- "num-integer",
2861
- "num-traits",
2862
- "rand 0.10.2",
2863
- "rand_core 0.10.1",
2864
- ]
2865
-
2866
2854
  [[package]]
2867
2855
  name = "io-extras"
2868
2856
  version = "0.19.0"
@@ -2870,7 +2858,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2870
2858
  checksum = "20fd6de4ccfcc187e38bc21cfa543cb5a302cb86a8b114eb7f0bf0dc9f8ac00f"
2871
2859
  dependencies = [
2872
2860
  "io-lifetimes 3.0.1",
2873
- "windows-sys 0.60.2",
2861
+ "windows-sys 0.52.0",
2874
2862
  ]
2875
2863
 
2876
2864
  [[package]]
@@ -3672,7 +3660,7 @@ dependencies = [
3672
3660
 
3673
3661
  [[package]]
3674
3662
  name = "microsandbox_rb"
3675
- version = "0.17.0"
3663
+ version = "0.17.2"
3676
3664
  dependencies = [
3677
3665
  "chrono",
3678
3666
  "futures",
@@ -4033,7 +4021,7 @@ version = "0.4.3"
4033
4021
  source = "registry+https://github.com/rust-lang/crates.io-index"
4034
4022
  checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
4035
4023
  dependencies = [
4036
- "num-bigint",
4024
+ "num-bigint 0.4.6",
4037
4025
  "num-complex",
4038
4026
  "num-integer",
4039
4027
  "num-iter",
@@ -4051,6 +4039,18 @@ dependencies = [
4051
4039
  "num-traits",
4052
4040
  ]
4053
4041
 
4042
+ [[package]]
4043
+ name = "num-bigint"
4044
+ version = "0.5.1"
4045
+ source = "registry+https://github.com/rust-lang/crates.io-index"
4046
+ checksum = "93e7820bc0a80a0238e650327316f929ba18d5be054b647490a3a6a339f3e7c0"
4047
+ dependencies = [
4048
+ "num-integer",
4049
+ "num-traits",
4050
+ "rand 0.10.2",
4051
+ "rand_core 0.10.1",
4052
+ ]
4053
+
4054
4054
  [[package]]
4055
4055
  name = "num-complex"
4056
4056
  version = "0.4.6"
@@ -4092,7 +4092,7 @@ version = "0.4.2"
4092
4092
  source = "registry+https://github.com/rust-lang/crates.io-index"
4093
4093
  checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
4094
4094
  dependencies = [
4095
- "num-bigint",
4095
+ "num-bigint 0.4.6",
4096
4096
  "num-integer",
4097
4097
  "num-traits",
4098
4098
  ]
@@ -4733,7 +4733,7 @@ dependencies = [
4733
4733
  "once_cell",
4734
4734
  "socket2",
4735
4735
  "tracing",
4736
- "windows-sys 0.60.2",
4736
+ "windows-sys 0.52.0",
4737
4737
  ]
4738
4738
 
4739
4739
  [[package]]
@@ -5106,9 +5106,9 @@ dependencies = [
5106
5106
 
5107
5107
  [[package]]
5108
5108
  name = "russh"
5109
- version = "0.63.1"
5109
+ version = "0.63.3"
5110
5110
  source = "registry+https://github.com/rust-lang/crates.io-index"
5111
- checksum = "35bab1b87d915817d5d9cc352637cd40d5f0b298a48c6309af9156a4addc3031"
5111
+ checksum = "036204edbd199552a5b3832f63c60dcdf395dc44c7f06b4af1c0e8139cc11bce"
5112
5112
  dependencies = [
5113
5113
  "aes 0.9.1",
5114
5114
  "aws-lc-rs",
@@ -5137,13 +5137,12 @@ dependencies = [
5137
5137
  "hex-literal",
5138
5138
  "hmac 0.13.0",
5139
5139
  "inout 0.2.2",
5140
- "internal-russh-num-bigint",
5141
5140
  "keccak",
5142
5141
  "log",
5143
5142
  "md5",
5144
5143
  "ml-kem",
5145
5144
  "module-lattice",
5146
- "num-bigint",
5145
+ "num-bigint 0.5.1",
5147
5146
  "p256",
5148
5147
  "p384",
5149
5148
  "p521",
@@ -5271,7 +5270,7 @@ dependencies = [
5271
5270
  "errno",
5272
5271
  "libc",
5273
5272
  "linux-raw-sys",
5274
- "windows-sys 0.61.2",
5273
+ "windows-sys 0.52.0",
5275
5274
  ]
5276
5275
 
5277
5276
  [[package]]
@@ -5286,9 +5285,9 @@ dependencies = [
5286
5285
 
5287
5286
  [[package]]
5288
5287
  name = "rustls"
5289
- version = "0.23.41"
5288
+ version = "0.23.45"
5290
5289
  source = "registry+https://github.com/rust-lang/crates.io-index"
5291
- checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f"
5290
+ checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634"
5292
5291
  dependencies = [
5293
5292
  "aws-lc-rs",
5294
5293
  "log",
@@ -5340,7 +5339,7 @@ dependencies = [
5340
5339
  "security-framework 3.7.0",
5341
5340
  "security-framework-sys",
5342
5341
  "webpki-root-certs",
5343
- "windows-sys 0.61.2",
5342
+ "windows-sys 0.52.0",
5344
5343
  ]
5345
5344
 
5346
5345
  [[package]]
@@ -5351,9 +5350,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"
5351
5350
 
5352
5351
  [[package]]
5353
5352
  name = "rustls-webpki"
5354
- version = "0.103.13"
5353
+ version = "0.103.15"
5355
5354
  source = "registry+https://github.com/rust-lang/crates.io-index"
5356
- checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
5355
+ checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2"
5357
5356
  dependencies = [
5358
5357
  "aws-lc-rs",
5359
5358
  "ring",
@@ -6414,7 +6413,7 @@ dependencies = [
6414
6413
  "getrandom 0.4.2",
6415
6414
  "once_cell",
6416
6415
  "rustix",
6417
- "windows-sys 0.61.2",
6416
+ "windows-sys 0.52.0",
6418
6417
  ]
6419
6418
 
6420
6419
  [[package]]
@@ -7211,7 +7210,7 @@ version = "0.1.11"
7211
7210
  source = "registry+https://github.com/rust-lang/crates.io-index"
7212
7211
  checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
7213
7212
  dependencies = [
7214
- "windows-sys 0.61.2",
7213
+ "windows-sys 0.52.0",
7215
7214
  ]
7216
7215
 
7217
7216
  [[package]]
@@ -7522,7 +7521,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
7522
7521
  checksum = "3f3fd376f71958b862e7afb20cfe5a22830e1963462f3a17f49d82a6c1d1f42d"
7523
7522
  dependencies = [
7524
7523
  "bitflags 2.13.0",
7525
- "windows-sys 0.59.0",
7524
+ "windows-sys 0.52.0",
7526
7525
  ]
7527
7526
 
7528
7527
  [[package]]