Opened 8 months ago

Closed 8 months ago

#21703 closed enhancement (fixed)

graphviz-13.0.0

Reported by: Bruce Dubbs Owned by: Bruce Dubbs
Priority: normal Milestone: 12.4
Component: BOOK Version: git
Severity: normal Keywords:
Cc:

Description

New major version.

Change History (3)

comment:1 by Bruce Dubbs, 8 months ago

Owner: changed from blfs-book to Bruce Dubbs
Status: newassigned

comment:2 by Bruce Dubbs, 8 months ago

[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](https://aa-project.sourceforge.net/aalib/) and is only supported in the CMake build system.
  • 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.
  • Breaking: rank_t.cache_nc is now a int64_t.
  • Breaking: The agreadline function has been removed.
  • 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.
  • 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).
  • 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.
  • 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.
  • 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" on text elements for more accurate display.
  • Breaking: To duplicate strings, you now should distinguish between regular text strings and HTML-like strings. Regular text strings are handled through agstrdup_text and HTML-like strings are handled through agstrdup_html. The The agstrdup function has been retained for backwards compatibility, but should be avoided where possible due to its ambiguity with respect to the caller’s intent. Similarly for string binding, agstrbind has gained two variants agstrbind_text and agstrbind_html. These should be used in preference to agstrbind whenever possible. Similarly for attribute creation/lookup, agattr has gained two variants agattr_text and agattr_html. These should be used in preference to agattr whenever possible. Similarly for safe attribute creation/lookup, agsafeset has gained two variants agsafeset_text and agsafeset_html. These should be used in preference to agsafeset whenever possible. Similarly, agxset has gained two variants agxset_text and agxset_html. These should be used in preference to agxset whenever possible. Similarly, agset has gained two variants agset_text and agset_html. These should be used in preference to agset whenever possible.
  • Breaking: The EDGEOF macro has been removed.
  • The Autotools build system enables large file support on 32-bit platforms.
  • Breaking: The Graphviz plugin version has been updated 6 → 8. A side effect of this is the config6 file becoming config8.
  • The core plugin’s SVG output (-Tsvg, -Tsvg_inline) uses a viewBox that matches the image’s dimensions. This reverts behavior introduced in Graphviz 2.38.0 to the behavior Graphviz 2.36.0 and prior had. The difference is most apparent when using a non-default dpi setting.
  • The Tcl bindings have been updated for compatibility with Tcl 9. #2668
  • The SVG output format (-Tsvg, -Tsvg_inline) no longer duplicates font families.
  • Breaking: The function aginternalmapclearlocalnames has been removed.
  • In gvpr programs, the # and in operators now work on ARGV.
  • Breaking: xdot_color_stop.frac is now a double.
  • The GD plugin’s PNG output (-Tpng:cairo:gd) now sets DPI in the written PNG.
  • The GDI+ plugin’s output (-T*:cairo:gdiplus) now sets DPI in the written output.
  • The Quartz plugin’s PNG output (-Tpng:cairo:quartz) now sets DPI in the written PNG.
  • Breaking: The agconcat function now takes an extra filename parameter. If you are updating calling code, passing NULL for this parameter is a reasonable migration strategy.
  • Breaking: The agsetfile function has been removed.
  • The GDK plugin’s output (-T*:cairo:gdk) now sets DPI in written JPEGs and PNGs. #1617
  • Breaking: The Agsym_t struct has gained a new member, owner.

### Fixed

  • Numeric overflows when computing the total crossings in a graph with a large number of crossings have been avoided.
  • A free of an invalid pointer has been fixed in the GD plugin. This was a regression in Graphviz 12.1.1.
  • A double-free when using rotated images was fixed in the GD plugin. This was a regression in Graphviz 2.26.0.
  • Guile 2.2 discovery has been restored in the Autotools build system. This was a regression in Graphviz 12.2.0.
  • Legacy information about memory disciplines has been removed from the cgraph man page.
  • Some information in the gvc.3 man page that contradicted the gvc.h public header has been corrected.
  • Smyrna is once again compilable on macOS. This was a regression in Graphviz 10.0.1.
  • non-HTML (regular) strings and HTML-like strings are no longer considered equivalent internally. This allows you to have a non-HTML string and an HTML-like string with the same textual content. #2089
  • Smyrna no longer crashes when selecting Edit→Attributes with no open graph.
  • A bug in point map handling, where comparison of integer points were accessed as doubles, has been corrected. The user facing consequences of this is unknown, but could potentially lead to crashes, at least on 32-bit platforms. Point maps are used by the neato layout engine. This was a regression in Graphviz 12.0.0.
  • The executables in the Windows 64-bit Debug release artifacts were statically linked, not dynamically linked like the 64-bit Release and all the 32-bit executables. This has now been corrected. This was a regression in Graphviz 12.0.0.
  • The viewBox attribute of an included SVG image no longer overrides the height and width attributes, even when it precedes them. This was a regression in Graphviz 2.30.
  • The interpretation of viewBox attributes in included SVG images has been corrected.
  • Parsing of JPEG images used as node shapes has been corrected. This fixes a problem where no or incorrectly sized images appeared in the output. Please note that a bug in the GD plugin, which causes Graphviz to crash in Windows Debug builds, now unfortunately seems to always occur when using the GD plugin and JPEG images as node shapes. See https://graphviz.org/docs/outputs/#image-formats for details.
  • twopi no longer crashes when processing graphs with splines="ortho".
  • Network simplex functions have been refactored to avoid recursion. Now graphs with deep node chains that previously caused stack overflows can be processed.
  • Calling the GVPR function lock with a second argument > 2³¹ - 1 is no longer misinterpreted as a negative number.
  • Out-of-bounds accesses during gvgen random tree generation have been fixed.
  • gvmap no longer reads out-of-bounds memory when processing the -c_opacity=… command line option. This was a regression in Graphviz 2.49.0.
  • Using rankdir=LR in combination with ltail no longer causes crashes in edge cases.
  • Using splines=curved no longer causes crashes when cut points unexpectedly do not intersect bounding boxes.
  • In the CMake build system, the configuration step during installation (dot -c) now anticipates that $LD_LIBRARY_PATH and $DYLD_LIBRARY_PATH may be non-empty.
  • Failures during installing nodes into ranks now results in a graceful exit rather than referencing invalid memory.
  • When using the Tcl bindings, deleting a graph no longer triggers a use-after-free. This was a regression in Graphviz 2.30.
  • The layout command in the Tcl bindings works once again. This was a regression in Graphviz 2.42.0.
  • In the CMake build system, configuring with -DENABLE_PYTHON=ON -DENABLE_SWIG=ON no longer spuriously fails.
  • An assertion failure when processing graphs with empty ranks has been fixed.
  • Using GVPR to set a default attribute on a subgraph whose root graph has no default for that attribute no longer incorrectly sets the default on the root graph.
  • Mingle no longer crashes when doing Y coordinate search. This was a regression in Graphviz 2.47.0.
  • Smyrna no longer frees invalid pointers when processing xdot input. This was a regression in Graphviz 2.50.0
  • Smyrna no longer crashes when processing xdot gradient colors or font characters. This was a regression in Graphviz 2.34.0.
Last edited 8 months ago by Bruce Dubbs (previous) (diff)

comment:3 by Bruce Dubbs, 8 months ago

Resolution: fixed
Status: assignedclosed

This package was quite a challenge due to all the dependencies.

Fixed at commit df88f7b921.

Note: See TracTickets for help on using tickets.