C/igraph 0.9.10

C/igraph 0.9.10 is now released.

The source can be obtained from the GitHub releases page, as usual.

This release includes bug fixes and documentation improvements, and it is likely to be the last patch release of the 0.9.x series. Version 0.10.0 will follow soon with lots of breaking changes as we clean up the API in preparation for a future 1.0 release.

If you have a project that currently relies on igraph 0.9, it is advised that you update the project to use 0.9.10 and then start adapting it as soon as possible to support 0.10.0 once it is released.


  • igraph_reverse_edges() reverses the specified edges in the graph while preserving all attributes.


  • The IGRAPH_ARPACK_PROD error code is no longer used. Instead, the specific error encountered while doing matrix multiplication is reported.
  • XML external entities are not resolved any more when parsing GraphML files to prevent XML external entity injection (XXE) attacks. Standard XML entities like < or " still work.


  • Fixed incorrect results from igraph_local_scan_1_ecount() when the graph was directed but the mode was IGRAPH_ALL and some nodes had loop edges. See issue #2092.
  • Fixed incorrect counting of self-loops in igraph_local_scan_neighborhood_ecount() when the graph was undirected.
  • In some rare edge cases, igraph_pagerank() with the ARPACK method and igraph_hub_score() / igraph_authority_score() could return incorrect results. The problem could be detected by checking that the returned eigenvalue is not negative. See issue #2090.
  • igraph_permute_vertices() now checks for out-of-range indices and duplicates in the permutation vector.
  • igraph_create() now checks for non-finite vertex indices in the edges vector.
  • igraph_eigenvector_centrality() would return incorrect scores when some weights were negative.
  • igraph_es_seq() and igraph_ess_seq() did not include the to vertex in the sequence.
  • igraph_eit_create() and igraph_vit_create() now check that all edge/vertex indices are in range when creating iterators from sequence-type selectors.
  • igraph_grg_game() now validates its arguments.
  • igraph_layout_drl() and its 3D version now validate their inputs.
  • igraph_layout_kamada_kawai(), igraph_layout_fruchterman_reingold(), igraph_layout_drl(), as well as their 3D versions now check for non-positive weights.
  • igraph_asymmetric_preference_game() interpreted its type_dist_matrix argument incorrectly.
  • Fixed incorrect result of igraph_community_spinglass() for null and singleton graphs.
  • igraph_layout_gem() does not crash any more for graphs with only a single vertex.
  • igraph_bridges() no longer uses recursion and thus is no longer prone to stack overflow.
  • Include paths of dependent packages would be specified incorrectly in some environments.


  • Documentation improvements.