0.16.1 - 2026-04-13
- Add layout options to mermaid renderer (#288)
0.16.0 - 2026-03-30
- [breaking] NodeMeta and PortMeta should be generic (#283)
- document canonical order in
toposortfor nodes of the same rank (#280)
- [breaking] Support parametric node and port types everywhere (#284)
- [breaking] Remove deprecated definitions (#285)
0.15.3 - 2025-12-08
- Added support for
pyo3 0.27
0.15.2 - 2025-08-05
- Handle multiports in TopoSort (#236)
- New ConvexChecker algorithm for Circuit-like graphs (#240)
- Add LineConvexChecker::nodes_in_interval (#241)
- Add LineConvexChecker::lines_at_port (#242)
0.15.1 - 2025-07-19
- Serialise/Deserialise for indices is backwards compatible (#234)
0.15.0 - 2025-07-18
- added DynamicTopoConvexChecker (#212)
- [breaking] convert
PortOffsetin to struct with private fields (#218) - [breaking] Make PortGraph generic on node and port types (#230)
- Avoid double graph traversals in insert_graph (#206)
- [breaking] Add MaybeNodeIndex/PortIndex for performance (#232)
- @gluonhiggs
0.14.1 - 2025-04-28
- Implement petgraph traits on adaptors (#195)
- FlatRegions that do not include their root node (#200)
- Node style attributes in render options (#199)
- Allow the FlatRegion to own its hierarchy (#201)
0.14.0 - 2025-04-08
- [breaking] Bumped the public
petgraphdependency to0.8.1(#193)
0.13.3 - 2025-03-04
- Fix panic when removing InPorts in MultiPortGraph::set_num_ports (#191)
0.13.2 - 2025-02-24
- cleanups, clarify (+test) connected components (#180)
- add Subgraph::copy_in_parent (#182)
- Simplify PortGraph::port_links (#188)
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 Subgraphs that can compute
the partial order between its inputs and outputs.
- [breaking] Use RPITIT for graph traits (#156)
- [breaking] Added a
Boundarydefinition and port partial-order computation (#164)
- [breaking] Fix O(n) complexity in
Subgraph(#157) - [breaking] Manual impl of
Region/FlatRegionfor improved perf (#162)
0.12.3 - 2024-11-13
- Fastpath for
is_node_convexon a single node (#153)
0.12.2 - 2024-07-05
- Intergraph edges in mermaid rendering (#139)
- Use
instafor 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
Copyto filters (#104) - Allow non-references in the portgraph wrappers (#105)
view::FilteredGraphfor filtering both nodes and links of a graph (#100)view::SubGraphfor views into non-hierarchical subgraphs (#100)
view::NodeFilteredis now a specialized version ofview::FilteredGraph. Its constructor has been renamed toNodeFiltered::new_node_filtered. (#100)
algorithms::ConvexCheckerto check convexity property of subgraphs ofLinkViews (#97)
- References to
PortViews andLinkViews also implement the traits (#94) Toposortnow works with anyLinkViewobject (#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_graphto insert a full graph into an existing graph (#80)PortMut::swap_nodesto swap node indices (#83)Hierarchy::swap_nodesto swap node indices (#87)DebugandDefaultimplementation for multiple iterators (#81)
- Removed the
substitutemodule (#82)
NodeFiltered,Region, andFlatRegiongraph wrappers (#77)- Implemented the petgraph visit traits for the graph wrappers (#78)
- Benchmarks for the
toposortalgorithm (#75)
- Split the
PortView,LinkView, andMultiViewtraits into separate*Viewand*Muttraits (#76) - Replaced
NonZeroU16inPortOffset::Incomingwithu16(#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, andMultiViewto unify thePortGraphandMultiPortGraphinterfaces (#68) - Added a
petgraphfeature that implements petgraph'svisittraits for interoperability (#70) - Added missing
Debugimplementations 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::removemethod to drop stored (#59)PortGraph::link_offsets(#58)- Implemented
SecondaryMapforHashSets to efficiently store sparse flags for nodes and ports (#62) - Generalized the
Iteratorimpl ofTopoSortto anySecondaryMap(#63)
- Changed the
PortGraph::set_num_portscallback to give more information using a newPortOperation(#57) - Allows
PortGraph::link_portsto connect ports in any order, as long as the directions are compatible (#58)
- Renamed
SecondaryMaptoUnmanagedDenseMap(#51)
- Added a
SecondaryMapgeneric trait, implemented byUnmanagedDenseMapandBitVec(#51) - Added a generic
Map : SecondaryMaptype 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_rangemethods toNodePortsandNodePortOffsets(#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.