Skip to content

Commit e917778

Browse files
authored
Merge branch 'master' into 431-is_chordal-algorithm
2 parents 6145de1 + e4194c0 commit e917778

27 files changed

Lines changed: 1259 additions & 172 deletions

.github/workflows/ci-pre.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ jobs:
2626
- uses: julia-actions/setup-julia@v2
2727
with:
2828
version: pre
29-
- uses: julia-actions/cache@v2
29+
- uses: julia-actions/cache@v3
3030
- run: sed -i '/JET/d' test/Project.toml
3131
- uses: julia-actions/julia-buildpkg@v1
3232
- uses: julia-actions/julia-runtest@v1
3333
- uses: julia-actions/julia-processcoverage@v1
34-
- uses: codecov/codecov-action@v5
34+
- uses: codecov/codecov-action@v6
3535
with:
3636
files: lcov.info
3737
token: ${{ secrets.CODECOV_TOKEN }}

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ jobs:
3636
- uses: julia-actions/setup-julia@v2
3737
with:
3838
version: ${{ matrix.version }}
39-
- uses: julia-actions/cache@v2
39+
- uses: julia-actions/cache@v3
4040
- uses: julia-actions/julia-buildpkg@v1
4141
- uses: julia-actions/julia-runtest@v1
4242
- uses: julia-actions/julia-processcoverage@v1
43-
- uses: codecov/codecov-action@v5
43+
- uses: codecov/codecov-action@v6
4444
with:
4545
files: lcov.info
4646
token: ${{ secrets.CODECOV_TOKEN }}

.github/workflows/downgrade.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ jobs:
2525
with:
2626
skip: Pkg,TOML,InteractiveUtils,Random,LinearAlgebra
2727
julia_version: ${{ matrix.version }}
28-
- uses: julia-actions/cache@v2
28+
- uses: julia-actions/cache@v3
2929
- uses: julia-actions/julia-buildpkg@v1
3030
- uses: julia-actions/julia-runtest@v1

CHANGELOG.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
# News
22

3-
## dev - unreleased
3+
We follow SemVer as most of the Julia ecosystem. Below you might see the "breaking" label even for minor version bumps -- we use it a bit more loosely to denote things that are not breaking by SemVer's definition but might cause breakage to people using internal or experimental APIs or undocumented implementation details.
4+
5+
## unreleased
6+
7+
- `is_articulation(g, v)` for checking whether a single vertex is an articulation point
8+
- The iFUB algorithm is used for faster diameter calculation and now supports weighted graph diameter calculation
9+
10+
## v1.14.0 - 2026-02-26
11+
- **(breaking)** `neighbors`, `inneighbors`, and `outneighbors` now return an immutable `FrozenVector` instead of `Vector`
412
- Louvain community detection algorithm
513
- Graph views: `ReverseView` and `UndirectedView` for directed graphs
614
- New graph products: `strong_product`, `disjunctive_product`, `lexicographic_product`, `homomorphic_product`
715
- `maximum_clique`, `clique_number`, `maximal_independent_sets`, `maximum_independent_set`, `independence_number`
816
- `regular_tree` generator
917
- `kruskal_mst` now accepts weight vectors
18+
- `is_planar` planarity test and `planar_maximally_filtered_graph` (PMFG) algorithm
1019
- `count_connected_components` for efficiently counting connected components without materializing them
1120
- `connected_components!` is now exported and accepts an optional `search_queue` argument to reduce allocations
1221
- `is_connected` optimized to avoid allocating component vectors

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "Graphs"
22
uuid = "86223c79-3864-5bf0-83f7-82e725a168b6"
3-
version = "1.13.4"
3+
version = "1.14.0"
44

55
[deps]
66
ArnoldiMethod = "ec485272-7323-5ecc-a04f-4719b315124d"

benchmark/benchmarks.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ serialbenchmarks = [
1616
"serial/core.jl",
1717
"serial/connectivity.jl",
1818
"serial/centrality.jl",
19+
"serial/distance.jl",
1920
"serial/edges.jl",
2021
"serial/insertions.jl",
2122
"serial/traversals.jl",

benchmark/serial/distance.jl

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
SUITE["distance"] = BenchmarkGroup()
2+
3+
let
4+
n_bench = 300
5+
6+
symmetric_weights(n) = (W=rand(n, n); (W + W') / 2)
7+
8+
# Erdős-Rényi Setup
9+
p = 10 / n_bench
10+
g_er = erdos_renyi(n_bench, p)
11+
while !is_connected(g_er)
12+
g_er = erdos_renyi(n_bench, p)
13+
end
14+
distmx_er = symmetric_weights(n_bench)
15+
16+
# Barabási-Albert Setup
17+
g_ba = barabasi_albert(n_bench, 5)
18+
while !is_connected(g_ba)
19+
g_ba = barabasi_albert(n_bench, 5)
20+
end
21+
distmx_ba = symmetric_weights(n_bench)
22+
23+
SUITE["distance"]["weighted_diameter"] = BenchmarkGroup()
24+
25+
# Erdős-Rényi
26+
SUITE["distance"]["weighted_diameter"]["erdos_renyi_optimized"] = @benchmarkable diameter(
27+
$g_er, $distmx_er
28+
)
29+
30+
SUITE["distance"]["weighted_diameter"]["erdos_renyi_naive"] = @benchmarkable maximum(
31+
eccentricity($g_er, vertices($g_er), $distmx_er)
32+
)
33+
34+
# Barabási-Albert
35+
SUITE["distance"]["weighted_diameter"]["barabasi_albert_optimized"] = @benchmarkable diameter(
36+
$g_ba, $distmx_ba
37+
)
38+
39+
SUITE["distance"]["weighted_diameter"]["barabasi_albert_naive"] = @benchmarkable maximum(
40+
eccentricity($g_ba, vertices($g_ba), $distmx_ba)
41+
)
42+
end

docs/Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
[deps]
22
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
33
Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"
4+
IGraphs = "647e90d3-2106-487c-adb4-c91fc07b96ea"
5+
NautyGraphs = "7509a0a4-015a-4167-b44b-0799a1a2605e"
46

57
[compat]
68
Documenter = "1"

docs/make.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using Documenter
22
using Graphs
3+
using IGraphs: IGraphs
4+
using NautyGraphs: NautyGraphs
35

46
# same for contributing and license
57
cp(
@@ -40,7 +42,11 @@ pages_files = [
4042
"first_steps/plotting.md",
4143
"first_steps/persistence.md",
4244
],
43-
"Ecosystem" => ["ecosystem/graphtypes.md", "ecosystem/interface.md"],
45+
"Ecosystem" => [
46+
"ecosystem/graphtypes.md",
47+
"ecosystem/graphalgorithms.md",
48+
"ecosystem/interface.md",
49+
],
4450
"Core API" => [
4551
"core_functions/core.md",
4652
"core_functions/interface.md",

docs/src/algorithms/spanningtrees.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ Pages = [
1616
"spanningtrees/boruvka.jl",
1717
"spanningtrees/kruskal.jl",
1818
"spanningtrees/prim.jl",
19+
"planarity.jl",
20+
"spanningtrees/planar_maximally_filtered_graph.jl",
1921
]
2022
2123
```

0 commit comments

Comments
 (0)