What is Tiramisu?
Understand Tiramisu's core principles: a composable, output-agnostic markup language built on function calls.
Tiramisu is a markup language built around a single concept: function calls. Everything in Tiramisu is either plain text or a function call, making the syntax simple and consistent.
Unlike Markdown or HTML, Tiramisu is not tied to any specific output format. The Tiramisu parser (@timeleap/tiramisu) reads source text and produces an AST (Abstract Syntax Tree) that can be compiled to anything — HTML, Svelte components, React, PDF, or any other format.
Key Principles
- One syntax — everything is a function call. No special cases, no shorthand, no ambiguity.
- Composable — function calls can be nested inside other function calls to any depth.
- Output-agnostic — the parser produces a generic AST. What you do with it is up to your compiler front-end.
- Extensible — there are no built-in functions in the language itself. All functions are defined by the compiler front-end.
Tiramisu vs. Tiramisu Docs
It's important to distinguish between the two:
| Tiramisu (Language) | Tiramisu Docs (Framework) | |
|---|---|---|
| What | Markup language + parser | Documentation framework |
| Package | @timeleap/tiramisu | @tiramisu-docs/kit |
| Functions | None built-in | Defines h1, bold, codeblock, callout, etc. |
| Output | Generic AST | Svelte components |
All the functions you use when writing docs (h1, bold, codeblock, callout, etc.) are defined by Tiramisu Docs, not by the Tiramisu language itself.
A Simple Example
bold { Hello } world! The parser turns this into an AST with a FunctionCall node (name: bold, content: Hello) followed by a PureText node (world!). What happens next depends on your compiler front-end.