v0.8.2
Notifuse/notifusev0.8.2Aug 28, 2026by alixander
Upgrading?
AI Summary
A major performance update migrating graph layout engines to native Go, resulting in significant speed improvements and updating layout behaviors.
Key Highlights
- Native Go engine migrations (Dagre, ELK, LaTeX) result in 7-50x faster rendering.
- Removal of superlinear compiler bottlenecks for large files and complex layouts.
- Updated syntax highlighting and font dependencies.
- Support for SQL table and UML class shapes in ASCII output.
Breaking Changes
- Node ordering and coordinates may change due to Dagre 3.1.1 and ELK 0.12.0 updates.
- Render post-processing is deprecated.
- Legacy layout-feature constants are deprecated.
New Features
- GIF exports with animate: true keyword
- SQL table and UML class shapes in ASCII
- Remote images fetched more reliably
- Chromium download for PNG exports
Full Release Notes
#### Features π - exports: gif exports work with `animate: true` keyword [#2663](https://github.com/d2lang/d2/pull/2663) #### Improvements π§Ή - releases: strip native binaries, build and smoke-test all six archives in CI, produce reproducible archives with checksums, signed provenance, and SBOM attestations, and verify standalone downloads when GitHub provides a digest - plugins: make render post-processing optional and deprecate it for removal after one protocol compatibility cycle; legacy external `postprocess` commands remain supported during the transition - api: deprecate legacy layout-feature constants, raw-WASM ELK/object-order bridges, unused public wrappers, and test-only comparison, validation, and logging helpers; compatibility entry points remain callable for one release while in-repository callers use supported or internal replacements - maintenance: update the Go toolchain to 1.27.0 and refresh Go, d2.js, CI, release dependencies, and compression-sensitive snapshots - renders: update syntax highlighting and migrate archived font and PDF dependencies to maintained replacements - d2dagre: replace the embedded JavaScript runtime with native Go Dagro and update its D2-used layout surface from Dagre 0.8.5 to Dagre 3.1.1 behavior. This intentionally changes node ordering and coordinates, edge routes, self-loops, and compound sizing in some diagrams; regenerate and review stored SVG or board-JSON snapshots - d2sketch: update the native rough-go renderer from Rough.js 4.0.4 to 4.6.6 behavior. Seeded sketch strokes, fills, arrowheads, and SVG paths may change; regenerate and review stored sketch SVG snapshots - d2elk: replace the embedded ELK.js 0.8.2 runtime with native Go elk-go and update D2's ELK layout profile to ELK.js 0.12.0 behavior. This is a layout-behavior update, not an output-compatible runtime swap: - existing ELK diagrams may receive different node coordinates and ordering, edge and label routes, and component packing; regenerate and review stored SVG or board-JSON snapshots - children of nested compound graphs may be reordered because ELK 0.12 cannot safely apply D2's previous nested model-order profile - non-default `--elk-algorithm` modes may also produce different geometry; the optional DisCo algorithm is removed because upstream no longer bundles it - d2latex: replace the embedded MathJax JavaScript runtime with the native Go mathjax-go port without changing rendered formulas - performance: native Go engine migrations substantially reduce median end-to-end D2-to-SVG conversion time in Apple M4 benchmarks: - Dagre is 7β9Γ faster - ELK is 40β53Γ faster - LaTeX is 21.6Γ faster on a four-formula diagram - performance: remove superlinear compiler and layout bottlenecks in large globs, repeated imports, nested diagrams, compound Dagre graphs, bend-heavy ELK layouts, and style-only scenario/step boards [#2827](https://github.com/d2lang/d2/pull/2827). Median Apple M4 single-CPU synthetic stress benchmarks for these targeted cliffs, rather than corpus-wide conversion averages, improve by: - leading glob applied to 1,000 fields: 1.59s to 12ms (~133Γ faster) - 100 references into the same 100-field import file: 54ms to 12ms (~4.6Γ faster) - 4,000 flat fields: 67ms to 7ms (~9.6Γ faster) - 3,200 distinct edges: 200ms to 19ms (~10.6Γ faster) - 32-node base with 8 style-only scenarios and 8 steps (17 boards total): 40ms to 7.3ms (~5.5Γ faster) - 340-object nested D2 Dagre layout: 1.30s to 0.88s (~32% faster) - Dagro depth-100 compound layout: 3.60s to 0.90s (~4Γ faster) - 250-node, 1,000-edge ELK layout: 337ms to 238ms (~30% faster) - d2ascii: - sql_table and uml class shapes are supported [#2623](https://github.com/d2lang/d2/pull/2623) - newlines are handled [#2626](https://github.com/d2lang/d2/pull/2626) - empty left columns are cropped [#2626](https://github.com/d2lang/d2/pull/2626) - exports: - Chromium download through CLI for PNG exports is prompted [#2655](https://github.com/d2lang/d2/pull/2655) - `animate-interval` is no longer required, defaults to 1000ms for gifs [#2663](https://github.com/d2lang/d2/pull/2663) - renders: - remote images are fetched more reliably [#2659](https://github.com/d2lang/d2/pull/2659) #### Bugfixes βοΈ - d2dagre: keep same-direction parallel edges and self-loop routes finite when using Dagre 3.1.1 behavior - d2svg: reject padding that would produce invalid negative SVG dimensions - d2elk: route ancestor-to-descendant connections around intermediate containers - d2elk: prevent labels on multiple self-loops from overlapping in right-directed layouts, including the `ent2d2_right` regression case - d2svg: render one-stop gradients with finite SVG offsets - compiler: make suffix globs match only names with the requested suffix - compiler: reject non-finite opacity values with a source diagnostic - d2svg: preserve connection links on LaTeX, Markdown, and code labels - d2lib: preserve caller-supplied light and dark theme overrides over source configuration - compiler: index equivalent connections consistently when endpoint notation is reversed - exports: pptx follows standards more closely, addressing warnings from some Powerpoint software [#2645](https://github.com/d2lang/d2/pull/2645) - d2sequence: fix edge case of invalid sequence diagrams [#2660](https://github.com/d2lang/d2/pull/2660) - d2svg: Text may overflow legend bounds when monospace font is used [#2674](https://github.com/d2lang/d2/pull/2674) --- For the latest d2.js changes, see separate [changelog](https://github.com/d2lang/d2/blob/master/d2js/js/CHANGELOG.md).
Related Repositories
ollama/ollamaβ
184,204
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.
fatedier/frpβ
110,051
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
asheshgoplani/agent-deckβ
102,148
Terminal session manager for AI coding agents. One TUI for Claude, Gemini, OpenCode, Codex, and more.
infiniflow/ragflowβ
92,612
RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs
gohugoio/hugoβ
90,198
The worldβs fastest framework for building websites.