davecom/SwiftGraph

View on GitHub
CHANGELOG.md

Summary

Maintainability
Test Coverage
### 3.1.0
- Reverse a graph with `reversed()` (@mattpaletta)
- Performance improvement to `topologicalSort()` (@dabbott)
- Recursive initializers for `UniqueElementsGraph` (@ferranpujolcamins) 
- A few `let` vs `var` warnings fixed

### 3.0.0
- **This is an API breaking refactor**
- This version requires Swift 5.0 (Xcode 10.2)
- `Graph` no longer conforms to `class` so structs can be `Graph`s (@davecom)
- `Graph` and `Edge` are now `Codable` meaning all implementations must be as well including all vertex types, leading to the removal of `CodableUnweightedGraph` and `CodableWeightedGraph`, which are now unnecessary (@davecom)
- New CONTRIBUTORS.md file containing some history (@davecom)
- New search traversal methods (@ferranpujolcamins)
- Improvements to `UniqueElementsGraph` (@ferranpujolcamins)
- Useful constructors for testing (@ferranpujolcamins)
- Improvements to `UniqueElementsGraph` tests (@ferranpujolcamins)
- Refactor many aspects of `UnweightedGraph` and `WeightedGraph` into conditional conformance extensions to `Graph` and new protocols (@ferranpujolcamins)
- Add new performance tests (@ferranpujolcamins)
- Add direction back to `Edge` (@ferranpujolcamins)

### 2.0.0
- **This is an API breaking refactor**
- This version requires Swift 4.2 (Xcode 10.1)
- `Graph` is now a protocol instead of a class
- `edgesToVertices()` is now a method on `Graph` instead of a free function
- The `Edge` protocol has been significantly simplifieid
- `UnweightedEdge` and `WeightedEdge` are now `Codable`
- Subclasses of `Graph` `CodableUnweightedGraph` and `CodableWeightedGraph` provide serialization support to JSON and anything else `Codable` supports (thanks for the help, @yoiang)
- Experimental subclass of `UnweightedGraph`, `UniqueElementsGraph` provides a union operation and guarantees no duplicate vertices & edges in a graph (thanks @ferranpujolcamins)
- Cycle detector method that returns edges (thanks @ZevEisenberg)

### 1.5.1
- Project reorganized to support testing on Linux, just run `swift test`
- `Package.swift` updated for Swift 4 package management style
- Added `detectCyles()` which uses the Liu/Wang algorithm for detecting cycles up to any length in a graph
- Added a couple unit tests for testing `detectCycles()`

### 1.5.0
- Upgraded to Swift 4
- Project now built with Xcode 9
- SwiftPriorityQueue replaced with newer version

### 1.4.1
- Fixed a bug in `removeAllEdges()` and added a test for it

### 1.4.0
- Added a Minimum Spanning Tree Fuction `mst()` based on Jarnik's Algorithm (aka Prim's Algorithm)
- Simplified Dijkstra's Algorithm implementation

### 1.3.1
- Fixes a bug that could result in the wrong edges being removed when a vertex is removed (thanks @brandonroth)
- Silences some warnings about printing optionals introduced in Swift 3.1

### 1.3.0
- Carthage Support (via re-organizing into framework) - thanks @klundberg
- New search methods added - versions of `bfs()` and `dfs()` that support custom goal functions
- `findAll()` added as a version of `bfs()` with multiple potential outcomes 
- watchOS support added to Podfile

### 1.2.0
- Moved search functions from free functions to extensions of `Graph` and `WeightedGraph`
- Switched license to Apache 2.0 from MIT
- Added `topologicalSort()` and `isDAG`
- Changed access level for most types to `open`
- Added unit tests for topologicalSort and isDAG

### 1.1.1
- Fixes for the final version of Swift 3
- Updated version of SwiftPriorityQueue
- Added .swift-version file

### 1.1.0
- Requires Swift 3
- Minor breaking API naming changes in-line with Swift 3 expectations
- `dijkstra()` has a parameter for the starting distance to the root vertex (typically zero)
- Updated the included SwiftPriorityQueue source file

### 1.0.6
- Last version to support Swift 2
- Switched `dijkstra()` to use a priority queue
- Included the source file for SwiftPriorityQueue in the project

### 1.0.5
- Fixed build issues on Xcode 7.3

### 1.0.4
- Fixed Swift 3 deprecations
- Added SPM support

### 1.0.3
- Separated SwiftGraph into multiple files 
- Fixed some documentation.
- Made `edges` and `vertices` internal instead of private

### 1.0.2
Fixed the misspelling of Dijkstra

### 1.0.1
Updated to support Swift 2

### 1.0
Initial Stable Release - last release with Swift 1.2 support