Sorry if this belongs in the questions category. I know including PDF content is planned for Typst 0.14, but beyond that, I don’t know what can be expected in 0.14. Is there any good way to track features in the upcoming version? I’m not referring to the roadmap, since that’s long term. I know I can sift through all the issues and pull requests, but given how many of them there are, and the fact that there’s no projects page on the Github repo, I wanted to see if there was a smarter approach.
Asking GitHub Copilot · GitHub is an option, but it’s very inaccurate…
Sumarize what has changed in typst/typst since v0.13.1
GPT-4.1 output
Here’s a summary of the main changes in typst/typst since v0.13.1:
Major Changes
1. HTML Export Rework
- A new
typst-html
crate was added, providing a native, semantically rich HTML export pipeline. This includes new HTML element APIs, improved attribute/element validation, and semantic output instead of PDF-style SVG dumps. - The CLI now accepts
--output-format html
for direct HTML export. - Typed HTML (e.g.,
html.div
) and custom attributes are now first-class in Typst.
2. Library and Syntax Modernization
- The codebase now uses Rust 2024 edition, with a minimal supported Rust version of 1.88. Many dependencies were upgraded.
- Widespread adoption of
rustc-hash
for hashmaps/sets and removal of theif_chain
crate in favor of idiomatic Rust. - Incremental refactoring for improved performance, safety, and maintainability.
3. CLI Enhancements
- Added a
typst completions
command to generate shell completions for various shells. typst query
now supports a--target
to select between HTML and paged (PDF/image) introspection.- Makefile dependency output (
--make-deps
) has been improved for multi-output (e.g., batch image export). - More robust error messages and support for warning when watching stdin with
typst watch
.
4. PDF Export and Standards
- PDF export supports many more standards (including PDF 1.4, 1.5, 1.6, 2.0, PDF/A-1b, A-2b, A-2u, A-3b, A-3u, A-4, A-4f, A-4e).
- Improved handling of multi-file image export, Makefile rule writing, and output naming.
5. Dependency Updates & Crate Changes
- Many dependencies updated, dropped, or replaced for performance and security.
- New or updated crates:
comemo
,codex
,krilla
,hayro
, and more, with some dependencies now pulled from specific git revisions. - SVG and image processing dependencies upgraded (e.g.,
resvg
,image-webp
,ttf-parser
).
6. Ecosystem and Community
- The README and documentation were updated to reflect new community forums, contribution guidelines, and acknowledgements for sponsors and grants.
- Snap packaging is now promoted for Linux.
- Documentation now highlights the new HTML exporter, web app, and typed HTML APIs.
Other Notable Changes
- Many internal code style and API improvements (e.g., more idiomatic error handling, restructuring of modules, and improved test coverage).
- New lints and warnings enabled in CI for improved code quality.
- Various bug fixes, especially around file watching, font handling, and layout edge cases.
- The codebase is more amenable to incremental compilation, with improved support for large documents and complex workflows.
Summary Table
Area | Change |
---|---|
HTML Export | Major new pipeline, semantic output, typed API, new |
Later I asked GPT to give links to pull requests, and found these PRs were merged in June 2024…
I suppose there is no replacement for asking the community or someone who is following development. As the next best thing, let’s list by github reactions…
I extracted the list of PRs merged since the last release and ordered them by reactions, then we should find the most important ones!
Link | Title | Reactions | Author | Date |
---|---|---|---|---|
6623 | Add support for PDF embedding | 106 | LaurenzV | 2025-07-22 |
5420 | Switch PDF backend to `krilla` | 71 | LaurenzV | 2025-04-01 |
6168 | Table multiple headers and subheaders | 36 | PgBiel | 2025-06-10 |
6442 | Require parentheses in all function-like sub/superscripts | 21 | mkorje | 2025-08-01 |
6547 | Rewrite foundations of native elements | 17 | laurmaedje | 2025-07-08 |
6683 | Faster constraint checking in comemo (bumps comemo & krilla) | 16 | laurmaedje | 2025-07-31 |
6602 | Support intra-doc links in HTML | 14 | laurmaedje | 2025-07-16 |
6365 | Support multiple fonts in math | 14 | mkorje | 2025-08-07 |
6622 | Include numbering in PDF bookmark | 13 | YDX-2147483647 | 2025-08-07 |
5777 | Use "subs" and "sups" font features for typographic scripts | 11 | MDLC01 | 2025-07-02 |
6476 | Typed HTML API | 9 | laurmaedje | 2025-06-23 |
6637 | Migrate to 2024 edition and bump MSRV to 1.88 | 8 | laurmaedje | 2025-07-21 |
5618 | Add `title` element | 8 | jbirnick | 2025-08-06 |
6705 | Rename `pdf.embed` to `pdf.attach` | 7 | laurmaedje | 2025-08-07 |
6678 | Use `rustc-hash` for hash maps and sets | 7 | laurmaedje | 2025-07-31 |
6569 | Target-specific native show rules | 7 | laurmaedje | 2025-07-09 |
6643 | Add `pdf` extension to image autocompletions | 6 | laurmaedje | 2025-07-22 |
6336 | Use the shaper in math | 6 | mkorje | 2025-06-10 |
6691 | Support for raw syntax highlighting in HTML export | 5 | laurmaedje | 2025-08-04 |
5976 | Improve french smartquotes | 5 | MDLC01 | 2025-03-31 |
6682 | Add `cargo testit` alias for running integration tests | 4 | asibahi | 2025-08-01 |
6601 | Mention Tinymist in README.md | 4 | PatrickMassot | 2025-07-18 |
6498 | Support `in` operator on strings and modules | 4 | laurmaedje | 2025-06-26 |
6316 | More precise math font autocomplete suggestions | 4 | IgKh | 2025-05-28 |
6311 | Add support for WebP images | 4 | LinusU | 2025-06-04 |
Code how it was generated
typst compile --format html --features html mergedprs.typ
Summary
// Uses github tool to get list of prs
// gh pr list -s merged --json number,title,url,author,mergedAt,reactionGroups --limit 1000 --search "merged:>=2025-03-07" | jq > mergedprs.json
#let data = (json("mergedprs.json")
.map(elt => {
elt.reactionGroups = elt.reactionGroups.map(elt => elt.users.totalCount).sum(default: 0);
elt
})
.sorted(key: elt => -elt.reactionGroups)
).slice(0, 25)
// for pdf output
// #set page(flipped: true)
#show link: underline
#show table.cell.where(y: 0): strong
#table(
columns: 5,
stroke: none,
table.hline(),
table.header(
[Link], [Title], [Reactions], [Author], [Date],
),
table.hline(),
..data.map(elt => {
(
link(elt.url)[#elt.number],
[#elt.title],
[#elt.reactionGroups],
[#elt.author.login],
[#elt.mergedAt.slice(0, 10)],
)
}).flatten(),
table.hline(),
)
Typst developers have been quite reluctant to give too much info about features in the upcoming release to minimize any kind of false expectations or pressure of making any “promises” which might not be fulfilled. But usually they at least give some hints in Discord: in messages and in community calls about certain upcoming features. So I’d follow Discord a bit.
But AFAIK there is no clear “to be expected” list of features.
@Y.D.X Yeah, this is why I don’t trust LLM’s with anything but hte more basic tasks.
@bluss Now that’s pretty wizard, and I’ll be keeping that file for later use! Honestly, that might be worthy of a showcase post if something of its form hasn’t already been posted.
@Mr.Selfridge And aye, fair enough.
To be fair to the ai output, it highlighted this:
which had no reactions, PR 6568 until I looked at it, so both compilations seem to have had something useful to say. But yeah it’s hard to read the ai summary when you don’t know how much is hallucinated or just picked from the wrong time frame, or included but not given the right context.
That honestly begs the question of why that pull request got no reactions. Isn’t that curious, because I love shell completions.
Typst has a lot of PRs that sit for a long time, this one got merged quickly. It is not/can’t be a fair metric anyway.
Also on topic for you, here is a quote from discord:
[On question about 0.14]
laurmaedje: The focus is on PDF accessibility. We will cut a release when that’s ready.