Add Node.js 22+ support with Debian Forky#622
Draft
josead wants to merge 10 commits into
Draft
Conversation
- Change default base image from debian:trixie-slim to debian:forky-slim which provides Node.js 22+ - Add ICU 75.1 version mapping for Node.js 22+ in CMake configuration - Update documentation to reflect supported Node.js versions (>= 18.x.x) - Add debian:forky-slim to CI test matrix - Remove discontinued Alpine Linux support from comments Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add forky codename to libcurl4t64 package check in metacall-runtime.sh - Add forky codename to libdw1t64/libelf1t64 package check in metacall-runtime.sh - Add forky codename to LLVM repository URL selection in metacall-environment.sh (uses unstable repo since apt.llvm.org doesn't have forky-specific packages yet) These changes ensure Debian Forky (which provides Node.js 22+) can properly install runtime dependencies with the correct package names that changed in newer Debian versions (t64 suffix for 64-bit time_t transition). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Revert LLVM forky changes (will be done in separate PR) - Restore Alpine comment in .env (support planned for future) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use native Debian packages for libclang/clang-format on trixie/forky instead of LLVM apt repo (LLVM GPG key uses SHA1 which is rejected by newer Debian versions as of 2026-02-01) - Enable CMAKE_POSITION_INDEPENDENT_CODE for backward-cpp to fix linking error when building backtrace_plugin shared library Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Debian forky ships with LLVM 21 as the default, and trixie ships with LLVM 17-19. Update the search version list to find these newer versions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
f83792d to
999d78f
Compare
The C loader has type resolution bugs with libclang 17+ where typedef types (e.g., `typedef int yeet;`) are not correctly resolved, causing function returns to be interpreted as THROWABLE instead of INT. This affects both libclang-18 and libclang-19 on Debian trixie/forky. The C loader previously worked with libclang-14 from the LLVM apt repo, but that repository's GPG key uses SHA1 which is now rejected. Temporarily skip C loader installation on trixie/forky until the underlying compatibility issue is resolved. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
999d78f to
789b684
Compare
Change SEND_ERROR to WARNING for LibFFI, LibClang, and LibTCC dependency checks. This allows the build to continue when these dependencies are not available (e.g., on Debian trixie/forky where we skip libclang installation due to compatibility issues). Also reorder checks to check LibClang before LibTCC, since LibTCC installation takes time and there's no point installing it if LibClang is missing. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
… crash Install libclang-dev alongside libffi-dev on trixie/forky so Rust bindgen can find libclang (the C loader is still skipped). Add PASS_REGULAR_EXPRESSION workaround for metacall-python-port-test under address sanitizer, matching the pattern used by other tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The clang type-to-metacall type mapping in c_loader_impl_clang_type() was missing cases for CXType_Long, CXType_ULong, CXType_LongLong, CXType_ULongLong, CXType_Float, CXType_Double, and CXType_LongDouble. These types fell through to default returning TYPE_INVALID, causing functions returning long/float/double to produce wrong values at runtime. This was the root cause of metacall-c-test failures on Debian trixie/forky where libclang 19 resolves int return types as CXType_Long (type id 18). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
On Debian trixie/forky, the C loader has type resolution bugs with libclang 17+ that cause test failures. The previous fix (01bfc86) restored libclang-dev in sub_c()'s trixie/forky block, which caused find_package(LibClang) to succeed and the C loader to be built. Move libclang-dev installation to sub_rust() so that: - Rust bindgen can still find libclang headers - The C loader's CMake find_package(LibClang) fails in sub_c() - The C loader gracefully skips (per commit 68720ce) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
16 tasks
16 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
debian:trixie-slimtodebian:forky-slimwhich provides Node.js 22+debian:forky-slimto CI test matrix for both regular and sanitizer testsTest plan
./docker-compose.sh buildwithMETACALL_BASE_IMAGE=debian:forky-slim./docker-compose.sh testto verify all tests passFiles changed
.env- Default base image updatedcmake/FindNodeJS.cmake- ICU version for Node.js 22+docs/README.md- Updated version documentation.github/workflows/linux-test.yml- CI matrix updatedNotes
🤖 Generated with Claude Code