14. October 2026
puml 2026.10.2 is tagged. The change that matters is that puml can now hand a diagram to another program as plain data instead of only as SVG.
puml is a Rust command-line reimplementation of PlantUML. It renders .puml and .plantuml files to SVG with no Java, no PlantUML JAR and no runtime dependencies, as a single binary. It’s for anyone who writes PlantUML diagrams and would rather not install a JVM to draw them. The goal is that the same source files work unchanged, with output that’s semantically equivalent to PlantUML’s, not pixel-identical. I wrote about where it sits next to forge and adoc in the Rust-native architecture toolchain post.
This release has six commits, 10 files changed, 795 insertions and 73 deletions. Almost all of that is one commit; the other five are dependency updates.
The README now documents puml::scene::scene(&ast). It returns the diagram laid out as a diagram-scene Scene. diagram-scene is a small Rust library I released this week that describes a laid-out diagram as data: positions, edge routes and colours, with no drawing attached. I wrote about it in its own first-release post.
What you notice depends on who you are. If you only run the puml CLI, nothing about your SVGs changes. If you’re building an application that wants to draw diagrams itself, you can now take puml’s layout and paint it natively. The README names the emx editor as the host I have in mind. Positions and edge routes are the same ones the SVG renderer uses, and colours come through as theme roles, not fixed values. The host can draw the diagram in its own theme, and a diagram that looks one way in the editor shouldn’t look different in an exported SVG.
The coverage is partial. Sequence, class, activity and state diagrams become scenes. The module docs also count component, deployment and C4 diagrams, since they go through the class pipeline. Use case, timing, mind map and Gantt diagrams return None, and the host is expected to fall back on SVG for those.
The dependency is pinned to the v2026.10.0 tag of diagram-scene in Cargo.toml.
The release commit’s title says “lost messages parse”. In PlantUML’s sequence syntax, ->x is a message that never arrives. The sequence grammar now lists ->x and x->, and carries a comment explaining the ordering: a PEG takes the first alternative that matches, so -> placed before ->x would leave the x to be read as a participant name. The scene code draws a lost message with a cross at the end of the arrow.
If you’ve had a sequence diagram with a lost message fail to render, try it again on this version.
The remaining commits are routine. pest, the parser crate behind the grammars, goes to 2.9.3. insta, the snapshot-test crate, goes to 1.49.0. The lock file was refreshed twice. None of it changes how you use the tool.
The README gives three routes. With Homebrew on macOS or Linux:
brew tap grahambrooks/puml https://github.com/grahambrooks/puml
brew install puml
From source, in a checkout:
cargo install --path .
Or take a prebuilt tarball for macOS or Linux, x86_64 or aarch64, from the latest release, or run it with bx grahambrooks/puml. The README doesn’t give a separate upgrade command, so I’ll leave that to whichever route you installed with. [unverified: whether the Homebrew formula has been updated for 2026.10.2 yet; the release pipeline opens a PR for it after the tag]
Then:
puml examples/sequence.puml -o out.svg
If you use puml as a library, this is the release to look at. If you only use the CLI, the lost-message fix is the one you might notice.