Skip to main content

Crate vla_lang

Crate vla_lang 

Source
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.md section 4.6: vla_load, vla_write, vla_step and vla_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, Substitute with the QUASIQUOTE bundle, the twenty-seven LISTOPS primitives, ExpandOnePass, and VlaExpandText (PORT.5, slice 5d; the expand-time object model’s ten, VLA.3); and formula-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, step and view (Alonzo/SPEC.md section 4). This amends web/CALLOSUM.md section 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, general and text, so that a cell holding 1 under 0.00 draws 1.00. The view record prints a code in its format row and a number’s text under it in a text row (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 WriteDatum and WritePretty.
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 of frazaro-core‘s kernel.rs with 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 Tokenize and ParseAll/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’s reflect with 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, and VlaReadForms reads later for the VBA’s own REFLECT test without a new parser. The reader of a workbook’s file prints these rows from the file; the view record (crate::view) prints the sheet, cell and formula rows 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 in frazaro-core’s sheet module, 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, which fullCalcOnLoad (ooxml.rs) makes it do, and since KERNEL.7 (2026-10-08) text crate::calc evaluates over this model in memory, behind a declared subset that refuses by name, as web/CALLOSUM.md section 7 decision 3 amended docs/HORIZON.md section 12.
version
VLA.bas’s version predicates (CO.4): VlaVersionParse, VlaVersionCompare and VlaVersionAtLeast, which a phrasebook’s (requires-version "...") is checked with. The version compared against is this crate’s, which tools/check_version_twin.ps1 holds equal to VLA_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 is web/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.