Phase 8b: modern names for the raw-memory and OS/IO primitives

Groups B and C of the leftover-primitive cleanup — renames, not new machinery,
and deliberately NO unsafe_ prefix (a __-prefix is itself a C convention, and an
`unsafe` marker carries no signal in a fully-manual-memory language with no safe
subset to contrast against).

  memory:  mem_free -> free   mem_realloc -> resize   mem_set -> fill
           ptr_add -> offset
  process: os_argc -> arg_count   os_arg -> arg   os_exit -> exit
           os_system -> run   os_getenv -> getenv   read_byte -> read_char
  dead:    mem_copy, os_time, write_byte (0 uses) — deleted

Two reseeds: accept both old and new names in the intrinsic dispatch, then
migrate every call site and drop the old names. file_open/read/write/seek/tell/
close are left as-is — they're the domain-prefixed syscall layer wrapped by
read_file, not the argc/argv-style C-ness the audit targeted; a `File` type is a
separate, larger design if wanted.

test.sh's CLI smoke updated (os_exit -> exit); check-vocabulary's grammar marker
moved off the deleted names. Reseeded (22243 lines); C-free fixpoint holds;
goldens identical; 18/18; vocab + doc-fences clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-08-28 02:55:24 +03:00
parent 6f1ba2c214
commit d3301684f1
19 changed files with 2468 additions and 2614 deletions

View file

@ -26,7 +26,7 @@ fn rt_image_init() -> void {
img_w = words(IMG_MAX)
img_h = words(IMG_MAX)
spr_px = words(SPR_MAX * SPR_SZ * SPR_SZ)
mem_set(spr_px, 0, SPR_MAX * SPR_SZ * SPR_SZ * 4)
fill(spr_px, 0, SPR_MAX * SPR_SZ * SPR_SZ * 4)
}
# ---- decoding -------------------------------------------------------------
@ -69,9 +69,9 @@ fn rt_decode_png(path: str) -> bool {
let d = rt_read_file(path)
if (d == null) { return false }
let size = rt_file_len
if size < 8 { mem_free(d); return false }
if d[0] != 137 { mem_free(d); return false }
if d[1] != 80 { mem_free(d); return false }
if size < 8 { free(d); return false }
if d[0] != 137 { free(d); return false }
if d[1] != 80 { free(d); return false }
var w = 0
var h = 0
@ -118,8 +118,8 @@ fn rt_decode_png(path: str) -> bool {
}
}
if w <= 0 { mem_free(d); return false }
if h <= 0 { mem_free(d); return false }
if w <= 0 { free(d); return false }
if h <= 0 { free(d); return false }
var channels = 1
if ct == 2 { channels = 3 }
@ -132,7 +132,7 @@ fn rt_decode_png(path: str) -> bool {
let rawlen = h * (stride + 1)
let raw = bytes(rawlen + 8)
if z_uncompress(idat, idlen, raw, rawlen) < 0 {
mem_free(d); mem_free(raw); mem_free(idat)
free(d); free(raw); free(idat)
return false
}
@ -215,11 +215,11 @@ fn rt_decode_png(path: str) -> bool {
}
}
mem_free(d)
mem_free(idat)
mem_free(raw)
mem_free(plte)
mem_free(trns)
free(d)
free(idat)
free(raw)
free(plte)
free(trns)
png_w = w
png_h = h
png_px = out
@ -333,7 +333,7 @@ fn rt_png_load(path: str) -> int {
spr_px[base + y * SPR_SZ + x] = px
}
}
mem_free(png_px)
free(png_px)
png_px = null
return id
}
@ -380,7 +380,7 @@ fn rt_sprites_load(path: str) -> void {
if (d == null) { spr_n = 0; return }
let size = rt_file_len
let pal: words = words(128)
mem_set(pal, 0, 128 * 4)
fill(pal, 0, 128 * 4)
var cur = 0 - 1
var row = 0
var i = 0
@ -407,7 +407,7 @@ fn rt_sprites_load(path: str) -> void {
if spr_n < SPR_MAX {
cur = spr_n
spr_n = spr_n + 1
mem_set(ptr_add(spr_px, cur * SPR_SZ * SPR_SZ * 4), 0, SPR_SZ * SPR_SZ * 4)
fill(offset(spr_px, cur * SPR_SZ * SPR_SZ * 4), 0, SPR_SZ * SPR_SZ * 4)
}
row = 0
}
@ -429,6 +429,6 @@ fn rt_sprites_load(path: str) -> void {
}
i = start + len + 1
}
mem_free(pal)
mem_free(d)
free(pal)
free(d)
}