C/igraph 0.10.13 is released now, with several new additions, bug fixes and performance improvements. As usual, the source can be obtained from the GitHub releases page.

A summary of changes is below.

### Added

`igraph_bitset_fill()`

sets all elements of a bitset to the same value (experimental function).`igraph_bitset_null()`

clears all elements of a bitset (experimental function).`igraph_bitset_is_all_zero()`

,`igraph_bitset_is_all_one()`

,`igraph_bitset_is_any_zero()`

,`igraph_bitset_is_any_one()`

check if any/all elements of a bitset are zeros/ones (experimental functions).`igraph_chung_lu_game()`

implements the classic Chung-Lu model, as well as a number of its variants (experimental function).`igraph_mean_degree()`

computes the average of vertex degrees (experimental function).`igraph_count_loops()`

counts self-loops in the graph (experimental function).`igraph_is_clique()`

checks if all pairs within a set of vertices are connected (experimental function).`igraph_is_independent_vertex_set()`

checks if no pairs within a set of vertices are connected (experimental function).`igraph_hypercube()`

creates a hypercube graph (experimental function).`igraph_vector_intersection_size_sorted()`

counts elements common to two sorted vectors (experimental function).`igraph_stack_capacity()`

returns the allocated capacity of a stack.`igraph_vector_is_all_finite()`

checks if all elements in a vector are finite (i.e. neither NaN nor Inf).

### Fixed

- Fixed a bug that incorrectly cached that a graph has no multiple edges when
`igraph_init_adjlist()`

was called with`IGRAPH_NO_LOOPS`

and`IGRAPH_NO_MULTIPLE`

and all the multi-edges were loop edges. `igraph_is_forest()`

would fail to set the result variable when testing for a directed forest, and it was already cached that the graph was not an undirected forest.`igraph_hub_and_authority_scores()`

no longer clips negative results to zeros when negative weights are present.- Fixed an assertion failure in
`igraph_realize_bipartite_degree_sequence()`

with some non-graphical degree sequences when requesting simple bipartite graphs. `igraph_static_fitness_game()`

checks the input more carefully, and avoids an infinite loop in rare edge cases, such as when (almost) all fitness scores are zero.`igraph_arpack_rnsolve()`

used the incorrect error message text for some errors. This is now corrected.- Corrected the detection of some MSVC-specific bitset intrinsics during configuration.
- Corrected a bug in the fallback implementation of
`igraph_bitset_countl_zero()`

when`IGRAPH_INTEGER_SIZE`

was set to 32. This fallback implementation was*not*used with GCC, Clang, or MSVC.

### Changed

`igraph_is_graphical()`

and`igraph_is_bigraphical()`

are now linear-time in all cases, and generally several times faster than before (thanks to @gendelpiekel, contributed in #2605).`igraph_erdos_renyi_game_gnp()`

can now generate graphs with more than a hundred million vertices.`igraph_hub_and_authority_scores()`

now warns when negative edge weights are present.`igraph_layout_lgl()`

now uses a BFS tree rooted in the vertex specified as`proot`

to guide the layout. Previously it used an unspecified (arbitrary) spanning tree.- Updated the internal heuristics used by igraph’s ARPACK interface,
`igraph_arpack_rssolve()`

and`igraph_arpack_rnsolve()`

, to improve the robustness of calculations. - Updated the initial vector construction in
`igraph_hub_and_authority_scores()`

,`igraph_eigenvector_centrality()`

and`igraph_(personalized_)pagerank()`

with`IGRAPH_PAGERANK_ALGO_ARPACK`

. This improves the robustness and convergence of calculations.

### Other

- Documentation improvements.
- Reduced the memory usage of several functions by using bitsets instead of Boolean vectors.
`igraph_vector_intersect_sorted()`

has better performance when the input vector sizes are similar.