Obsidian Bases support — the .base format, implemented as
a pure leaf crate: value model, lexer, Pratt parser, tree-walking evaluator, the
function and method library, and static table/cards/list rendering.
A .base file becomes its own page and a ```base block renders inline, both
computed at build time. The evaluator is deliberately Obsidian-tolerant:
unknown symbols and functions evaluate to empty rather than failing, matching how
Obsidian itself behaves, so a base written in the app renders here without
adjustment.
Being a parser fed by author input, it is also budgeted — parser depth and node limits, and an evaluator depth guard — so an adversarial expression errors out instead of overflowing the stack.
An adversarial review after implementation found thirteen real bugs, all fixed before merge. The page you are reading is itself a base.