The latest stable release is
To download the latest release of the core module, SBT users should add
scalaVersion := "2.12.5"
libraryDependencies += "org.scala-graph" %% "graph-core" % "1.12.5"
to their settings.
As a Maven user, please set:
The latest stable releases of the optional modules are:
You may find or manually download any Maven release including Scaladoc from
1.12 Release Notes
- fix in module constrained: Checks were not always suspended internally when handling
- new: Added
findCycleContaining(node: NodeT) respectively
to support finding cycles that contain a specific node in any kind of graph.
- fix: Topological sort could erroneously report a cycle when combined with edge filtering
- mod: Ensured that DFS ordering is always lexicographic.
- mod: Edge
weight is now of the type
1.11 Release Notes
topologicalSort of a cyclic graph could leave cycle undetected.
- fix: on DOT export, non-empty child subgraphs of an empty subgraph did not render.
- new: Added method
toOuter to inner nodes as a synonym for
- new: released graph-core and all accompanying modules for Scala 2.12.
- mod: An opposite traversal direction will now be rejected at run time by
on any method call returning a Cycle or Path in reaction to
- fix: For a non-existing topological order, an empty order could be returned instead of
a node on the cycle as reported in
- mod: The Scalacheck dependency has been degraded to
to meet a request on the user list.
- new: Added
withMaxWeight support to
- mod: Java serialization has been customized for more efficiency. Due to the
Scala issue on @transient there is a constant footprint of approximately 4 kb, though.
Please vote for this issue if you feel bothered.
- fix: In case of possibly mixed graphs,
now also consider the graph content as opposed to solely checking the edge type parameter.
This is achieved O(1) except for
- fix #57:
issue with componentTraverser
- mod: The node type parameter of edge types is now covariant thus honoring algebraic data types on edges.
This meets #40.
1.10 Release Notes
- new: Added withMaxWeight as a fluent property.
withMaxWeight is implemented for BreadthFirst, DepthFirst and findCycle.
- fix #54: Removing an edge in a mutable graph could cause erroneous diSuccessors.
- new: Added topological sortingin several flavors.
topologicalSort is now integrated in the
allowing for fluent properties.
TopologicalOrder, the result of a topological sort,
may be viewed and ordered layer by layer.
- new: Directed or undirected hyperedge endpoints may now be of either
Sequence collection kind.
- mod: Dependency on
scala-reflect has been dropped.
- mod: Module
Graph-test is now integrated in
- fix #34: No more racing condition occurs when running traversals under stress such as 100000 in parallel.
- fix #38: Under a rare condition, JSON output was invalid.
- fix #47:
DiHyperEdge's target nodes now allow for duplicate nodes by default.
- fix #51: Constructing
EqHashSetIterator is now O(1).
- mod: Added type-safe support for DOT
ID and DOT
that were covered by
- new: Added DOT record shape support - see also the test method
def `Colons (':') in node_id's are handled correctly` in TExport.scala.
- Signatures for the DOT export have changed slightly:
Since the previous representation of DOT ID and DOT node_id by
String has been replaced by the case classes
NodeId user code needs to be updated. For this purpose you
either invoke these constructors explicitly or you
import scalax.collection.io.dot.implicits._ to utilize implicit conversions.
DotSubGraph have an additional parameter
kvList has been renamed to
1.9 Release Notes
- fix: Java serialization fix in 1.9.3 was not correct.
- fix: issues #24, #36, #39 including Java serialization.
- mod: JSON export creates now single node/edge sections subsuming all class types.
- fix: issue with node neighbors in mixed graphs.
- fix: equality of non-basic directed hyperedges did no more work correctly since 1.7.1.
- fix: equality of hyperedges with one or more hooks did not work correctly.
PathBuilder allow to create walks and paths in terms
of the underlying graph.
- new: DOT-Export allows to map hyperedges
to a sequence of DOT edge statements.
- mod: Members marked deprecated in 1.8.0 have been removed. Visitors no more
- mod: Traversing has been optimized for speed and refactored for better modularity.
- mod: Scala 2.11 jars are now compiled with Scala 2.11.1 following the
recommendation of the Scala core team.
1.8 Release Notes
- new: Scala 2.11 releases excluding graph-json.
- new: module Test
to facilitate random graph generation.
- new: Parameter
weight added to overloaded version of
shortestPathTo to enable flexible weight definitions.
- new: Parameter
orderHint added to
- mod: Factory method
- And some fixes.
- new: Traversing API
taken to the next level.
- mod: Some conversion methods and rarely used classes have been renamed
for clarity and uniformity.
1.7 Release Notes
- mod: faster processing of direct successors, O(1) access for
Manifest migrated to
Manifest maintained in
Graph_json because of
- mod: Compiler dependency updated to
- fix: method
upsert didn't work properly in case of insertions.
- new: method
upsert for mutable graphs.
- fix: due to a regression introduced in 1.7.1
findIncomingFrom didn't work correctly.
- mod: Several node-level methods and
equals/hashCode for edges have been optimized.
shortestPathTo GitHub issue #12.
- fix: method
- fix: builder pattern imposed by
- new: Edge extractors have been added/modified.
Latter may require user-site source code changes in edge patterns. See
Inspecting Endpoints and
More Edge Patterns.
- mod: SBT upgraded to 0.13.0.