refactor(ffi-linkage): Phase 6.3 — migrate std/ #foreign→extern

Pure source rename across 11 std modules (~60 sites): cli/core/fmt/fs/log/
net/kqueue/process/socket/thread/time/trace. All fn-decl markers — bare
'#foreign;', '#foreign libc;'/'#foreign tlib;' (LIB ref), and
'#foreign libc "csym";' (LIB+rename) → the same 'extern …' tail (extern carries
the identical [LIB] ["csym"] axis). Plus 2 stale comment mentions (fmt/fs).
No class forms in std. These modules ARE host-corpus-exercised, so the empty
snapshot diff is direct validation. Suite green (647 corpus / 444 unit, 0
failed).
This commit is contained in:
agra
2026-06-15 04:35:52 +03:00
parent 0fbcee7e36
commit 59f90d2939
11 changed files with 60 additions and 60 deletions

View File

@@ -20,12 +20,12 @@ libc :: #library "c";
// ── Low-level libc bindings ─────────────────────────────────────────
popen :: (cmd: [:0]u8, mode: [:0]u8) -> *void #foreign libc;
pclose :: (stream: *void) -> i32 #foreign libc;
fread :: (ptr: [*]u8, size: usize, nmemb: usize, stream: *void) -> usize #foreign libc;
feof :: (stream: *void) -> i32 #foreign libc;
getenv :: (name: cstring) -> ?cstring #foreign libc;
system :: (cmd: [:0]u8) -> i32 #foreign libc;
popen :: (cmd: [:0]u8, mode: [:0]u8) -> *void extern libc;
pclose :: (stream: *void) -> i32 extern libc;
fread :: (ptr: [*]u8, size: usize, nmemb: usize, stream: *void) -> usize extern libc;
feof :: (stream: *void) -> i32 extern libc;
getenv :: (name: cstring) -> ?cstring extern libc;
system :: (cmd: [:0]u8) -> i32 extern libc;
// ── Public types ─────────────────────────────────────────────────────
@@ -122,7 +122,7 @@ find_executable :: (name: [:0]u8) -> ?string {
// via `write(2)`, so skipping the stdio flush loses nothing. Binding the
// symbol `"exit"` would also collide with this module's own `exit` function
// at the link level.
clib_exit :: (code: i32) -> noreturn #foreign libc "_exit";
clib_exit :: (code: i32) -> noreturn extern libc "_exit";
// Stop the process immediately with exit code `code`. Does NOT unwind:
// no `defer` / `onfail` cleanup runs, no error-trace frames are pushed —