diff --git a/.github/workflows/gc-native-roots.yml b/.github/workflows/gc-native-roots.yml index d6f7993cd8..5532fc6705 100644 --- a/.github/workflows/gc-native-roots.yml +++ b/.github/workflows/gc-native-roots.yml @@ -673,7 +673,9 @@ jobs: export PERRY_RUNTIME_DIR="$PWD/target/perry-dev" export PERRY_NO_AUTO_OPTIMIZE=1 unset PERRY_LLVM_OPT PERRY_LLVM_CLANG - export LLVM_SYS_221_PREFIX="$(brew --prefix llvm)" + # Keep LLVM_SYS_221_PREFIX from setup-llvm22. The stock-toolchain + # assertion removes the external opt/clang overrides; the in-process + # backend itself still has to link the LLVM 22 ABI used by llvm-sys. export RUSTFLAGS="-C force-frame-pointers=yes -C force-unwind-tables=yes" cargo build --profile perry-dev -p perry -p perry-runtime-static \ -p perry-stdlib-static --features perry-codegen/llvm-inprocess diff --git a/changelog.d/9920-gc-native-roots-platforms.md b/changelog.d/9920-gc-native-roots-platforms.md new file mode 100644 index 0000000000..6a9b6a2a58 --- /dev/null +++ b/changelog.d/9920-gc-native-roots-platforms.md @@ -0,0 +1,5 @@ +### Fixed + +- Restore the scheduled native-roots gate on ARM Linux and macOS by handling + libyaml's target-specific `c_char` signedness and retaining its configured + LLVM 22 prefix for the in-process backend. diff --git a/crates/perry-runtime/src/bun_compat/cli_utils.rs b/crates/perry-runtime/src/bun_compat/cli_utils.rs index 3e75b4a25d..88a4f44d0c 100644 --- a/crates/perry-runtime/src/bun_compat/cli_utils.rs +++ b/crates/perry-runtime/src/bun_compat/cli_utils.rs @@ -947,7 +947,7 @@ fn yaml_parse(input: f64) -> f64 { let problem = if parser.problem.is_null() { "invalid YAML".to_string() } else { - std::ffi::CStr::from_ptr(parser.problem) + std::ffi::CStr::from_ptr(parser.problem.cast::()) .to_string_lossy() .into_owned() };