Skip to content

RELEASE-20260711

Choose a tag to compare

@DosWorld DosWorld released this 11 Jul 16:12
· 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