build(watchos): move embed's reqwest to 0.13 with native-tls on watchOS
The optional reqwest dependency was 0.12 with rustls-tls-native-roots, which pulls in ring. ring fails its pointer-size asserts on arm64_32-apple-watchos. It also left two reqwest versions in the graph, since ed-acp and rmcp are already on 0.13. reqwest is now 0.13 everywhere: rustls on most targets, native-tls (Security.framework) on watchOS. embed::fetch_key needed no source changes; cargo check --features embed passes. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Seto committed
Oct 16, 2026 at 23:38 UTC
057e235237454c9109f1b5cc1c66cd4ec333a495
2 files changed
+136
-72
Cargo.lock
+126
-67
@@ -220,12 +220,6 @@ dependencies = [
220
"pkg-config",
221
]
222
223
-[[package]]
224
-name = "base64"
225
-version = "0.22.1"
226
-source = "registry+https://github.com/rust-lang/crates.io-index"
227
-checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
228
-
223
[[package]]
224
name = "base64"
225
version = "0.23.1"
@@ -648,11 +642,11 @@ dependencies = [
642
"agent-client-protocol",
643
"anyhow",
644
"async-trait",
651
- "base64 0.23.1",
645
+ "base64",
646
"directories",
647
"ed-mcp",
648
"futures",
655
- "reqwest 0.13.5",
649
+ "reqwest",
650
"serde",
651
"serde_json",
652
"tokio",
@@ -776,6 +770,21 @@ version = "0.2.0"
770
source = "registry+https://github.com/rust-lang/crates.io-index"
771
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
772
773
+[[package]]
774
+name = "foreign-types"
775
+version = "0.3.2"
776
+source = "registry+https://github.com/rust-lang/crates.io-index"
777
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
778
+dependencies = [
779
+ "foreign-types-shared",
780
+]
781
+
782
+[[package]]
783
+name = "foreign-types-shared"
784
+version = "0.1.1"
785
+source = "registry+https://github.com/rust-lang/crates.io-index"
786
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
787
+
788
[[package]]
789
name = "form_urlencoded"
790
version = "1.2.2"
@@ -1053,19 +1062,34 @@ dependencies = [
1062
"hyper",
1063
"hyper-util",
1064
"rustls",
1056
- "rustls-native-certs",
1065
"tokio",
1066
"tokio-rustls",
1067
"tower-service",
1068
]
1069
1070
+[[package]]
1071
+name = "hyper-tls"
1072
+version = "0.6.0"
1073
+source = "registry+https://github.com/rust-lang/crates.io-index"
1074
+checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
1075
+dependencies = [
1076
+ "bytes",
1077
+ "http-body-util",
1078
+ "hyper",
1079
+ "hyper-util",
1080
+ "native-tls",
1081
+ "tokio",
1082
+ "tokio-native-tls",
1083
+ "tower-service",
1084
+]
1085
+
1086
[[package]]
1087
name = "hyper-util"
1088
version = "0.1.21"
1089
source = "registry+https://github.com/rust-lang/crates.io-index"
1090
checksum = "ddc03d96684f9226b8a787cdb71488417b53ab5ea8fdb1dac946cb9431cc8bff"
1091
dependencies = [
1068
- "base64 0.23.1",
1092
+ "base64",
1093
"bytes",
1094
"futures-channel",
1095
"futures-util",
@@ -1529,6 +1553,23 @@ dependencies = [
1553
"windows-sys 0.61.2",
1554
]
1555
1556
+[[package]]
1557
+name = "native-tls"
1558
+version = "0.2.18"
1559
+source = "registry+https://github.com/rust-lang/crates.io-index"
1560
+checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2"
1561
+dependencies = [
1562
+ "libc",
1563
+ "log",
1564
+ "openssl",
1565
+ "openssl-probe",
1566
+ "openssl-sys",
1567
+ "schannel",
1568
+ "security-framework",
1569
+ "security-framework-sys",
1570
+ "tempfile",
1571
+]
1572
+
1573
[[package]]
1574
name = "nix"
1575
version = "0.31.3"
@@ -1598,12 +1639,49 @@ version = "1.21.4"
1639
source = "registry+https://github.com/rust-lang/crates.io-index"
1640
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
1641
1642
+[[package]]
1643
+name = "openssl"
1644
+version = "0.10.81"
1645
+source = "registry+https://github.com/rust-lang/crates.io-index"
1646
+checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45"
1647
+dependencies = [
1648
+ "bitflags 2.13.2",
1649
+ "cfg-if",
1650
+ "foreign-types",
1651
+ "libc",
1652
+ "openssl-macros",
1653
+ "openssl-sys",
1654
+]
1655
+
1656
+[[package]]
1657
+name = "openssl-macros"
1658
+version = "0.1.1"
1659
+source = "registry+https://github.com/rust-lang/crates.io-index"
1660
+checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
1661
+dependencies = [
1662
+ "proc-macro2",
1663
+ "quote",
1664
+ "syn 2.0.119",
1665
+]
1666
+
1667
[[package]]
1668
name = "openssl-probe"
1669
version = "0.2.1"
1670
source = "registry+https://github.com/rust-lang/crates.io-index"
1671
checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
1672
1673
+[[package]]
1674
+name = "openssl-sys"
1675
+version = "0.9.117"
1676
+source = "registry+https://github.com/rust-lang/crates.io-index"
1677
+checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695"
1678
+dependencies = [
1679
+ "cc",
1680
+ "libc",
1681
+ "pkg-config",
1682
+ "vcpkg",
1683
+]
1684
+
1685
[[package]]
1686
name = "option-ext"
1687
version = "0.2.0"
@@ -2033,51 +2111,13 @@ version = "0.8.11"
2111
source = "registry+https://github.com/rust-lang/crates.io-index"
2112
checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
2113
2036
-[[package]]
2037
-name = "reqwest"
2038
-version = "0.12.28"
2039
-source = "registry+https://github.com/rust-lang/crates.io-index"
2040
-checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
2041
-dependencies = [
2042
- "base64 0.22.1",
2043
- "bytes",
2044
- "futures-core",
2045
- "http",
2046
- "http-body",
2047
- "http-body-util",
2048
- "hyper",
2049
- "hyper-rustls",
2050
- "hyper-util",
2051
- "js-sys",
2052
- "log",
2053
- "percent-encoding",
2054
- "pin-project-lite",
2055
- "quinn",
2056
- "rustls",
2057
- "rustls-native-certs",
2058
- "rustls-pki-types",
2059
- "serde",
2060
- "serde_json",
2061
- "serde_urlencoded",
2062
- "sync_wrapper",
2063
- "tokio",
2064
- "tokio-rustls",
2065
- "tower",
2066
- "tower-http",
2067
- "tower-service",
2068
- "url",
2069
- "wasm-bindgen",
2070
- "wasm-bindgen-futures",
2071
- "web-sys",
2072
-]
2073
-
2114
[[package]]
2115
name = "reqwest"
2116
version = "0.13.5"
2117
source = "registry+https://github.com/rust-lang/crates.io-index"
2118
checksum = "16a1cfa75cc186dd73d5818e510e042e40927bccc9c236b061cea97e1eb08029"
2119
dependencies = [
2080
- "base64 0.23.1",
2120
+ "base64",
2121
"bytes",
2122
"futures-core",
2123
"futures-util",
@@ -2086,9 +2126,11 @@ dependencies = [
2126
"http-body-util",
2127
"hyper",
2128
"hyper-rustls",
2129
+ "hyper-tls",
2130
"hyper-util",
2131
"js-sys",
2132
"log",
2133
+ "native-tls",
2134
"percent-encoding",
2135
"pin-project-lite",
2136
"quinn",
@@ -2099,6 +2141,7 @@ dependencies = [
2141
"serde_json",
2142
"sync_wrapper",
2143
"tokio",
2144
+ "tokio-native-tls",
2145
"tokio-rustls",
2146
"tokio-util",
2147
"tower",
@@ -2131,7 +2174,7 @@ version = "3.5.1"
2174
source = "registry+https://github.com/rust-lang/crates.io-index"
2175
checksum = "ab5023804cbe0304cbe06197ac16e645a0a0d0ffa2953bf735c15c2fa0213350"
2176
dependencies = [
2134
- "base64 0.23.1",
2177
+ "base64",
2178
"bytes",
2179
"chrono",
2180
"futures",
@@ -2139,7 +2182,7 @@ dependencies = [
2182
"indexmap 2.14.2",
2183
"pin-project-lite",
2184
"process-wrap",
2142
- "reqwest 0.13.5",
2185
+ "reqwest",
2186
"serde",
2187
"serde_json",
2188
"sse-stream",
@@ -2200,7 +2243,6 @@ checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634"
2243
dependencies = [
2244
"aws-lc-rs",
2245
"once_cell",
2203
- "ring",
2246
"rustls-pki-types",
2247
"rustls-webpki",
2248
"subtle",
@@ -2425,25 +2467,13 @@ dependencies = [
2467
"zmij",
2468
]
2469
2428
-[[package]]
2429
-name = "serde_urlencoded"
2430
-version = "0.7.1"
2431
-source = "registry+https://github.com/rust-lang/crates.io-index"
2432
-checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
2433
-dependencies = [
2434
- "form_urlencoded",
2435
- "itoa",
2436
- "ryu",
2437
- "serde",
2438
-]
2439
-
2470
[[package]]
2471
name = "serde_with"
2472
version = "3.24.0"
2473
source = "registry+https://github.com/rust-lang/crates.io-index"
2474
checksum = "df9adc193c780ef8f159aee8b61e2d5801aaa555e6eb0947fe45530ec506296f"
2475
dependencies = [
2446
- "base64 0.23.1",
2476
+ "base64",
2477
"bs58",
2478
"chrono",
2479
"hex",
@@ -2567,7 +2597,7 @@ dependencies = [
2597
"agent-client-protocol",
2598
"anyhow",
2599
"async-trait",
2570
- "base64 0.23.1",
2600
+ "base64",
2601
"directories",
2602
"ebur128",
2603
"ed-acp",
@@ -2576,7 +2606,7 @@ dependencies = [
2606
"ed-mcp",
2607
"hound",
2608
"realfft",
2579
- "reqwest 0.12.28",
2609
+ "reqwest",
2610
"serde",
2611
"serde_json",
2612
"symphonia",
@@ -2877,6 +2907,19 @@ dependencies = [
2907
"syn 3.0.6",
2908
]
2909
2910
+[[package]]
2911
+name = "tempfile"
2912
+version = "3.27.0"
2913
+source = "registry+https://github.com/rust-lang/crates.io-index"
2914
+checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
2915
+dependencies = [
2916
+ "fastrand",
2917
+ "getrandom 0.4.3",
2918
+ "once_cell",
2919
+ "rustix",
2920
+ "windows-sys 0.52.0",
2921
+]
2922
+
2923
[[package]]
2924
name = "thiserror"
2925
version = "2.0.21"
@@ -2982,6 +3025,16 @@ dependencies = [
3025
"syn 3.0.6",
3026
]
3027
3028
+[[package]]
3029
+name = "tokio-native-tls"
3030
+version = "0.3.1"
3031
+source = "registry+https://github.com/rust-lang/crates.io-index"
3032
+checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
3033
+dependencies = [
3034
+ "native-tls",
3035
+ "tokio",
3036
+]
3037
+
3038
[[package]]
3039
name = "tokio-rustls"
3040
version = "0.26.6"
@@ -3215,6 +3268,12 @@ version = "0.1.1"
3268
source = "registry+https://github.com/rust-lang/crates.io-index"
3269
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
3270
3271
+[[package]]
3272
+name = "vcpkg"
3273
+version = "0.2.15"
3274
+source = "registry+https://github.com/rust-lang/crates.io-index"
3275
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
3276
+
3277
[[package]]
3278
name = "walkdir"
3279
version = "2.5.0"
Cargo.toml
+10
-5
@@ -37,11 +37,6 @@ async-trait = "0.1"
37
directories = "6.0.0"
38
ebur128 = "0.1.10"
39
realfft = "3.5.0"
40
-# Only for `embed::fetch_key` and `embed::splitfire_mcp`, gated behind the `embed` feature.
41
-reqwest = { version = "0.12", default-features = false, features = [
42
- "json",
43
- "rustls-tls-native-roots",
44
-], optional = true }
40
serde = { version = "1.0.229", features = ["derive"] }
41
serde_json = "1.0.151"
42
symphonia = { version = "0.6.1", features = ["mp3", "flac", "ogg", "vorbis", "wav", "pcm", "aac", "isomp4", "aiff", "alac", "mkv"] }
@@ -53,3 +48,13 @@ uuid = { version = "1.27.0", features = ["v4"] }
48
ed-acp-testkit = { version = "1.3.0" }
49
base64 = "0.23.1"
50
hound = "3.5.1"
51
+
52
+# Only for `embed::fetch_key` and `embed::splitfire_mcp`, gated behind the `embed` feature.
53
+# reqwest 0.13's `rustls` is the aws-lc provider, whose C code doesn't build for arm64_32
54
+# (and `ring` asserts 64-bit pointers on aarch64), so watchOS uses `native-tls`, which is
55
+# Security.framework.
56
+[target.'cfg(not(target_os = "watchos"))'.dependencies]
57
+reqwest = { version = "0.13", default-features = false, features = ["json", "rustls"], optional = true }
58
+
59
+[target.'cfg(target_os = "watchos")'.dependencies]
60
+reqwest = { version = "0.13", default-features = false, features = ["json", "native-tls"], optional = true }