I am very pleased to announce the release of version 0.8.0 of LightGraphs.jl. This release targets Julia v0.6 and contains a few major changes that will benefit most users.
The most visible/practical change is that the integers that represent vertex indices (and the edges that are composed of them) are now abstracted throughout the codebase: that is, it is possible to use any type <:Integer
to represent a vertex index. This allows us to optmize memory, so that a graph based on UInt32
(which can represent graphs up to 2^32 vertices) takes just over half the memory of the old-style graph (which used Int64
on most machines). These graphs also allow for faster computations (for example, we’re seeing a 10-20% speedup in betweenness centrality on UInt32
vs Int64
graphs). The other integer types are similarly supported.
Other changes of note:
- documentation has also been overhauled to be consistent.
- scaffolding is in place to allow different edge types (such as weighted edges). We will be developing a weighted edge type as a proof of concept in the next major release.
There may be a few glitches; please report via the LightGraphs issues page.
Shoutout to all the folks who helped make this happen; in particular, @jpfairbanks, @juliohm, and @tkelman.