Unify beginner syntax while preserving compatibility, repair ownership and parser guards, add verified distribution tooling and VC6 Windows 98 build inputs, and clarify documentation and release status. Preserve DOS build-input line endings and exclude generated binaries/caches.
2.5 KiB
Reliability checkpoint
Use release status for artifact-specific evidence and publication state. This page describes tested boundaries, not a universal pass.
The known OBJECT cleanup investigation is resolved for the maintained regression
cases. Historical notes in HARDENING.md describe earlier failures, not the current
status of those tested boundaries.
Repairs and coverage
- Borrowed type/class metadata no longer creates abandoned deep copies.
- Checked assignments, object copies, construction, and OBJECT result temporaries release owned values after storage has copied them.
- Function declaration and typechecker parameter arrays, per-file type metadata, text transforms, sorting, and REPL teardown have explicit cleanup.
- A lone
!no longer leaves the tokenizer at the same input position until memory is exhausted. It produces aNOTrepair hint;!=remains supported. - Missing quotes/parentheses/operands and trailing expression tokens are diagnosed.
- Expression recursion and nested control blocks have bounded guardrails. Deep block input no longer writes beyond the checker's fixed array.
- Existing function recursion, HTTP response-size, and trusted-command boundaries retain their focused checks.
Reproduce verification
make -s all
python3 tools/validate_reliability.py
python3 tools/validate_v1_17.py
The current reliability runner executes 35 maintained checks and records each exit status and log in a scratch result directory. It includes the full introductory learning-path checker and First Hour under ASan/UBSan/LeakSanitizer, with leak detection enabled. Full release validation invokes this runner; CI has explicit reliability, single-file C89, and learning-path checks.
The OBJECT regression verifies class name, field count and field content, not a fictional printed list representation. Five isolated ownership tests separate metadata, field storage and object construction so one leak cannot hide another. Malformed-expression and nesting tests check failure diagnostics and valid inputs.
Scope
A passing run establishes the exercised boundaries, not universal leak freedom, security or correctness for arbitrary programs. POSIX sanitizer coverage does not establish native Windows behavior. See runtime limits for implemented guards and portability for distribution evidence. Intentional infinite loops and untrusted-script execution are not made safe by these checks. Historical beta environment-limit claims are not current guarantees.