Skip to content

Tracking issue: Darwin updates for 25.11 #405893

@reckenrode

Description

@reckenrode

There are a number of improvements and updates planned for Darwin in 25.11. Related PRs will be linked in the corresponding sections.

Allowing curl in the Bootstrap

The issues with curl on Darwin identified in NixOS/rfcs#112 are no longer a problem. The frameworks are part of the SDK, which does not depend on curl, and which are not propagated because every stdenv has an SDK. Allowing curl in the bootstrap allows some dependencies (such as LLVM) to enable features that require curl.

Bootstrap Tools Updates to support Swift in the Bootstrap

The bootstrap tools will be updated to include nix-prefetch-git to avoid pulling Rust into the bootstrap. Any other tools expected by Swift (libtool and vtool?) will also be added. Swift itself is not likely to be included. This is being done to prepare for Swift to be added to source releases and other packages. (Note: This may not happen if it’s decided these things should be built in the bootstrap.)

cctools and ld64 updates

Apple released another ld64 update, which was surprising considering it is supposed to be deprecated. cctools has also been updated to remove gas. GNAT will need to be changed not to depend on the obsolete GNU assembler on Darwin.

Find a debugserver Solution

Users currently have to have Xcode or the CLT installed to use a debugger. The most likely solution to this is building debugserver separately, so that it can be signed and notarized.

Linux to Darwin Cross-Compilation

ld64 and cctools will be updated to build (enough) on Linux. With Swift being allowed in the bootstrap, this may involve rewriting some parts in Swift. Many of the details are still t.b.d..

Note: This is a stretch goal. It will be the first thing to be pushed back to 26.05 due to time limitations.

LLVM Update

The default version of LLVM will be updated to 20 on all platforms. Darwin in particular requires LLVM 20 to build Swift 6.1 because it relies on compiler-rt builtins that were not upstreamed until LLVM 20.

Minimum Version Update

As announced in the 25.05 release notes, Darwin will be updating the minimum supported version regularly going forward. 25.11 will be the first release to reflect that policy. The oldest supported release will be macOS 14.0 if it is possible to make availability warnings into errors by default (based on @emilazy’s work).

SDK Update

The 15.x SDK and source releases will be updated to 15.4. These will not be backported because the source releases include non-trivial changes.

System libc++ and libc++abi

Darwin is switching to using the system libc++abi when building upstream LLVM libc++ and using the system libc++ by default. This is being done to avoid ODR violations and issues with symbols from system frameworks. The version of libc++ in the 15.x SDK is roughly equivalent to libc++19.

Swift Update

Swift will be updated to 5.10.1 and 6.1 on both Darwin and Linux. Two versions are required because a Swift compiler is required to bootstrap Swift 6.1.

xcbuild Replacement

Swift Build is capable of building Xcode projects. It should be possible to wrap it in a compatibility script and use it in place of xcbuild. xcrun will be replaced with a wrapper script or program.

Metadata

Metadata

Assignees

No one assigned

    Labels

    5.scope: trackingLong-lived issue tracking long-term fixes or multiple sub-problems6.topic: darwinRunning or building packages on Darwin
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions