Download

The latest stable release is

graph-core 1.11.5

To download the latest release of the core module, SBT users should add

scalaVersion := "2.12.2"
libraryDependencies += "org.scala-graph" %% "graph-core" % "1.11.5"

to their settings. As a Maven user, please set:

group id org.scala-graph
artifact id graph-core_2.12
version 1.11.5

The latest stable releases of the optional modules are:

graph-constrained 1.11.0
graph-dot 1.11.5
graph-json 1.11.0

You may find or manually download any Maven release including Scaladoc from org.scala-graph . For earlier releases please refer to com.assembla.scala-incubator.

1.11 Release Notes

1.11.5

  • fix: topologicalSort of a cyclic graph could leave cycle undetected. Closes #68.
  • fix: on DOT export, non-empty child subgraphs of an empty subgraph did not render. Closes #69.

1.11.4

  • new: Added method toOuter to inner nodes as a synonym for value.
  • new: released graph-core and all accompanying modules for Scala 2.12.

1.11.3

  • mod: An opposite traversal direction will now be rejected at run time by IllegalArgumentException on any method call returning a Cycle or Path in reaction to #62.
  • fix: For a non-existing topological order, an empty order could be returned instead of a node on the cycle as reported in #61.
  • mod: The Scalacheck dependency has been degraded to "optional;provided" to meet a request on the user list.

1.11.2

  • new: Added withMaxDepth and withMaxWeight support to shortestPathTo meeting #50

1.11.1

1.11.0

  • 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, isDirected, isHyper and isMulti now also consider the graph content as opposed to solely checking the edge type parameter. This is achieved O(1) except for isMulti.
  • 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

1.10.1

  • 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.

1.10.0

  • new: Added topological sortingin several flavors. topologicalSort is now integrated in the Traverser framework allowing for fluent properties. Among others, 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 Bag or Sequence collection kind.
  • mod: Dependency on scala-reflect has been dropped.
  • mod: Module Graph-test is now integrated in Graph-core.
  • 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 node_id that were covered by String previously.
  • new: Added DOT record shape support - see also the test method def `Colons (':') in node_id's are handled correctly` in TExport.scala.

Migration notes:

  • 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 Id respectively 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.
  • Also, DotRootGraph and DotSubGraph have an additional parameter attrStmts while kvList has been renamed to attrList.

1.9 Release Notes

1.9.4

  • fix: Java serialization fix in 1.9.3 was not correct.

1.9.3

  • fix: issues #24, #36, #39 including Java serialization.

1.9.2

  • mod: JSON export creates now single node/edge sections subsuming all class types.
  • fix: issue with node neighbors in mixed graphs.

1.9.1

  • 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.

1.9.0

  • new: WalkBuilder and 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 return Continue or Cancel.
  • 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

1.8.1

  • 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 GraphConfig.
  • mod: Factory method fromStream removed.
  • And some fixes.

1.8.0

  • new: Traversing API taken to the next level.
  • mod: Some conversion methods and rarely used classes have been renamed for clarity and uniformity.

Migration notes:

  • Please replace deprecated method calls in a timely manner since deprecated methods will be removed from the library probably as soon as in April 2014. Besides reading the updated User Guide it should be worthwhile to inspect TTraversal.scala near the bottom of test migration changes providing a handful of migration examples.
  • Please update your code base with the following renamed methods and classes:

    up to 1.7 as of 1.8 renamed to
    toEdgeIn, toNodeInSet, toEdgeInSet toOuter
    NodeIn, EdgeIn OuterNode, OuterEdge
    NodeOut, EdgeOut InnerNodeParam, InnerEdgeParam
    InnerNodeLike, InnerEdgeLike InnerNode, InnerEdge
    with the common base InnerElem
    GraphParam* *Param

1.7 Release Notes

1.7.3

  • mod: faster processing of direct successors, O(1) access for findOutgoingTo.
  • mod: Manifest migrated to TypeTag. Manifest maintained in Graph_json because of lift.json.
  • mod: Compiler dependency updated to 2.10.3.
  • fix: method upsert didn't work properly in case of insertions.

1.7.2

  • new: method upsert for mutable graphs.
  • fix: due to a regression introduced in 1.7.1 findOutgoingTo and findIncomingFrom didn't work correctly.

1.7.1

  • mod: Several node-level methods and equals/hashCode for edges have been optimized.
  • fix: shortestPathTo GitHub issue #12.
  • fix: method draw.
  • fix: builder pattern imposed by GraphCanBuildFrom.

1.7.0

  • 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.