0.13.1 - 2025-01-20
- Mermaid render of graph views was empty (#175)
- Hierarchy descendants return root siblings (#178)
0.13.0 - 2025-01-17
This release has been focused on performance improvements. Subgraphs and region filters now avoid unnecessary full-graph traversals by using specialized implementation.
We also added a Boundary
definition used for Subgraph
s that can compute
the partial order between its inputs and outputs.
- [breaking] Use RPITIT for graph traits (#156)
- [breaking] Added a
Boundary
definition and port partial-order computation (#164)
- [breaking] Fix O(n) complexity in
Subgraph
(#157) - [breaking] Manual impl of
Region
/FlatRegion
for improved perf (#162)
0.12.3 - 2024-11-13
- Fastpath for
is_node_convex
on a single node (#153)
0.12.2 - 2024-07-05
- Intergraph edges in mermaid rendering (#139)
- Use
insta
for mermaid/dot render tests (#137)
0.12.1 - 2024-06-03
- Link and neighbour iterators counting self-loops twice (#132)
- Proptest for Multiportgraph
- (Multi)Portgraph implement Arbitrary
- [breaking] Mermaid rendering (#125)
- [breaking] Hike MSRV to 1.75
- [breaking] Make the ConvexChecker into a trait (#121)
- Simpler convex checker, no longer requires
&mut
(#114)
- [breaking] Update pyo3 requirement from 0.19 to 0.20 (#110)
- Add DEVELOPMENT.md
- Require Clone instead of Copy in ConvexChecker, add
Copy
to filters (#104) - Allow non-references in the portgraph wrappers (#105)
view::FilteredGraph
for filtering both nodes and links of a graph (#100)view::SubGraph
for views into non-hierarchical subgraphs (#100)
view::NodeFiltered
is now a specialized version ofview::FilteredGraph
. Its constructor has been renamed toNodeFiltered::new_node_filtered
. (#100)
algorithms::ConvexChecker
to check convexity property of subgraphs ofLinkView
s (#97)
- References to
PortView
s andLinkView
s also implement the traits (#94) Toposort
now works with anyLinkView
object (#96)
- Only yield output neighbours in petgraph's IntoNeighbors trait implementation (#88)
- Fix incorrect dot rendering of the hierarchy for flat filtered regions (#91)
LinkMut::insert_graph
to insert a full graph into an existing graph (#80)PortMut::swap_nodes
to swap node indices (#83)Hierarchy::swap_nodes
to swap node indices (#87)Debug
andDefault
implementation for multiple iterators (#81)
- Removed the
substitute
module (#82)
NodeFiltered
,Region
, andFlatRegion
graph wrappers (#77)- Implemented the petgraph visit traits for the graph wrappers (#78)
- Benchmarks for the
toposort
algorithm (#75)
- Split the
PortView
,LinkView
, andMultiView
traits into separate*View
and*Mut
traits (#76) - Replaced
NonZeroU16
inPortOffset::Incoming
withu16
(#73)
- Fix dot formatter not hiding "Hidden" ports (#74)
- Added a MultiPortGraph structure that supports multiple connections to the same port (#67)
- Added new traits
PortView
,LinkView
, andMultiView
to unify thePortGraph
andMultiPortGraph
interfaces (#68) - Added a
petgraph
feature that implements petgraph'svisit
traits for interoperability (#70) - Added missing
Debug
implementations for iterators (#65)
- Reworked the dot formatter API (#69)
- The serialized format for NodeIndex and PortIndex now uses the user-facing indices instead of the off-by-one values used internally (#64)
- Simplified PortGraph debug information by showing the ports of a node as a range (#66)
SecondaryMap::remove
method to drop stored (#59)PortGraph::link_offsets
(#58)- Implemented
SecondaryMap
forHashSet
s to efficiently store sparse flags for nodes and ports (#62) - Generalized the
Iterator
impl ofTopoSort
to anySecondaryMap
(#63)
- Changed the
PortGraph::set_num_ports
callback to give more information using a newPortOperation
(#57) - Allows
PortGraph::link_ports
to connect ports in any order, as long as the directions are compatible (#58)
- Renamed
SecondaryMap
toUnmanagedDenseMap
(#51)
- Added a
SecondaryMap
generic trait, implemented byUnmanagedDenseMap
andBitVec
(#51) - Added a generic
Map : SecondaryMap
type parameter to the dominators and toposort algorithms, allowing more efficient executions on partially explored graphs (#51)
- Fix incorrect port count update when resizing ports in-place (#53)
- Add
as_range
methods toNodePorts
andNodePortOffsets
(#49, #50) - Fix equality comparison between secondary maps with different capacity (#48)
This is a bugfix release that fixes a panic when growing the number of ports in an empty node.
- Fix a panic on
set_num_ports
(#40)
- Implemented serialization on Weights and PortOffset (#36)
- Added port capacity to the nodes, and an overallocation factor when increasing the number of ports. (#37)
- Initial release with support for directed graphs with first-level ports.