Repository navigation
Conversation
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.
Tip: disable this comment in your organization's Code Review settings.
There was a problem hiding this comment.
The bundled Mach-O linker handles distant ctor calls while retaining startup and constructor-registration sections, with the compiler driver still supplying SDK and deployment arguments. This supports recovery of existing locked beta tags; upstream ctor removal would require a dependency update. Stable builds retain the release profile and system linker, and release/manual publication still requires all three native artifacts.
The macOS compiler-driver and Java runtime path, including completion within the 90-minute budget, could not be independently exercised in this review. Constructor-registration checks and Java data-operation tests gate artifact upload, making build/load failures visible before publication.
The macOS Java beta publisher exceeded its 90-minute budget. With the existing ThinLTO profile, the build then reached Apple ld 1053.12's branch-range limitation: pinned ctor initialization calls across roughly 195 MB from
__text_startup, beyond ARM64's direct-branch range.Use the Mach-O LLD bundled with the existing Rust toolchain for the beta/PR JNI link. It generates range-extension thunks while retaining the separate startup section. The compiler driver still supplies the SDK and deployment arguments; a launcher supplies the bundled LLVM library path after Apple's driver sanitizes DYLD variables. The workflow adds no section-renaming override.
Keep the optimized ThinLTO profile, standalone JNI cache and Java CI protoc installer. Constructor-registration checks and Java write/open, filtered-count and delete tests run before upload. Stable release settings and the 90-minute budget are unchanged. macOS-only workflow PRs skip unchanged Linux work; release/manual runs still require all three native artifacts before Maven/R2 publication.
Validation on
4bfcf1f519cd3fe3bbf0bf949f8014d905e3b5aa:__text_startupand__mod_init_func, has 299 JNI exports, passes code-signature verification, and shows the far-call thunks. It adds no LLVM runtime dependency.v15.0.0-beta.9(025b3d93) also passes the actual compiler-driver recipe and the same 3 Java tests locally. A separate 140 MiB probe verifies two constructors execute once in priority order through the range-extension path. Actionlint and commit checks pass.These results establish the matched build fix, not a product runtime performance improvement or official package publication. The PR remains draft for review of the corrected design. Existing beta.9 recovery still uses
mode=release/ref=v15.0.0-beta.9, with actual tag-source builds and Maven/R2 package verification; the validation artifacts cannot substitute for released packages.The validated source/config predates #10594. Current main separately retains that PR's root section-renaming configuration. This workflow change and the old-tag evidence do not establish a workaround-free current-main Python/Java release; that source-config correction and containing-release acceptance remain separate.