[ANN] LightGraphs 1.3.1, and the upcoming roadmap

Hi all,

Minor announcement: we’ve released LightGraphs v1.3.1 with some bug and documentation fixes, a bit of new functionality, and a couple of fairly significant performance improvements. The bigger part of this release is what’s under the hood. With any luck, this will be the last release in the LG 1.3 series. 1.4 will bring a few changes that will deprecate existing functions/methods, paving the way for 2.0 sometime after GSoC. The current roadmap is being discussed in this GitHub issue.

We’ve been busy reworking some of the core functionality of LG to make it more consistent. Specifically, we’ll be introducing a new shortest_paths() function that will be the user front-end to any shortest-path algorithm we currently have. Instead of writing dijkstra_shortest_paths(g, 1), you’ll write shortest_paths(g, 1, Dijkstra()). I’ll bet you can guess the proper syntax for the rest of them :slight_smile:, but there are some clever tricks we can perform as a result of this new syntax (take a look at the new BFS shortest paths code for an example of how we can allow users to tailor the execution of the code while providing sane defaults).

In addition, we have new flexible ways of traversing graphs. Given the improvements in passing functions as arguments (and inlining things), we felt comfortable enough reintroducing visitor functions into our BFS and DFS traversal code. This gives us a flexible but consistent way of providing traversal functionality to other developers with little to no decrease in performance. This change is intended to be transparent to users, but will make traversal code a lot easier for other developers to write, and will allow us to do things like improving all traversals simultaneously by improving the core traversal code in a single place.

Finally, we’re looking at other families of functions to provide with a consistent user-facing call interface. The various centrality measures are next on our list.

In keeping with Semantic Versioning, none of these changes will be breaking until 2.0, though you will see some deprecation notices starting in master/1.4.0 if you’re currently using an affected function/method. Please help us by testing and providing feedback via GitHub issues.

If you want to try the new shortest paths and traversal code now, update to 1.3.1 and navigate to the LightGraphs.Experimental.ShortestPaths / LightGraphs.Experimental.Traversals submodules. Again, over the next few weeks, we’ll be moving these out from under Experimental to the main LightGraphs module and will be deprecating the old syntax.

As always, thanks for your support.

Seth, on behalf of the LG / JuliaGraphs team.

PS: our JSoC/GSoC page has been updated and streamlined to reflect our current priorities. If you are (or anyone you know is) interested in working on LightGraphs this summer as a GSoC student, please get in touch. Mentors are standing by :slight_smile:.