Skip to content

Precompiled Linux GNU runtime references __isoc23_* symbols unavailable on glibc 2.36 #349

Description

@Cruel

The current ScriptC Linux GNU runtime package appears to require a newer glibc than Debian 12 Bookworm provides.

I reproduced this with a fresh install of the latest ScriptC release inside the current node:24-bookworm-slim Docker image.

Environment

scriptc: 0.1.3
Node: v24.21.0
Debian: Bookworm
glibc: 2.36
architecture: x86_64

Reproduction

docker run --rm -it node:24-bookworm-slim bash

Inside the container:

apt-get update
apt-get install -y --no-install-recommends binutils

mkdir /tmp/scriptc-repro
cd /tmp/scriptc-repro

npm init -y
npm install --ignore-scripts scriptc@latest

node -p 'require("./node_modules/scriptc/package.json").version'
ldd --version | head -1

Then inspect the precompiled runtime objects:

R=node_modules/@scriptc/runtime-linux-x64-gnu

for f in scr_http.o scr_fetch.o scr_cycle.o scr_lib.o; do
    echo "=== $f"
    readelf -Ws \
      "$R/artifacts/release/runtime/default/$f" \
      | grep __isoc23_ || true
done

On scriptc@0.1.3, this shows:

scr_http.o   -> UND __isoc23_strtoll
scr_fetch.o  -> UND __isoc23_strtol
scr_cycle.o  -> UND __isoc23_strtol
scr_lib.o    -> UND __isoc23_sscanf

glibc 2.36 does not provide these symbols, so linking on Bookworm can fail with errors such as:

undefined reference to `__isoc23_strtoll'
undefined reference to `__isoc23_strtol'

Expected behavior

The published @scriptc/runtime-linux-x64-gnu runtime objects should be compatible with ScriptC's minimum supported glibc version.

The docs also reference targets such as:

x86_64-linux-gnu.2.36

so I would expect glibc 2.36 to work.

Likely cause

It looks like the precompiled Linux runtime objects are being built against a newer glibc and then published unchanged.

That can bake newer libc symbol requirements into the .o files, even when the ScriptC runtime source itself could otherwise build on Bookworm.

This may also be related to #3, which added _GNU_SOURCE for Linux/glibc host builds.

Possible fix

Build the published linux-x64-gnu runtime pack against an explicit minimum glibc/sysroot, and add CI that links the packaged runtime on that minimum version.

A Debian Bookworm CI job should catch this specific regression.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions