Hello, world

This post has no argument to make. It exists so every part of the rendering pipeline has something to render.

Text

Regular text, emphasis, strong, inline raw, underline, strike, highlight, H2O and E = mc2. A link out, and a link to another page that the build resolves and checks.

A block quote, attributed.

โ€” nobody in particular

Lists

  • A bullet
  • Another bullet

    • Nested one level
  1. First
  2. Second
  3. Third
Term
A term list, which Markdown does not have.
Another
And its definition.

Code

Fenced blocks are highlighted by the compiler, not by a client-side script:

pub fn slug(name: &str) -> String {
    name.chars()
        .map(|c| if c.is_alphanumeric() { c.to_ascii_lowercase() } else { '-' })
        .collect()
}
content {
  collections {
    blog { sort "date"; reverse #true; paginate { size 5; template "list.typ" } }
  }
}
#let frontmatter = (title: "Hello, world")

Math

Inline, ๐‘Ž2+๐‘2=๐‘2, and displayed:

โˆ‘ ๐‘˜ = 1 ๐‘› ๐‘˜ = ๐‘› ( ๐‘› + 1 ) 2 โˆซ 0 โˆž ๐‘’ โˆ’ ๐‘ฅ 2 d ๐‘ฅ = ๐œ‹ 2

Tables

Format File Standard
RSS rss.xml RSS 2.0
Atom atom.xml RFC 4287
JSON feed.json JSON Feed 1.1

A page is a program

The three things above are markup. This is not: the table below is a for loop over a list, and the list came from a string the compiler parsed at build time.

Crate Job
typst compile
rolldown bundle
lightningcss minify
blake3 fingerprint

A function is a function, so markup can be generated:

v0.1 v0.2 v0.3 v0.4 v0.5

Callout

Nothing here

Every block on this page is a feature test. If one of them stops rendering, the build noticed before you did.