Suite 174/174; self-hosting fixpoint OK (image
2,785,569 bytes). master, tree clean except the user's
uncommitted compiler/toto.mod.
This step tours the three features landed this session on items 2, 4
and 6 of the gaps list (1 GOTO, 3 generics, 5 multiple inheritance
were deliberately skipped).
| Step | Tag | Commit | What |
|---|---|---|---|
| Language + library | v3-resultsfx-coroutines-lib |
31adfc3 |
suffixes, coroutines, core library |
| Notes | — | e844223 |
session summary |
LongIO |
— | b1a52db |
channel-based LONGREAL I/O |
| Showcase | v3-showcase21 |
(this commit) | showcase21 end to end |
F()^, F()[i], F().field — components applied to a function-call
result (ResultComp in M2.atg, inside the call group so the Coco/R
grammar stays LL(1)-clean). A final scalar is loaded with ElemLoad;
aggregates stay as their descriptor address. Expression context only.
PROCESS plus NEWPROCESS/TRANSFER/IOTRANSFER are predefined in
SYSTEM (with a new parameterless PROC type) and bind to
ucontext-backed helpers in runtime/syslib/shim.c. Coroutine bodies
are called with a 0 static link (module-level procedures).
gm2/ISO names added under stdlib/: ConvTypes, IOConsts,
SIOResult, TERMINATION, StrIO, InOut, StdIO, WholeStr,
RealStr, LongStr, LongMath, LongIO, STextIO, SWholeIO,
SRealIO, DynamicStrings (core) and SysStorage. Backend fixes
alongside: procedure values / LONGINT are 8-byte in array load/store
and the parameter prologue; driver session file cap 32 → 128;
Math.ln/arctan wrap log/atan.
compiler/tests/showcase21.mod (Showcase21, exit 42) exercises:
GetRec()^.a + GetRec()^.b = 42,
GetArr()^[i] sums to 4, then 40 + 2 + 2 - 2 = 42;Ping/Pong ping-pong via TRANSFER, hand control
back to the main process after five hits;library — RealStr.RealToFixed(42.0, 0, num) gives "42",
LongMath.sqrt(1764.0) round-trips to 42, and WholeStr.CardToStr
DynamicStrings build the label.
showcase21 total=42
New this session: t_resultsfx, t_coroutine, t_dynstr, library1
(16-module session) and Showcase21. Full suite green.
cd .../m2compiler-V3
./bootstrap/fixpoint.sh # FIXPOINT OK
cd compiler && ./build.sh && ./run_tests.sh # 174/174
GOTO/labels, generics, multiple inheritance (deliberate), full
forward variables, statement-context result suffixes, and the
channel/device library holes (LongWholeIO, wrapclock/wraptime/
wrapc, TimeString, ChanConsts/GenDevIF/DeviceTablePtr/
StdChans/StreamFile/FIO).