Third stdlib landing. Suite 93/93 (50 run — incl. 4 trap-aborts, 4 sessions, 2 session-output, 2 session-input, 1 unit — + 43 reject). LL(1)-clean, zero gm2 warnings.
stdlib/math)Direct libm bindings via EXTERNAL (the routine names are valid
Modula-2 identifiers and match the C symbols): sqrt, exp, ln,
sin, cos, arctan, plus fabs exposed as abs, and the
constants Pi / E. REAL parameters/returns lower as QBE d.
Harness now links -lm.
MathProg → 12 (sqrt(144.0) + sin(0.0)).
runtime/syslib/shim.c + SysIO)Shim additions m2readchar (fgetc), m2readint (whitespace-skipping
signed decimal). SysIO gains ReadChar / ReadInt; the harness
gains expect_run_files_in (pipes stdin). ReadProg reads two
integers and prints the sum → 42.
stdlib/wholeio)Classic WriteInt / WriteCard / ReadInt(VAR) / ReadCard(VAR)
over the shim integer routines. WholeIOProg reads two ints and
prints their product → 42.
CHAR/INTEGER bind directly
(m2readchar() : CHAR, m2readint() : INTEGER); a zero-parameter
external call is name().math.def REAL constants are emitted as globals flushed at
main startup (existing REAL-const path), so Math.Pi loads
correctly in clients.Files, Storage / SYSTEM (ALLOCATE/DEALLOCATE, ADDRESS,
generic pointers — needs SYSTEM types), explicit external link
names, string escapes, ReadString. Traps still $abort.