Summary
The runtime-only macOS link path no longer passes -framework CoreFoundation, but perry-runtime still pulls iana_time_zone, which references _CFRelease. Linking a runtime-only binary therefore fails with an undefined symbol.
Evidence
crates/perry-runtime/src/gc/tests/...::gc_side_table_roots_evacuation — an untouched test — fails identically under both the perry-dev and release profiles on current main. Observed while validating PR #6934 (unrelated change; the failure reproduces without it).
Symbol: _CFRelease, reached via iana_time_zone → perry-runtime.
Likely cause
PR #6923 — "perf(link): drop unused framework dylibs from runtime-only macOS binaries" (merged 2026-07-28) — removed framework dylibs from the runtime-only link line. CoreFoundation appears to have been dropped while a live dependency on it remained.
Suggested fix
Either re-add -framework CoreFoundation to the runtime-only macOS link path, or drop/feature-gate the iana_time_zone dependency for runtime-only builds if the timezone functionality is not required there.
Worth confirming whether the same reasoning removed any other still-referenced framework — a link-time symbol sweep against the trimmed set would catch siblings in one pass.
Note
Not a GC bug despite the failing test's name — the test simply happens to be one that links a runtime-only binary. A local workaround was used to unblock #6934's validation; this issue tracks the real fix.
Summary
The runtime-only macOS link path no longer passes
-framework CoreFoundation, butperry-runtimestill pullsiana_time_zone, which references_CFRelease. Linking a runtime-only binary therefore fails with an undefined symbol.Evidence
crates/perry-runtime/src/gc/tests/...::gc_side_table_roots_evacuation— an untouched test — fails identically under both theperry-devandreleaseprofiles on currentmain. Observed while validating PR #6934 (unrelated change; the failure reproduces without it).Symbol:
_CFRelease, reached viaiana_time_zone→perry-runtime.Likely cause
PR #6923 — "perf(link): drop unused framework dylibs from runtime-only macOS binaries" (merged 2026-07-28) — removed framework dylibs from the runtime-only link line.
CoreFoundationappears to have been dropped while a live dependency on it remained.Suggested fix
Either re-add
-framework CoreFoundationto the runtime-only macOS link path, or drop/feature-gate theiana_time_zonedependency for runtime-only builds if the timezone functionality is not required there.Worth confirming whether the same reasoning removed any other still-referenced framework — a link-time symbol sweep against the trimmed set would catch siblings in one pass.
Note
Not a GC bug despite the failing test's name — the test simply happens to be one that links a runtime-only binary. A local workaround was used to unblock #6934's validation; this issue tracks the real fix.