## [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.exe`. 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 and popped as they are applied and released. Previously processing
multiple graphs wherein the first uses color schemes but later ones do not
could result in color schemes being incorrectly retained and reapplied or
use-after-free memory accesses.
- The GDI+ plugin, when asked to render a graphic metafile, no longer references
uninitialized memory. This bug was introduced in Graphviz 2.24.0.
- A `free` of an invalid pointer in `edgepaint` was fixed. #2513
- `gvmap` no longer references uninitialized variables when trying to process
triangles and encountering only 2 points.
- Using the `point` shape in combination with `peripheries=0` no longer causes
out of bounds memory writes. This was a regression in Graphviz 7.0.0. #2497
- Unsafe use of a dangling pointer in `ccomps` has been removed. This was a
regression in Graphviz 7.1.0.
- `gvcolor` no longer crashes when processing color names longer than 127
characters.
- Interleaving calls to `colorxlate` and `gvrender_resolve_color` no longer
confuse internal caching mechanisms. Callers should now get the correct color
back.
- The `nop2` layout engine provided by the neato layout plugin is now equivalent
to `neato -n2` as intended instead of mistakenly being equivalent to
`nop`/`nop1`/`neato -n1`.
- An off-by-one error in rank installation was corrected. Previously, an unusual
`rank=same` constraint could cause a crash when installing ranks. #1308
- `gxl2gv` no longer crashes or misbehaves when symlinked to a non-ASCII file
name. This is a rare scenario that normal users should not encounter.
- `mm2gv` no longer crashes or misbehaves when reading malformed Matrix Market
files with non-ASCII bytes in the header.
- A stack buffer overflow in `mm2gv` when processing malformed Matrix Market
files has been fixed.
- The `newrank` attribute is treated as a boolean instead of any value
(including `"false"`) being coerced into `"true"`. #2521
- Crashes and misbehavior no longer occur when the `sides` attribute contains
non-ASCII characters.
- Graphviz binaries like `dot.exe` and `neato.exe` no longer crash or misbehave
when symlinked to a non-ASCII file name on Windows. This is a rare scenario
that normal users should not encounter.
- GVPR programs that use `tolower` or `toupper` on strings containing non-ASCII
characters no longer crash. These functions do not lowercase/uppercase
non-ASCII characters, so users probably still do not want to use non-ASCII
strings in a GVPR program.
- Some `routesplines` miscalculations that led to lost edges and fatal errors
have been avoided. #2368
- An inaccuracy involving an edge case when constructing lines within libpack
has been corrected.
- A bug in the internal heap implementation used in the network simplex
algorithm has been corrected. This would previously cause certain runs to
infer incorrect ordering or subtrees. This was a regression in Graphviz
2.40.0. #2391, #2529
- Compass points may be more accurately placed on the node boundary in some cases.
- A very small random adjustment in the calculation of the space available for
edge routing around ellipse shaped nodes in fdp and neato layouts, has been
removed.
- Incorrect edge splines for ellipse shaped nodes with ports using fdp or
neato. #2168
- Incorrect edge splines for ellipse and polygon shaped nodes with ports and
large penwidths using fdp or neato, causing the same symptoms as #2168.
- Incorrect edge splines for polygon shaped nodes with ports more than one
periphery using fdp or neato, causing the same symptoms as #2168.
- Adjust the space available for edge routing based on penwidth when
using fdp or neato and `splines=ortho`.
Aggiungi un commento