| 29 Nov 2025 |
Randy Eckenrode | https://github.com/search?q=repo%3Aswiftlang%2Fswift%20-O3&type=code | 05:17:39 |
Randy Eckenrode | I wonder if I’m hitting the LLVM 21 codegen bug. | 05:17:48 |
Randy Eckenrode | Nope, hitting https://github.com/swiftlang/swift/pull/80920#issuecomment-2830656229 | 18:05:40 |
Randy Eckenrode | I really didn’t want to have to maintain Swift 5.x just to bootstrap Swift 6.x, especially with the 14.4 SDK due for removal in the future. | 18:07:12 |
Randy Eckenrode | * | 18:07:30 |
Randy Eckenrode | * | 18:07:45 |
Randy Eckenrode | $ nix build -f . swiftPackages.swiftc
$ result/bin/swiftc -version
<unknown>:0: warning: using (deprecated) legacy driver, Swift installation does not contain swift-driver at: '/nix/store/qv81mmcyl52jzgy32pnq41kxx6v575j9-swift-6.2.1/bin/swift-driver-new'
Swift version 6.2.1 (swift-6.2.1-RELEASE)
Target: arm64-apple-darwin25.1.0
| 19:18:34 |
Randy Eckenrode | Progress! | 19:18:53 |
Randy Eckenrode | $ SDKROOT=$(nix eval --raw -f . apple-sdk_26.sdkroot) result/bin/swiftc ../test-cli.swift -o ../test-cli
$ ../test-cli
Hello, Swift!
| 19:23:51 |
Randy Eckenrode | Next is swift-driver and swiftpm. Also, the bootstrap story. | 20:23:55 |
Randy Eckenrode | One thing I am doing differently is (trying to) build dependencies as packages. I also want to see if I can have actual swift-driver and swift-syntax packages. swiftPackages.swift will just symlink together swiftc and swift-driver. | 20:25:55 |
Randy Eckenrode | Once I have this working, I want to go back and split out the stdlib into its own package, which should help make cross-compilation possible. It’s not supported currently. | 20:26:45 |
Randy Eckenrode | I am working on this for 6.2.1, but I plan to land the changes for 5.10.1 first (moving it into the new pattern). 6.2.1 will be a separate PR. | 20:27:38 |
toonn | That sounds like a solid plan. | 22:55:28 |
| 30 Nov 2025 |
Randy Eckenrode | So far the alternate approach seems to be working. I can patch sources in Swift packages and then use a hook to expose them to SwiftPM. Unfortunately, the SDK requires observability, which makes the C++-only bootstrap compiler pretty useless. | 04:05:33 |
Randy Eckenrode | Actually, just importing Foundation blows up the build. | 04:19:57 |
Randy Eckenrode | This sucks. The 26.0 SDK appears to use macros unconditionally in the Observation module. The 14.4 SDK has guards for when macros are disabled, so the module doesn’t blow up. | 04:25:47 |
Randy Eckenrode | I don’t know how this bootstrap is going to work in that case. | 04:26:55 |
Randy Eckenrode | We could use the 14.4 SDK for bootstrapping, but we’ll have problems next year when that SDK is dropped. It’s the same problem that Swift 5.8 had this year but worse. | 04:27:33 |
dotlambda | Does anyone want to step up to maintain python3Packages.psutil? It's a dependency of the Darwin stdenv | 04:29:06 |
toonn | What is different about Apple's bootstrapping method that they don't run into the problem? Or do they just never bootstrap? | 11:15:35 |
Randy Eckenrode | They already have a Swift compiler lying around. | 11:32:16 |
Randy Eckenrode | If you have an existing Swift compiler, you can go straight to building the Swift-in-Swift stuff. | 11:33:15 |
Randy Eckenrode | * | 11:40:02 |
toonn | So the macro issue only happens at build time? | 11:55:50 |
Randy Eckenrode | Building a compiler with macro support requires swift-syntax, which requires a Swift compiler. | 12:15:55 |
Randy Eckenrode | The easy path would be to use the 14.4 SDK, but our removal schedule means we can’t rely on that or have to do something really hacky to build the bootstrap compiler with it. | 12:18:33 |
Randy Eckenrode | * | 12:18:52 |
Randy Eckenrode | It’s possible we don’t need early swift-driver. I need to see what we lose by not building it until the end. | 12:19:26 |
Randy Eckenrode | My current thinking is to have a special boot.nix that builds a fully functional Swift 5.10.1, which can then be used to build Swift 6.x. | 12:59:48 |