Skip to content

Widen the swift-syntax range to 600.0.1 ..< 604.0.0 - #1

Merged
nevyn merged 3 commits into
mainfrom
koja/widen-swift-syntax-range
Aug 20, 2026
Merged

Widen the swift-syntax range to 600.0.1 ..< 604.0.0#1
nevyn merged 3 commits into
mainfrom
koja/widen-swift-syntax-range

Conversation

@nevyn

@nevyn nevyn commented Aug 20, 2026

Copy link
Copy Markdown
Member

upToNextMajor(from: "602.0.0") pins the whole graph to swift-syntax 602.x, because swift-syntax treats every 6xx release as a major version.

That collides with anything needing a different 6xx. Concretely: SwiftGodot 0.75.0 wants 600.x, and it can't move up — SwiftGodotKit's macOS embedding needs DisplayServerEmbedded, a fork-only Godot class that newer SwiftGodot's bindings (generated from official Godot 4.6) no longer expose. So an app depending on both allonet2 and SwiftGodotKit fails at resolution, before compiling anything.

swift-syntax is only used here by the build-time macro plugin, and the constraint turns out to be over-tight rather than real. SIMDToolsMacros builds clean at both ends of the new range:

range resolved build
600.0.1 ..< 601.0.0 600.0.1
603.0.2 ..< 604.0.0 603.0.2

With this in, a KojaApp-shaped graph resolves and builds against upstream SwiftGodotKit and upstream SwiftGodot with no forks, no vendored trees and no submodules — verified end to end.

🤖 Generated with Claude Code

nevyn added 3 commits August 20, 2026 22:50
swift-syntax treats each 6xx release as a major version, so upToNextMajor(602) pins
the whole dependency graph to 602.x. That collides with anything needing a different
6xx: SwiftGodot 0.75.0 requires 600.x, and since SwiftGodotKit's macOS embedding needs
the fork-only DisplayServerEmbedded that newer SwiftGodot no longer exposes, it cannot
move up. An app depending on both allonet2 and SwiftGodotKit therefore fails to
resolve before compiling a line.

swift-syntax is used here only by the build-time macro plugin, and the constraint is
over-tight rather than real: the SIMDToolsMacros target builds clean against 600.0.1
and 603.0.2, verified at both ends of the new range.
swift-syntax 603 crashes swift-frontend while building its module interface on the
toolchain CI pins (swift-actions/setup-swift 5.9). Only the lower bound matters for
the problem this solves, so stop the range short of 603 rather than reaching past
what the package's own CI can build.
The pinned 5.9.2 toolchain is now paired with the runner image's macOS 26.5 SDK,
whose Foundation.swiftinterface uses typed throws that 5.9 cannot parse - so every
manifest compile fails before any of this package is built. That breaks any PR,
independently of what it changes. Use the image's own toolchain instead.

The workflow only triggered on pull_request, so main never ran it and the breakage
stayed invisible; run it on main pushes as well.

With CI on a current toolchain the swift-syntax range can stay at its useful width,
600.0.1 ..< 604.0.0.
@nevyn
nevyn merged commit f1043af into main Aug 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant