About igraph releases and other things

C/igraph 0.10.3, the third bugfix release of the 0.10 series, has arrived.

The source can be obtained from the GitHub releases page.

This release adds support for generating triangular and hexagonal lattices, constructing trees from a “parent” vector, and retrieving the IDs of the edges in the induced subgraph of a vertex set. It also refines the experimental API of the UMAP layout function, fixes a few bugs and improves the documentation.

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

`igraph_matrix_init_array()`

to initialize an igraph matrix by copying an existing C array in column-major or row-major order.`igraph_layout_umap_compute_weights()`

computes weights for the UMAP layout algorithm from distances. This used to be part of`igraph_layout_umap()`

, but it is now in a separate function to allow the user to experiment with different weighting schemes.`igraph_triangular_lattice()`

to generate triangular lattices of various kinds.`igraph_hexagonal_lattice()`

to generate hexagonal lattices of various kinds.`igraph_tree_from_parent_vector()`

to create a tree or a forest from a parent vector (i.e. a vector that encodes the parent vertex of each vertex).`igraph_induced_subgraph_edges()`

produces the IDs of edges contained within a subgraph induced by the given vertices.

- The signature of the experimental
`igraph_layout_umap()`

function changed; the last argument is now a Boolean that specifies whether distances should already be treated as weights, and the sampling probability argument was removed.

`igraph_transitivity_barrat()`

,`igraph_community_fluid_communities()`

,`igraph_sir()`

,`igraph_trussness()`

and graphlet functions did not correctly detect when a directed input graph had effective multi-edges due to ignoring edge directions. Such graphs are now rejected by these functions.- Fixed a bug in
`igraph_2dgrid_move()`

that sometimes crashed the Large Graph Layout function when a grid cell became empty. `igraph_pagerank()`

and`igraph_personalized_pagerank()`

would fail to converge when the ARPACK implementation was used and a vertex had more than one outgoing edge but all these edges had zero weights.`igraph_pagerank()`

and`igraph_personalized_pagerank()`

no longer allow negative weights. Previously, edges with negative weights were silently ignored when using the PRPACK implementation. The ARPACK implementation would issue a warning saying that they are ignored, but in fact it computed an incorrect result.`igraph_all_st_cuts()`

and`igraph_all_st_mincuts()`

no longer trigger the “Finally stack too large” fatal error when called on certain large graphs. This was a regression in igraph 0.10.`igraph_community_label_propagation()`

no longer rounds weights to integers. This was a regression in igraph 0.10.`igraph_read_graph_graphdb()`

does more thorough checks on the input file.`igraph_calloc()`

did not zero-initialize the allocated memory. This is now corrected. Note that the macro`IGRAPH_CALLOC()`

was*not*affected.- Fixed new warnings issued by the Xcode 14.1 toolchain.

`igraph_subgraph_edges()`

is now deprecated to avoid confusion with`igraph_induced_subgraph_edges()`

; its new name is`igraph_subgraph_from_edges()`

. The old name is kept available until at least igraph 0.11.

- Significantly improved performance for
`igraph_matrix_transpose()`

. - Documentation improvements.