Back

Graphviz
Patches for Graphviz x64
Windows
11 patches available
Graphviz (short for Graph Visualization Software) is a package of open-source tools initiated by AT&T Labs Research for drawing graphs (as in nodes and edges, not as in barcharts) specified in DOT language scripts having the file name extension gv.
Graphviz x64 Version 13.1.1
Release Date
7/20/2025
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

13.1.1 – 2025-07-20$$$Changed$$$When built with PangoCairo; the Kitty plugin is now available in Graphviz static builds. Previously it was only available in shared library (on-demand plugin loading) builds.$$$The distributed Fedora and Rocky Linux packages now include the Kitty plugin.$$$On Windows; the GDI+ plugin is now available in Graphviz static builds.Previously it was only available in shared library (on-demand plugin loading) builds.$$$Processing a graph with GVPR no longer makes explicit the default $$$ label$$$for nodes. This undoes a change from Graphviz 13.0.1. $$$nop no longer preserves empty string labels. This undoes a change from Graphviz 13.0.1.$$$The order of programmatic calls to gvContext/gvContextPlugin and agmemread once again affects default node labels. This undoes a change from Graphviz 13.0.1.
Graphviz x64 Version 13.1.0
Release Date
7/1/2025
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

13.1.0 – 2025-07-01$$$$$$Added$$$$$$A new command line option; -Afoo=bar; serves as a shorthand way of writing$$$-Gfoo=bar -Nfoo=bar -Efoo=bar. #2278 (closed)$$$$$$$$$$$$Fixed$$$$$$Inter-cluster edges are no longer spuriously duplicated. #162 (closed); #258 (closed); #2615 (closed)$$$$$$When using the CMake build system; configuration no longer fails with syntax$$$errors when PangoCairo is unavailable. This was a regression in Graphviz$$$13.0.0. #2697 (closed)
Graphviz x64 Version 13.1.0
Release Date
7/1/2025
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

13.1.0 – 2025-07-01$$$$$$Added$$$$$$A new command line option; -Afoo=bar; serves as a shorthand way of writing$$$-Gfoo=bar -Nfoo=bar -Efoo=bar. #2278 (closed)$$$$$$$$$$$$Fixed$$$$$$Inter-cluster edges are no longer spuriously duplicated. #162 (closed); #258 (closed); #2615 (closed)$$$$$$When using the CMake build system; configuration no longer fails with syntax$$$errors when PangoCairo is unavailable. This was a regression in Graphviz$$$13.0.0. #2697 (closed)
Graphviz x64 Version 13.0.1
Release Date
6/15/2025
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

13.0.1 – 2025-06-15$$$$$$Changed$$$$$$When using the CMake build system; the minimum required version of CMake has$$$been upgraded 3.14.1 ? 3.21.$$$Building Graphviz from source now requires a C compiler with ISO C17 support.$$$Processing a graph with GVPR now makes explicit the default $$$ label for$$$nodes.$$$$$$$$$Fixed$$$$$$Graphs with large weights no longer trigger double frees. #1494 (closed); #2331 (closed)$$$$$$$$$nop preserves empty string labels. #2436 (closed)$$$$$$The order of programmatic calls to gvContext/gvContextPlugin and$$$agmemread no longer affects default node labels. #2434 (closed)$$$$$$Adjacency matrices are sparse and expanded on demand; removing out-of-bounds$$$accesses when computing these for some graphs. #1472 (closed)
Graphviz x64 Version 13.0.1
Release Date
6/15/2025
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

13.0.1 – 2025-06-15$$$$$$Changed$$$$$$When using the CMake build system; the minimum required version of CMake has$$$been upgraded 3.14.1 ? 3.21.$$$Building Graphviz from source now requires a C compiler with ISO C17 support.$$$Processing a graph with GVPR now makes explicit the default $$$ label for$$$nodes.$$$$$$$$$Fixed$$$$$$Graphs with large weights no longer trigger double frees. #1494 (closed); #2331 (closed)$$$$$$$$$nop preserves empty string labels. #2436 (closed)$$$$$$The order of programmatic calls to gvContext/gvContextPlugin and$$$agmemread no longer affects default node labels. #2434 (closed)$$$$$$Adjacency matrices are sparse and expanded on demand; removing out-of-bounds$$$accesses when computing these for some graphs. #1472 (closed)
Graphviz x64 Version 13.0.0
Release Date
5/8/2025
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

13.0.0 – 2025-06-08$$$$$$Added$$$$$$Support for building the SWIG-generated Ruby language bindings has been$$$integrated into the CMake build system. This is controllable by the$$$-DENABLE_RUBY={AUTO|ON|OFF} option.$$$A new plugin for outputting ASCII art has been implemented; -Tascii. This$$$relies on AA-lib and is only$$$supported in the CMake build system. #2421 (closed)$$$$$$In gvpr; a new function rename() has been added for nodes. See man gvpr$$$for more information.$$$$$$$$$Changed$$$$$$If Quartz is enabled on macOS; the autotools build will include support for it$$$as a built-in plugin for static builds; for dependency free i.e. PDF support.$$$Improved agwrite so it is much faster (linear not quadratic) when there are$$$many small subgraphs. #2593 (closed)$$$$$$$$$Breaking: rank_t.cache_nc is now a int64_t.$$$$$$Breaking: The agreadline function has been removed. #2558$$$$$$$$$Breaking: gvRenderData takes its length parameter as a size_t *. The$$$GVJ_t fields output_data_allocated and output_data_position have type$$$size_t.$$$The GRAPHVIZ_CLI variable in the CMake build system now additionally$$$controls whether the utilities diffimg and prune are built.$$$$$$Breaking: The cgraph macros agnew and agnnew have been removed.$$$$$$Breaking: The cgraph functions agalloc; agrealloc; and agfree have$$$been removed.$$$$$$Breaking: The cdt queue types; DT_QUEUE; Dtqueue; _Dtqueue have been$$$removed.$$$$$$Breaking: The cdt aliases struct _dthold_s; struct _dtdata_s;$$$struct _dtmethod_s; struct _dtstat_s have been removed.$$$$$$Breaking: The cdt type _Dttree has been removed.$$$$$$Breaking: The cdt aliases struct _dtlink_s; struct _dtdisc_s; and$$$struct _dt_s have been renamed to struct dtlink_s_; struct dtdisc_s_;$$$and struct dt_s_ respectively.$$$$$$Breaking: The cdt macro DT_PRIME has been removed.$$$$$$Breaking: The cdt field Dt_t.data is now a Dtdata_t instead of$$$Dtdata_t *.$$$$$$Breaking: GVJ_t.imagedata is now an unsigned char *.$$$The sandboxer implemented in Graphviz 12.2.1; dot_sandbox; supports macOS.$$$The baseline version of Autoconf required to build Graphviz from source has$$$been upgraded 2.61 ? 2.69.$$$Building Graphviz from source now requires a C compiler with ISO C11 support.$$$GVPR programs are now able to print char and unsigned variables. #2587 (closed)$$$$$$CMake projects using Graphviz as a subproject (add_subdirectory) can now$$$link against and use cgraph; pathplan; and xdot.$$$CMake projects using Graphviz as an installed third-party dependency can now$$$discover its libraries with find_package(graphviz) and then use them as e.g.$$$target_link_libraries(myapp PRIVATE graphviz::cgraph). #2598 (closed)$$$$$$Verbose checkpath warnings about ports not lying in their expected boxes$$$have been removed.$$$In verbose mode (-v) the dot layout algorithm now notes when it is entering$$$each layout phase. #2540 (closed)$$$$$$$$$Breaking: The EXPANDBP macro has been removed.$$$$$$Breaking: The EXPANDBB macro has been removed.$$$$$$Breaking: Agclos_t.strdict is now an opaque pointer.$$$$$$Breaking: agstrfree takes an extra parameter indicating whether the$$$string being freed is an HTML-like string.$$$$$$Breaking: The agcanon function has been removed.$$$$$$Breaking: The Agiddisc_t.alloc member has been removed.$$$$$$Breaking: The cflag parameter to agidsubg has been removed.$$$The CMake build system now installs libgvpr.$$$The CMake build system now sets DFLT_GVPRPATH when compiling libgvpr.$$$The CMake build system now installs the included library of gvpr programs.$$$$$$Breaking: The all parameter to exclose has been removed.$$$MinGW on 32-bit x86 (“mingw32”) is no longer supported as a platform.$$$Installers and release archives for this platform are no longer provided.$$$#2649 (closed)$$$$$$$$$gvgen supports a new option; -u<seed>; for specifying the initial state of$$$the random number generator (RNG). The way in which the RNG is seeded has$$$slightly changed.$$$$$$Breaking: libcgraph’s SO name has been updated 6 ? 7.$$$The core plugin’s SVG output (-Tsvg; -Tsvg_inline) now sets$$$xml:space=preserve
Graphviz x64 Version 12.2.1
Release Date
12/7/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

12.2.1 – 2024-12-07$$$$$$Added$$$$$$Support for building the SWIG-generated R language bindings has been$$$integrated into the CMake build system. This is controllable by the$$$-DENABLE_R={AUTO|ON|OFF} option.$$$A sandboxing wrapper; dot_sandbox; is now included with Graphviz. Users$$$should prefer their platform’s native security solutions; but if nothing$$$better is available this wrapper offers safe processing of untrusted inputs in$$$some scenarios.$$$$$$$$$Changed$$$$$$JPEG images without an APP0 leading segment are supported for use in src$$$fields and friends. Previously Graphviz was overly strict with the types of$$$JPEGs it would recognize. #2619$$$$$$The CMake build system now discovers and uses pango_fc_font_lock_face if$$$possible; for the Pango plugin to provide more information about used fonts.$$$$$$$$$Fixed$$$$$$The GVPR library program depath no longer acts on previously deleted nodes;$$$causing unpredictable results. #1702$$$$$$Void-typed function parameters (int foo(void bar)) and variables void baz;$$$in GVPR are gracefully rejected. #2585$$$$$$Input that induce a set node height but no set node width no longer crash with$$$the failure “Assertion failed: (r->boundary[i] <= r->boundary[NUMDIMS + i]);$$$function RTreeInsert”. It is typically not obvious to users when their input$$$falls into this situation; hence why the assertion message is quoted here.$$$This was a regression in Graphviz 12.0.0. #2613$$$$$$Strings containing double quote characters preceded by escape sequences (e.g.$$$$$$) are once again correctly escaped in dot or canonical output. This was a$$$regression in Graphviz 9.0.0. #2614$$$$$$$$$dot_builtins no longer lists duplicate format options in its error messages.$$$#2604$$$$$$A precision error that resulted in truncated edge lines has been corrected.$$$This was a regression in Graphviz 12.0.0. #2620$$$$$$The xlib plugin (-Tx11) resets its initialization state during finalization.$$$This fixes a rare scenario where multiple input graphs are supplied and$$$initialization for one of the not-first graphs fails. In this scenario;$$$finalization would be unaware of this failure and act on invalid state.
Graphviz x64 Version 12.2.0
Release Date
11/4/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

12.2.0 – 2024-11-04$$$$$$Removed$$$$$$Visual Studio build files have been removed. CMake is now the only supported$$$build system on Windows.$$$$$$$$$Added$$$$$$Support for building the SWIG-generated PHP language bindings has been$$$integrated into the CMake build system. This is controllable by the$$$-DENABLE_PHP={AUTO|ON|OFF} option.$$$Support for building the SWIG-generated Python language bindings has been$$$integrated into the CMake build system. This is controllable by the$$$-DENABLE_PYTHON={AUTO|ON|OFF} option.$$$$$$$$$Changed$$$$$$An algorithm closer to that described in RFC 1942 and/or the CSS 2.1$$$specification is now used for sizing table cells within HTML-like labels. This$$$is less scalable than the network simplex algorithm it replaces; but in$$$general produces more intuitive results. #2159$$$$$$Tooltips on table elements within HTML-like labels are now propagated to SVGs$$$produced by the core plugin (-Tsvg) even when the elements do not have$$$href attributes. #1425$$$$$$In the Autotools build system; pkg-config is the only supported way for$$$discovering Guile. Previous use of guile-config* has been removed. #2606$$$$$$The Autotools release artifacts for macOS (Darwin_*_graphviz-*.tar.gz) now$$$use relative paths in links to dependent libraries and plugins. This should$$$make the tree relocatable instead of having to live at /Users/gitlab/builds.$$$#2501$$$$$$$$$gml2gv no longer maps GML label attributes to Graphviz name attributes.$$$These are now mapped to Graphviz label attributes. #2586$$$$$$$$$$$$Fixed$$$$$$In the Autotools build system; the core plugin links against libm; fixing some$$$unresolvable symbols. This was a regression in Graphviz 4.0.0. Though it would$$$primarily have affected non-Graphviz applications attempting to load this$$$plugin on Linux.$$$The osage layout engine now understands a cluster to be indicated by the$$$common rules; including the “cluster” prefix being case insensitive and the$$$cluster=true attribute as an alternative. #2187$$$$$$$$$acyclic once again produces its output on stdout. This was a regression in$$$Graphviz 10.0.1. #2600$$$$$$When using the Tclpathplan module; created vgpanes can once again be named and$$$addressed. This was a regression in Graphviz 12.1.2.$$$Omitting a polygon identifier when running triangulation using the Tclpathplan$$$module (e.g. vgpane0 triangulate instead of vgpane0 triangulate 42) no$$$longer goes unnoticed and reads invalid memory. This bug seems to have existed$$$since the first revision of Graphviz.$$$When using the Tclpathplan module; defining a malformed <3-point polygon$$$and then attempting to triangulate this polygon no longer reads invalid$$$memory. This case is now rejected with an error during triangulation. Like the$$$previous entry; this bug seems to have existed since the first revision of$$$Graphviz.$$$When using the Tclpathplan module; binding a pane’s triangulation callback to$$$a string ending in a trailing % (e.g. vgpane0 bind triangle %) no longer$$$causes later out-of-bounds reads during triangulation. Like the previous$$$entries; this bug seems to have existed since the first revision of Graphviz.$$$#2596$$$$$$Mouse right-clicks in Smyrna are no longer sticky. In some contexts;$$$right-clicking the mouse would register a mouse down event but no mouse up$$$event; leading Smyrna to believe the user was dragging with the right button$$$held down.$$$Arrowhead missing from tail-end of edge #2437$$$$$$The Ruby bindings package (libgv-ruby) is once again installable on Ubuntu.$$$This became uninstallable when Ruby 1.8 was no longer available on Ubuntu; as$$$it had a hard coded dependency of Ruby 1.8. This has now been relaxed to$$$depend on any Ruby version = 1.8. #2607$$$$$$Generated GIFs and JPEGs display the graphed image instead of a single solid$$$color. This was a regression in Graphviz 12.1.1. #2609$$$$$$The CMake build system includes some supporting pieces of the SWIG-generated$$$language bindings that were previously missing. It also links further$$$dependencies that were previously missing.$$$In the
Graphviz x64 Version 12.1.2
Release Date
9/28/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

12.1.2 – 2024-09-28$$$$$$Changed$$$$$$In the Autotools build system; the rsvg plugin is no longer built when$$$pangocairo is missing. Previously; when librsvg was found but pangocairo was$$$not; this plugin would be enabled and built but offer no functionality.$$$The RSVG plugin now requires librsvg = 2.42.7.$$$The RSVG plugin uses newer librsvg APIs where available. #2206$$$$$$$$$$$$Fixed$$$$$$In the Autotools build system; fallback discovery of libANN when pkg-config$$$support is unavailable has been corrected to properly enable use of libANN.$$$This primarily affects mingle users on Debian-based operating systems or$$$macOS.$$$The RSVG plugin no longer dereferences a null pointer when failing to create$$$new RSVG handles.$$$The Pango plugin no longer assumes a little endian environment when loading PS$$$images.$$$Deleting a “vgpane” when using the Tclpathplan module no longer frees an$$$invalid pointer. This bug appears to have existed since the first revision of$$$Graphviz. That is; deleting a “vgpane” has always crashed the TCL interpreter$$$or silently corrupted the heap prior to this release.
Graphviz x64 Version 12.1.1
Release Date
9/9/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

Unreleased (12.1.2)$$$$$$$$$12.1.1 – 2024-09-09$$$$$$Added$$$$$$Support for building the SWIG-generated Guile language bindings has been$$$integrated into the CMake build system. This is controllable by the$$$-DENABLE_GUILE={AUTO|ON|OFF} option.$$$Support for building the SWIG-generated Java language bindings has been$$$integrated into the CMake build system. This is controllable by the$$$-DENABLE_JAVA={AUTO|ON|OFF} option.$$$Support for building the SWIG-generated Lua language bindings has been$$$integrated into the CMake build system. This is controllable by the$$$-DENABLE_LUA={AUTO|ON|OFF} option.$$$Support for building the SWIG-generated Perl language bindings has been$$$integrated into the CMake build system. This is controllable by the$$$-DENABLE_PERL={AUTO|ON|OFF} option.$$$$$$$$$Changed$$$$$$Comparison against a plugin’s knowncolors array is now case-insensitive;$$$rather than requiring all entries of the array to be lower-cased. The$$$requirement that the knowncolors array is lexically ordered remains.$$$The Smyrna “Color Theme”; “Edge Attr. For Color”; and “Node Alpha” settings$$$have been removed. The values of these settings had no effect.$$$Graphviz libraries set close-on-exec on job output files being written and$$$user shape files being read. This should only affect applications using$$$Graphviz libraries that rely on a fork-and-exec-ed child subprocess being able$$$to access these open files. Applications with this requirement can regain the$$$old behavior by unsetting the close-on-exec flag immediately after creating$$$these objects. Graphviz libraries themselves are not affected by whether or$$$not this flag is set.$$$The Autotools build system no longer detects or uses the -perl option to$$$SWIG to build Perl language bindings. Only -perl5 is used.$$$$$$$$$Fixed$$$$$$A reference to the non-existent colxlate function in an error message has$$$been corrected to colorxlate.$$$$$$gvgen no longer crashes sometimes when running random graph generation. This$$$was a regression in Graphviz 12.0.0. #2588$$$$$$Dashed and dotted pen styles in VRML images loaded by the GD plugin have been$$$corrected.$$$$$$mm2gv no longer crashes when reading various types of malformed Matrix$$$Market files.$$$The edgepaint --color_scheme command-line option is once again functional.$$$This was a regression in Graphviz 2.49.0. #2591$$$$$$An incorrect deallocation call during OpenGL texture construction failure has$$$been corrected. This could previously have caused crashes or heap corruption.$$$This was a regression in Graphviz 2.26.0.$$$The CMake build on Windows no longer fails if TCL is detected. This was$$$technically a regression in 12.0.0 since building the Graphviz TCL bindings$$$was integrated into the CMake build system in that release. #2581$$$$$$When its output file cannot be opened; edgepaint no longer dereferences a$$$null pointer when printing its error message.
Graphviz x64 Version 12.0.0
Release Date
7/4/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

12.0.0 – 2024-07-04$$$Added$$$Support for building the Graphviz TCL bindings has been integrated into the$$$CMake build system. This is controllable by the -Denable_tcl={AUTO|ON|OFF}$$$option.$$$Support for building the SWIG-generated TCL language bindings has been$$$integrated into the CMake build system. This is controllable by the$$$-Denable_swig={AUTO|ON|OFF} option.$$$Support for building the SWIG-generated C# language bindings has been$$$integrated into the CMake build system. This is controllable by the$$$-Denable_sharp={AUTO|ON|OFF} option.$$$Changed$$$The Catch2-based test suite in the CMake build system has been ported from$$$Catch2 v2 to Catch2 v3. Support for Catch2 v2 has been removed. #2465$$$$$$The Windows release artifacts are now built on Windows 2022 and Visual Studio$$$2022 17 and toolset v143.$$$The macOS release artifacts are now built on macOS 13 (Ventura).$$$The CMake build system no longer links dot_builtins against libsocket.$$$The CMake build system now only compiles dot_builtins if building shared$$$libraries (-DBUILD_SHARED_LIBS=ON).$$$$$$Breaking: the polygon_t.style member is now a struct.$$$$$$Breaking: the LEN and MAXDOUBLE constants have been removed.$$$Accuracy in processing compass points has been improved.$$$Breaking: the CMYK_BYTE member of the color_type_t enum and the$$$corresponding gvolor_t.u.cmyk field have been removed. The color format this$$$mapped to was neither documented nor implemented correctly.$$$The Windows releases available for download on graphviz.org now only include$$$CMake-produced packages; not MS Build-produced packages. The MS Build packages$$$are available in the$$$Gitlab package registry if$$$needed.$$$The CMake build system more pervasively sets rpaths of compiled binaries;$$$libraries; and plugins; which should result in them more reliably finding$$$their supporting components.$$$without $LD_LIBRARY_PATH/$DYLD_LIBRARY_PATH tricks.$$$$$$Breaking: the Agraph_t.n_id field is now an opaque pointer.$$$$$$Breaking: the libpack functions putGraphs; putRects; and shiftGraphs$$$now operate on floating-point points (pointf) instead of integer points$$$(point).$$$$$$Breaking: the BF2B macro has been removed.$$$$$$Breaking: the undocumented -Tmp output format has been removed.$$$$$$Breaking: the arith.h header defines neither _GNU_SOURCE nor sincos$$$any more. None of the build systems attempt to discover sincos any more.$$$The FIG output format (-Tfig) supports up to 512 custom colors. The previous$$$limit was 256; after which it would crash (see note in the “Fixed” section).$$$$$$Breaking: The TCL binding’s tcldot_layout function no longer tries to$$$fallback to the dot layout engine if the requested engine is unavailable but$$$instead fails with an error message.$$$The TCL binding’s graph render command no longer ignores layout errors.$$$The TCL binding’s graph write command now does layout unconditionally;$$$regardless of what output renderer is selected.$$$The CMake build system builds cgraph++ and gvc++ as either shared or static$$$libraries; respecting the BUILD_SHARED_LIBS setting.$$$Discovery of the fcntl.h header has been removed from all build systems. This$$$header is now unconditionally assumed to exist.$$$$$$Breaking: obj_state_t.gradient_frac is now a double.$$$$$$Breaking: path.nbox is now a size_t.$$$The change described as “Some routesplines miscalculations that led to lost$$$edges and fatal errors have been avoided” in 11.0.0 has been reverted. The fix$$$for this caused other problems.$$$$$$Breaking: the d and disc parameters have been removed from$$$Dtcompar_f.$$$CentOS packages are no longer provided.$$$In the CMake build system; the minimum required CMake version has been$$$increased to 3.14.1.$$$$$$Breaking: the disc parameter has been removed from Dtfree_f.$$$Gvedit no longer depends on the getopt library.$$$$$$$$$Fixed$$$$$$The CMake build system now uses absolute paths to PangoCairo libraries during$$$linking; resolving build problems on macOS.$$$The CMake build system’s path for third-party headers for the DevIL plugin has$$$been co
Graphviz x64 Version 11.0.0
Release Date
4/28/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

11.0.0 – 2024-04-28$$$$$$Added$$$$$$$$$gv2gml gained a -y option to output the yWorks.com variant of GML instead$$$of the default.$$$A new command line option; --filepath=… has been added to perform the$$$function previously served by the $GV_FILE_PATH environment variable; use of$$$which was removed in Graphviz 6.0.1. Unlike the old $GV_FILE_PATH mechanism;$$$--filepath=… takes effect regardless of the setting of the $SERVER_NAME$$$environment variable. #2396$$$$$$$$$$$$Changed$$$$$$$$$gvpack; in addition to recognizing a “cluster” name prefix as a mark of a$$$cluster; now recognizes this case insensitively as well as recognizing the$$$cluster attribute. This is more consistent with how the Graphviz libraries$$$work.$$$$$$Breaking: pkg-config (.pc) files shipped with Graphviz now include$$$${prefix}/include in the include path in addition to$$$${prefix}/include/graphviz. Previously this missing path meant building$$$Graphviz demo examples against an installation of Graphviz in a non-system$$$path would not work. #2474$$$$$$The core PostScript output format (-Tps) warns if using an$$$out-of-specification font name. To avoid this; use a more sophisticated output$$$format like Cairo (-Tps:cairo) that does font name lookup and translation.$$$#218$$$$$$$$$Breaking: The libpack functions putRects; packRects; putGraphs;$$$packGraphs; packSubgraphs; pack_graph; shiftGraphs; ccomps;$$$cccomps; and pccomps now take the number of items they are operating on$$$(ng) as a size_t.$$$$$$Breaking: The bsearch_cmpf and qsort_cmpf typedefs have been removed.$$$$$$dot -c -v; when constructing the config6 file; includes comments explaining$$$any attempted actions that failed during plugin loading. #2456$$$$$$$$$Breaking: The Ndim global is now a unsigned short.$$$fdpgen no longer truncates graph names when inferring new names for connected$$$component subgraphs.$$$$$$Breaking: The nodequeue type has been removed.$$$$$$Breaking: The field Agraphinfo_t.n_nodes has been removed. The function$$$agnnodes is a more robust way of retrieving the number of nodes.$$$The -q command line option will now suppress “no hard-coded metrics…”$$$and other font lookup warnings. #2379$$$$$$$$$Breaking: The CMP and SGN macros have been removed.$$$The CMake build system no longer early-binds all enabled plugins into$$$dot/dot. This early binding was a change introduced in 10.0.1; but was$$$not noted in this changelog. Traditionally; of the three Graphviz build$$$systems (Autotools; CMake; MS Build); only changes to the Autotools build$$$system were noted in this changelog under the assumption that packaging$$$ecosystems making use of the other two build systems would need finer grained$$$details and would be monitoring the Git commit history instead. This seems to$$$not be the case; so in future side-effecting changes to any of the three build$$$systems will be included here. #2527; #2528$$$$$$The precision of sep- and esep-based calculations has been improved.$$$$$$Breaking: Defines AGRAPH; AGNODE; AGOUTEDGE; AGINEDGE; and AGEDGE are$$$replaced with enum.$$$$$$Breaking: The obj_state_t.url_bsplinemap_poly_n field is now a size_t$$$and the obj_state_t.url_bsplinemap_n field is now a size_t *.$$$$$$Breaking: The Ppoly_t.pn (Ppolyline_t.pn) field is now a size_t.$$$$$$Breaking: The Proutespline function takes its n_barriers parameter as$$$a size_t.$$$$$$Breaking: The gvattr_t type and the GVJ_t.selected_obj_attributes and$$$GVJ_t.selected_obj_type_name fields have been removed.$$$$$$Breaking: The gv_argvlist_t type and functions that operate on it have$$$been removed.$$$Control characters in some error messages are escaped; preventing certain$$$types of text injection that could cause user confusion.$$$$$$Breaking: GVJ_t.numkeys is a size_t.$$$$$$$$$Fixed$$$$$$Indexing within gvNextInputGraph no longer incorrectly retains the index$$$from prior use of the GVC context. When using Graphviz libraries$$$programmatically; this could previously cause crashes or misbehavior. #2484$$$$$$Color schemes; typically controlled through the colorscheme attribute are$$$now pushed
Graphviz x64 Version 10.0.1
Release Date
2/11/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

10.0.1 – 2024-02-11$$$$$$Added$$$$$$Releases now include packages for Rocky Linux 8 and$$$9.$$$A new output format; -Tsvg_inline; has been added to generate a header-less$$$SVG suitable for inlining into HTML. #2285$$$$$$The functionality of the acyclic; tred and unflatten command line tools$$$are now exposed via the graphviz_acyclic; graphviz_tred and$$$graphviz_unflatten API functions in libcgraph. #2194$$$$$$$$$graphviz_node_induce is available as a new API function in cgraph.h.$$$$$$tred gained a -o command line option to redirect its output to a file.$$$$$$$$$Changed$$$$$$The Criterion unit tests have been removed and migrated to Pytest. This is$$$primarily relevant to downstream packagers of Graphviz. #2443$$$$$$$$$Breaking: Dtdisc_t.memoryf and its associated macros has been removed.$$$$$$Breaking: The Dt_t.type field has been removed.$$$$$$Breaking: The dtfound; DT_FOUND; dtleast; and dtmost macros have$$$been removed.$$$The nrtmain.c test program has been removed from the portable tarball.$$$The TCL Graphviz packages for inter-release versions/snapshots report$$$themselves as <next release>b<internal number> instead of$$$<next release>~dev.<internal number>. This fixes a problem wherein TCL would$$$see ~dev as being invalid characters to appear in a version. #2370$$$$$$Support for discovering Lua via lua-config* has been removed from the$$$Autotools build system.$$$Lua discovery in the Autotools build system should now respect the location of$$$your Lua installation and not unconditionally attempt installation into$$$/usr. #2152$$$$$$The GTK plugin is no longer built or distributed. This plugin relies on GTK 2$$$and X11. If you use this plugin; please contact the maintainers to let$$$them know it is worthwhile re-enabling this and forward porting it to GTK 3/4$$$and Wayland. #1848$$$$$$In the Autotools build system; LIBPOSTFIX= can now be used to suppress 64$$$being appended to the library installation path.$$$The -m command line option; whose functionality was disabled in Graphviz$$$3.0.0; has been removed.$$$Man page typography has been slightly improved.$$$macOS release artifacts no longer include vimdot. This may be restored in$$$future. #2423$$$$$$macOS release artifacts no longer include smyrna. This may be restored in$$$future. #2422$$$$$$The PDF output format; -Tpdf; respects the environment variable$$$$SOURCE_DATE_EPOCH for overriding CreationDate when built against Cairo$$$= 1.16.0. #2473$$$$$$The legacy C# viewer app is no longer distributed in the portable source$$$tarball.$$$Graphviz headers no longer define the FALSE and TRUE constants.$$$The Autotools build system no longer supports Darwin 9 (Mac OSX Leopard).$$$$$$Breaking: Agraph_t.link has been split into Agraph_t.id_link and$$$Agraph_t.seq_link. Agraph_t.g_dict has been split into Agraph_t.g_id$$$and Agraph_t.g_seq.$$$$$$Breaking: gvpropts.n_outgraphs is now a size_t.$$$The OCaml bindings have been removed. If you use these bindings; please contact$$$the maintainers to notify them of the existence of users.$$$$$$Breaking: polygon_t.sides and polygon_t.peripheries are now size_ts.$$$$$$Breaking: liblab_gamut is no longer included in a Graphviz installation.$$$This library had no accompanying header; so using it was not easy. If you are$$$using this library; please contact the maintainers to notify them of the$$$existence of users. #2489$$$$$$$$$Breaking: bezier.size and splines.size are now size_ts.$$$$$$Breaking: the gv.i and gv.cpp SWIG inputs are no longer included in a$$$Graphviz installation. #2491$$$$$$$$$Breaking: the gvrender_engine_t.beziercurve;$$$gvrender_engine_t.library_shape; gvrender_engine_t.polygon; and$$$gvrender_engine_t.polyline callbacks now take the number of points; n; as$$$a size_t.$$$$$$Breaking: the AVG macro has been removed.$$$$$$Breaking: the inside_t.s union member gained members lastn; radius;$$$last_poly; last; outp; scalex; scaley; box_URx; and box_URy.$$$Zero initialize these when you construct instances of this type. #2498$$$$$$$$$$$$Fixed$$$$$$The paper size for Doxygen docs generation in the Autotools build system
Graphviz x64 Version 10.0.1
Release Date
2/11/2024
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

10.0.1 – 2024-02-11$$$$$$Added$$$$$$Releases now include packages for Rocky Linux 8 and$$$9.$$$A new output format; -Tsvg_inline; has been added to generate a header-less$$$SVG suitable for inlining into HTML. #2285$$$$$$The functionality of the acyclic; tred and unflatten command line tools$$$are now exposed via the graphviz_acyclic; graphviz_tred and$$$graphviz_unflatten API functions in libcgraph. #2194$$$$$$$$$graphviz_node_induce is available as a new API function in cgraph.h.$$$$$$tred gained a -o command line option to redirect its output to a file.$$$$$$$$$Changed$$$$$$The Criterion unit tests have been removed and migrated to Pytest. This is$$$primarily relevant to downstream packagers of Graphviz. #2443$$$$$$$$$Breaking: Dtdisc_t.memoryf and its associated macros has been removed.$$$$$$Breaking: The Dt_t.type field has been removed.$$$$$$Breaking: The dtfound; DT_FOUND; dtleast; and dtmost macros have$$$been removed.$$$The nrtmain.c test program has been removed from the portable tarball.$$$The TCL Graphviz packages for inter-release versions/snapshots report$$$themselves as <next release>b<internal number> instead of$$$<next release>~dev.<internal number>. This fixes a problem wherein TCL would$$$see ~dev as being invalid characters to appear in a version. #2370$$$$$$Support for discovering Lua via lua-config* has been removed from the$$$Autotools build system.$$$Lua discovery in the Autotools build system should now respect the location of$$$your Lua installation and not unconditionally attempt installation into$$$/usr. #2152$$$$$$The GTK plugin is no longer built or distributed. This plugin relies on GTK 2$$$and X11. If you use this plugin; please contact the maintainers to let$$$them know it is worthwhile re-enabling this and forward porting it to GTK 3/4$$$and Wayland. #1848$$$$$$In the Autotools build system; LIBPOSTFIX= can now be used to suppress 64$$$being appended to the library installation path.$$$The -m command line option; whose functionality was disabled in Graphviz$$$3.0.0; has been removed.$$$Man page typography has been slightly improved.$$$macOS release artifacts no longer include vimdot. This may be restored in$$$future. #2423$$$$$$macOS release artifacts no longer include smyrna. This may be restored in$$$future. #2422$$$$$$The PDF output format; -Tpdf; respects the environment variable$$$$SOURCE_DATE_EPOCH for overriding CreationDate when built against Cairo$$$= 1.16.0. #2473$$$$$$The legacy C# viewer app is no longer distributed in the portable source$$$tarball.$$$Graphviz headers no longer define the FALSE and TRUE constants.$$$The Autotools build system no longer supports Darwin 9 (Mac OSX Leopard).$$$$$$Breaking: Agraph_t.link has been split into Agraph_t.id_link and$$$Agraph_t.seq_link. Agraph_t.g_dict has been split into Agraph_t.g_id$$$and Agraph_t.g_seq.$$$$$$Breaking: gvpropts.n_outgraphs is now a size_t.$$$The OCaml bindings have been removed. If you use these bindings; please contact$$$the maintainers to notify them of the existence of users.$$$$$$Breaking: polygon_t.sides and polygon_t.peripheries are now size_ts.$$$$$$Breaking: liblab_gamut is no longer included in a Graphviz installation.$$$This library had no accompanying header; so using it was not easy. If you are$$$using this library; please contact the maintainers to notify them of the$$$existence of users. #2489$$$$$$$$$Breaking: bezier.size and splines.size are now size_ts.$$$$$$Breaking: the gv.i and gv.cpp SWIG inputs are no longer included in a$$$Graphviz installation. #2491$$$$$$$$$Breaking: the gvrender_engine_t.beziercurve;$$$gvrender_engine_t.library_shape; gvrender_engine_t.polygon; and$$$gvrender_engine_t.polyline callbacks now take the number of points; n; as$$$a size_t.$$$$$$Breaking: the AVG macro has been removed.$$$$$$Breaking: the inside_t.s union member gained members lastn; radius;$$$last_poly; last; outp; scalex; scaley; box_URx; and box_URy.$$$Zero initialize these when you construct instances of this type. #2498$$$$$$$$$$$$Fixed$$$$$$The paper size for Doxygen docs generation in the Autotools build system
Graphviz x64 Version 9.0.0
Release Date
9/12/2023
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

9.0.0 - 2023-09-11$$$$$$Added$$$$$$On non-Windows platforms; new -Tkitty and -Tkittyz output formats are$$$available that render to the Kitty terminal emulator’s graphvics protocol.$$$HTML/CSS-style 3 letter hex colors are supported. Each R/G/B letter is$$$duplicated to form a 6 letter hex color. E.g. #09c is equivalent to$$$#0099cc. #2377$$$$$$$$$$$$Changed$$$$$$$$$Breaking: The definition of adjmatrix_t is no longer exposed in public$$$headers.$$$$$$Breaking: The upper limit for minimum edge length (Agedgeinfo_t.minlen)$$$has been expanded from USHRT_MAX to INT_MAX. #2413$$$$$$$$$Breaking: The libcdt macros DTTREEMATCH; DTTREESEARCH; dtvnext;$$$dtvcount; dtvhere; and dtcharhash have been removed.$$$$$$Breaking: The libcgraph macros AGHEADPOINTER; AGRIGHTPOINTER;$$$AGLEFTPOINTER; FIRSTNREF; NEXTNREF; PREVNREF; LASTNREF; NODEOF;$$$FIRSTOUTREF; LASTOUTREF; FIRSTINREF; NEXTEREF; and PREVEREF have$$$been removed.$$$$$$Breaking: The libcgraph types Agnoderef_t and Agedgeref_t have been$$$removed.$$$$$$Breaking: The libcgraph function agflatten has been removed.$$$$$$Breaking: The Agdesc_s.flatlock field has been removed.$$$$$$Breaking: The str parameter from gvPluginList has been removed.$$$$$$Breaking: The definition of the elist_append and alloc_elist macros$$$have been changed to use newer allocation functions. Users were/are not$$$expected to call these macros.$$$The functions ageqedge; agtail; aghead; agopp; agmkout; and agmkin$$$have been reintroduced. These were previously removed in Graphviz 3.0.0. #2433$$$$$$$$$Breaking: The first parameter dt to the makef and freef callbacks$$$defined in cdt.h has been removed.$$$Gvedit now identifies itself with organization name “Graphviz” and application$$$name “gvedit” when reading and writing Qt-based settings. It would previously$$$use organization name “Trolltech” and application name “MDI Example”. If you$$$have existing settings under the old identification; Gvedit will attempt to$$$migrate them to the new identification the first time it reads then writes$$$settings. #2383$$$$$$$$$Breaking: gvprintf is now tagged with$$$__attribute__((format(printf; …))) when compiling with Clang or GCC. This$$$enables the compiler to spot more misuses of this function. #2373$$$$$$$$$Breaking: The hashf and eventf members of Dtdisc_t have been$$$removed. Correspondingly; the hshf and evf parameters to the DTDISC$$$macro have been removed. Also the _DTHSH macro has been removed.$$$$$$Breaking: The Dtdata_t.minp field has been removed.$$$The print functionality of the macOS Graphviz app scales the graph to fit the$$$output page size.$$$$$$Breaking: The libcdt containers Dtbag; Dthash; Dtlist; Dtorder;$$$Dtdeque; and Dtstack have been removed.$$$$$$Breaking: The libcdt dtappend and dtattach macros have been removed.$$$Support for Lua 5.0 has been removed. Building the Graphviz Lua bindings now$$$requires Lua = 5.1.$$$$$$Breaking: The Dt_t* parameter to the callback for dtwalk has been$$$removed.$$$$$$Breaking: The POINTS_PER_PC macro has been removed.$$$$$$Breaking: The INITIAL_XDOT_CAPACITY macro has been removed.$$$$$$Breaking: The type parameter to dtdisc has been removed.$$$$$$Breaking: The h parameter to dtstrhash has been removed.$$$In addition to Guile 2.0 and Guile 2.2; Guile 3.0 is now supported by the$$$Graphviz Guile bindings.$$$$$$Breaking: The concept of “memory allocator discipline” has been removed;$$$along with the type Agmemdisc_t and fields Agdisc_t.mem and$$$Agdstate_t.mem.$$$$$$Breaking: The agcallbacks function and Agclos_t.callbacks_enabled have$$$been removed.$$$$$$Breaking: pack_info.doSplines is now a C99 bool. Correspondingly; the$$$doSplines parameter to shiftGraphs is now a C99 bool.$$$$$$$$$Fixed$$$$$$Processing large graphs that induce ranks containing more than 46340$$$(floor(vINT_MAX)) nodes no longer results in an integer overflow during$$$crossing matrix allocation. Ranks of up to floor(vSIZE_MAX) nodes are now$$$supported.$$$Double arrow head types like invdot and onormalonormal once again display$$$correctly. This was a regression in Graphviz 8.0.1. #2406$$$$$$The lv
Graphviz x64 Version 9.0.0
Release Date
9/12/2023
Bug Fix?
Yes
Minor Release?
Yes
Patch Notes

9.0.0 - 2023-09-11$$$$$$Added$$$$$$On non-Windows platforms; new -Tkitty and -Tkittyz output formats are$$$available that render to the Kitty terminal emulator’s graphvics protocol.$$$HTML/CSS-style 3 letter hex colors are supported. Each R/G/B letter is$$$duplicated to form a 6 letter hex color. E.g. #09c is equivalent to$$$#0099cc. #2377$$$$$$$$$$$$Changed$$$$$$$$$Breaking: The definition of adjmatrix_t is no longer exposed in public$$$headers.$$$$$$Breaking: The upper limit for minimum edge length (Agedgeinfo_t.minlen)$$$has been expanded from USHRT_MAX to INT_MAX. #2413$$$$$$$$$Breaking: The libcdt macros DTTREEMATCH; DTTREESEARCH; dtvnext;$$$dtvcount; dtvhere; and dtcharhash have been removed.$$$$$$Breaking: The libcgraph macros AGHEADPOINTER; AGRIGHTPOINTER;$$$AGLEFTPOINTER; FIRSTNREF; NEXTNREF; PREVNREF; LASTNREF; NODEOF;$$$FIRSTOUTREF; LASTOUTREF; FIRSTINREF; NEXTEREF; and PREVEREF have$$$been removed.$$$$$$Breaking: The libcgraph types Agnoderef_t and Agedgeref_t have been$$$removed.$$$$$$Breaking: The libcgraph function agflatten has been removed.$$$$$$Breaking: The Agdesc_s.flatlock field has been removed.$$$$$$Breaking: The str parameter from gvPluginList has been removed.$$$$$$Breaking: The definition of the elist_append and alloc_elist macros$$$have been changed to use newer allocation functions. Users were/are not$$$expected to call these macros.$$$The functions ageqedge; agtail; aghead; agopp; agmkout; and agmkin$$$have been reintroduced. These were previously removed in Graphviz 3.0.0. #2433$$$$$$$$$Breaking: The first parameter dt to the makef and freef callbacks$$$defined in cdt.h has been removed.$$$Gvedit now identifies itself with organization name “Graphviz” and application$$$name “gvedit” when reading and writing Qt-based settings. It would previously$$$use organization name “Trolltech” and application name “MDI Example”. If you$$$have existing settings under the old identification; Gvedit will attempt to$$$migrate them to the new identification the first time it reads then writes$$$settings. #2383$$$$$$$$$Breaking: gvprintf is now tagged with$$$__attribute__((format(printf; …))) when compiling with Clang or GCC. This$$$enables the compiler to spot more misuses of this function. #2373$$$$$$$$$Breaking: The hashf and eventf members of Dtdisc_t have been$$$removed. Correspondingly; the hshf and evf parameters to the DTDISC$$$macro have been removed. Also the _DTHSH macro has been removed.$$$$$$Breaking: The Dtdata_t.minp field has been removed.$$$The print functionality of the macOS Graphviz app scales the graph to fit the$$$output page size.$$$$$$Breaking: The libcdt containers Dtbag; Dthash; Dtlist; Dtorder;$$$Dtdeque; and Dtstack have been removed.$$$$$$Breaking: The libcdt dtappend and dtattach macros have been removed.$$$Support for Lua 5.0 has been removed. Building the Graphviz Lua bindings now$$$requires Lua = 5.1.$$$$$$Breaking: The Dt_t* parameter to the callback for dtwalk has been$$$removed.$$$$$$Breaking: The POINTS_PER_PC macro has been removed.$$$$$$Breaking: The INITIAL_XDOT_CAPACITY macro has been removed.$$$$$$Breaking: The type parameter to dtdisc has been removed.$$$$$$Breaking: The h parameter to dtstrhash has been removed.$$$In addition to Guile 2.0 and Guile 2.2; Guile 3.0 is now supported by the$$$Graphviz Guile bindings.$$$$$$Breaking: The concept of “memory allocator discipline” has been removed;$$$along with the type Agmemdisc_t and fields Agdisc_t.mem and$$$Agdstate_t.mem.$$$$$$Breaking: The agcallbacks function and Agclos_t.callbacks_enabled have$$$been removed.$$$$$$Breaking: pack_info.doSplines is now a C99 bool. Correspondingly; the$$$doSplines parameter to shiftGraphs is now a C99 bool.$$$$$$$$$Fixed$$$$$$Processing large graphs that induce ranks containing more than 46340$$$(floor(vINT_MAX)) nodes no longer results in an integer overflow during$$$crossing matrix allocation. Ranks of up to floor(vSIZE_MAX) nodes are now$$$supported.$$$Double arrow head types like invdot and onormalonormal once again display$$$correctly. This was a regression in Graphviz 8.0.1. #2406$$$$$$The lv
Interested in automating patching for Graphviz x64?