Opened 8 months ago

Closed 8 months ago

#18535 closed enhancement (fixed)

graphviz-9.0.0

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

Description

New major version.

Change History (11)

comment:1 by Bruce Dubbs, 8 months ago

## [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.

### 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.
  • 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.
  • 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.
  • 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.
  • 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(√INT_MAX)) nodes no longer results in an integer overflow during crossing matrix allocation. Ranks of up to floor(√SIZE_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.
  • The lvee and rvee edge arrow shapes are slighty incorrect for penwidths > 1.
  • Small gap between lcurve or rcurve arrow shaft and node.
  • Failure of arrowhead and arrowtail to respect penwidth #372 \ Fixed also for the crow and vee [edge arrow shapes](https://graphviz.org/doc/info/arrows.html#primitive-shapes) and [record based nodes](https://graphviz.org/doc/info/shapes.html#record).
  • Various incorrect calls to gvprintf have been corrected. On some platforms like x86-64, these problems were benign thanks to coincidences in the Application Binary Interface (ABI). On other platforms, these problems may have caused stack corruption and crashes.
  • The font dictionary is now initialized even if a configuration file is not found. Previously this situation could lead to a crash when using Graphviz programmatically. This problem was present as least as far back as Graphviz 2.38.0.
  • Breaking: The vt100 output format has been renamed to vt. This fixes a problem where it was not discoverable on macOS.
  • Escape sequences like \" are recognized in strings and double escaping (producing \\") is avoided.
  • The Autotools build system no longer uses headers and libraries from the --prefix path given on the command line. This previously caused cross-compilation to incorrectly pick up host headers and libraries.

comment:2 by Bruce Dubbs, 8 months ago

A new major version and it still uses gtk2! But only in graphviz/libgvplugin_gtk.so.6.0.0.

comment:3 by Douglas R. Reno, 8 months ago

We might be waiting for a while on that, the last comment on the upstream ussue for it was 4 months ago: https://gitlab.com/graphviz/graphviz/-/issues/1848

It seems to be blocking other distros as well.

Their usage of GTK seems relatively simple, and I have ported things from 2 to 3 in the past. I can give that a shot someday if you want me to. For example, its already on Cairo for most operations, so that makes things a lot simpler than having to port away from gdk-pixbuf first. For context, see https://docs.gtk.org/gtk3/migrating-2to3.html

in reply to:  3 comment:4 by Douglas R. Reno, 8 months ago

Replying to Douglas R. Reno:

We might be waiting for a while on that, the last comment on the upstream ussue for it was 4 months ago: https://gitlab.com/graphviz/graphviz/-/issues/1848

It seems to be blocking other distros as well.

Their usage of GTK seems relatively simple, and I have ported things from 2 to 3 in the past. I can give that a shot someday if you want me to. For example, its already on Cairo for most operations, so that makes things a lot simpler than having to port away from gdk-pixbuf first. For context, see https://docs.gtk.org/gtk3/migrating-2to3.html

Since they use Glade, converting UI files would be a bit easier as well, and most of what Graphviz has for this is generated code from Glade.

comment:5 by Bruce Dubbs, 8 months ago

The only gtk reference I can find is in graphviz-9.0.0/plugin/gtk/. There are 3 non-generated .c files. All say copyright 2011. They total about 600 lines of code.

I can't find what the libgvplugin_gtk plugin is supposed to do for sure, but it looks to me like a shim libgtk-x11-2.0.so.0 and libgdk-x11-2.0.so.0.

comment:6 by Douglas R. Reno, 8 months ago

That sounds right to me. The problem lies in that Graphiz needs it for JPEG, TIFF, ICO, and BMP files as well as for displaying graphs in a window. Gdk-x11 is probably going to be the big one there as that would contain the image formats if I remember correctly.

It is entirely in the GTK plugin, and wouldn't exactly be trivial but could be ported with a couple days of effort.

comment:7 by Rahul Chandra, 8 months ago

This could be an inhibitor, I haven't ported things from 2-3 but have from 3-4, so I'll take a look as well. Like Reno said, it wouldn't be trivial but it should be doable.

comment:8 by pierre, 8 months ago

Owner: changed from blfs-book to pierre
Status: newassigned

comment:9 by pierre, 8 months ago

I don't think there is anything blocking the update, just that Gtk+2 is still used, and this is for #18531.

in reply to:  9 comment:10 by Xi Ruoyao, 8 months ago

Replying to pierre:

I don't think there is anything blocking the update, just that Gtk+2 is still used, and this is for #18531.

It won't even block archiving Gtk+2 because the latter is only an optional dependency. I've not installed Gtk+2 for years but I can still use graphviz (as a vala depedency, and I also sometimes use it to draw some graphs in my presentations) fine.

comment:11 by pierre, 8 months ago

Resolution: fixed
Status: assignedclosed

Fixed at e459d5d9

Note: See TracTickets for help on using tickets.