Opened 2 years ago
Closed 2 years 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 , 2 years ago
comment:2 by , 2 years ago
A new major version and it still uses gtk2! But only in graphviz/libgvplugin_gtk.so.6.0.0.
follow-up: 4 comment:3 by , 2 years 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
comment:4 by , 2 years 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 , 2 years 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 , 2 years 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 , 2 years 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 , 2 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
follow-up: 10 comment:9 by , 2 years ago
I don't think there is anything blocking the update, just that Gtk+2 is still used, and this is for #18531.
comment:10 by , 2 years 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.

## [9.0.0] - 2023-09-11
### Added
-Tkittyand-Tkittyzoutput formats are available that render to the Kitty terminal emulator’s graphvics protocol.#09cis equivalent to#0099cc.### Changed
adjmatrix_tis no longer exposed in public headers.Agedgeinfo_t.minlen) has been expanded fromUSHRT_MAXtoINT_MAX.DTTREEMATCH,DTTREESEARCH,dtvnext,dtvcount,dtvhere, anddtcharhashhave been removed.AGHEADPOINTER,AGRIGHTPOINTER,AGLEFTPOINTER,FIRSTNREF,NEXTNREF,PREVNREF,LASTNREF,NODEOF,FIRSTOUTREF,LASTOUTREF,FIRSTINREF,NEXTEREF, andPREVEREFhave been removed.Agnoderef_tandAgedgeref_thave been removed.agflattenhas been removed.Agdesc_s.flatlockfield has been removed.strparameter fromgvPluginListhas been removed.elist_appendandalloc_elistmacros have been changed to use newer allocation functions. Users were/are not expected to call these macros.ageqedge,agtail,aghead,agopp,agmkout, andagmkinhave been reintroduced. These were previously removed in Graphviz 3.0.0.dtto themakefandfreefcallbacks defined in cdt.h has been removed.gvprintfis now tagged with__attribute__((format(printf, …)))when compiling with Clang or GCC. This enables the compiler to spot more misuses of this function.hashfandeventfmembers ofDtdisc_thave been removed. Correspondingly, thehshfandevfparameters to theDTDISCmacro have been removed. Also the_DTHSHmacro has been removed.Dtdata_t.minpfield has been removed.Dtbag,Dthash,Dtlist,Dtorder,Dtdeque, andDtstackhave been removed.dtappendanddtattachmacros have been removed.Dt_t*parameter to the callback fordtwalkhas been removed.POINTS_PER_PCmacro has been removed.INITIAL_XDOT_CAPACITYmacro has been removed.typeparameter todtdischas been removed.hparameter todtstrhashhas been removed.Agmemdisc_tand fieldsAgdisc_t.memandAgdstate_t.mem.agcallbacksfunction andAgclos_t.callbacks_enabledhave been removed.pack_info.doSplinesis now a C99bool. Correspondingly, thedoSplinesparameter toshiftGraphsis now a C99bool.### Fixed
floor(√INT_MAX)) nodes no longer results in an integer overflow during crossing matrix allocation. Ranks of up tofloor(√SIZE_MAX)nodes are now supported.invdotandonormalonormalonce again display correctly. This was a regression in Graphviz 8.0.1.lveeandrveeedge arrow shapes are slighty incorrect for penwidths > 1.lcurveorrcurvearrow shaft and node.crowandvee[edge arrow shapes](https://graphviz.org/doc/info/arrows.html#primitive-shapes) and [record based nodes](https://graphviz.org/doc/info/shapes.html#record).gvprintfhave 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.vt100output format has been renamed tovt. This fixes a problem where it was not discoverable on macOS.\"are recognized in strings and double escaping (producing\\") is avoided.--prefixpath given on the command line. This previously caused cross-compilation to incorrectly pick up host headers and libraries.