From c22da981b08c3c3b948d06f008a8dd0e3871f609 Mon Sep 17 00:00:00 2001 From: cypherair <262752927+cypherair@users.noreply.github.com> Date: Thu, 23 Apr 2026 18:17:37 -0700 Subject: [PATCH 1/4] target: add arm64e-apple-visionos --- compiler/rustc_target/src/spec/mod.rs | 1 + .../src/spec/targets/arm64e_apple_visionos.rs | 25 +++++++++++ src/bootstrap/src/core/sanity.rs | 4 +- src/doc/rustc/src/SUMMARY.md | 1 + src/doc/rustc/src/platform-support.md | 1 + .../src/platform-support/apple-visionos.md | 9 ++++ .../platform-support/arm64e-apple-visionos.md | 41 +++++++++++++++++++ tests/assembly-llvm/targets/targets-macho.rs | 3 ++ 8 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 compiler/rustc_target/src/spec/targets/arm64e_apple_visionos.rs create mode 100644 src/doc/rustc/src/platform-support/arm64e-apple-visionos.md diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 768e43146a0c1..9d8372ca64f82 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -1615,6 +1615,7 @@ supported_targets! { ("aarch64-apple-visionos", aarch64_apple_visionos), ("aarch64-apple-visionos-sim", aarch64_apple_visionos_sim), + ("arm64e-apple-visionos", arm64e_apple_visionos), ("armebv7r-none-eabi", armebv7r_none_eabi), ("armebv7r-none-eabihf", armebv7r_none_eabihf), diff --git a/compiler/rustc_target/src/spec/targets/arm64e_apple_visionos.rs b/compiler/rustc_target/src/spec/targets/arm64e_apple_visionos.rs new file mode 100644 index 0000000000000..b1000c2c1c7eb --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/arm64e_apple_visionos.rs @@ -0,0 +1,25 @@ +use crate::spec::base::apple::{Arch, TargetEnv, base}; +use crate::spec::{Os, SanitizerSet, Target, TargetMetadata, TargetOptions}; + +pub(crate) fn target() -> Target { + let (opts, llvm_target, arch) = base(Os::VisionOs, Arch::Arm64e, TargetEnv::Normal); + Target { + llvm_target, + metadata: TargetMetadata { + description: Some("ARM64e Apple visionOS".into()), + tier: Some(3), + host_tools: Some(false), + std: Some(true), + }, + pointer_width: 64, + data_layout: "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32" + .into(), + arch, + options: TargetOptions { + features: "+neon,+apple-a12,+v8.3a,+paca,+pacg".into(), + max_atomic_width: Some(128), + supported_sanitizers: SanitizerSet::ADDRESS | SanitizerSet::THREAD, + ..opts + }, + } +} diff --git a/src/bootstrap/src/core/sanity.rs b/src/bootstrap/src/core/sanity.rs index ca8af279b92bc..68a57b697ace4 100644 --- a/src/bootstrap/src/core/sanity.rs +++ b/src/bootstrap/src/core/sanity.rs @@ -35,9 +35,7 @@ pub struct Finder { /// /// Targets can be removed from this list during the usual release process bootstrap compiler bumps, /// when the newly-bumped stage 0 compiler now knows about the formerly-missing targets. -const STAGE0_MISSING_TARGETS: &[&str] = &[ - // just a dummy comment so the list doesn't get onelined -]; +const STAGE0_MISSING_TARGETS: &[&str] = &["arm64e-apple-visionos"]; /// Minimum version threshold for libstdc++ required when using prebuilt LLVM /// from CI (with`llvm.download-ci-llvm` option). diff --git a/src/doc/rustc/src/SUMMARY.md b/src/doc/rustc/src/SUMMARY.md index cc10f476780c5..915b8e7aa9a35 100644 --- a/src/doc/rustc/src/SUMMARY.md +++ b/src/doc/rustc/src/SUMMARY.md @@ -46,6 +46,7 @@ - [arm64e-apple-tvos](platform-support/arm64e-apple-tvos.md) - [\*-apple-watchos](platform-support/apple-watchos.md) - [\*-apple-visionos](platform-support/apple-visionos.md) + - [arm64e-apple-visionos](platform-support/arm64e-apple-visionos.md) - [aarch64-nintendo-switch-freestanding](platform-support/aarch64-nintendo-switch-freestanding.md) - [aarch64-unknown-linux-gnu](platform-support/aarch64-unknown-linux-gnu.md) - [aarch64-unknown-linux-musl](platform-support/aarch64-unknown-linux-musl.md) diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md index 26dd6b31b8991..dc8a982e3b7a7 100644 --- a/src/doc/rustc/src/platform-support.md +++ b/src/doc/rustc/src/platform-support.md @@ -292,6 +292,7 @@ target | std | host | notes [`arm64e-apple-darwin`](platform-support/arm64e-apple-darwin.md) | ✓ | ✓ | ARM64e Apple Darwin [`arm64e-apple-ios`](platform-support/arm64e-apple-ios.md) | ✓ | | ARM64e Apple iOS [`arm64e-apple-tvos`](platform-support/arm64e-apple-tvos.md) | ✓ | | ARM64e Apple tvOS +[`arm64e-apple-visionos`](platform-support/arm64e-apple-visionos.md) | ✓ | | ARM64e Apple visionOS [`armeb-unknown-linux-gnueabi`](platform-support/armeb-unknown-linux-gnueabi.md) | ✓ | ? | Arm BE8 the default Arm big-endian architecture since [Armv6](https://developer.arm.com/documentation/101754/0616/armlink-Reference/armlink-Command-line-Options/--be8?lang=en). [`armebv7r-none-eabi`](platform-support/armebv7r-none-eabi.md) | * | | Bare Armv7-R, Big Endian [`armebv7r-none-eabihf`](platform-support/armebv7r-none-eabi.md) | * | | Bare Armv7-R, Big Endian, hardfloat diff --git a/src/doc/rustc/src/platform-support/apple-visionos.md b/src/doc/rustc/src/platform-support/apple-visionos.md index cd183e7d635da..92761322f719d 100644 --- a/src/doc/rustc/src/platform-support/apple-visionos.md +++ b/src/doc/rustc/src/platform-support/apple-visionos.md @@ -6,6 +6,7 @@ Apple visionOS / xrOS targets. - `aarch64-apple-visionos`: Apple visionOS on arm64. - `aarch64-apple-visionos-sim`: Apple visionOS Simulator on arm64. +- `arm64e-apple-visionos`: Apple visionOS on arm64e. ## Target maintainers @@ -37,6 +38,14 @@ $ rustup target add aarch64-apple-visionos $ rustup target add aarch64-apple-visionos-sim ``` +For the arm64e target, Rust does not currently ship pre-built artifacts. Build +Rust with the target enabled in `bootstrap.toml`: + +```toml +[build] +target = ["arm64e-apple-visionos"] +``` + ## Building Rust programs See [the instructions for iOS](./apple-ios.md#building-rust-programs). diff --git a/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md b/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md new file mode 100644 index 0000000000000..b0c27aa792ac7 --- /dev/null +++ b/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md @@ -0,0 +1,41 @@ +# `arm64e-apple-visionos` + +**Tier: 3** + +ARM64e visionOS (1.0+) + +## Target maintainers + +[@arttet](https://github.com/arttet) + +## Requirements + +See the docs on [`*-apple-visionos`](apple-visionos.md) for general visionOS +requirements. + +## Building the target + +You can build Rust with support for the target by adding it to the `target` +list in `bootstrap.toml`: + +```toml +[build] +target = ["arm64e-apple-visionos"] +``` + +## Building Rust programs + +Rust does not yet ship pre-compiled artifacts for this target. +To compile for this target, you will need to build Rust with the target enabled +(see [Building the target](#building-the-target) above). + +## Testing + +The target does support running binaries on visionOS platforms with `arm64e` +architecture. + +## Cross-compilation toolchains and C code + +The target does support `C` code. +To build compatible `C` code, you have to use Xcode with the same compiler and +flags. diff --git a/tests/assembly-llvm/targets/targets-macho.rs b/tests/assembly-llvm/targets/targets-macho.rs index 037f3c0093619..00383a6028d3e 100644 --- a/tests/assembly-llvm/targets/targets-macho.rs +++ b/tests/assembly-llvm/targets/targets-macho.rs @@ -34,6 +34,9 @@ //@ revisions: aarch64_apple_visionos //@ [aarch64_apple_visionos] compile-flags: --target aarch64-apple-visionos //@ [aarch64_apple_visionos] needs-llvm-components: aarch64 +//@ revisions: arm64e_apple_visionos +//@ [arm64e_apple_visionos] compile-flags: --target arm64e-apple-visionos +//@ [arm64e_apple_visionos] needs-llvm-components: aarch64 //@ revisions: aarch64_apple_visionos_sim //@ [aarch64_apple_visionos_sim] compile-flags: --target aarch64-apple-visionos-sim //@ [aarch64_apple_visionos_sim] needs-llvm-components: aarch64 From f5c205730dde7db6e483df4f93bc904405a5dc96 Mon Sep 17 00:00:00 2001 From: cypherair <262752927+cypherair@users.noreply.github.com> Date: Fri, 24 Apr 2026 11:14:27 -0700 Subject: [PATCH 2/4] target: correct arm64e visionOS maintainer and docs The original version of this PR incorrectly added a target maintainer without them agreeing to it. I used Codex to create that version and did not review it carefully enough before opening it. Correct the maintainer entry and update the Tier 3 target documentation. --- src/doc/rustc/src/platform-support.md | 2 +- .../src/platform-support/apple-visionos.md | 9 ------ .../platform-support/arm64e-apple-visionos.md | 29 +++++++++++-------- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md index dc8a982e3b7a7..99db4ad196a14 100644 --- a/src/doc/rustc/src/platform-support.md +++ b/src/doc/rustc/src/platform-support.md @@ -292,7 +292,7 @@ target | std | host | notes [`arm64e-apple-darwin`](platform-support/arm64e-apple-darwin.md) | ✓ | ✓ | ARM64e Apple Darwin [`arm64e-apple-ios`](platform-support/arm64e-apple-ios.md) | ✓ | | ARM64e Apple iOS [`arm64e-apple-tvos`](platform-support/arm64e-apple-tvos.md) | ✓ | | ARM64e Apple tvOS -[`arm64e-apple-visionos`](platform-support/arm64e-apple-visionos.md) | ✓ | | ARM64e Apple visionOS +[`arm64e-apple-visionos`](platform-support/arm64e-apple-visionos.md) | ✓ | | arm64e Apple visionOS [`armeb-unknown-linux-gnueabi`](platform-support/armeb-unknown-linux-gnueabi.md) | ✓ | ? | Arm BE8 the default Arm big-endian architecture since [Armv6](https://developer.arm.com/documentation/101754/0616/armlink-Reference/armlink-Command-line-Options/--be8?lang=en). [`armebv7r-none-eabi`](platform-support/armebv7r-none-eabi.md) | * | | Bare Armv7-R, Big Endian [`armebv7r-none-eabihf`](platform-support/armebv7r-none-eabi.md) | * | | Bare Armv7-R, Big Endian, hardfloat diff --git a/src/doc/rustc/src/platform-support/apple-visionos.md b/src/doc/rustc/src/platform-support/apple-visionos.md index 92761322f719d..cd183e7d635da 100644 --- a/src/doc/rustc/src/platform-support/apple-visionos.md +++ b/src/doc/rustc/src/platform-support/apple-visionos.md @@ -6,7 +6,6 @@ Apple visionOS / xrOS targets. - `aarch64-apple-visionos`: Apple visionOS on arm64. - `aarch64-apple-visionos-sim`: Apple visionOS Simulator on arm64. -- `arm64e-apple-visionos`: Apple visionOS on arm64e. ## Target maintainers @@ -38,14 +37,6 @@ $ rustup target add aarch64-apple-visionos $ rustup target add aarch64-apple-visionos-sim ``` -For the arm64e target, Rust does not currently ship pre-built artifacts. Build -Rust with the target enabled in `bootstrap.toml`: - -```toml -[build] -target = ["arm64e-apple-visionos"] -``` - ## Building Rust programs See [the instructions for iOS](./apple-ios.md#building-rust-programs). diff --git a/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md b/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md index b0c27aa792ac7..f1613cc755313 100644 --- a/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md +++ b/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md @@ -2,22 +2,24 @@ **Tier: 3** -ARM64e visionOS (1.0+) +Apple arm64e visionOS. ## Target maintainers -[@arttet](https://github.com/arttet) +[@cypherair](https://github.com/cypherair) ## Requirements -See the docs on [`*-apple-visionos`](apple-visionos.md) for general visionOS -requirements. +This target is cross-compiled and supports `std`. + +This target requires the visionOS SDK provided by Xcode. + +The deployment target can be configured with `XROS_DEPLOYMENT_TARGET`. ## Building the target You can build Rust with support for the target by adding it to the `target` list in `bootstrap.toml`: - ```toml [build] target = ["arm64e-apple-visionos"] @@ -26,16 +28,19 @@ target = ["arm64e-apple-visionos"] ## Building Rust programs Rust does not yet ship pre-compiled artifacts for this target. -To compile for this target, you will need to build Rust with the target enabled -(see [Building the target](#building-the-target) above). +To compile for this target, you will need to build Rust with the target enabled. ## Testing -The target does support running binaries on visionOS platforms with `arm64e` -architecture. +This target is not tested by Rust CI. + +Binaries are intended to run on visionOS devices with `arm64e` architecture. + +The visionOS simulator targets use `arm64`, not `arm64e`. ## Cross-compilation toolchains and C code -The target does support `C` code. -To build compatible `C` code, you have to use Xcode with the same compiler and -flags. +C code should be built with Apple's Clang from Xcode, using the visionOS SDK and +matching deployment target. + +The Clang target is suffixed with `-xros`. \ No newline at end of file From 3b51a6b7efab31dd0623ea1c69b5014a87325b06 Mon Sep 17 00:00:00 2001 From: cypherair <262752927+cypherair@users.noreply.github.com> Date: Fri, 24 Apr 2026 11:40:20 -0700 Subject: [PATCH 3/4] target: add trailing newline required by tidy Add the trailing newline required by tidy. --- src/doc/rustc/src/platform-support/arm64e-apple-visionos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md b/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md index f1613cc755313..a5515dc12989c 100644 --- a/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md +++ b/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md @@ -43,4 +43,4 @@ The visionOS simulator targets use `arm64`, not `arm64e`. C code should be built with Apple's Clang from Xcode, using the visionOS SDK and matching deployment target. -The Clang target is suffixed with `-xros`. \ No newline at end of file +The Clang target is suffixed with `-xros`. From 429e08bce4d13e437a5bf4e4d3a1096b53e6fba3 Mon Sep 17 00:00:00 2001 From: cypherair <262752927+cypherair@users.noreply.github.com> Date: Sat, 25 Apr 2026 12:55:46 -0700 Subject: [PATCH 4/4] target: clean up arm64e visionOS docs before closing PR --- src/bootstrap/src/core/sanity.rs | 5 ++++- src/doc/rustc/src/platform-support.md | 2 +- .../rustc/src/platform-support/arm64e-apple-visionos.md | 9 +++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/bootstrap/src/core/sanity.rs b/src/bootstrap/src/core/sanity.rs index 68a57b697ace4..7b336c9d403f4 100644 --- a/src/bootstrap/src/core/sanity.rs +++ b/src/bootstrap/src/core/sanity.rs @@ -35,7 +35,10 @@ pub struct Finder { /// /// Targets can be removed from this list during the usual release process bootstrap compiler bumps, /// when the newly-bumped stage 0 compiler now knows about the formerly-missing targets. -const STAGE0_MISSING_TARGETS: &[&str] = &["arm64e-apple-visionos"]; +const STAGE0_MISSING_TARGETS: &[&str] = &[ + // just a dummy comment so the list doesn't get onelined + "arm64e-apple-visionos", +]; /// Minimum version threshold for libstdc++ required when using prebuilt LLVM /// from CI (with`llvm.download-ci-llvm` option). diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md index 99db4ad196a14..acebd8861446b 100644 --- a/src/doc/rustc/src/platform-support.md +++ b/src/doc/rustc/src/platform-support.md @@ -292,7 +292,7 @@ target | std | host | notes [`arm64e-apple-darwin`](platform-support/arm64e-apple-darwin.md) | ✓ | ✓ | ARM64e Apple Darwin [`arm64e-apple-ios`](platform-support/arm64e-apple-ios.md) | ✓ | | ARM64e Apple iOS [`arm64e-apple-tvos`](platform-support/arm64e-apple-tvos.md) | ✓ | | ARM64e Apple tvOS -[`arm64e-apple-visionos`](platform-support/arm64e-apple-visionos.md) | ✓ | | arm64e Apple visionOS +[`arm64e-apple-visionos`](platform-support/arm64e-apple-visionos.md) | ✓ | | ARM64e Apple visionOS [`armeb-unknown-linux-gnueabi`](platform-support/armeb-unknown-linux-gnueabi.md) | ✓ | ? | Arm BE8 the default Arm big-endian architecture since [Armv6](https://developer.arm.com/documentation/101754/0616/armlink-Reference/armlink-Command-line-Options/--be8?lang=en). [`armebv7r-none-eabi`](platform-support/armebv7r-none-eabi.md) | * | | Bare Armv7-R, Big Endian [`armebv7r-none-eabihf`](platform-support/armebv7r-none-eabi.md) | * | | Bare Armv7-R, Big Endian, hardfloat diff --git a/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md b/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md index a5515dc12989c..cb3ce42dd7d78 100644 --- a/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md +++ b/src/doc/rustc/src/platform-support/arm64e-apple-visionos.md @@ -2,7 +2,7 @@ **Tier: 3** -Apple arm64e visionOS. +Apple ARM64e visionOS. ## Target maintainers @@ -10,11 +10,8 @@ Apple arm64e visionOS. ## Requirements -This target is cross-compiled and supports `std`. - -This target requires the visionOS SDK provided by Xcode. - -The deployment target can be configured with `XROS_DEPLOYMENT_TARGET`. +See the docs on [`*-apple-visionos`](apple-visionos.md) for general visionOS +requirements. ## Building the target