v0.9.0
d2lang/d2v0.9.0Sep 7, 2026by github-actions[bot]
AI Summary
This release introduces the TALA layout engine as an open-source, bundled feature, removing the need for external plugins or licenses. It adds native export support for PDF and PPTX formats and delivers significant performance improvements in SVG rendering and memory usage.
Key Highlights
- TALA Layout Engine: Open sourced and bundled with D2, accessible via `d2 --layout=tala`.
- New Export Formats: Native support for rendering diagrams to PDF, GIF, PPTX, and PNG.
- Performance: SVG rendering is approximately 10x faster, and exports are significantly smaller.
- Memory Efficiency: PNG exports now support images above the 67-megapixel limit.
Breaking Changes
- The obsolete `--tala` installer flag is now rejected with migration guidance.
New Features
- TALA layout engine integration
- TALA seed configuration via `--tala-seeds`
- PDF and PPTX export support
- GIF export support
- PNG export optimization (memory reduction, large image support)
Full Release Notes
#### Features ๐ - TALA is now open source and bundled with D2, including the JavaScript/WASM package. Select it with `d2 --layout=tala`, `D2_LAYOUT=tala`, or `vars.d2-config.layout-engine: tala`. No separate plugin installation or license key is required. - tala: configure layout attempts with `--tala-seeds`, `D2_TALA_SEEDS`, or `vars.d2-config.data.tala-seeds`. - exports: render PNG, GIF, PDF, and PPTX with the built-in renderer #### Improvements ๐งน - performance: reduce repeated work in Dagre ranking, text measurement, SVG preparation, and PNG encoding - performance: reduce repeated work in selective imports, dynamic grid layout, and PNG connection rendering - exports: reduce PNG memory usage and support images above the previous 67-megapixel limit - performance: SVG rendering is approximately 10ร faster across the E2E corpus. Real-world diagrams compile, lay out, and render approximately 3ร faster at the median. - renders: SVG exports are approximately 24% smaller across the E2E corpus and 18% smaller across real-world fixtures, with unchanged appearance. - renders: render Markdown labels as native SVG instead of HTML `foreignObject` content #### Bugfixes โ๏ธ - install: reject the obsolete `--tala` installer flag with migration guidance before installing, instead of incorrectly claiming that older D2 releases bundle TALA - sequence diagrams: keep synthetic lifeline endpoint IDs stable across architectures - exports: honor `D2_TIMEOUT` during PNG and GIF rendering - compiler: keep recursive globs out of class and variable definitions and report class reference cycles instead of overflowing the stack - renders: decode gzip, Brotli, and deflate remote images before embedding them --- For the latest d2.js changes, see separate [changelog](https://github.com/d2lang/d2/blob/master/d2js/js/CHANGELOG.md).