!lheuhImcToQZYTQTuI:nixos.org

Nix on macOS

1147 Members
“There are still many issues with the Darwin platform but most of it is quite usable.” — http://yves.gnu-darwin.org182 Servers

Load older messages


SenderMessageTime
1 Dec 2025
@emilazy:matrix.orgemilyI don't think we should have to rely on that kind of thing. I think we should just report this issue to upstream before planning for that…17:48:12
@emilazy:matrix.orgemilythere's no reason the bootstrap compiler couldn't digest macro definitions and then simply error out if they are ever used, right?17:48:33
@emilazy:matrix.orgemilyall we need is that the Swift macro machinery itself can be built without using stuff that uses macros – which is already a property they have to maintain by definition17:48:55
@reckenrode:matrix.orgRandy EckenrodeI don’t think upstream intends Darwin to be bootstrapped this way.18:00:51
@reckenrode:matrix.orgRandy EckenrodeIt’s simply not a supported feature. As soon as the parser hits a macro definition, it bails.18:02:04
@emilazy:matrix.orgemilyit doesn't seem like it should be hard to keep working, right? the macro machinery presumably already doesn't use much OS-specific stuff / fancy Swift features, so it's unlikely that any macros in the SDK will truly be required to build enough to process them18:04:55
@emilazy:matrix.orgemilyright, what I mean is that they could simply defer that error to the use site, for the bootstrap compiler18:05:09
@emilazy:matrix.orgemilyit seems very cheap to just report and see if they care or not18:05:20
@emilazy:matrix.orgemilyif it was working up until the 26 SDK then I imagine they might have interest in keeping it working18:05:33
@emilazy:matrix.orgemilywould be a lot cleaner than worrying about keeping an SDK around for years18:05:48
@emilazy:matrix.orgemilyespecially if we get to the point of "new LLVM chokes on the old SDK now" etc.18:05:59
@emilazy:matrix.orgemily(or more plausibly, new Swift chokes on Swift parts of the old SDK)18:06:17
@reckenrode:matrix.orgRandy Eckenrode The problem is Foundation reexports Observable. That makes import Foundation immediately fail because it hits macros right away. 18:06:44
@emilazy:matrix.orgemilythey won't have any way of knowing that it matters for someone to have it work without us letting them know after all18:06:47
@emilazy:matrix.orgemilyit surely can't be hard to just skip over macro definitions when bootstrapping right?18:07:13
@reckenrode:matrix.orgRandy EckenrodeThe parser has no idea without support. It needs swift-syntax, which is written in Swift.18:07:52
@emilazy:matrix.orgemily(I mean, maybe it can be, but the people working on the Swift bootstrap would know better than I :) )18:07:53
@reckenrode:matrix.orgRandy EckenrodeIf we hit that point, we can bootstrap from a binary distribution or a know good one.18:08:03
@reckenrode:matrix.orgRandy EckenrodeI think it’a one guy working on it:18:08:23
@reckenrode:matrix.orgRandy Eckenrode * 18:08:27
@reckenrode:matrix.orgRandy Eckenrode * 18:08:42
@reckenrode:matrix.orgRandy Eckenrode * 18:09:35
@emilazy:matrix.orgemilyif we're planning ahead about things like a binary bootstrap or an old compiler or an old SDK I don't see why we shouldn't spend that effort on taking 5 minutes to open a bug report upstream…18:09:48
@toonn:matrix.orgtoonn Are you sure the macros are not used in any code hit during a compiler compile? 18:10:13
@emilazy:matrix.orgemily

are we talking about Foundation.framework/Versions/C/Modules/Foundation.swiftmodule/x86_64-apple-macos.swiftinterface? I see e.g.

@available(macOS 12, iOS 15, tvOS 15, watchOS 8, visionOS 1, *)
@freestanding(expression) public macro bundle() -> Foundation.Bundle = #externalMacro(module: "FoundationMacros", type: "BundleMacro")
18:11:17
@reckenrode:matrix.orgRandy EckenrodeBecause I’m going probably going to have to reproduce with the recommended build scripts and toolchains, which will require more than five minutes. Also, five minutes spent on that is time not spent on other things.18:11:21
@emilazy:matrix.orgemilywhich seems like it would be really easy to parse and just map to a stub error18:11:30
@emilazy:matrix.orgemilyby definition they can't really be, since the point of the bootstrap compiler is to compile the compiler, and the bootstrap compiler can't do macros18:11:49
@emilazy:matrix.orgemilyso basically the only way they could be used is if there's a macOS-specific code path in the parts of the compiler that handle macros that uses stuff from the SDK that uses macros18:12:10
@emilazy:matrix.orgemilywhich seems really unlikely / very avoidable18:12:18

Show newer messages


Back to Room ListRoom Version: 6