microsandbox-rb 0.8.2 → 0.9.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9fa6d9703f579a81424b9a32d4ab7c066eb5a48c1f8f7407ae2f6ca98770fd85
4
- data.tar.gz: 6f83fea6ecf71906786bbb2416d6ee3ad52a588077024a5da0eed71eb49430ef
3
+ metadata.gz: c9a11efe93577fa841e3825418b7ea2bdd27cadd404d64f750ef060fa255d4bc
4
+ data.tar.gz: 9ccca9426b0ddefed890528408775068244959e69400497c904ffb2d408c27a5
5
5
  SHA512:
6
- metadata.gz: e18a042c506b1d501f072816c6bdd20f429c52a18410112cb82fb9fc97981d2ce38f53dc02b4024627c64a7dc6b643060c0d67c0dd073500b91a83a3d7c6319b
7
- data.tar.gz: b7b473d7e9d5fc5321abd6f9e2348ed9f0e75d1a924e64fa2e19580eb78e40230cddbdc310132ffd9248c984e6684293868956abb365a72ca3dcf4d3b828f384
6
+ metadata.gz: 6cc9f1524466a9e910ee21aabcefbf62a8abfa79625d1bdd7a7a37fc634db018a8d8efa277613691d69b153fed22d1d5fcaf493ecbaac629b1b1a866e861461e
7
+ data.tar.gz: c36aa8379159eead35e062c4f282a34deb3957dbf93a34ed48d395ef9e52c96a7f3343a145f24f3418fe25a5a8e1dfc64d23b8514845d80090a14161739e43c3
data/CHANGELOG.md CHANGED
@@ -6,6 +6,57 @@ 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
+ ## [0.9.1] - 2026-07-03
10
+
11
+ Adopts upstream runtime **`v0.6.1` → `v0.6.2`**. The upstream SDK crate's public
12
+ API is unchanged in this release — the only surface change attempted upstream (a
13
+ `disk_size` builder rename, #983) was reverted before the release cut (#1078) —
14
+ so this is a pure runtime bump with no Ruby API change.
15
+
16
+ ### Changed
17
+
18
+ - **Embedded runtime is now `v0.6.2`** (`Microsandbox::RUNTIME_VERSION` /
19
+ `Microsandbox.runtime_version`). Upstream improvements inherited by the gem:
20
+ - **Faster image loads and pulls** (upstream #1075): an early cache gate skips
21
+ already-imported layers and OCI layer decompression switches to zlib-rs.
22
+ Inherited transitively through the SDK crate's `microsandbox-image`
23
+ dependency, so `Sandbox.create` image pulls benefit directly.
24
+ - `msb` CLI polish (terminal-aware help colors, aligned `doctor` runtime
25
+ diagnostics, image-load progress) ships in the prebuilt runtime binary but
26
+ does not affect the Ruby API surface.
27
+
28
+ ## [0.9.0] - 2026-06-29
29
+
30
+ Adopts upstream runtime **`v0.5.10` → `v0.6.1`** (spanning the upstream `v0.6.0`
31
+ and `v0.6.1` releases). The upstream public SDK surface is purely additive — no
32
+ items were removed or re-signatured — so the gem's Ruby API is unchanged and the
33
+ existing bindings compile against `v0.6.1` untouched. Per the README's versioning
34
+ policy, adopting a new upstream runtime moves the gem onto its own `0.9` line.
35
+
36
+ ### Changed
37
+
38
+ - **Embedded runtime is now `v0.6.1`** (`Microsandbox::RUNTIME_VERSION` /
39
+ `Microsandbox.runtime_version`). Upstream fixes inherited by the synchronous
40
+ Ruby API:
41
+ - **Zombie sandbox runtimes no longer block** (upstream #1036): the SDK stops
42
+ waiting on a sandbox runtime that has already exited, so lifecycle calls
43
+ return promptly instead of hanging on a dead child.
44
+ - **Secrets are substituted through `CONNECT` proxies** (upstream #1022):
45
+ `microsandbox-network` now applies secret injection on tunnelled (HTTPS
46
+ `CONNECT`) requests, not only on plain-HTTP ones.
47
+ - **Stale sandboxes are stopped and cleaned up** (upstream #1050).
48
+ - Windows host support, `msb` CLI additions (`--no-tty`, self-downgrade,
49
+ cross-platform `doctor`), and the `msb_krun` `0.1.17 → 0.1.19` bump are
50
+ inherited but do not affect the macOS/Linux Ruby build or API surface.
51
+
52
+ ### Notes
53
+
54
+ - The new upstream **host-directory bind rootfs** (`ImageBuilder::bind`, upstream
55
+ #1021) is intentionally **not** exposed in this release: it requires a real
56
+ microVM boot to exercise, and the Python SDK parity reference only stubs the
57
+ type without wiring it into the sandbox builder. Tracked as a possible
58
+ follow-up.
59
+
9
60
  ## [0.8.2] - 2026-06-29
10
61
 
11
62
  Gem-only release on the `v0.5.10` runtime (unchanged). Bundles the post-`0.8.1`
@@ -580,7 +631,11 @@ microsandbox runtime, aligned with the official Python/Node/Go SDKs.
580
631
  core crate has Apple-native deps). Until precompiled gems are published,
581
632
  installing from source requires a Rust toolchain (stable >= 1.91).
582
633
 
583
- [Unreleased]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.7.0...HEAD
634
+ [Unreleased]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.9.0...HEAD
635
+ [0.9.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.8.2...v0.9.0
636
+ [0.8.2]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.8.1...v0.8.2
637
+ [0.8.1]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.8.0...v0.8.1
638
+ [0.8.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.7.0...v0.8.0
584
639
  [0.7.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.6.0...v0.7.0
585
640
  [0.6.0]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.5.12...v0.6.0
586
641
  [0.5.12]: https://github.com/ya-luotao/microsandbox-rb/compare/v0.5.11...v0.5.12
data/Cargo.lock CHANGED
@@ -122,7 +122,7 @@ version = "1.1.5"
122
122
  source = "registry+https://github.com/rust-lang/crates.io-index"
123
123
  checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
124
124
  dependencies = [
125
- "windows-sys 0.61.2",
125
+ "windows-sys 0.60.2",
126
126
  ]
127
127
 
128
128
  [[package]]
@@ -133,7 +133,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
133
133
  dependencies = [
134
134
  "anstyle",
135
135
  "once_cell_polyfill",
136
- "windows-sys 0.61.2",
136
+ "windows-sys 0.60.2",
137
137
  ]
138
138
 
139
139
  [[package]]
@@ -1418,7 +1418,7 @@ dependencies = [
1418
1418
  "libc",
1419
1419
  "option-ext",
1420
1420
  "redox_users",
1421
- "windows-sys 0.61.2",
1421
+ "windows-sys 0.59.0",
1422
1422
  ]
1423
1423
 
1424
1424
  [[package]]
@@ -1616,7 +1616,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1616
1616
  checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1617
1617
  dependencies = [
1618
1618
  "libc",
1619
- "windows-sys 0.61.2",
1619
+ "windows-sys 0.52.0",
1620
1620
  ]
1621
1621
 
1622
1622
  [[package]]
@@ -1697,6 +1697,7 @@ checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
1697
1697
  dependencies = [
1698
1698
  "crc32fast",
1699
1699
  "miniz_oxide",
1700
+ "zlib-rs",
1700
1701
  ]
1701
1702
 
1702
1703
  [[package]]
@@ -2460,26 +2461,6 @@ dependencies = [
2460
2461
  "icu_properties",
2461
2462
  ]
2462
2463
 
2463
- [[package]]
2464
- name = "imago"
2465
- version = "0.2.3"
2466
- source = "registry+https://github.com/rust-lang/crates.io-index"
2467
- checksum = "ae7cfee876c698a1a2ed9c705ab18f21acbed82110f19b51cc458de73426fe2c"
2468
- dependencies = [
2469
- "async-trait",
2470
- "bincode",
2471
- "cfg-if",
2472
- "libc",
2473
- "miniz_oxide",
2474
- "nix 0.30.1",
2475
- "page_size",
2476
- "rustc_version",
2477
- "tokio",
2478
- "tracing",
2479
- "vm-memory 0.18.0",
2480
- "windows-sys 0.61.2",
2481
- ]
2482
-
2483
2464
  [[package]]
2484
2465
  name = "indexmap"
2485
2466
  version = "2.14.0"
@@ -2875,15 +2856,6 @@ dependencies = [
2875
2856
  "libc",
2876
2857
  ]
2877
2858
 
2878
- [[package]]
2879
- name = "linux-loader"
2880
- version = "0.13.0"
2881
- source = "registry+https://github.com/rust-lang/crates.io-index"
2882
- checksum = "870c3814345f050991f99869417779f6062542bcf4ed81db7a1b926ad1306638"
2883
- dependencies = [
2884
- "vm-memory 0.16.2",
2885
- ]
2886
-
2887
2859
  [[package]]
2888
2860
  name = "linux-raw-sys"
2889
2861
  version = "0.12.1"
@@ -3003,8 +2975,8 @@ dependencies = [
3003
2975
 
3004
2976
  [[package]]
3005
2977
  name = "microsandbox"
3006
- version = "0.5.10"
3007
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
2978
+ version = "0.6.2"
2979
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3008
2980
  dependencies = [
3009
2981
  "anyhow",
3010
2982
  "astral-tokio-tar",
@@ -3052,12 +3024,13 @@ dependencies = [
3052
3024
  "tracing",
3053
3025
  "typed-builder",
3054
3026
  "which",
3027
+ "windows-sys 0.61.2",
3055
3028
  ]
3056
3029
 
3057
3030
  [[package]]
3058
3031
  name = "microsandbox-agent-client"
3059
- version = "0.5.10"
3060
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
3032
+ version = "0.6.2"
3033
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3061
3034
  dependencies = [
3062
3035
  "ciborium",
3063
3036
  "microsandbox-protocol",
@@ -3069,8 +3042,8 @@ dependencies = [
3069
3042
 
3070
3043
  [[package]]
3071
3044
  name = "microsandbox-db"
3072
- version = "0.5.10"
3073
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
3045
+ version = "0.6.2"
3046
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3074
3047
  dependencies = [
3075
3048
  "async-trait",
3076
3049
  "sea-orm",
@@ -3081,8 +3054,8 @@ dependencies = [
3081
3054
 
3082
3055
  [[package]]
3083
3056
  name = "microsandbox-filesystem"
3084
- version = "0.5.10"
3085
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
3057
+ version = "0.6.2"
3058
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3086
3059
  dependencies = [
3087
3060
  "libc",
3088
3061
  "microsandbox-utils",
@@ -3094,8 +3067,8 @@ dependencies = [
3094
3067
 
3095
3068
  [[package]]
3096
3069
  name = "microsandbox-image"
3097
- version = "0.5.10"
3098
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
3070
+ version = "0.6.2"
3071
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3099
3072
  dependencies = [
3100
3073
  "astral-tokio-tar",
3101
3074
  "async-compression",
@@ -3115,24 +3088,25 @@ dependencies = [
3115
3088
  "tokio",
3116
3089
  "tokio-util",
3117
3090
  "tracing",
3118
- "xattr",
3091
+ "windows-sys 0.61.2",
3119
3092
  ]
3120
3093
 
3121
3094
  [[package]]
3122
3095
  name = "microsandbox-metrics"
3123
- version = "0.5.10"
3124
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
3096
+ version = "0.6.2"
3097
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3125
3098
  dependencies = [
3126
3099
  "chrono",
3127
3100
  "libc",
3128
3101
  "thiserror 2.0.18",
3129
3102
  "tracing",
3103
+ "windows-sys 0.61.2",
3130
3104
  ]
3131
3105
 
3132
3106
  [[package]]
3133
3107
  name = "microsandbox-migration"
3134
- version = "0.5.10"
3135
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
3108
+ version = "0.6.2"
3109
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3136
3110
  dependencies = [
3137
3111
  "sea-orm-migration",
3138
3112
  "serde_json",
@@ -3140,8 +3114,8 @@ dependencies = [
3140
3114
 
3141
3115
  [[package]]
3142
3116
  name = "microsandbox-network"
3143
- version = "0.5.10"
3144
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
3117
+ version = "0.6.2"
3118
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3145
3119
  dependencies = [
3146
3120
  "base64",
3147
3121
  "bytes",
@@ -3159,6 +3133,7 @@ dependencies = [
3159
3133
  "microsandbox-protocol",
3160
3134
  "microsandbox-utils",
3161
3135
  "msb_krun",
3136
+ "msb_krun_utils",
3162
3137
  "parking_lot",
3163
3138
  "pem",
3164
3139
  "percent-encoding",
@@ -3176,12 +3151,13 @@ dependencies = [
3176
3151
  "tokio",
3177
3152
  "tokio-rustls",
3178
3153
  "tracing",
3154
+ "windows-sys 0.61.2",
3179
3155
  ]
3180
3156
 
3181
3157
  [[package]]
3182
3158
  name = "microsandbox-protocol"
3183
- version = "0.5.10"
3184
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
3159
+ version = "0.6.2"
3160
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3185
3161
  dependencies = [
3186
3162
  "chrono",
3187
3163
  "ciborium",
@@ -3195,8 +3171,8 @@ dependencies = [
3195
3171
 
3196
3172
  [[package]]
3197
3173
  name = "microsandbox-runtime"
3198
- version = "0.5.10"
3199
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
3174
+ version = "0.6.2"
3175
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3200
3176
  dependencies = [
3201
3177
  "bytes",
3202
3178
  "chrono",
@@ -3221,12 +3197,13 @@ dependencies = [
3221
3197
  "thiserror 2.0.18",
3222
3198
  "tokio",
3223
3199
  "tracing",
3200
+ "windows-sys 0.61.2",
3224
3201
  ]
3225
3202
 
3226
3203
  [[package]]
3227
3204
  name = "microsandbox-types"
3228
- version = "0.5.10"
3229
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
3205
+ version = "0.6.2"
3206
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3230
3207
  dependencies = [
3231
3208
  "chrono",
3232
3209
  "serde",
@@ -3237,19 +3214,20 @@ dependencies = [
3237
3214
 
3238
3215
  [[package]]
3239
3216
  name = "microsandbox-utils"
3240
- version = "0.5.10"
3241
- source = "git+https://github.com/superradcompany/microsandbox?tag=v0.5.10#a62c4e45da7320e89aafc44b8a44fc74ec49fb53"
3217
+ version = "0.6.2"
3218
+ source = "git+https://github.com/superradcompany/microsandbox?tag=v0.6.2#e9043c89d3432a548908bb145581be4fa1e2e3d9"
3242
3219
  dependencies = [
3243
3220
  "dirs",
3244
3221
  "libc",
3245
3222
  "reflink-copy",
3246
3223
  "scopeguard",
3247
3224
  "ureq",
3225
+ "windows-sys 0.61.2",
3248
3226
  ]
3249
3227
 
3250
3228
  [[package]]
3251
3229
  name = "microsandbox_rb"
3252
- version = "0.8.2"
3230
+ version = "0.9.1"
3253
3231
  dependencies = [
3254
3232
  "chrono",
3255
3233
  "futures",
@@ -3321,11 +3299,31 @@ dependencies = [
3321
3299
  "num-traits",
3322
3300
  ]
3323
3301
 
3302
+ [[package]]
3303
+ name = "msb-imago"
3304
+ version = "0.1.1"
3305
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3306
+ checksum = "c3077f41d73d78575dd706fcb626778eea7942ab2f1402ec040a4e11badc5dfa"
3307
+ dependencies = [
3308
+ "async-trait",
3309
+ "bincode",
3310
+ "cfg-if",
3311
+ "libc",
3312
+ "miniz_oxide",
3313
+ "nix 0.30.1",
3314
+ "page_size",
3315
+ "rustc_version",
3316
+ "tokio",
3317
+ "tracing",
3318
+ "vm-memory",
3319
+ "windows-sys 0.61.2",
3320
+ ]
3321
+
3324
3322
  [[package]]
3325
3323
  name = "msb_krun"
3326
- version = "0.1.17"
3324
+ version = "0.1.19"
3327
3325
  source = "registry+https://github.com/rust-lang/crates.io-index"
3328
- checksum = "72a554acf513be16b336fbcd4a9bab29a78b06a5ddf94e917481cfeafc1078f5"
3326
+ checksum = "c0fb3437734ef4103d3891d3cbd51a8726f196af350c68cb044a1860207c64d3"
3329
3327
  dependencies = [
3330
3328
  "crossbeam-channel",
3331
3329
  "kvm-bindings",
@@ -3338,14 +3336,14 @@ dependencies = [
3338
3336
  "msb_krun_polly",
3339
3337
  "msb_krun_utils",
3340
3338
  "msb_krun_vmm",
3341
- "vm-memory 0.16.2",
3339
+ "vm-memory",
3342
3340
  ]
3343
3341
 
3344
3342
  [[package]]
3345
3343
  name = "msb_krun_arch"
3346
- version = "0.1.17"
3344
+ version = "0.1.19"
3347
3345
  source = "registry+https://github.com/rust-lang/crates.io-index"
3348
- checksum = "9d270d914cee3125cf71734b9a5aa60fe7d9648f09511999199424e0fe1a88c6"
3346
+ checksum = "e25fe665643d66900ec9407ef0d3afdb5cd4ca97ad394c46b8243bfa6344bfc0"
3349
3347
  dependencies = [
3350
3348
  "kvm-bindings",
3351
3349
  "kvm-ioctls",
@@ -3353,21 +3351,20 @@ dependencies = [
3353
3351
  "msb_krun_arch_gen",
3354
3352
  "msb_krun_smbios",
3355
3353
  "msb_krun_utils",
3356
- "vm-memory 0.16.2",
3357
- "vmm-sys-util",
3354
+ "vm-memory",
3358
3355
  ]
3359
3356
 
3360
3357
  [[package]]
3361
3358
  name = "msb_krun_arch_gen"
3362
- version = "0.1.17"
3359
+ version = "0.1.19"
3363
3360
  source = "registry+https://github.com/rust-lang/crates.io-index"
3364
- checksum = "8372d1e4e8c853e20ffb5568a4cc3f930a2bf1ce25bc346812ac7b84e84639d4"
3361
+ checksum = "7e50dfac228ad088917f8ffb2920c4a56d762ebc5a90950ee7bf5414253b02aa"
3365
3362
 
3366
3363
  [[package]]
3367
3364
  name = "msb_krun_cpuid"
3368
- version = "0.1.17"
3365
+ version = "0.1.19"
3369
3366
  source = "registry+https://github.com/rust-lang/crates.io-index"
3370
- checksum = "179542321455c65a8e4b14c09bc8443227a89cd46ef2c9c06f0ee1ab11f510ea"
3367
+ checksum = "fd5221749c0224858b075b61f3f2a0964dbfe367093e9ee650b6b0e3d690c3b2"
3371
3368
  dependencies = [
3372
3369
  "kvm-bindings",
3373
3370
  "kvm-ioctls",
@@ -3376,37 +3373,39 @@ dependencies = [
3376
3373
 
3377
3374
  [[package]]
3378
3375
  name = "msb_krun_devices"
3379
- version = "0.1.17"
3376
+ version = "0.1.19"
3380
3377
  source = "registry+https://github.com/rust-lang/crates.io-index"
3381
- checksum = "67350e76fd466e1a089b89fa548ba85a92f237c2d3dab179ba675cfd18eb9a39"
3378
+ checksum = "4fee50bfdf1a1258e33bcf0ee8631bb805db79b8d442161ab63d700689a992a8"
3382
3379
  dependencies = [
3383
3380
  "bitflags 1.3.2",
3384
3381
  "capng",
3385
3382
  "caps",
3386
3383
  "crossbeam-channel",
3387
- "imago",
3388
3384
  "kvm-bindings",
3389
3385
  "kvm-ioctls",
3390
3386
  "libc",
3391
3387
  "libloading",
3392
3388
  "log",
3393
3389
  "lru",
3390
+ "msb-imago",
3394
3391
  "msb_krun_arch",
3395
3392
  "msb_krun_hvf",
3396
3393
  "msb_krun_polly",
3397
3394
  "msb_krun_utils",
3398
3395
  "nix 0.30.1",
3399
3396
  "rand 0.9.4",
3397
+ "tokio",
3400
3398
  "virtio-bindings",
3401
3399
  "vm-fdt",
3402
- "vm-memory 0.16.2",
3400
+ "vm-memory",
3401
+ "windows-sys 0.61.2",
3403
3402
  ]
3404
3403
 
3405
3404
  [[package]]
3406
3405
  name = "msb_krun_hvf"
3407
- version = "0.1.17"
3406
+ version = "0.1.19"
3408
3407
  source = "registry+https://github.com/rust-lang/crates.io-index"
3409
- checksum = "13eaca12857149c3552007a18c7f863ccc6b4dddcf2863c0bcc8fbc2aa2d4c6e"
3408
+ checksum = "3f2300bbe4dbd56bdc3ffc2384baf82e299fff8a45e844f41c4a0be64210ed47"
3410
3409
  dependencies = [
3411
3410
  "crossbeam-channel",
3412
3411
  "libloading",
@@ -3416,19 +3415,19 @@ dependencies = [
3416
3415
 
3417
3416
  [[package]]
3418
3417
  name = "msb_krun_kernel"
3419
- version = "0.1.17"
3418
+ version = "0.1.19"
3420
3419
  source = "registry+https://github.com/rust-lang/crates.io-index"
3421
- checksum = "514f7493860978b08819fdcc4ef3d1887fd4d2b5e26ad0a0eabcec005410df94"
3420
+ checksum = "3402b8879bd5b91f33d069fefa00fd0416f12cd660cfd7538da8e77201f2dda5"
3422
3421
  dependencies = [
3423
3422
  "msb_krun_utils",
3424
- "vm-memory 0.16.2",
3423
+ "vm-memory",
3425
3424
  ]
3426
3425
 
3427
3426
  [[package]]
3428
3427
  name = "msb_krun_polly"
3429
- version = "0.1.17"
3428
+ version = "0.1.19"
3430
3429
  source = "registry+https://github.com/rust-lang/crates.io-index"
3431
- checksum = "08ebbb0336b9cd8dcffa9c47d01a729de4f83c39fc099620f4f9c4d8ef69f460"
3430
+ checksum = "da550bf268cb9217255ed152bfca9f61275a2796237fd180989958c7f54dc137"
3432
3431
  dependencies = [
3433
3432
  "libc",
3434
3433
  "msb_krun_utils",
@@ -3436,18 +3435,18 @@ dependencies = [
3436
3435
 
3437
3436
  [[package]]
3438
3437
  name = "msb_krun_smbios"
3439
- version = "0.1.17"
3438
+ version = "0.1.19"
3440
3439
  source = "registry+https://github.com/rust-lang/crates.io-index"
3441
- checksum = "f25cb991386c6aca7c74d0bd8b327a807290830e439fbb473c5e1b62a7c66d32"
3440
+ checksum = "2c0737818e69346348f8ba2a7197cbec2336e807e5f7f094c80e0ca1635ca054"
3442
3441
  dependencies = [
3443
- "vm-memory 0.16.2",
3442
+ "vm-memory",
3444
3443
  ]
3445
3444
 
3446
3445
  [[package]]
3447
3446
  name = "msb_krun_utils"
3448
- version = "0.1.17"
3447
+ version = "0.1.19"
3449
3448
  source = "registry+https://github.com/rust-lang/crates.io-index"
3450
- checksum = "b7104f87f235ef5cc320ffa760b7cd3635960b58cdc5e1ec89df852fc538f042"
3449
+ checksum = "fb370035195bfd6d60e0b4ad8b0d68dcf9d138f144d033087a960117920a126e"
3451
3450
  dependencies = [
3452
3451
  "bitflags 1.3.2",
3453
3452
  "crossbeam-channel",
@@ -3456,13 +3455,14 @@ dependencies = [
3456
3455
  "log",
3457
3456
  "nix 0.30.1",
3458
3457
  "vmm-sys-util",
3458
+ "windows-sys 0.61.2",
3459
3459
  ]
3460
3460
 
3461
3461
  [[package]]
3462
3462
  name = "msb_krun_vmm"
3463
- version = "0.1.17"
3463
+ version = "0.1.19"
3464
3464
  source = "registry+https://github.com/rust-lang/crates.io-index"
3465
- checksum = "6742a7fba174849b924a370bfba0fe7be8435253bff26303aec34ac89641ae63"
3465
+ checksum = "68e9f485f720981fda9071b2711d4f8406b6c67ebf6bfa2bb8e83f3cc6c2aaea"
3466
3466
  dependencies = [
3467
3467
  "bzip2",
3468
3468
  "crossbeam-channel",
@@ -3470,7 +3470,7 @@ dependencies = [
3470
3470
  "kvm-bindings",
3471
3471
  "kvm-ioctls",
3472
3472
  "libc",
3473
- "linux-loader",
3473
+ "libloading",
3474
3474
  "log",
3475
3475
  "msb_krun_arch",
3476
3476
  "msb_krun_arch_gen",
@@ -3481,8 +3481,8 @@ dependencies = [
3481
3481
  "msb_krun_polly",
3482
3482
  "msb_krun_utils",
3483
3483
  "nix 0.30.1",
3484
- "vm-memory 0.16.2",
3485
- "vmm-sys-util",
3484
+ "vm-memory",
3485
+ "windows-sys 0.61.2",
3486
3486
  "zstd",
3487
3487
  ]
3488
3488
 
@@ -4761,7 +4761,7 @@ dependencies = [
4761
4761
  "errno",
4762
4762
  "libc",
4763
4763
  "linux-raw-sys",
4764
- "windows-sys 0.61.2",
4764
+ "windows-sys 0.52.0",
4765
4765
  ]
4766
4766
 
4767
4767
  [[package]]
@@ -4829,7 +4829,7 @@ dependencies = [
4829
4829
  "security-framework 3.7.0",
4830
4830
  "security-framework-sys",
4831
4831
  "webpki-root-certs",
4832
- "windows-sys 0.61.2",
4832
+ "windows-sys 0.52.0",
4833
4833
  ]
4834
4834
 
4835
4835
  [[package]]
@@ -4850,7 +4850,7 @@ dependencies = [
4850
4850
  "security-framework 3.7.0",
4851
4851
  "security-framework-sys",
4852
4852
  "webpki-root-certs",
4853
- "windows-sys 0.61.2",
4853
+ "windows-sys 0.52.0",
4854
4854
  ]
4855
4855
 
4856
4856
  [[package]]
@@ -5430,7 +5430,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
5430
5430
  checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
5431
5431
  dependencies = [
5432
5432
  "libc",
5433
- "windows-sys 0.61.2",
5433
+ "windows-sys 0.60.2",
5434
5434
  ]
5435
5435
 
5436
5436
  [[package]]
@@ -5870,7 +5870,7 @@ dependencies = [
5870
5870
  "getrandom 0.4.2",
5871
5871
  "once_cell",
5872
5872
  "rustix",
5873
- "windows-sys 0.61.2",
5873
+ "windows-sys 0.52.0",
5874
5874
  ]
5875
5875
 
5876
5876
  [[package]]
@@ -6230,7 +6230,7 @@ checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e"
6230
6230
  dependencies = [
6231
6231
  "memoffset",
6232
6232
  "tempfile",
6233
- "windows-sys 0.61.2",
6233
+ "windows-sys 0.60.2",
6234
6234
  ]
6235
6235
 
6236
6236
  [[package]]
@@ -6396,24 +6396,15 @@ version = "0.3.0"
6396
6396
  source = "registry+https://github.com/rust-lang/crates.io-index"
6397
6397
  checksum = "7e21282841a059bb62627ce8441c491f09603622cd5a21c43bfedc85a2952f23"
6398
6398
 
6399
- [[package]]
6400
- name = "vm-memory"
6401
- version = "0.16.2"
6402
- source = "registry+https://github.com/rust-lang/crates.io-index"
6403
- checksum = "1fd5e56d48353c5f54ef50bd158a0452fc82f5383da840f7b8efc31695dd3b9d"
6404
- dependencies = [
6405
- "libc",
6406
- "thiserror 1.0.69",
6407
- "winapi",
6408
- ]
6409
-
6410
6399
  [[package]]
6411
6400
  name = "vm-memory"
6412
6401
  version = "0.18.0"
6413
6402
  source = "registry+https://github.com/rust-lang/crates.io-index"
6414
6403
  checksum = "9b55e753c7725603745cb32b2287ef7ef3da05c03c7702cda3fa8abe25ae0465"
6415
6404
  dependencies = [
6405
+ "libc",
6416
6406
  "thiserror 2.0.18",
6407
+ "winapi",
6417
6408
  ]
6418
6409
 
6419
6410
  [[package]]
@@ -6665,7 +6656,7 @@ version = "0.1.11"
6665
6656
  source = "registry+https://github.com/rust-lang/crates.io-index"
6666
6657
  checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
6667
6658
  dependencies = [
6668
- "windows-sys 0.61.2",
6659
+ "windows-sys 0.48.0",
6669
6660
  ]
6670
6661
 
6671
6662
  [[package]]
@@ -7428,6 +7419,12 @@ dependencies = [
7428
7419
  "syn",
7429
7420
  ]
7430
7421
 
7422
+ [[package]]
7423
+ name = "zlib-rs"
7424
+ version = "0.6.5"
7425
+ source = "registry+https://github.com/rust-lang/crates.io-index"
7426
+ checksum = "5431d5661c32445236631278f27946e444ddafe4684cac70b185272d4f9c52d5"
7427
+
7431
7428
  [[package]]
7432
7429
  name = "zmij"
7433
7430
  version = "1.0.21"
data/DESIGN.md CHANGED
@@ -106,7 +106,7 @@ out (air-gapped hosts that provision out of band). libkrunfw is `dlopen`'d by
106
106
 
107
107
  `ext/microsandbox/Cargo.toml` depends on the core crate via a **pinned git tag**
108
108
  (`microsandbox` / `microsandbox-network`, pinned to the same tag as
109
- `Microsandbox::RUNTIME_VERSION` — currently `v0.5.10`), so the gem builds anywhere
109
+ `Microsandbox::RUNTIME_VERSION` — currently `v0.6.2`), so the gem builds anywhere
110
110
  — CI, `rake-compiler-dock` release containers, and end-user source installs —
111
111
  without an adjacent checkout. For fast local development against a sibling
112
112
  microsandbox checkout, copy `.cargo/config.toml.example` to `.cargo/config.toml`
@@ -211,7 +211,7 @@ create options, full mount options (tmpfs/disk + stat-virtualization/
211
211
  host-permissions), and snapshot inspection (`open`/`list_dir`/`reindex`).
212
212
 
213
213
  A few **secondary** upstream knobs remain unexposed (a genuine binding gap, not
214
- upstream-gated — they exist at the pinned `v0.5.10` runtime): per-published-port host
214
+ upstream-gated — they exist at the pinned `v0.6.2` runtime): per-published-port host
215
215
  **bind address** (ports always bind loopback), network **interface overrides**,
216
216
  and inline **named-volume create-mode** (pre-create with `Volume.create`, then
217
217
  mount with `{ named: }`). These slot in module-by-module exactly as the existing
data/README.md CHANGED
@@ -215,6 +215,9 @@ end
215
215
 
216
216
  ```ruby
217
217
  Microsandbox::Sandbox.create("obs", image: "public.ecr.aws/docker/library/alpine:latest") do |sb|
218
+ # On v0.6.x runtimes the metrics slot goes live a beat after create returns,
219
+ # so `metrics` can briefly raise "no live metrics slot" right after boot —
220
+ # retry for a few hundred ms rather than treating the first failure as fatal.
218
221
  m = sb.metrics # => Microsandbox::Metrics
219
222
  m.cpu_percent
220
223
  m.memory_bytes
@@ -390,8 +393,8 @@ change diverged the two numbers — the gem version is **not** a reliable indica
390
393
  of the embedded runtime version. To learn which runtime a build wraps, ask it:
391
394
 
392
395
  ```ruby
393
- Microsandbox::VERSION # => "0.8.0" (the gem's own version)
394
- Microsandbox.runtime_version # => "v0.5.10" (the embedded upstream runtime tag)
396
+ Microsandbox::VERSION # => "0.9.0" (the gem's own version)
397
+ Microsandbox.runtime_version # => "v0.6.2" (the embedded upstream runtime tag)
395
398
  ```
396
399
 
397
400
  | Gem version | Upstream runtime | Notes |
@@ -407,6 +410,8 @@ Microsandbox.runtime_version # => "v0.5.10" (the embedded upstream runtime ta
407
410
  | `0.8.0` | `v0.5.10` | adopts upstream `v0.5.10` (idle-only heartbeat, config-fd hardening, **4 GiB default bind-mount quota**); supersedes the reverted `v0.5.9` attempt |
408
411
  | `0.8.1` | `v0.5.10` | gem-only: re-provision a stale local runtime; per-bind-mount `quota_mib:` override |
409
412
  | `0.8.2` | `v0.5.10` | gem-only: redact secrets from errors, typed snapshot errors, panic-free durations, fat-gem loader + `extconf` preflight fixes, threading/streaming docs |
413
+ | `0.9.0` | `v0.6.1` | adopts upstream `v0.6.0`+`v0.6.1` (zombie-runtime wait fix, secret substitution through CONNECT proxies, stale-sandbox cleanup); upstream public API is additive — no Ruby surface change |
414
+ | `0.9.1` | `v0.6.2` | adopts upstream `v0.6.2` (faster image loads/pulls via early cache gate + zlib-rs); upstream API unchanged — no Ruby surface change |
410
415
 
411
416
  **Going forward** — the gem version moves on its own semver track and no longer
412
417
  mirrors the upstream tag:
@@ -6,8 +6,8 @@ name = "microsandbox_rb"
6
6
  description = "Ruby SDK native extension for microsandbox — secure, fast microVM-based sandboxing."
7
7
  # Must equal Microsandbox::VERSION (lib/microsandbox/version.rb) — Native.version
8
8
  # returns this via env!("CARGO_PKG_VERSION") and version_spec.rb asserts equality.
9
- # The core-crate dependency below stays pinned at its own tag (v0.5.10).
10
- version = "0.8.2"
9
+ # The core-crate dependency below stays pinned at its own tag (v0.6.2).
10
+ version = "0.9.1"
11
11
  authors = ["Super Rad Company <development@superrad.company>"]
12
12
  repository = "https://github.com/superradcompany/microsandbox"
13
13
  license = "Apache-2.0"
@@ -35,8 +35,8 @@ rb-sys = "0.9"
35
35
  # `.cargo/config.toml.example`). "ssh" matches the feature set the Python/Node
36
36
  # SDKs ship with; default features add "prebuilt" (provisions msb + libkrunfw at
37
37
  # build time), "net", and "keyring".
38
- microsandbox = { git = "https://github.com/superradcompany/microsandbox", tag = "v0.5.10", default-features = true, features = ["ssh"] }
39
- microsandbox-network = { git = "https://github.com/superradcompany/microsandbox", tag = "v0.5.10" }
38
+ microsandbox = { git = "https://github.com/superradcompany/microsandbox", tag = "v0.6.2", default-features = true, features = ["ssh"] }
39
+ microsandbox-network = { git = "https://github.com/superradcompany/microsandbox", tag = "v0.6.2" }
40
40
 
41
41
  # Async core bridged to Ruby's synchronous API via a blocking tokio runtime.
42
42
  tokio = { version = "1", features = ["rt-multi-thread", "sync", "time"] }
@@ -928,6 +928,14 @@ module Microsandbox
928
928
  end
929
929
 
930
930
  # Latest resource-usage snapshot.
931
+ #
932
+ # Raises a {Microsandbox::Error} ("sandbox N has no live metrics slot") when
933
+ # called in the brief window right after {Sandbox.create} returns, before the
934
+ # runtime has registered the sandbox's metrics slot. On `v0.6.x` runtimes
935
+ # the spawn handshake no longer blocks create until the first sample is
936
+ # written, so the slot goes live a beat *after* boot (within a few hundred
937
+ # milliseconds); retry for that window rather than treating the first failure
938
+ # as fatal.
931
939
  # @return [Metrics]
932
940
  def metrics
933
941
  Metrics.new(@native.metrics)
@@ -952,6 +960,14 @@ module Microsandbox
952
960
 
953
961
  # Stream resource-usage snapshots, one per interval tick, until the sandbox
954
962
  # stops. Requires metrics to be enabled for the sandbox.
963
+ #
964
+ # The first tick fires immediately, so opening the stream right after
965
+ # {Sandbox.create} can hit the same metrics-slot startup window as {#metrics}
966
+ # and yield a transient "no live metrics slot" error on that first tick.
967
+ # Because the stream is single-pass (a drained or errored stream is spent),
968
+ # make sure the slot is live *before* opening it — e.g. retry {#metrics}
969
+ # until it succeeds (the slot goes live within a few hundred milliseconds of
970
+ # boot), then call {#metrics_stream}.
955
971
  # @param interval [Numeric] seconds between snapshots
956
972
  # @return [MetricsStream] an {Enumerable} of {Metrics}
957
973
  def metrics_stream(interval: 1.0)
@@ -8,12 +8,12 @@ module Microsandbox
8
8
  # Versioning section of the README for the full gem-to-runtime map. Must equal
9
9
  # the native ext's Cargo crate version (`Native.version`), enforced by
10
10
  # spec/unit/version_spec.rb.
11
- VERSION = "0.8.2"
11
+ VERSION = "0.9.1"
12
12
 
13
13
  # The upstream microsandbox runtime release this gem build embeds — the `tag`
14
14
  # pinned on the `microsandbox`/`microsandbox-network` git deps in
15
15
  # ext/microsandbox/Cargo.toml. Exposed at runtime as
16
16
  # {Microsandbox.runtime_version}. spec/unit/version_spec.rb asserts it stays in
17
17
  # sync with the Cargo tag so it can't silently drift out of date.
18
- RUNTIME_VERSION = "v0.5.10"
18
+ RUNTIME_VERSION = "v0.6.2"
19
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: microsandbox-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ya-luotao