Expand description
vla-lang: the VLA language with nothing around it (PORT.12, 2026-10-08).
The language cut out of frazaro-core so that an engine can stand on it
without the bridges: the reader (reader), the forms (form) and their
printing (printer), macro expansion (expand), the head table
(headtable), the six intrinsics (intrinsics), the message catalogue’s
mechanism with the language’s own refusals (messages), the version
predicates (version), the grid (sheet: sheets of cells with A1
coordinates and a style table), the references read out of a formula’s
text (refers), the relation rows and their spelling (rows), the
projections seam (projection) and its first implementation, the view
record of one window (view); since KERNEL.7 (2026-10-08),
recalculation’s mechanism (calc): the formula parser over the
reference scanner, the dependency graph, evaluation in order with a
budget, a cycle refused by name, the error values, and the registry seam
for functions with the language’s own day-one functions registered; and
since KERNEL.22 (2026-10-09), the machine (machine): a grid kept under
a handle and stepped, the four calls an engine makes of it (load, write,
step, view), the previous frame’s twin sheets, the plane, with a C
surface over them (abi) exported only under the c-abi feature;
since KERNEL.25 (2026-10-09), the hash the machine’s maps use (fx, the
crate’s own); and since KERNEL.47 (2026-10-17), a number format’s code
and the text a number draws as under it (numfmt).
Since VLA.4 (2026-10-17) the language holds the formula syntax
(formula_syntax): a VLA expression written as a formula’s text in
Excel’s invariant spelling, and that text read back as an expression,
canonical both ways; the expander’s formula-expand is its writer at
expand time, so that a cartridge composes a formula from expressions.
The contract (docs/HORIZON.md section 12; Alonzo/CHARTER.md section 4,
rule 1): bytes in, bytes out, nothing else. No English, no file format,
no clock, no randomness, no threads, no file system, no socket, and no
dependency. Built for wasm32 the module’s import section is empty, which
tools/check_core_imports.ps1 reads off the artifact. Everything that
consumes this crate is a bridge: frazaro-core adds the English engine,
the emitters and the workbook formats; an engine adds its devices and
its clock, and never frazaro-core.
SD-18 governs what this crate may claim: the VBA in src/ is the reference implementation, and this crate follows the goldens in scripts/ and never leads them; its tests read them from their test modules.
Modules§
- abi
- The language’s C surface (KERNEL.22, 2026-10-09): the machine’s four
calls over plain C linkage, for a wasm host or a native embedding that
wants the bare grid without an engine’s devices (
Alonzo/SPEC.mdsection 4.6:vla_load,vla_write,vla_stepandvla_view, with the records an engine’s calls answer). - calc
- Recalculation’s mechanism (KERNEL.7, slice 1, 2026-10-08): the formula
parser over the reference scanner, the dependency graph from
refers, evaluation in topological order, a cycle refused by name, Excel’s error values as a value kind, and a registry seam for functions, with the language’s own functions registered. - expand
- The macro system: VLA.bas’s
DefineMacro,ExpandMacros,ExpandOne,Substitutewith the QUASIQUOTE bundle, the twenty-seven LISTOPS primitives,ExpandOnePass, andVlaExpandText(PORT.5, slice 5d; the expand-time object model’s ten, VLA.3); andformula-expand, the formula syntax at expand time, an operation of the walk that expands its argument before writing it (ExpandFormulaCall, VLA.4). - form
- The datum: what the reader produces and every later stage walks.
- formula_
syntax - The formula syntax (VLA.4, 2026-10-17): a VLA expression written as a formula’s text, and a formula’s text read back as a VLA expression.
- headtable
- The head table:
VLA_HeadTable.bas’s catalogue of the core forms, read as data (PORT.5, slice 5c). - intrinsics
- The VBA behaviours the port must match: docs/INTRINSICS.md, one function per entry that is a function at all (PORT.5, slice 5a).
- machine
- The machine (KERNEL.22, 2026-10-09): a grid kept in memory and the four
calls an engine makes of it,
load,write,stepandview(Alonzo/SPEC.mdsection 4). This amendsweb/CALLOSUM.mdsection 7 decision 1, the pure function with no model handle, for an engine’s door alone, on the measurement that decision asked for: a frame of 64,000 cells thirty times a second cannot rebuild its grid from text. Frazaro’s own doors keep the pure function. - messages
- The message catalogue and the refusal: INTRINSICS.md’s sixth entry.
- numfmt
- A number format’s code (KERNEL.47, 2026-10-17): Excel’s own spelling of
how a number is drawn, beside the two formats the grid had,
generalandtext, so that a cell holding 1 under0.00draws1.00. The view record prints a code in itsformatrow and a number’s text under it in atextrow (crate::view), so that a viewport draws the text and computes nothing, and the writer gives Excel the code (frazaro-core). - printer
- The printer: VLA.bas’s
WriteDatumandWritePretty. - projection
- The projections seam: a window onto the grid, and a projection as a pure
function from the model and a window to lines (
KERNEL.1, the seam as data;KERNEL.4, the first implementation,crate::view::Grid). Cut out offrazaro-core‘skernel.rswith the language (PORT.12), since an engine’s screen is a projection of the grid and must not depend on the bridges; the seams’ registry, the engines trait and the host profiles stay in the core. - reader
- The reader: VLA.bas’s
TokenizeandParseAll/ParseForm, with the source lines they remember and the two refusals they raise. - refers
- The formula-reference reader (PORT.8, slice 8b):
VLA_Refers.bas(AXM.7) ported one arm per arm, held to the refers golden. - rows
- The relation rows and their spelling (PORT.8, slice 8a; cut out of
frazaro-core’sreflectwith the language, PORT.12): one row a line, in the proof corpus’s notation, so that an expected-relations file is a golden the core writes, the owner checks in Excel by eye, andVlaReadFormsreads later for the VBA’s ownREFLECTtest without a new parser. The reader of a workbook’s file prints these rows from the file; the view record (crate::view) prints thesheet,cellandformularows from the grid; an engine’s loader reads them back as the inverse. - sheet
- The sheet model (PORT.7): what a workbook holds before it is written.
The language’s since PORT.12 (2026-10-08): the grid with its A1
coordinates, its style table and the references a formula’s text holds
(
crate::refers) are what an engine stands on; the file formats that write and read it stay infrazaro-core’ssheetmodule, which re-exports this one. Sheets of cells, each cell a text, a number, a truth value, an error value or a formula’s text; column widths, a hidden column, a style per cell or per column from a small style table; and nothing here that computes: a formula is text the host evaluates when it opens the file, whichfullCalcOnLoad(ooxml.rs) makes it do, and since KERNEL.7 (2026-10-08) textcrate::calcevaluates over this model in memory, behind a declared subset that refuses by name, asweb/CALLOSUM.mdsection 7 decision 3 amended docs/HORIZON.md section 12. - version
- VLA.bas’s version predicates (CO.4):
VlaVersionParse,VlaVersionCompareandVlaVersionAtLeast, which a phrasebook’s(requires-version "...")is checked with. The version compared against is this crate’s, whichtools/check_version_twin.ps1holds equal toVLA_RELEASE_VERSION. - view
- The view record (KERNEL.4, 2026-10-07): one window of the sheet model as
lines, the first implementation of the kernel’s projections seam
(
crate::projection::Projection; the design isweb/CALLOSUM.md§7, decisions 1 and 2, and §8, slice 1).
Constants§
- VERSION
- The crate’s version: the workspace’s, which tools/check_version_twin.ps1 holds equal to VLA_RELEASE_VERSION in src/VLA.bas and to the exact pins the core and the door hold. One corpus, one version.
Functions§
- version
- The version as text.