summary_step6.md 951 B

V3 step 6 — QBE harden + unicode (planned)

Status: not started.

Scope

  • Close every construct gap between "test language" and "compiler language": procedure types + indirect calls (needs QBE call through register + frame design spike first), LONGINT quads, set ops full lowering, WITH-field VAR actuals.
  • Unicode (locked): UCHAR 32-bit codepoint, UString = LONGCARD count + codepoints, U'..'/U".." literals, strict-RFC3629 LexUString (bad bytes → lex error 234), UCHR/CHR8/UORD, Utf8 syslib shared by lexer + output libs.

Acceptance (planned)

  • U'é'→w 233, overlong/surrogate/>10FFFF/truncated → 234, CHR8(U'€') traps, UString index/assign/HIGH = array rules, round-trip byte-identity; suite green.

Files (planned)

  • compiler/src/M2.atg (ustring token, grown LexString buffer); runtime/syslib/Utf8; QbeGen UString data emission.
  • This file filled in on landing.