Releases: kituyiharry/fungi
Releases · kituyiharry/fungi
Release list
0.2.0
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
mutableHashtblto 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.