mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-11-01 07:33:12 +08:00
Every new runtime entry this wave added landed in a unit that baseline programs link (scr_lib.c's write/copyFile flags, scr_bytes.c's string_decoder dyn forms, scr_events.c's prepend registries and stdin.isRaw, scr_async_dyn.c's uncaught prepend, scr_net.c's server.off). A changed unit changes its object's build-id and symbol metadata even when every retained function is byte-identical, so 1517 corpus programs reported a runtime change for code they never call. Each new entry now lives where only a program that uses it can reach it: - writeFile's `flag` option and the fs/promises twins move to scr_fs_flags.c (feature fsFlags); copyFile's mode form reuses scr_fs_cp.c's reflink walk, so it is that unit's SCR_FS_FLAGS build. - string_decoder's checked-dynamic chunk forms move to scr_bytes_strdec_dyn.c (feature strdecDyn). - the prepend registrations, stdin.isRaw and server.off are the SCR_PROCESS_EXTRAS builds of scr_events.c and scr_async_dyn.c and the SCR_NET_SERVER_OFF build of scr_net.c (feature processExtras). The prepend entry points reuse the append registration and move the new entry to the front, so no existing function changes and every default object stays byte-identical. The Windows copyFile arm stays beside the Win32 path helpers in scr_lib.c, inside its _WIN32 block. The source build (the -O1 -fsanitize=address lane) compiles these units from their sources rather than from the prebuilt pack, so RUNTIME_DEFINES names the same three builds the pack matrix selects. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>