Skip to content

Use native-tls for reqwest on watchOS so arm64_32 builds - #41

Merged
setoelkahfi merged 1 commit into
developmentfrom
fix/watchos-native-tls
Oct 16, 2026
Merged

setoelkahfi merged 1 commit into
developmentfrom
fix/watchos-native-tls

Conversation

@setoelkahfi

Copy link
Copy Markdown
Collaborator

The SplitFire AI Watch app needs an arm64_32 slice (App Store Connect error 90733), and the agent library doesn't build for arm64_32-apple-watchos today. Both rustls crypto providers assume 64-bit pointers on aarch64:

  • aws-lc-sys (reqwest 0.13 rustls, and rmcp's reqwest feature) fails in bcm.c.
  • ring 0.17.14 fails the _ASSUMED_POINTER_SIZE asserts in cpu/arm.rs.

On watchOS this switches to native-tls, which is Security.framework and needs no rustls provider:

  • The workspace reqwest dependency no longer selects a TLS backend.
  • ed-acp and ed-onde-account use rustls on non-watchOS and native-tls on watchOS.
  • ed-mcp uses rmcp reqwest on non-watchOS and reqwest-native-tls on watchOS.

Every other platform keeps rustls with aws-lc. Nothing in src touches TLS APIs, so there are no source changes. cargo check -p ed-acp -p ed-mcp -p ed-onde-account passes on the host. The full arm64_32 build is verified from the splitfire agent FFI crate, which consumes this branch through a path patch until it is released.

reqwest 0.13's rustls feature pulls in aws-lc-sys, whose C code fails on
arm64_32 because it assumes 64-bit limbs on aarch64. ring fails there
too, on its pointer-size asserts.

On watchOS, ed-acp and ed-onde-account now use reqwest's native-tls
(Security.framework) and ed-mcp uses rmcp's reqwest-native-tls, so no
rustls crypto provider is built. Other platforms keep rustls with
aws-lc. The workspace reqwest dependency no longer picks a TLS backend;
each crate chooses one per target.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@sigit-code-review sigit-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change adapts the workspace to build for watchOS (arm64_32) by switching reqwest and rmcp TLS backends from rustls (aws-lc/ring) to native-tls on watchOS targets. The top-level reqwest dependency drops the rustls feature, and each crate (ed-acp, ed-mcp, ed-onde-account) now conditionally enables rustls or native-tls based on the target OS. rmcp is similarly configured to use reqwest-native-tls on watchOS. No source code changes are made; all changes are in Cargo.toml files. This should resolve build failures for arm64_32-apple-watchos and allow the agent library to be included in the SplitFire AI Watch app. Previous findings about platform-specific TLS backend selection and build failures appear addressed.


Automated review by siGit Code Review · commit a87e191 · see the review dashboard

@setoelkahfi
setoelkahfi merged commit 1314fe9 into development Oct 16, 2026
1 check passed
@setoelkahfi
setoelkahfi deleted the fix/watchos-native-tls branch October 16, 2026 23:58
This was referenced Oct 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants