This is now just history. The documentation has been moved to scala-graph.org in 2013.Version 1.6.1 - Feb 07, 2013
- fix: deep recursive traversals started in node visitors could cause a thread lock.
Version 1.6.0 - January 2, 2013
- new: Support for Scala 2.10. Version.scala enables SBT build against Scala 2.9 or 2.10.
-
new: Module Misc to make any loosely coupled algorithm implemented by Graph4Scala users publicly available.
Starting with an algorithm for finding strongly connected components.
-
new: out of the box support for sbteclipse.
-
new: fast random selection of nodes/edges/incident edges by draw.
- new: extraClasses argument added to JSON node and edge descriptors.
-
new: added support for custom edges as member of JSON import/export.
-
mod: Refactorings being of interest only to users who have extended or implemented Graph:
Version 1.5.2 - July 15, 2012
- new: Module DOT including export in DOT language format.
Version 1.5.1 - July 07, 2012
- mod: More performance optimizations, improved default optimazation hints.
Version 1.5.0 - June 22, 2012
-
new: Parameter nodeUpVisitor added to dfs to allow distinct node visitors when moving down and up - see method traverseDownUp.
-
new: sorted traversal - neighbor nodes/edges may be visited in a user-specified order - see chapter 4.10.2 in User Guide.
-
fix: findCycle could return bad results when undirected edges were involved.
-
mod: The default implementation relies now on native JVM arrays to boost performance.
-
mod: Graph companion factory methods have now an implicit parameter list comprised of the edge type parameter manifest and the graph configuration. See also chapter 5.1 Altering Configuration Options in Graph4Scala-UserGuide.
-
mod: Constraints are to be supplied by implicit values - see the updated Graph4Scala-Constrained-UserGuide.
-
fix: totalWeight ignored duplicate weights.
-
del: Graph.from(edges) discontinued. Use from(edges = ...) instead.
-
del: TinyGraph implementation discontinued.
-
mod: If user traits extending GraphLike also extend the inner class InnerNodeLike, the compile time error "illegal inheritance; self-type..." occurs upon the above change. In this case please define the self-type of InnerNodeLike as this: NodeT =>.
- mod: Refactorings being of interest only to users who have extended or implemented Graph:
Version 1.4.3 - April 09, 2012
- fix: in 1.4.2 parallel traversals were not thread-safe.
- mod: asSortedString/toSortedString now sort nodes/edges according to a default/customizable Ordering. toString is sorted for graphs with up to 100 elements.
Version 1.4.2 - March 03, 2012
- new: increased performance for traversals through internal "visited-bits".
- fix: n pathTo n now returns None.
- fix: PathBuffer.endNode.
Version 1.4 - January 15, 2012
-
new: Constrained module containing the predefined constraints Connected and Acyclic and, based on these, the predefined constrained Graph types DAG, Forest and Tree. Among others, the constrained module comes with a programming model for the easy creation of any kind of custom constraints. Just read Graph4Scala-Constrained-UserGuide.
-
new: isCyclic, findCycle - latter anywhere in the graph or starting traversal at a given node.
- fix: equals did not work correctly for instances of Path.
- known issue: cycles for undirected hyper-edges will not be detected properly.
Version 1.3.2 - November 28, 2011
- fix: The operators ++ and -- are now optimized for speed.
- fix: The return type of the from factory methods was incorrect.
- new: def graphCompanion.
Version 1.3.1 - November 8, 2011
Version 1.3 - October 27, 2011
- new: JSON import/export - see Graph4Scala-JSON-UserGuide.
- mod: The project has been splitted into moduls. Currently there are two moduls/JARS: core and json.
- mod: simplified type parameters for Graph.from(nodeStreams, nodes, edgeStreams, edges); from renamed to fromStream
August 25, 2011
- new: Ensured and verified that Graph (and outer edge) instances are serializable by means of the Java Serialization API. This enables to send graphs via network or persist them to disk out of the box. However, there is no optimisation with respect to serialization.
Version 1.2 - August 15, 2011
- new: Graphs can now be instantiated or mutated by means of node/edge input streams. Input streams enable to instantiate or mutate graphs with no prior creation of outer nodes and edges. An edge input stream is an iterator combined with an edge factory and an edge adapter. More in chapter 2.4 Instantiating Graphs of the User Guide.
August 7, 2011
-
new: A range of edge creation methods (add[AndGet]WEdge, add[AndGet]LEdge, add[AndGet]WLEdge) and counterpart operators (+~%=, +~+=, +~%+=) has been added to mutable.Graph and its inner node class. This enables to add also weighted and/or labeled edges based on an edge factory without creating an outer edge first. See example q) in chapter 4.4 Adding and Subtracting of the User Guide.
-
trait GenericGraphTemplate has been eliminated. This is mainly an internal change but applications relying on custom Graph classes need to remove def graphCompanion and replace graphCompanion references with the concrete companion object.
Version 1.1 - July 2, 2011
-
new: A wealth of predefined convenience edge classes including all combinations of weighted, key-weighted, labeld and key-labeled edges in the scalax.collection.edge package. For instance, LkDiEdge with the shortcut ~+#> represents a key-labeled directed edge. These predefined edges facilitate you to bypass custom edge creation which proved tedious although it is more flexible. See chapter 2.3 Edge Factories in the User Guide.
-
mod: Weighted<E> with the shortcut $ has been renamed to W<E> with shortcut % to be compliant to the prefix-based edge naming convention which has been introduced to depict predefined edge variants. Weighted edge classes have also been moved into the new package scalax.collection.edge.
-
mod: For the sake of simplicity - meaning fewer types, less implicits and improved inference - the <X>In edge types have been eliminated. To migrate, replace <E>In with <E> anywhere in your code (<E> ::= UnDiEdge | DiEdge | ... | <CustomEdge>). For instance, replace UnDiEdgeIn with UnDiEdge. You may now even omit most of these explicit type parameters.Furthermore, custom edge classes neither need type <CustomEdgeClass>In nor implicit def flightToEdgeIn any more but they need to mix in EdgeIn[N,<CustomEdgeClass>]. See also the updated Flight.scala.
June 18, 2011
- new: functional traversal in a specific direction - select between Successors (default), Predecessors or AnyConnected
-
new: inner node methods findPredecessor, findConnected
-
new: mapping of graph types to edge types summerized in the User Guide - see chapter 2.2 Type Parameters
- mod: attributes of GraphEdge#ExtendedKey renamed to keyAttributes to make its intention clearer
( 2.8.1 build is now disconnected)
June 4, 2011
- new: diSuccessors, diPredecessors, neighbors - please visit chapter 4.7 Inspecting Neighbors and Incident Edges in the User Guide
- mod: adjacents renamed to diSuccessors
Version 1.0 - May 28, 2011
- new: functional traversal - please visit chapter 4.10 Traversing in the User Guide
-
mod: as with any traversal, all path searches are quenchable by the node visitor
- mod: pathTo(pred)renamed to pathUntil
- mod: nop_NodeVisitor and nop_Filter renamed to NoNodeAction resp. AnyNode
- mod: traits GraphAlgo[Impl]renamed to GraphTraversal[Impl] - see also custom/ExtNode.scala
May 16, 2011
- new: graph degree calculation - see chapter Measuring Graphs and Grouping Nodes by Degree in the User Guide
- new: customizable and sorted stringizing methods toSortedString / asSortedString for Graph, node set and edge set
- new: operator == now also allows comparing Graphs with any TraversableOnce
- fixed: operator == did not work correctly when an immutable Graph was compared with a mutable one
- mod: parameter names of having altered from plural to singular to increase readability when having is used in find, which is called to find a single element
May 08, 2011