Changes in version 1.0.0 (2026-09-30) This release fixes a number of bugs found in a code review. Some fixes change results, notably dyad_census_attr(), triad_census_attr() (030C orientations), graph_cor() (diagonal now excluded by default) and sample_lfr() (now uses R's random number generator). - dyad_census_attr() fixed: asymmetric dyads were dropped when a group pair had edges in one direction only, and within-group asymmetric dyads were always reported as 0. Named vertices returned all zeros and graphs without edges errored. Within-group rows now report the total asymmetric count in asym_ab and NA in asym_ba. Multiple edges and loops are ignored. - dyad_census_attr() and triad_census_attr() now validate that the vertex attribute holds positive integers without missing values. - triad_census_attr() rewritten: it now runs in roughly O(m * max degree) instead of O(n^3), e.g. seconds instead of hours for thousands of nodes. - triad_census_attr() fixed: the two orientations of cyclic triads (030C) with three distinct attributes were merged into T030C-abc; T030C-cba is now counted correctly. With more than nine attribute values, names are separated by dots (T030C-1.2.10) to avoid ambiguous labels. Multiple edges and loops are ignored. - dropped the RcppArmadillo dependency. - str.igraph() no longer fails for graphs with a single edge and only appends "..." to truncated attributes. - bipartite_from_data_frame() now handles numeric and factor columns (they were used as vertex ids or factor codes), and merging multiple edges no longer fails with non-numeric edge attributes. - structural_equivalence() now works with multiple edges and no longer needs memory quadratic in the number of vertices. - sample_coreseq() now rejects impossible coreness sequences (a k-core needs at least k + 1 nodes) and invalid input. - graph_cartesian() and graph_direct() keep vertex pairs without edges, and are vectorized. - as_adj_list1() now returns all neighbors of directed graphs, as documented (it returned only out-neighbors). - graph_cor() now excludes the diagonal by default, the standard definition of graph correlation. Use diag = TRUE for the previous behavior. For igraph objects, the new attr argument selects an edge attribute as weights. - graph_kpartite() now uses igraph::make_full_multipartite(), errors if the partition sizes do not sum to n and stores the partition in the vertex attribute type. The documentation now correctly says it creates a complete k-partite graph. - graph_from_multi_edgelist() stores the weight column as edge attribute weight, so the graphs are weighted, and validates it. - split_graph() validates core. - as_adj_weighted(), as_multi_adj(), graph_cor() and core_periphery() work with the upcoming igraph 3.0.0 and keep using unweighted adjacency matrices unless an edge attribute is given. - removed the internal, unexported fast_cliques(). - requires igraph >= 2.3.0. - sample_pa_homophilic() is faster, validates its input and has working examples; results for a given seed are unchanged. - core_periphery(method = "SA") now actually runs the GA method as announced in its deprecation warning (it returned nothing before). - sample_lfr() now uses R's random number generator, so results are reproducible with set.seed() (before, set.seed() had no effect). - sample_lfr() with overlapping nodes (on > 0) now works (it errored before): V(g)$membership holds the first community of each vertex and the new list attribute V(g)$memberships holds all communities of each vertex. - sample_lfr() now reports invalid parameter combinations detected by the generator as informative R errors instead of "negative length vectors are not allowed", validates on, om, min_community and max_community, and is silent unless the new verbose = TRUE is set. It warns if the degree sequence had to be changed. - sample_lfr() can be interrupted and no longer risks endless loops when rewiring links. Unused C++ code of the LFR generator was removed. Changes in version 0.8.6 (2026-06-12) - modernized remaining deprecated igraph calls - internal refactoring to reduce code duplication - added tests for str.igraph Changes in version 0.8.5 (2026-04-14) - fix igraph deprecations Changes in version 0.8.4 (2026-01-24) - fixed M1mac issues Changes in version 0.8.3 (2024-10-10) - added more tests #14 - require igraph 2.0.0 Changes in version 0.8.2 (2023-06-29) - refactored sample_lfr() in C++ (#9) Changes in version 0.8.1 (2022-12-19) - fixed a bug that prevented str.igraph from working (#10) Changes in version 0.8.0 (2022-10-08) - added reciprocity_cor() - fixed wrong str print (#5) - switched from Simulated Annealing to Genetic Algorithm (#4) - added more tests - added sample_lfr() (#9) Changes in version 0.7.0 (2022-08-27) - fixed documentation - removed unfinished functions - added examples Changes in version 0.6.0.9000 added sample_pa_homophilic() Changes in version 0.5.0.9000 - renamed package to netUtils - added bipartite_from_data_frame() - added graph_from_multi_edgelist() and as_multi_adj() - added structural_equivalence() - added core_periphery() - added sample_coreseq() - added tests - added graph products graph_cartesian() and graph_direct() - added fast max clique routine fast_cliques() Changes in version 0.1.0 - Added as_adj_list1() and as_adj_weighted() - Added clique_vertex_mat()