News

About igraph releases and other things

The igraph R package crossed the 2.0 threshold!

We’re thrilled to announce that igraph 2.0 has been released! In this post, we highlight the most important changes.

The R package is now in sync with the C core

This major release brings development in line with the igraph C library. Version 1.6.0 of the R package used version 0.9.10 of the C core. The changes in the 0.10 series of the C core are now taken up in version 2.0 of the R package. Having the R package use the latest version of the C core was a huge undertaking, and is a great milestone which makes the many improvements from version 0.10 of the C core available to R users.

Improvements made in the C core will be made available more easily in functions in the R package. See the complete changelog of the C core. While we tried to maintain compatibility with version 1.6.0 of the R interface, it wasn’t always possible. Refer to the “Breaking changes” sections in the changelog of the R package (breaking changes section). If you maintain a package that depends on igraph, you may have heard from us.

The move to version 0.10 of C/igraph brings many quality improvements, including support for graphs with billions of vertices and edges on 64-bit computers, much more stringent error checking, as well as lots of improvements to robustness, reliability and mathematical consistency across functions.

Future work will aim at further automating the generation of R code from C code, making improved C core functionality more quickly available to R users. Additionally, we plan to expose more C core functions, since not all functions are available to R users just yet.

Improvements to the documentation

The igraph R package now has a website, generated with the popular pkgdown R package, that is to say, a website that has a predictable structure and that includes a search functionality. The website now features an introductory vignette contributed by Adrian Diaz and Fabio Zanini in both English and Spanish.

Towards a more explicit lifecycle

We are in the middle of efforts aimed at making the lifecycle of functions more explicit so that you might know what function is deprecated, and which function is more experimental. For instance, we will slowly be removing most “dotted-names functions”, like add.edges() that is now add_edges(), although both versions currently still work. The is_biconnected() function is an example of an experimental function, that is to say, a C function that was just exposed.

Conclusion

We’d be thankful to hear from you if you experience any difficulty with the new release. Please cast us a line (and a reprex!) in the issue tracker. For further feedback, please use igraph’s discussion forum. Do not hesitate to share about the release… in your networks. 😉

Acknowledgements

Thanks a ton to all the contributors who helped us craft the new igraph package: @a-lambda, @Antonov548, @barracuda156, @bebejhun, @bockthom, @brooksambrose, @CdeMills, @clpippel, @csqsiew, @dmurdoch, @Flu09, @Ganson2018, @gherrarte, @gwfs521, @jefferis, @jeroen, @jessijessi, @joshua-zh, @kalibera, @knwng, @krlmlr, @Lighter-k, @louisaslett, @lptolik, @lufuhao, @maelle, @maksymiuks, @Matyasch, @mfansler, @ngmaclaren, @noriakis, @reuning, @ntamas, @snowGlint, @stephenashton-dhsc, @szhorvat, @tdhock, @vtraag, @xinguo1236, and @Zhaoju-Deng.