← All reportsPublic report

typst/typst

A markup-based typesetting system that is powerful and easy to learn.

56k stars Rust View on GitHubprofiled 14d ago
Try GitZoid
43PRs this week
22Contributors
0Deps scanned
0Issues found
01 · Repo overview

How typst is put together

Typst is a markup-based typesetting system implemented as a large Rust Cargo workspace (edition 2024) whose default member is the `typst-cli` binary. The pipeline flows from source parsing (typst-syntax) through evaluation of the embedded scripting language (typst-eval), realization and layout (typst-realize, typst-layout), into export backends for PDF (typst-pdf via krilla), SVG, PNG rendering, HTML, and bundles (typst-bundle). Shared infrastructure lives in typst-library (elements, World trait, diagnostics), typst-kit (fonts, packages, downloader, watcher, hot-reload HTTP server), and typst-utils/macros/timing. The CLI compiles or watches `.typ` files, can serve live-reload HTML on localhost, download community packages over HTTPS, and optionally self-update.

Languages

RustTypeScript/JavaScript (tooling configs under tools/)Shell/Dockerfile

Frameworks

clap (CLI argument parsing)tiny_http (embedded HTTP server)comemo (incremental memoization)rustybuzz/ttf-parser (text shaping)wasmi (WASM interpreter for plugins)krilla (PDF generation)resvg/usvg/tiny-skia (SVG/render)codespan-reporting (diagnostics)

Infrastructure

Dockerfile (containerized CLI builds)GitHub releases distribution (ghcr.io images referenced in README)Cross-platform binaries via cargo (Windows/macOS/Linux)

Major components

typst-cli

The `typst` binary: subcommands compile/watch/init/query/eval/fonts/update/completions/info, argument parsing, terminal output, and wiring a World implementation.

typst-syntax

Lexer/parser producing the syntax tree, spans, virtual paths, and source file management.

typst-eval

Interpreter for Typst's embedded scripting language: bindings, calls, imports, control flow, operators, and set/show rule application.

typst-layout

Layout engine: inline text shaping (rustybuzz), math shaping, lists, stacks, shapes, transforms, images, and document assembly.

typst-library

Core element/model definitions, the World abstraction, engine context, diagnostics, symbols, and localized translations.

typst-kit

Platform integration: font discovery/embedding, package management, HTTPS downloader, file watching, datetime, diagnostics emission, and the hot-reload HTTP server.

typst-pdf / typst-svg / typst-render / typst-html / typst-bundle

Export backends converting laid-out documents into PDF, SVG, raster images, HTML, and multi-file bundles with link/introspection handling.

tests & fuzzing

Workspace members `tests`, `tests/fuzz` (libfuzzer-sys), and `tests/wrapper` for regression and fuzz testing of the compiler.

Over the past five weeks, the Typst team focused heavily on polishing documentation and translations while also shipping meaningful fixes to text layout, error messages, and export behavior. Notable functional work included a new angle option for tiling patterns, support for a raw output format in typst eval, and more robust line breaking and hyphen handling. The overall arc shows steady quality-of-life improvements for both writers using Typst and developers working on the codebase.

Week by week

2026-08-24A quieter week centered on small documentation cleanups and build infrastructure.latest4 changes

Docs

Better line breaks in PDF syntax list

The list of raw syntaxes in the PDF documentation now breaks lines more cleanly so it is easier to read.

Fix

Fixed spacing around single-argument functions in docs

Function examples with one argument no longer have awkward spacing in the reference pages.

Fix

Fixed comment formatting for color options

Comments describing color options are now formatted consistently in the codebase.

Chore

Pinned Docker base image versions

Docker builds now use specific tagged base layers instead of floating ones, making builds more predictable.

2026-08-17Work focused on friendlier error messages, expanded language support, and Windows test tooling.6 changes

Feature

Helpful hint for empty luma arguments

When someone passes an empty value to luma, the error now suggests trying white or luma(100%) instead.

Fix

Clearer error when calling to-dict

Error messages now show which key type was wrong rather than just the value, making mistakes easier to diagnose.

Docs

Improved French heading translation

The French wording for headings was reworked because the previous version broke grammar rules.

Feature

Completed Esperanto translations

Esperanto users now get full coverage of translated interface strings.

Chore

Windows symlink fix for test runner

The cargo testit tool now uses forward slashes for symlinks on Windows so tests run reliably there.

Refactor

Cleaned up missing-argument check

Internal code that reports missing arguments was simplified using a more idiomatic pattern.

2026-08-03The busiest week, mixing new capabilities like eval output formats with many layout and documentation fixes.6 changes

Feature

Raw output format for typst eval

Typst's evaluation mode can now output results as plain raw data, useful for scripting and automation.

Feature

Diagnostics format environment variable

Developers can now control how compiler diagnostics are formatted via an environment variable.

Fix

Trailing-slash redirects in HTTP server

Visiting a directory URL without a trailing slash now correctly redirects to the version with one.

Fix

Hanging indent fix for Japanese-style numbering

Headings numbered like 〔1〕 now get proper hanging indents automatically.

Fix

More robust overhang behavior

Text overhang (where punctuation slightly extends past margins) was made more reliable across cases.

Fix

Hyphen index fixes with surrounding tags

Hyphens now keep correct logical positions when tags appear around them, improving accessibility output.

2026-07-27Mostly documentation improvements plus a fix for line breaking in web addresses.6 changes

Fix

Line breaking for hosts starting with digits

Web addresses whose hostnames begin with a number now break across lines correctly.

Docs

Clipping example added to image docs

The image documentation gained an example showing how to clip images to a shape.

Docs

Easier discovery of modulo functions

The docs were updated so readers can find the modulo calculation functions more easily.

Docs

Regex show-rule example added

The regex documentation now includes an example combining show rules with capture groups.

Fix

Path parameter completion fixed

Autocomplete suggestions for general path parameters now work as expected.

Chore

Test report UI tweaks

Image controls no longer overlap the source view and the test report source is no longer resizable.

2026-07-20Improvements to grayscale colors and tiling, plus a security-minded SVG fix and Croatian translations.4 changes

Feature

Angle argument for tiling

Tiling patterns can now be rotated by specifying an angle argument.

Fix

Luma accepts integer alpha values

The luma color function now accepts whole numbers for its transparency component, with better argument handling overall.

Fix

SVG special characters escaped

Ampersands and less-than signs in SVG attribute values are now properly escaped, preventing broken or unsafe output.

Docs

Expanded Croatian translations

Croatian-language coverage of interface strings was broadened.

03 · Security check

Dependencies and code review

0 dependencies scanned

Dependency advisories

Security Watch

No known advisories across 0 scanned dependencies.

No known advisories in the scanned dependencies.

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required