# graphviz: what changed from 15 to 16 - Product: graphviz (https://whatsnew.fyi/product/graphviz) - Vendor: graphviz - Range: changelog entries numbered after 15.1.1 up to and including 16.1.0, stable releases only - Entries below: 2 releases (newest first) - Resolved: 15 is 15.1.1 and 16 is 16.1.0, the newest stable release of each major we track - Carrying security changes: 0 · CVEs mentioned: 0 · Mentioning breaking changes: 0 · Removing or deprecating something: 1 - Page: https://whatsnew.fyi/product/graphviz/compare/15...16 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (18 changes, grouped by kind) ### Added #### 16.1.0 (2026-09-04) - Graph attribute svgid sets the id property of the of a graph #### 16.0.0 (2026-08-14) - A new agnnodes_z function is available as an alternative to agnnodes ### Changed #### 16.0.0 (2026-08-14) - The core plugin's JSON renderer no longer overwrites the graph's IO discipline - gvmap discards cluster attribute information if any cluster attribute has a negative value - xdot_linear_grad.n_stops and xdot_radial_grad.n_stops are now of type unsigned ### Fixed #### 16.1.0 (2026-09-04) - An sfdp crash has been fixed - Graphs that induce invalid trapezoids during ortho routing no longer cause Graphviz crashes on non-Windows platforms - edgepaint no longer crashes when passed the illegal option -s - cluster no longer crashes when passed single character command-line options without arguments - cluster of trivial graphs with no nodes no longer crashes - cluster on large chains of nodes no longer references out-of-bounds memory #### 16.0.0 (2026-08-14) - Rendering multiple graphs with the core plugin's FIG renderer no longer results in later outputs referring to colors defined in earlier outputs - libxdot rejects parsing of linear and radial gradients that claim a negative number of stops - Graphs that require top sorting during crossing minimization no longer cause Graphviz to crash - Fixed infinite loop in gvpr by making object traversals skip newly created objects in mutable graphs ### Removed #### 16.0.0 (2026-08-14) - The agmemconcat function has been removed - Support for the undocumented postaction attribute has been removed - The gvmap options -g, -l, and -p have been removed ## Release notes ### 16.1.0 - Date: 2026-09-04 - Version: 16.1.0 - Original notes: https://gitlab.com/graphviz/graphviz/-/tags/16.1.0 - Permalink: https://whatsnew.fyi/product/graphviz/releases/16.1.0 See the CHANGELOG . - **added** — Graph attribute svgid sets the id property of the of a graph - **fixed** — An sfdp crash has been fixed - **fixed** — Graphs that induce invalid trapezoids during ortho routing no longer cause Graphviz crashes on non-Windows platforms - **fixed** — edgepaint no longer crashes when passed the illegal option -s - **fixed** — cluster no longer crashes when passed single character command-line options without arguments - **fixed** — cluster of trivial graphs with no nodes no longer crashes - **fixed** — cluster on large chains of nodes no longer references out-of-bounds memory ###### Added - Graph attribute `svgid` sets the id property of the <svg> of a graph. \#2850 ###### Fixed - An `sfdp` crash has been fixed. This was a regression in Graphviz 15.1.1. \#2852 - Graphs that induce invalid trapezoids during ortho routing no longer cause Graphviz crashes on non-Windows platforms. These scenarios now exit with failure gracefully. #2784 - `edgepaint` no longer crashes when passed the illegal option `-s`. #2857 - `cluster` no longer crashes when passed single character command-line options without arguments (e.g. `cluster -C`). #2857 - `cluster` of trivial graphs with no nodes no longer crashes. #2857 - `cluster` on large chains of nodes no longer references out-of-bounds memory. This was a regression in Graphviz 7.1.0. #2857 ### 16.0.0 - Date: 2026-08-14 - Version: 16.0.0 - Original notes: https://gitlab.com/graphviz/graphviz/-/tags/16.0.0 - Permalink: https://whatsnew.fyi/product/graphviz/releases/16.0.0 See the CHANGELOG . - **added** — A new agnnodes_z function is available as an alternative to agnnodes - **changed** — The core plugin's JSON renderer no longer overwrites the graph's IO discipline - **removed** — The agmemconcat function has been removed - **removed** — Support for the undocumented postaction attribute has been removed - **changed** — gvmap discards cluster attribute information if any cluster attribute has a negative value - **removed** — The gvmap options -g, -l, and -p have been removed - **changed** — xdot_linear_grad.n_stops and xdot_radial_grad.n_stops are now of type unsigned - **fixed** — Rendering multiple graphs with the core plugin's FIG renderer no longer results in later outputs referring to colors defined in earlier outputs - **fixed** — libxdot rejects parsing of linear and radial gradients that claim a negative number of stops - **fixed** — Graphs that require top sorting during crossing minimization no longer cause Graphviz to crash - **fixed** — Fixed infinite loop in gvpr by making object traversals skip newly created objects in mutable graphs ###### Added - A new `agnnodes_z` function is available as an alternative to `agnnodes`. This new function should be preferred in new code. ###### Changed - The core plugin’s JSON renderer no longer overwrites the graph’s IO discipline. This will only be relevant to users writing their own plugin-using code. - **Breaking**: The `agmemconcat` function has been removed. - **Breaking**: Support for the undocumented `postaction` attribute has been removed. - `gvmap` discards `cluster` attribute information if any `cluster` attribute has a negative value. This should never occur in normal operation (the `cluster` program only attaches non-negative `cluster` attributes), but only if a user has incorrectly edited dot source. - **Breaking**: The `gvmap` options `-g`, `-l`, and `-p` have been removed. Their functionality was never implemented and passing these had no effect. - **Breaking**: `xdot_linear_grad.n_stops` and `xdot_radial_grad.n_stops` are now of type `unsigned`. ###### Fixed - Rendering multiple graphs with the core plugin’s FIG renderer no longer results in later outputs referring to colors defined in earlier outputs. - libxdot rejects parsing of linear and radial gradients that claim a negative number of stops. - Graphs that require “top sorting” during crossing minimization no longer cause Graphviz to crash. This was a regression in Graphviz 14.1.3. #2851 - Fixed infinite loop in gvpr #2849 by making object traversals skip newly created objects in mutable graphs. To do this, added API to get current object sequence numbers.