C/igraph 0.9.1

C/igraph 0.9.1, the first bugfix release of the 0.9 series, has arrived.

The source can be obtained from the GitHub releases page.

This release includes bug fixes only, apart from a minor addition concerning lexicographic ordering of vectors. The changelog is below.

Added

  • igraph_vector_lex_cmp() and igrapg_vector_colex_cmp() for lexicographic
    and colexicographic comparison of vectors. These functions may also be used
    for sorting.

Changed

  • igraph_community_multilevel() is now randomized (PR #1696, thanks to Daniel Noom).

Fixed

  • CMake settings that controlled the library installation directory name, such as CMAKE_INSTALL_LIBDIR, were not respected.
  • Under some conditions, the generated pkg-config file contained an incorrect include directory path.
  • The following functions were not exported from the shared library: igraph_subcomponent(), igraph_stack_ptr_free_all(), igraph_stack_ptr_destroy_all(), igraph_status_handler_stderr(), igraph_progress_handler_stderr().
  • Built-in random number generators (igraph_rngtype_mt19937, igraph_rngtype_rand, igraph_rngtype_glibc2) were not exported from the shared library.
  • igraph_layout_graphopt() no longer rounds the spring_length parameter to an integer.
  • igraph_get_all_shortest_paths_dijkstra() no longer modifies the res vector’s item destructor.
  • igraph_get_shortest_path_bellman_ford() did not work correctly when calculating paths to all vertices.
  • igraph_arpack_rnsolve() checks its parameters more carefully.
  • igraph_community_to_membership() does not crash anymore when csize is requested but membership is not.
  • igraph_citing_cited_type_game(): fixed memory leaks (PR #1700, thanks to Daniel Noom).
  • igraph_transitivity_undirected(), igraph_transitivity_avglocal_undirected() and igraph_transitivity_barrat() no longer trigger an assertion failure when used with the null graph (PRs #1709, #1710).
  • igraph_(personalized_)pagerank() would return incorrect results for weighted multigraphs with fewer than 128 vertices when using IGRAPH_PAGERANK_ALGO_PRPACK.
  • igraph_diversity() now checks its input more carefully, and throws an error when the input graph has multi-edges or is directed.
  • igraph_shortest_paths_johnson() would return incorrect results when the to argument differed from from (thanks to Daniel Noom).
  • igraph_is_graphical() would fail to set the result variable for certain special degree sequences in the undirected simple graph case.
  • Non-maximal clique finding functions would sometimes return incomplete results when finding more than 2147483647 (i.e. 2^31 - 1) cliques.
  • GLPK internal errors no longer crash igraph.
  • Fixed some potential memory leaks that could happen on error conditions or when certain functions were interrupted.
  • When testing a DLL build on Windows, the PATH was sometimes not set correctly, causing the tests to fail (PR #1692).
  • When compiling from the git repository (as opposed to the release tarball), the build would fail with recent versions of bison and flex.

Other

  • Documentation improvements.
  • Much faster documentation builds.
  • Allow using a pre-generated arith.h header for f2c when cross-compiling; see the Installation section of the documentation.
  • The IGRAPH_ENABLE_LTO build option now supports the AUTO value, which uses LTO only if the compiler supports it. Warning: CMake may not always be able to detect that LTO is not fully supported. Therefore, the default setting is OFF.
  • The following functions are now interruptible: igraph_grg_game(), igraph_sbm_game(), igraph_barabasi_game(), igraph_barabasi_aging_game().
  • Functions that use GLPK, such as igraph_feedback_arc_set() and igraph_community_optimal_modularity() are now interruptible.
  • Add support for older versions of Clang that do not recognize the -Wno-varargs flag.

Acknowledgments

  • Big thanks to Daniel Noom for continuing to expand the test suite and discovering and fixing several bugs in the process!