package fungi
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
A pure functional graph library
Install
dune-project
Dependency
Authors
Maintainers
Sources
0.2.0.tar.gz
md5=c034feedb30e2fa094e5e720c6eb5cea
sha512=c0ece9e10b5ebf4d34b714d4884a55c519773b500989ce2ade329ba874be5e8e931d53f2706e63c0adb53f455e9d02781757872fc8259b2fddd395474d2eabfe
doc/CHANGELOG.html
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.0 - 2026-07-24
Changed (breaking)
- Edge weights are now persistent. Each vertex's edge weights moved from a mutable
Hashtblto a persistent map, so deriving a graph no longer mutates any earlier version.Graph.Weightsis nowMap.Sinstead ofHashtbl.S, andVertex.update/Vertex.ensurenow return the updatedweightsinstead ofunit. TreeSetre-implemented on top ofStdlib.Set. The hand-rolled (unbalanced) BST was replaced by an adapter overSet.Make, giving balanced-tree performance. TheTSetinterface is unchanged so all call sites keep working; compare-equal inserts still replace the existing element (as the oldTreeSetdid), which several algorithms rely on.
Added
Serialize.to_dot_stringandSerialize.to_dot_channelfor rendering a graph to a single dot string or straight to anout_channel, alongside the existing lazy-sequenceto_dot.- A test suite covering
TreeSet,Heap,UnionFind, coreGraph, the graph algorithms (SCC, clustering, flow, path, matching, spanning trees) and dot serialization.
Fixed
add_weightno longer accumulates duplicate bindings — re-adding an edge now replaces its weight instead of stacking entries.MakeDisjointSet.createraises a clearInvalid_argumentwhen the element sequence is longer than the declared size, instead of a later out-of-bounds crash. The unusedResolvTblmodule was removed.TreeSetno longer shadowsStdlib.Not_found, so partial operations raise the standard exception callers can catch.Heapconsolidation table is now per-call, removing a functor-global mutable table that could be clobbered by concurrent consolidations.toposortnow returns a valid topological (happens-before) order; it previously emitted discovery order, which could place a successor before its predecessor.astarno longer raises"value not in heap"; path entries are keyed consistently and the heap is pre-seeded, matching dijkstra's behaviour.galeshapelynow produces a stable matching; the acceptor preference comparison was inverted, yielding blocking pairs. A leftover debug print was also removed.
Serialization (dot)
- Node ids, labels and attribute values are now quoted and escaped, so arbitrary element/weight strings (spaces, quotes, dashes, keywords) produce valid dot.
- Reciprocal-edge de-duplication is applied only to undirected graphs; directed graphs keep genuine mutual edges (
A -> BandB -> A). - Attribute quoting is consistent across global, node and edge attributes, and attribute keys are emitted in sorted order for reproducible output.
- The lazy
to_dotsequence is now re-forceable (no leaked mutable state), and empty attribute brackets / redundant node declarations are avoided.
0.1.4
- Baseline release prior to this changelog.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page