Repository navigation
RELEASE-20260711
·
79 commits
to master
since this release
- CASE jump-table dispatch: implemented, debugged (2 real bugs found and fixed: out-of-range dispatch bug caught by a new dedicated test), and fully verified (make test 272/272, self-host gen2==gen3 byte-identical).
- SYSTEM.MOD: added semantic documentation for your new SetExitProc/GetExitProc API.
- BUGFIX: Any non-LONGINT RHS unconditionally sign-extended, so l := w with w = 40000 (bit 15 set) silently stored -25536 instead of 40000. Assignment-tail widening now dispatches by RHS type: LONGINT := WORD/BYTE zero-extends (XOR DX,DX); LONGINT := INTEGER still sign-extends (CWD).
- Scan.Next no longer tail-recurses after skipping a comment (block (* *) or line //); converted to a REPEAT...UNTIL ~again loop. Previously N consecutive comments pushed N nested stack frames, risking SP wraparound into the data segment on 8086.
- CgDiv/CgMod (16-bit INTEGER path) now apply a floored-division fixup after IDIV: if the remainder is nonzero and its sign differs from the divisor's, decrement the quotient and add the divisor back into the remainder.
- Scan.SkipComment's system-comment branch ((*$...) now reports "unterminated comment" on EOF, matching the plain-comment path's existing behavior.
- Tar.ParseOctal now skips leading spaces before the digit scan, so space-padded octal size fields (used by some tar writers) parse correctly instead of yielding 0.
- Fixed parsing $M, $D
- Fixed stability crisis