0008 — UI engine and component models written in Zinc; JSX lowered before type checking

Choice. The host ABI (node handles, flexbox, Tailwind-like classes, text wrap, painting through zinc:gfx, pointer and focus input) is lib/std/ui.ts; Solid reactivity is lib/std/solid.ts, the React model lib/std/react.ts. They are compiled with the application, to C++ and to sim alike. .tsx files are rewritten (compiler/src/jsx.ts) into calls to these helpers before type checking; unknown classes are build errors.

Consequences. One implementation, identical layouts everywhere (golden tests compare ui.dump() text instead of PNGs). The React model re-renders a component’s whole subtree (no reconciliation); Solid lists re-render unkeyed.

Edit this page on GitHub ↗