Skip to content

Conversation

@madsmtm
Copy link
Contributor

@madsmtm madsmtm commented Feb 2, 2026

Update our CI to run with Xcode 26.

This means that:

  • LLVM will be built with a newer Clang version (before Apple Clang 15, now Apple Clang 17).
  • Our binaries (e.g. rustc and libstd*.dylib) will have their SDK version raised (before macOS 14.5, now 26.2).
  • Our binaries will be built with a newer linker (before 1053.12, now 1230.1).

The last two points can be observed with:

$ vtool -show-build ./build/host/stage1/bin/rustc
Load command 10
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 11.0
      sdk 26.2
   ntools 1
     tool LD
  version 1230.1
$ vtool -show-build ./build/host/stage1/lib/rustlib/aarch64-apple-darwin/lib/libstd*.dylib
Load command 9
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 11.0
      sdk 26.2
   ntools 1
     tool LD
  version 1230.1

This shouldn't have much of an effect, but things like dyld is known to inspect the SDK version, so it might expose some latent bugs (I really don't expect it to though).

This also updates the macOS runners to run on macOS 15 (the macOS 14 runners only have up to Xcode 16.2 available). That is desirable anyhow, as the macOS 14 runners will be deprecated in July. This is probably also required for #147192.

r? shepmaster

@madsmtm madsmtm added O-macos Operating system: macOS T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. A-CI Area: Our Github Actions CI O-apple Operating system: Apple / Darwin (macOS, iOS, tvOS, visionOS, watchOS) labels Feb 2, 2026
@rustbot rustbot added A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Feb 2, 2026
@madsmtm
Copy link
Contributor Author

madsmtm commented Feb 2, 2026

I suspect this will run into issues with some badly written tests, will do a CI run once it starts working again.

@madsmtm madsmtm changed the title ci: Update to Xcode 26.2 Update to Xcode 26.2 Feb 2, 2026
@madsmtm
Copy link
Contributor Author

madsmtm commented Feb 3, 2026

@bors try jobs=apple

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Feb 3, 2026
Update to Xcode 26.2


try-job: *apple*
@rust-log-analyzer

This comment has been minimized.

@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 3, 2026

💔 Test for 16cbdc0 failed: CI. Failed job:

@madsmtm
Copy link
Contributor Author

madsmtm commented Feb 3, 2026

I think we might need to use the Xcode-provided Clang on dist-apple-various as well to be able to build properly with the new headers. Let's try that:

@bors try jobs=apple

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Feb 3, 2026
Update to Xcode 26.2


try-job: *apple*
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 3, 2026

💥 Test timed out after 21600s

@madsmtm
Copy link
Contributor Author

madsmtm commented Feb 3, 2026

Hmm. I'd expect the first build with this to take longer because it busts basically the entire build cache, but I wouldn't have expected it to take that long.

Maybe it's due to the recent CI outage that GitHub Actions had, which might make jobs slower while they're catching up? I'll wait a few more hours to a day, and then retry the build.

@rust-bors

This comment has been minimized.

@madsmtm
Copy link
Contributor Author

madsmtm commented Feb 5, 2026

@bors try jobs=apple

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Feb 5, 2026
Update to Xcode 26.2


try-job: *apple*
@rust-log-analyzer

This comment has been minimized.

@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 5, 2026

☀️ Try build successful (CI)
Build commit: 68c715b (68c715b83df224fe567367e20296073d0f938d59, parent: 0a13b4361264236cb40afebea97973e6dc366de3)

@madsmtm
Copy link
Contributor Author

madsmtm commented Feb 5, 2026

Yay, that worked. Need to land #152192 first.
@rustbot blocked

@rustbot rustbot removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Feb 5, 2026
@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Feb 6, 2026
Update to Xcode 26.2


try-job: *apple*
@madsmtm madsmtm marked this pull request as ready for review February 6, 2026 19:22
@rust-bors rust-bors bot added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Feb 7, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 7, 2026

💥 Test timed out after 21600s

@rust-bors rust-bors bot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Feb 7, 2026
@madsmtm
Copy link
Contributor Author

madsmtm commented Feb 7, 2026

Seems like the second time might have access to more cached data:
@bors try jobs=apple

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Feb 7, 2026
Update to Xcode 26.2


try-job: *apple*
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 7, 2026

💥 Test timed out after 21600s

@madsmtm
Copy link
Contributor Author

madsmtm commented Feb 8, 2026

Hmm. I'll try one more time, it did work before:
@bors try jobs=apple

(Note that I don't consider it an option to not do this upgrade, so if CI times have actually gotten worse because of this, we'll have to split up the work into separate steps).

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Feb 8, 2026
Update to Xcode 26.2


try-job: *apple*
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 8, 2026

☀️ Try build successful (CI)
Build commit: 5f9b8c6 (5f9b8c62721c2963e903597d36bfd5eb9df99887, parent: 08a4ce529f4ea17ad1c0fa2e39ca1f5e7cd047b6)

@madsmtm
Copy link
Contributor Author

madsmtm commented Feb 8, 2026

Seemed to complete within reasonable timeframes, so was probably just some caching weirdness.

@rustbot ready

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Feb 8, 2026
@madsmtm
Copy link
Contributor Author

madsmtm commented Feb 8, 2026

This is probably compile-time performance-sensitive, since LLVM will be built with a newer Clang version (as I understand it, LLVM is only built once, unlike rustc's stage 1 and 2 compilers?)

Should still be safe to rollup though, as macOS performance isn't tested by rustc-perf.
@bors rollup=always

@shepmaster
Copy link
Member

@bors r+

...what's the worst that can happen /s

@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 9, 2026

📌 Commit 343b469 has been approved by shepmaster

It is now in the queue for this repository.

@rust-bors rust-bors bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 9, 2026
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Feb 9, 2026
Update to Xcode 26.2

Update our CI to run with Xcode 26.

This means that:
- LLVM will be built with a newer Clang version (before Apple Clang 15, now Apple Clang 17).
- Our binaries (e.g. `rustc` and `libstd*.dylib`) will have their SDK version raised (before macOS 14.5, now 26.2).
- Our binaries will be built with a newer linker (before 1053.12, now 1230.1).

The last two points can be observed with:
```sh
$ vtool -show-build ./build/host/stage1/bin/rustc
Load command 10
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 11.0
      sdk 26.2
   ntools 1
     tool LD
  version 1230.1
$ vtool -show-build ./build/host/stage1/lib/rustlib/aarch64-apple-darwin/lib/libstd*.dylib
Load command 9
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 11.0
      sdk 26.2
   ntools 1
     tool LD
  version 1230.1
```

This shouldn't have much of an effect, but things like `dyld` is known to inspect the SDK version, so it _might_ expose some latent bugs (I really don't expect it to though).

This also updates the macOS runners to run on macOS 15 (the macOS 14 runners only have up to Xcode 16.2 available). That is desirable anyhow, as [the macOS 14 runners will be deprecated in July](actions/runner-images#13518). This is probably also required for rust-lang#147192.

r? shepmaster
rust-bors bot pushed a commit that referenced this pull request Feb 10, 2026
…uwer

Rollup of 7 pull requests

Successful merges:

 - #151960 (rustc_parse: improve the error diagnostic for "missing let")
 - #152157 (Fix error spans for `asm!()` args that are macros)
 - #152317 (fix: sup_trace to sub_trace)
 - #150897 (rustc_parse_format: improve diagnostics for unsupported debug = syntax)
 - #151154 (Add `s390x-unknown-none-softfloat` with `RustcAbi::Softfloat`)
 - #152013 (Update to Xcode 26.2)
 - #152326 (Remove the compiler adhoc group)
@rust-bors rust-bors bot merged commit bcd01e7 into rust-lang:main Feb 10, 2026
12 checks passed
@rustbot rustbot added this to the 1.95.0 milestone Feb 10, 2026
rust-timer added a commit that referenced this pull request Feb 10, 2026
Rollup merge of #152013 - madsmtm:update-xcode, r=shepmaster

Update to Xcode 26.2

Update our CI to run with Xcode 26.

This means that:
- LLVM will be built with a newer Clang version (before Apple Clang 15, now Apple Clang 17).
- Our binaries (e.g. `rustc` and `libstd*.dylib`) will have their SDK version raised (before macOS 14.5, now 26.2).
- Our binaries will be built with a newer linker (before 1053.12, now 1230.1).

The last two points can be observed with:
```sh
$ vtool -show-build ./build/host/stage1/bin/rustc
Load command 10
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 11.0
      sdk 26.2
   ntools 1
     tool LD
  version 1230.1
$ vtool -show-build ./build/host/stage1/lib/rustlib/aarch64-apple-darwin/lib/libstd*.dylib
Load command 9
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 11.0
      sdk 26.2
   ntools 1
     tool LD
  version 1230.1
```

This shouldn't have much of an effect, but things like `dyld` is known to inspect the SDK version, so it _might_ expose some latent bugs (I really don't expect it to though).

This also updates the macOS runners to run on macOS 15 (the macOS 14 runners only have up to Xcode 16.2 available). That is desirable anyhow, as [the macOS 14 runners will be deprecated in July](actions/runner-images#13518). This is probably also required for #147192.

r? shepmaster
@madsmtm madsmtm deleted the update-xcode branch February 10, 2026 06:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CI Area: Our Github Actions CI A-testsuite Area: The testsuite used to check the correctness of rustc O-apple Operating system: Apple / Darwin (macOS, iOS, tvOS, visionOS, watchOS) O-macos Operating system: macOS S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants