igraph 0.10.0-rc.2, the second release candidate of igraph 0.10.0 is now available for download. We decided to go for a release candidate because there are lots of breaking changes in igraph 0.10.0 compared to previous versions, and we would like to gather some feedback from the community before going forward.
Since this version is a release candidate only, there is no official tarball on the igraph.org homepage - you need to get the tarball from the Github releases page instead. Here is a direct link to the tarball – note that you will need to download the asset named
igraph-0.10.0-rc.2.tar.gz as the link titled “Source code” is simply a snapshot of the Github repository.
This release focuses on infrastructural improvements, stability, and making the igraph interface more consistent, more predictable and easier to use. It contains many API-breaking changes and function renamings, in preparation for a future 1.0 release, at which point the API will become stable. Changes in this direction are likely to continue through a 0.11 release. It is recommended that you migrate your code from 0.9 to 0.10 soon, to make the eventual transition to 1.0 easier.
Some of the highlights are:
A consistent use of
igraph_integer_tfor all indices and most integer quantities, both in the API and internally. This type is 64-bit by default on all 64-bit systems, bringing support for very large graphs with more than 2 billion vertices. Previously, vertex and edge indices were often represented as
igraph_real_t. The move to an
igraph_integer_talso implies a change from
igraph_vector_int_tin many functions.
The random number generation framework has been overhauled. Sampling from the full range of
igraph_integer_tis now possible. Similarly, the sampling of random reals has been improved to utilize almost the full range of the mantissa of an
There is a new fully memory-managed container type for lists of vectors (
igraph_vector_list_t), replacing most previous uses of the non-managed
igraph_vector_ptr_t. Functions that previously used
igraph_vector_ptr_tto return results and relied on the user to manage memory appropriately are now using
igraph_graph_list_tor similar and manage memory on their own.
File format readers are much more robust and more tolerant of invalid input.
igraph is much more resilient to overflow errors.
Many improvements to robustness and reliability, made possible by internal refactorings.
As there are numerous breaking changes in this release, please read the changelog (
CHANGELOG.md) carefully and pay special attention to the “Breaking changes” section.
For those who have been following the release candidates already, a short summary of the changes between 0.10.0-rc.1 and 0.10.0-rc.2 is as follows:
igraph_integer_tfor its output arguments, and it no longer returns -1 when overflow occurs.
igraph_real_tas the return value so we can return infinity for graphs with no cycles (instead of zero).
igraph_sparsemat_is_symmetric()now returns an error code and the result itself is provided in an output argument.
Documentation updates and build infrastructure fixes.
Feel free to post additional questions regarding the breaking changes under this release notice, or open new topics in the discussion board if you feel that your question deserves a topic on its own.