About igraph releases and other things

C/igraph 0.10.8

C/igraph 0.10.8, the seventh bugfix release of the 0.10 series, has arrived.

The source can be obtained from the GitHub releases page.

This is primarily a maintenance release with bug fixes, but it also adds functions to compute the joint degree matrix, the joint degree distribution and the degree correlation function of graphs as well as a generalized joint distribution of arbitrary vertex categories at the endpoints of edges.

Read on for more details about the changes in version 0.10.8.


  • igraph_joint_degree_matrix() computes the joint degree matrix, i.e. counts connections between vertices of different degrees.
  • igraph_joint_degree_distribution() computes the joint distribution of degrees at either end of edges.
  • igraph_joint_type_distribution() computes the joint distribution of vertex categories at either end of edges, i.e. the mixing matrix.
  • igraph_degree_correlation_vector() computes the degree correlation function and its various directed generalizations.


  • The behaviour of the Pajek format reader and writer is now more closely aligned with the Pajek software and the reader is more tolerant of input it cannot interpret. Only those vertex and edge parameters are treated as valid which Pajek itself understands, therefore support for size is now dropped, and support for the font edge parameter is added. See for more information. Invalid/unrecognized parameters are now converted to igraph attributes by the reader, but just as before, they are not output by the writer.
  • The Pajek format writer now encodes newline and quotation mark characters in a Pajek-compatible manner (\n and ", respectively).
  • igraph_avg_nearest_neighbor_degree() now supports non-simple graphs.


  • Resolved “ignoring duplicate libraries” warning when building tests with Xcode 15 on macOS.
  • Fixed the handling of duplicate vertex IDs in igraph_induced_subgraph().
  • igraph_vector_which_min() and igraph_vector_which_max() no longer allow zero-length input, which makes them consistent with other similar functions, and was the originally intended behaviour. Passing zero-length input is invalid use and currently triggers an assertion failure.
  • igraph_erdos_renyi_game_gnm() and igraph_erdos_renyi_game_gnp() are now interruptible.
  • igraph_de_bruijn() and igraph_kautz() are now interruptible.
  • igraph_full(), igraph_full_citation(), igraph_full_multipartite() and igraph_turan() are now interruptible.
  • igraph_avg_nearest_neighbor_degree() did not compute knnk correctly in the weighted case.
  • Fixed variadic arguments of invalid types, which could cause incorrect behaviour with igraph_matrix_print(), as well as test suite failures, on some platforms. 32-bit x86 was affected when setting IGRAPH_INTEGER_SIZE to 64.
  • igraph_subisomorphic_lad() now returns a single null map when the pattern is the null graph.
  • igraph_community_spinglass() now checks its parameters more carefully.
  • igraph_similarity_dice_pairs() and igraph_similarity_jaccard_pairs() now validate vertex IDs.
  • igraph_maxflow() now returns an error code if the source and target vertices are the same. It used to get stuck in an infinite loop in earlier versions when the flow argument was non-NULL.