ludic/selfhost/tests
Orkuncakilkaya ac1e8d157d
All checks were successful
docs / build-and-deploy (push) Successful in 2s
refactor(stdlib): consolidate System.* onto Os.*, retire duplicated members
`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>
2026-08-30 22:54:28 +03:00
..
color.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
control.ludic refactor(lang): rename the fn keyword to function 2026-08-30 01:43:22 +03:00
crypto.ludic feat(stdlib): Crypto.* — SHA-256 + HMAC-SHA256, constant-time verify (#19) 2026-08-30 13:37:02 +03:00
datetime.ludic feat(stdlib): Time/Date/Duration calendar-clock core (issue #9) 2026-08-30 03:37:38 +03:00
datetime2.ludic feat(stdlib): DateTime format/parse + simulated Clock — completes #9 2026-08-30 03:51:48 +03:00
easecollide.ludic refactor(stdlib): de-abbreviate namespaces (Mem/Sys/Net/Collide) 2026-08-30 01:30:47 +03:00
fixed.ludic refactor(lang): rename builtins flr->floor and fx->fixed 2026-08-30 02:01:56 +03:00
hash.ludic feat(lang,stdlib): 64-bit long type + 64-bit Hash variants (issue #17) 2026-08-30 01:01:06 +03:00
long.ludic refactor(lang): rename the str type (and stringify builtin) to string 2026-08-30 01:51:11 +03:00
match_bits.ludic refactor(lang): rename the fn keyword to function 2026-08-30 01:43:22 +03:00
math.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
math2.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
math3.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
memsys.ludic refactor(stdlib): consolidate System.* onto Os.*, retire duplicated members 2026-08-30 22:54:28 +03:00
slices.ludic Phase 7e: polymorphic print(x) + str(x) (retire print_int/print_str) 2026-08-28 01:22:38 +03:00
sort.ludic feat(stdlib): sorting toolkit — sort_by/sort_desc_by/sort_with + stable merge sort (#11) 2026-08-30 11:39:26 +03:00
structs.ludic refactor(lang): rename the fn keyword to function 2026-08-30 01:43:22 +03:00
textlist.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
textlist2.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
textsplit.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
transcend.ludic feat(stdlib): Math.exp/log/pow + Ease.elastic transcendentals (issue #25) 2026-08-30 01:19:44 +03:00
vector.ludic feat(stdlib): 2D Vector type + Vector.* namespace (issue #25) 2026-08-30 02:09:38 +03:00