refactor(stdlib): consolidate System.* onto Os.*, retire duplicated members
All checks were successful
docs / build-and-deploy (push) Successful in 2s
All checks were successful
docs / build-and-deploy (push) Successful in 2s
`System.*` and the newer `Os.*` (added in #21) both covered the environment around the game, with four members (`arg`, `arg_count`, `env`, `exit`) lowering byte-for-byte identically and the standard streams overlapping in concern. That is a user-facing ambiguity (`System.env` vs `Os.env` are indistinguishable) and a drift hazard (two copy-pasted codegen paths). Make `Os.*` the single canonical environment/process namespace and retire the overlapping `System.*` members: - Remove `System.{arg, arg_count, env, exit, stdout, stderr}` from the namespace dispatch (selfhost/emit_expr.ludic). Use `Os.arg`/`Os.arg_count`/`Os.env`/ `Os.exit` and `Os.stdout_write`/`Os.stderr_write` instead. - `System.*` now covers only its unique low-level surface: the raw file handles (`file_open/read/write/seek/tell/close`), `read_char`, and `run`. - The bare `arg`/`exit`/`getenv`/`file_stdout`/`file_stderr` intrinsics stay — they are the primitive layer the self-hosted compiler itself uses; only the redundant *namespaced* sugar is gone. - Docs: drop the six retired `docs/language/system/*` pages, retune the section blurb, update inventory.json and the LSP signature table. - Secondary finding from the issue: cross-link `Text.upper`/`Text.lower` (ASCII-only) to `Unicode.upper`/`Unicode.lower` (full Unicode case mapping). Reseeded; C-free bootstrap fixpoint holds. All suites green (56 test / 29 selfhost / 29 test-tools); docs cover every implemented feature (291 ns-methods). Closes #40 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
dd4f5a26ad
commit
ac1e8d157d
14 changed files with 3762 additions and 3920 deletions
|
|
@ -1377,11 +1377,7 @@ program LudicLsp {
|
|||
if (meth == "local_id") { return "Network.local_id() -> int" }
|
||||
}
|
||||
if (ns == "System") {
|
||||
if (meth == "arg") { return "System.arg(i) -> string" }
|
||||
if (meth == "arg_count") { return "System.arg_count() -> int" }
|
||||
if (meth == "exit") { return "System.exit(code)" }
|
||||
if (meth == "run") { return "System.run(command) -> int" }
|
||||
if (meth == "env") { return "System.env(name) -> string" }
|
||||
if (meth == "read_char") { return "System.read_char() -> int" }
|
||||
if (meth == "file_open") { return "System.file_open(path, mode) -> pointer" }
|
||||
if (meth == "file_read") { return "System.file_read(file, buf, n) -> int" }
|
||||
|
|
@ -1389,8 +1385,6 @@ program LudicLsp {
|
|||
if (meth == "file_seek") { return "System.file_seek(file, offset, whence) -> int" }
|
||||
if (meth == "file_tell") { return "System.file_tell(file) -> int" }
|
||||
if (meth == "file_close") { return "System.file_close(file)" }
|
||||
if (meth == "stdout") { return "System.stdout() -> pointer" }
|
||||
if (meth == "stderr") { return "System.stderr() -> pointer" }
|
||||
}
|
||||
if (ns == "Save") {
|
||||
if (meth == "write") { return "Save.write()" }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue