C/igraph 0.10.11 is now released. As usual, the source can be obtained from the GitHub releases page. This release brings a large number of quality enhancements, including many bug fixes and performance improvements. Upgrading is highly recommended for all igraph users.
This will be one of the last—if not the last—releases of the 0.10 series, with igraph 1.0 planned for release early summer this year. Pre-releases will be made available for feedback from the community.
A summary of changes in 0.10.11 is below.
Added
igraph_is_complete()
checks whether there is a connection between all pairs of vertices (experimental function, contributed by Aymeric Agon-Rambosson @aagon in #2510).igraph_join()
creates the join of two graphs (experimental function, contributed by Quinn Buratynski @GanzuraTheConsumer in #2508).
Fixed
- Fixed a corruption of the “finally” stack in
igraph_write_graph_gml()
for certain invalid GML files. - Fixed a memory leak in
igraph_write_graph_lgl()
when vertex names were present but edge weights were not. - Fixed the handling of duplicate edge IDs in
igraph_subgraph_from_edges()
. - Fixed conversion of sparse matrices to dense with
igraph_sparsemat_as_matrix()
when sparse matrix object did not make use of its full allocated capacity. igraph_write_graph_ncol()
andigraph_write_graph_lgl()
now refuse to write vertex names which would result in an invalid file that cannot be read back in.igraph_write_graph_gml()
now ignores graph attributes callededge
ornode
with a warning. Writing these would create an invalid GML file that igraph couldn’t read back.igraph_disjoint_union()
andigraph_disjoint_union_many()
now check for overflow.igraph_read_graph_graphml()
now correctly compares attribute values with certain expected values, meaning that prefixes of valid values ofattr.type
are not accepted anymore.- Empty IDs are not allowed any more in
<key>
tags of GraphML files as this is a violation of the GraphML specification. igraph_is_separator()
andigraph_is_minimal_separator()
now work correctly with disconnected graphs.igraph_linegraph()
now considers self-loops to be self-adjacent in undirected graphs, bringing consistency with how directed graphs were already handled in previous versions.igraph_all_st_mincuts()
now correctly returns all minimum cuts. This also fixes a problem withigraph_minimum_size_separators()
.- Corrected minor error in
igraph_community_label_propagation()
when adding labels to isolated nodes with some fixed labels present. igraph_community_spinglass()
no longer crashes when passing an edgeless graph and an empty weight vector.igraph_rewire()
no longer crashes on graphs with more than three vertices but fewer than two edges.
Changed
igraph_rewire()
on longer throws an error on graphs with fewer than four vertices. These graphs are now returned unchanged, just like other graphs which are the unique realization of their degree sequence.
Other
- Performance:
igraph_is_simple()
now makes more granular use of the cache. - Performance:
igraph_degree()
now makes use of the cache when checking for self-loops. - The performance of
igraph_is_minimal_separator()
was improved. igraph_is_graphical()
now performs graphicality checks for degree sequences of simple directed graphs in linear time, an improvement from the previously used quadratic algorithm (contributed by Arnar Bjarni Arnarson @Tagl in #2537).- Documentation improvements.