From 8f3ab7649e0b67056892be2c13e0495348c31d2a Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Sun, 4 May 2025 14:38:13 +0530 Subject: [PATCH 01/12] Prune old LA based on ENV variable --- .ci/run_tests.jl | 5 ++--- test/abstractq.jl | 3 ++- test/addmul.jl | 3 ++- test/adjtrans.jl | 3 ++- test/bidiag.jl | 3 ++- test/bitarray.jl | 9 ++++++++- test/blas.jl | 3 ++- test/bunchkaufman.jl | 3 ++- test/cholesky.jl | 3 ++- test/dense.jl | 3 ++- test/diagonal.jl | 3 ++- test/eigen.jl | 3 ++- test/factorization.jl | 3 ++- test/generic.jl | 3 ++- test/givens.jl | 3 ++- test/hessenberg.jl | 3 ++- test/lapack.jl | 3 ++- test/ldlt.jl | 3 ++- test/lq.jl | 3 ++- test/lu.jl | 3 ++- test/matmul.jl | 3 ++- test/pinv.jl | 3 ++- test/qr.jl | 3 ++- test/runtests.jl | 3 ++- test/schur.jl | 3 ++- test/special.jl | 3 ++- test/structuredbroadcast.jl | 3 ++- test/svd.jl | 3 ++- test/symmetric.jl | 3 ++- test/symmetriceigen.jl | 3 ++- test/triangular.jl | 3 ++- test/triangular2.jl | 3 ++- test/triangular3.jl | 3 ++- test/tridiag.jl | 3 ++- test/uniformscaling.jl | 3 ++- test/unitful.jl | 3 ++- 36 files changed, 78 insertions(+), 38 deletions(-) diff --git a/.ci/run_tests.jl b/.ci/run_tests.jl index 8a54ef62..879b73b1 100644 --- a/.ci/run_tests.jl +++ b/.ci/run_tests.jl @@ -6,6 +6,5 @@ end proj = abspath(joinpath(@__DIR__, "..")) cmd = """Base.runtests(["LinearAlgebra"]; propagate_project=true, ncores=$ncores)""" -withenv("JULIA_NUM_THREADS" => 1) do - run(`$(Base.julia_cmd()) --project=$proj --compiled-modules=existing -e $cmd`) -end +run(addenv(`$(Base.julia_cmd()) --project=$proj --compiled-modules=existing -e $cmd`, + "JULIA_NUM_THREADS" => 1, "JULIA_PRUNE_OLD_LA" => true)) diff --git a/test/abstractq.jl b/test/abstractq.jl index ff1499ae..d59d1b39 100644 --- a/test/abstractq.jl +++ b/test/abstractq.jl @@ -2,7 +2,8 @@ module TestAbstractQ -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test using LinearAlgebra diff --git a/test/addmul.jl b/test/addmul.jl index f6b49d4e..803f72c9 100644 --- a/test/addmul.jl +++ b/test/addmul.jl @@ -2,7 +2,8 @@ module TestAddmul -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Base: rtoldefault using Test diff --git a/test/adjtrans.jl b/test/adjtrans.jl index 975e9a44..e5594468 100644 --- a/test/adjtrans.jl +++ b/test/adjtrans.jl @@ -2,7 +2,8 @@ module TestAdjointTranspose -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra diff --git a/test/bidiag.jl b/test/bidiag.jl index 209fb024..639e38ac 100644 --- a/test/bidiag.jl +++ b/test/bidiag.jl @@ -2,7 +2,8 @@ module TestBidiagonal -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasReal, BlasFloat diff --git a/test/bitarray.jl b/test/bitarray.jl index a185873e..506f961d 100644 --- a/test/bitarray.jl +++ b/test/bitarray.jl @@ -1,4 +1,9 @@ -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +# This file is a part of Julia. License is MIT: https://julialang.org/license + +module BitArray + +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using LinearAlgebra, Test, Random @@ -95,3 +100,5 @@ b2 = bitrand(v1) b1 = bitrand(n1, n1) @check_bit_operation diag(b1) + +end diff --git a/test/blas.jl b/test/blas.jl index b7f4a03a..75bffeb7 100644 --- a/test/blas.jl +++ b/test/blas.jl @@ -2,7 +2,8 @@ module TestBLAS -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasReal, BlasComplex diff --git a/test/bunchkaufman.jl b/test/bunchkaufman.jl index cf4fa488..b87a1264 100644 --- a/test/bunchkaufman.jl +++ b/test/bunchkaufman.jl @@ -2,7 +2,8 @@ module TestBunchKaufman -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted diff --git a/test/cholesky.jl b/test/cholesky.jl index c03ec3f0..5ea1697c 100644 --- a/test/cholesky.jl +++ b/test/cholesky.jl @@ -2,7 +2,8 @@ module TestCholesky -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted, diff --git a/test/dense.jl b/test/dense.jl index 99e0b429..e89ea819 100644 --- a/test/dense.jl +++ b/test/dense.jl @@ -2,7 +2,8 @@ module TestDense -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal diff --git a/test/diagonal.jl b/test/diagonal.jl index 2b7cfd4d..051b77ff 100644 --- a/test/diagonal.jl +++ b/test/diagonal.jl @@ -2,7 +2,8 @@ module TestDiagonal -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasFloat, BlasComplex diff --git a/test/eigen.jl b/test/eigen.jl index 67e58d34..e1544353 100644 --- a/test/eigen.jl +++ b/test/eigen.jl @@ -2,7 +2,8 @@ module TestEigen -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted, UtiAUi! diff --git a/test/factorization.jl b/test/factorization.jl index b215c246..01e6fe68 100644 --- a/test/factorization.jl +++ b/test/factorization.jl @@ -2,7 +2,8 @@ module TestFactorization -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra diff --git a/test/generic.jl b/test/generic.jl index 521beaf4..a2103e83 100644 --- a/test/generic.jl +++ b/test/generic.jl @@ -2,7 +2,8 @@ module TestGeneric -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using Test: GenericArray diff --git a/test/givens.jl b/test/givens.jl index fb09ec4e..c309c933 100644 --- a/test/givens.jl +++ b/test/givens.jl @@ -2,7 +2,8 @@ module TestGivens -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: Givens, Rotation, givensAlgorithm diff --git a/test/hessenberg.jl b/test/hessenberg.jl index 8485c014..b6cd6aa1 100644 --- a/test/hessenberg.jl +++ b/test/hessenberg.jl @@ -2,7 +2,8 @@ module TestHessenberg -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/lapack.jl b/test/lapack.jl index 12ed2145..5cd95c50 100644 --- a/test/lapack.jl +++ b/test/lapack.jl @@ -2,7 +2,8 @@ module TestLAPACK -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasInt diff --git a/test/ldlt.jl b/test/ldlt.jl index 3454ef43..eb15679d 100644 --- a/test/ldlt.jl +++ b/test/ldlt.jl @@ -2,7 +2,8 @@ module TestLDLT -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/lq.jl b/test/lq.jl index 0d55f84f..fa364891 100644 --- a/test/lq.jl +++ b/test/lq.jl @@ -2,7 +2,8 @@ module TestLQ -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, rmul!, lmul! diff --git a/test/lu.jl b/test/lu.jl index ba869032..b496886b 100644 --- a/test/lu.jl +++ b/test/lu.jl @@ -2,7 +2,8 @@ module TestLU -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: ldiv!, BlasReal, BlasInt, BlasFloat, rdiv! diff --git a/test/matmul.jl b/test/matmul.jl index d9635123..9eff42a2 100644 --- a/test/matmul.jl +++ b/test/matmul.jl @@ -2,7 +2,8 @@ module TestMatmul -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Base: rtoldefault using Test, LinearAlgebra, Random diff --git a/test/pinv.jl b/test/pinv.jl index ecee397a..9495e4d8 100644 --- a/test/pinv.jl +++ b/test/pinv.jl @@ -2,7 +2,8 @@ module TestPinv -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/qr.jl b/test/qr.jl index 2b121ca4..f17f1438 100644 --- a/test/qr.jl +++ b/test/qr.jl @@ -2,7 +2,8 @@ module TestQR -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted, rmul!, lmul! diff --git a/test/runtests.jl b/test/runtests.jl index d9539fba..36347e75 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,6 +1,7 @@ # This file is a part of Julia. License is MIT: https://julialang.org/license -include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +prune_old_LA && include("prune_old_LA.jl") using Test, LinearAlgebra diff --git a/test/schur.jl b/test/schur.jl index e0a16b80..8ebf802f 100644 --- a/test/schur.jl +++ b/test/schur.jl @@ -2,7 +2,8 @@ module TestSchur -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted diff --git a/test/special.jl b/test/special.jl index aaad97b3..79926c4f 100644 --- a/test/special.jl +++ b/test/special.jl @@ -2,7 +2,8 @@ module TestSpecial -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: rmul!, BandIndex diff --git a/test/structuredbroadcast.jl b/test/structuredbroadcast.jl index e4930a65..22858d73 100644 --- a/test/structuredbroadcast.jl +++ b/test/structuredbroadcast.jl @@ -2,7 +2,8 @@ module TestStructuredBroadcast -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra diff --git a/test/svd.jl b/test/svd.jl index fdcfcb30..bfd6cbd6 100644 --- a/test/svd.jl +++ b/test/svd.jl @@ -2,7 +2,8 @@ module TestSVD -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted diff --git a/test/symmetric.jl b/test/symmetric.jl index c6b6fdc4..f624b2d2 100644 --- a/test/symmetric.jl +++ b/test/symmetric.jl @@ -2,7 +2,8 @@ module TestSymmetric -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/symmetriceigen.jl b/test/symmetriceigen.jl index 5af72b3a..6d94eaf4 100644 --- a/test/symmetriceigen.jl +++ b/test/symmetriceigen.jl @@ -2,7 +2,8 @@ module TestSymmetricEigen -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra using LinearAlgebra: DivideAndConquer, QRIteration, RobustRepresentations diff --git a/test/triangular.jl b/test/triangular.jl index 642411fe..054e7f9c 100644 --- a/test/triangular.jl +++ b/test/triangular.jl @@ -2,7 +2,8 @@ module TestTriangular -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: errorbounds, transpose!, BandIndex diff --git a/test/triangular2.jl b/test/triangular2.jl index 8740ff8d..cf29b8eb 100644 --- a/test/triangular2.jl +++ b/test/triangular2.jl @@ -2,7 +2,8 @@ module TestTriangularReal -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Random diff --git a/test/triangular3.jl b/test/triangular3.jl index 9a29d681..ba5780e4 100644 --- a/test/triangular3.jl +++ b/test/triangular3.jl @@ -2,7 +2,8 @@ module TestTriangularComplex -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Random diff --git a/test/tridiag.jl b/test/tridiag.jl index 423012c8..4d5455d9 100644 --- a/test/tridiag.jl +++ b/test/tridiag.jl @@ -2,7 +2,8 @@ module TestTridiagonal -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/uniformscaling.jl b/test/uniformscaling.jl index 21bd4b80..8b455b00 100644 --- a/test/uniformscaling.jl +++ b/test/uniformscaling.jl @@ -2,7 +2,8 @@ module TestUniformscaling -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/unitful.jl b/test/unitful.jl index 87c153c2..786f165a 100644 --- a/test/unitful.jl +++ b/test/unitful.jl @@ -1,6 +1,7 @@ module TestUnitfulLinAlg -isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) +!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random From af131e2e9c4bf58e9d40fa903f5079cae764ada9 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Sun, 4 May 2025 14:41:28 +0530 Subject: [PATCH 02/12] Rename BitArray test module --- test/bitarray.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/bitarray.jl b/test/bitarray.jl index 506f961d..93d2a218 100644 --- a/test/bitarray.jl +++ b/test/bitarray.jl @@ -1,6 +1,6 @@ # This file is a part of Julia. License is MIT: https://julialang.org/license -module BitArray +module TestBitArray prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) !isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") From 8b1e5215032535700cc70a0680020bb71dbfd893 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Sun, 4 May 2025 20:55:36 +0530 Subject: [PATCH 03/12] Test commit: unset ENV variable --- .ci/run_tests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/run_tests.jl b/.ci/run_tests.jl index 879b73b1..603c3cf4 100644 --- a/.ci/run_tests.jl +++ b/.ci/run_tests.jl @@ -7,4 +7,4 @@ end proj = abspath(joinpath(@__DIR__, "..")) cmd = """Base.runtests(["LinearAlgebra"]; propagate_project=true, ncores=$ncores)""" run(addenv(`$(Base.julia_cmd()) --project=$proj --compiled-modules=existing -e $cmd`, - "JULIA_NUM_THREADS" => 1, "JULIA_PRUNE_OLD_LA" => true)) + "JULIA_NUM_THREADS" => 1)) From 04359c871262cf4c28331deabc5fd0544913eb05 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Sun, 4 May 2025 21:19:02 +0530 Subject: [PATCH 04/12] Revert "Test commit: unset ENV variable" This reverts commit 8b1e5215032535700cc70a0680020bb71dbfd893. --- .ci/run_tests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/run_tests.jl b/.ci/run_tests.jl index 603c3cf4..879b73b1 100644 --- a/.ci/run_tests.jl +++ b/.ci/run_tests.jl @@ -7,4 +7,4 @@ end proj = abspath(joinpath(@__DIR__, "..")) cmd = """Base.runtests(["LinearAlgebra"]; propagate_project=true, ncores=$ncores)""" run(addenv(`$(Base.julia_cmd()) --project=$proj --compiled-modules=existing -e $cmd`, - "JULIA_NUM_THREADS" => 1)) + "JULIA_NUM_THREADS" => 1, "JULIA_PRUNE_OLD_LA" => true)) From bb18dea5dddc46da542f2b3eeb9dd5a1607336e5 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Mon, 5 May 2025 10:36:51 +0530 Subject: [PATCH 05/12] Revert "Prune old LA based on ENV variable" This reverts commit 8f3ab7649e0b67056892be2c13e0495348c31d2a. --- test/abstractq.jl | 3 +-- test/addmul.jl | 3 +-- test/adjtrans.jl | 3 +-- test/bidiag.jl | 3 +-- test/bitarray.jl | 5 +---- test/blas.jl | 3 +-- test/bunchkaufman.jl | 3 +-- test/cholesky.jl | 3 +-- test/dense.jl | 3 +-- test/diagonal.jl | 3 +-- test/eigen.jl | 3 +-- test/factorization.jl | 3 +-- test/generic.jl | 3 +-- test/givens.jl | 3 +-- test/hessenberg.jl | 3 +-- test/lapack.jl | 3 +-- test/ldlt.jl | 3 +-- test/lq.jl | 3 +-- test/lu.jl | 3 +-- test/matmul.jl | 3 +-- test/pinv.jl | 3 +-- test/prune_old_LA.jl | 4 +++- test/qr.jl | 3 +-- test/runtests.jl | 3 +-- test/schur.jl | 3 +-- test/special.jl | 3 +-- test/structuredbroadcast.jl | 3 +-- test/svd.jl | 3 +-- test/symmetric.jl | 3 +-- test/symmetriceigen.jl | 3 +-- test/triangular.jl | 3 +-- test/triangular2.jl | 3 +-- test/triangular3.jl | 3 +-- test/tridiag.jl | 3 +-- test/uniformscaling.jl | 3 +-- test/unitful.jl | 3 +-- 36 files changed, 38 insertions(+), 73 deletions(-) diff --git a/test/abstractq.jl b/test/abstractq.jl index d59d1b39..ff1499ae 100644 --- a/test/abstractq.jl +++ b/test/abstractq.jl @@ -2,8 +2,7 @@ module TestAbstractQ -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test using LinearAlgebra diff --git a/test/addmul.jl b/test/addmul.jl index 803f72c9..f6b49d4e 100644 --- a/test/addmul.jl +++ b/test/addmul.jl @@ -2,8 +2,7 @@ module TestAddmul -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Base: rtoldefault using Test diff --git a/test/adjtrans.jl b/test/adjtrans.jl index e5594468..975e9a44 100644 --- a/test/adjtrans.jl +++ b/test/adjtrans.jl @@ -2,8 +2,7 @@ module TestAdjointTranspose -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra diff --git a/test/bidiag.jl b/test/bidiag.jl index 639e38ac..209fb024 100644 --- a/test/bidiag.jl +++ b/test/bidiag.jl @@ -2,8 +2,7 @@ module TestBidiagonal -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasReal, BlasFloat diff --git a/test/bitarray.jl b/test/bitarray.jl index 93d2a218..9f5e3ee9 100644 --- a/test/bitarray.jl +++ b/test/bitarray.jl @@ -2,8 +2,7 @@ module TestBitArray -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using LinearAlgebra, Test, Random @@ -100,5 +99,3 @@ b2 = bitrand(v1) b1 = bitrand(n1, n1) @check_bit_operation diag(b1) - -end diff --git a/test/blas.jl b/test/blas.jl index 75bffeb7..b7f4a03a 100644 --- a/test/blas.jl +++ b/test/blas.jl @@ -2,8 +2,7 @@ module TestBLAS -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasReal, BlasComplex diff --git a/test/bunchkaufman.jl b/test/bunchkaufman.jl index b87a1264..cf4fa488 100644 --- a/test/bunchkaufman.jl +++ b/test/bunchkaufman.jl @@ -2,8 +2,7 @@ module TestBunchKaufman -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted diff --git a/test/cholesky.jl b/test/cholesky.jl index 5ea1697c..c03ec3f0 100644 --- a/test/cholesky.jl +++ b/test/cholesky.jl @@ -2,8 +2,7 @@ module TestCholesky -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted, diff --git a/test/dense.jl b/test/dense.jl index e89ea819..99e0b429 100644 --- a/test/dense.jl +++ b/test/dense.jl @@ -2,8 +2,7 @@ module TestDense -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal diff --git a/test/diagonal.jl b/test/diagonal.jl index 051b77ff..2b7cfd4d 100644 --- a/test/diagonal.jl +++ b/test/diagonal.jl @@ -2,8 +2,7 @@ module TestDiagonal -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasFloat, BlasComplex diff --git a/test/eigen.jl b/test/eigen.jl index e1544353..67e58d34 100644 --- a/test/eigen.jl +++ b/test/eigen.jl @@ -2,8 +2,7 @@ module TestEigen -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted, UtiAUi! diff --git a/test/factorization.jl b/test/factorization.jl index 01e6fe68..b215c246 100644 --- a/test/factorization.jl +++ b/test/factorization.jl @@ -2,8 +2,7 @@ module TestFactorization -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra diff --git a/test/generic.jl b/test/generic.jl index a2103e83..521beaf4 100644 --- a/test/generic.jl +++ b/test/generic.jl @@ -2,8 +2,7 @@ module TestGeneric -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using Test: GenericArray diff --git a/test/givens.jl b/test/givens.jl index c309c933..fb09ec4e 100644 --- a/test/givens.jl +++ b/test/givens.jl @@ -2,8 +2,7 @@ module TestGivens -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: Givens, Rotation, givensAlgorithm diff --git a/test/hessenberg.jl b/test/hessenberg.jl index b6cd6aa1..8485c014 100644 --- a/test/hessenberg.jl +++ b/test/hessenberg.jl @@ -2,8 +2,7 @@ module TestHessenberg -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/lapack.jl b/test/lapack.jl index 5cd95c50..12ed2145 100644 --- a/test/lapack.jl +++ b/test/lapack.jl @@ -2,8 +2,7 @@ module TestLAPACK -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasInt diff --git a/test/ldlt.jl b/test/ldlt.jl index eb15679d..3454ef43 100644 --- a/test/ldlt.jl +++ b/test/ldlt.jl @@ -2,8 +2,7 @@ module TestLDLT -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/lq.jl b/test/lq.jl index fa364891..0d55f84f 100644 --- a/test/lq.jl +++ b/test/lq.jl @@ -2,8 +2,7 @@ module TestLQ -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, rmul!, lmul! diff --git a/test/lu.jl b/test/lu.jl index b496886b..ba869032 100644 --- a/test/lu.jl +++ b/test/lu.jl @@ -2,8 +2,7 @@ module TestLU -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: ldiv!, BlasReal, BlasInt, BlasFloat, rdiv! diff --git a/test/matmul.jl b/test/matmul.jl index 9eff42a2..d9635123 100644 --- a/test/matmul.jl +++ b/test/matmul.jl @@ -2,8 +2,7 @@ module TestMatmul -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Base: rtoldefault using Test, LinearAlgebra, Random diff --git a/test/pinv.jl b/test/pinv.jl index 9495e4d8..ecee397a 100644 --- a/test/pinv.jl +++ b/test/pinv.jl @@ -2,8 +2,7 @@ module TestPinv -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/prune_old_LA.jl b/test/prune_old_LA.jl index f628cddf..5fb712f5 100644 --- a/test/prune_old_LA.jl +++ b/test/prune_old_LA.jl @@ -48,9 +48,11 @@ methods_to_delete = :acsch ] +prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) + let LA = get(Base.loaded_modules, Base.PkgId(Base.UUID("37e2e46d-f89d-539d-b4ee-838fcccc9c8e"), "LinearAlgebra"), nothing) - if LA !== nothing + if LA !== nothing && prune_old_LA @assert hasmethod(*, Tuple{Matrix{Float64}, Matrix{Float64}}) for methss in methods_to_delete meths = getglobal(Base, methss) diff --git a/test/qr.jl b/test/qr.jl index f17f1438..2b121ca4 100644 --- a/test/qr.jl +++ b/test/qr.jl @@ -2,8 +2,7 @@ module TestQR -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted, rmul!, lmul! diff --git a/test/runtests.jl b/test/runtests.jl index 36347e75..d9539fba 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,7 +1,6 @@ # This file is a part of Julia. License is MIT: https://julialang.org/license -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -prune_old_LA && include("prune_old_LA.jl") +include("prune_old_LA.jl") using Test, LinearAlgebra diff --git a/test/schur.jl b/test/schur.jl index 8ebf802f..e0a16b80 100644 --- a/test/schur.jl +++ b/test/schur.jl @@ -2,8 +2,7 @@ module TestSchur -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted diff --git a/test/special.jl b/test/special.jl index 79926c4f..aaad97b3 100644 --- a/test/special.jl +++ b/test/special.jl @@ -2,8 +2,7 @@ module TestSpecial -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: rmul!, BandIndex diff --git a/test/structuredbroadcast.jl b/test/structuredbroadcast.jl index 22858d73..e4930a65 100644 --- a/test/structuredbroadcast.jl +++ b/test/structuredbroadcast.jl @@ -2,8 +2,7 @@ module TestStructuredBroadcast -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra diff --git a/test/svd.jl b/test/svd.jl index bfd6cbd6..fdcfcb30 100644 --- a/test/svd.jl +++ b/test/svd.jl @@ -2,8 +2,7 @@ module TestSVD -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: BlasComplex, BlasFloat, BlasReal, QRPivoted diff --git a/test/symmetric.jl b/test/symmetric.jl index f624b2d2..c6b6fdc4 100644 --- a/test/symmetric.jl +++ b/test/symmetric.jl @@ -2,8 +2,7 @@ module TestSymmetric -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/symmetriceigen.jl b/test/symmetriceigen.jl index 6d94eaf4..5af72b3a 100644 --- a/test/symmetriceigen.jl +++ b/test/symmetriceigen.jl @@ -2,8 +2,7 @@ module TestSymmetricEigen -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra using LinearAlgebra: DivideAndConquer, QRIteration, RobustRepresentations diff --git a/test/triangular.jl b/test/triangular.jl index 054e7f9c..642411fe 100644 --- a/test/triangular.jl +++ b/test/triangular.jl @@ -2,8 +2,7 @@ module TestTriangular -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random using LinearAlgebra: errorbounds, transpose!, BandIndex diff --git a/test/triangular2.jl b/test/triangular2.jl index cf29b8eb..8740ff8d 100644 --- a/test/triangular2.jl +++ b/test/triangular2.jl @@ -2,8 +2,7 @@ module TestTriangularReal -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Random diff --git a/test/triangular3.jl b/test/triangular3.jl index ba5780e4..9a29d681 100644 --- a/test/triangular3.jl +++ b/test/triangular3.jl @@ -2,8 +2,7 @@ module TestTriangularComplex -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Random diff --git a/test/tridiag.jl b/test/tridiag.jl index 4d5455d9..423012c8 100644 --- a/test/tridiag.jl +++ b/test/tridiag.jl @@ -2,8 +2,7 @@ module TestTridiagonal -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/uniformscaling.jl b/test/uniformscaling.jl index 8b455b00..21bd4b80 100644 --- a/test/uniformscaling.jl +++ b/test/uniformscaling.jl @@ -2,8 +2,7 @@ module TestUniformscaling -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random diff --git a/test/unitful.jl b/test/unitful.jl index 786f165a..87c153c2 100644 --- a/test/unitful.jl +++ b/test/unitful.jl @@ -1,7 +1,6 @@ module TestUnitfulLinAlg -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) -!isdefined(Main, :pruned_old_LA) && prune_old_LA && @eval Main include("prune_old_LA.jl") +isdefined(Main, :pruned_old_LA) || @eval Main include("prune_old_LA.jl") using Test, LinearAlgebra, Random From 441d49e5968c4a7c170535730cd8de21c986b901 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Mon, 5 May 2025 11:48:01 +0530 Subject: [PATCH 06/12] End `TestBitAray` module --- test/bitarray.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/bitarray.jl b/test/bitarray.jl index 9f5e3ee9..10b9d4b8 100644 --- a/test/bitarray.jl +++ b/test/bitarray.jl @@ -99,3 +99,5 @@ b2 = bitrand(v1) b1 = bitrand(n1, n1) @check_bit_operation diag(b1) + +end # module From c74c541414ebb9839757da8602e0d905de6264ab Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Mon, 5 May 2025 13:53:13 +0530 Subject: [PATCH 07/12] Add env var to docs and update Readme --- README.md | 18 ++++++++++++++++-- docs/make.jl | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a39a7248..bca69d8e 100644 --- a/README.md +++ b/README.md @@ -37,10 +37,24 @@ This package performs some type piracy and is also included in the sysimage, whi To use a development version of this package, you can choose one of the following methods: 1. **Change the UUID in the project file and load the package:** - This approach will produce warnings and may lead to method ambiguities between the development version and the one in the sysimage, but it can be used for basic experimentation. + + Start `julia` as + ```julia + JULIA_PRUNE_OLD_LA=true julia +nightly --compiled-modules=existing --project + ``` + where it is assumed that one is already within the `LinearAlgebra` directory. Otherwise, adjust + the project path accordingly. The `julia +nightly` command above assumes that `juliaup` is being used + to launch `julia`, but one may substitute this with the path to the julia executable. + + Within the `julia` session, load the `LinearAlgebra` module after pruning the one in the sysimage. This may be done as + ```julia + include("test/prune_old_LA.jl") && using LinearAlgebra + ``` 2. **Build Julia with the custom `LinearAlgebra` commit:** - Modify the commit in `stdlib/LinearAlgebra.version` and build Julia. + + Modify the commit in [`stdlib/LinearAlgebra.version`](https://github.com/JuliaLang/julia/blob/master/stdlib/LinearAlgebra.version) and build Julia. This requires one to push the development branch + to `GitHub` or an equivalent platform. 3. **Build a custom sysimage with the new `LinearAlgebra`:** - Install `PackageCompiler`. diff --git a/docs/make.jl b/docs/make.jl index a1d3a2d0..7acd964d 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -1,3 +1,4 @@ +ENV["JULIA_PRUNE_OLD_LA"] = "true" include("../test/prune_old_LA.jl") using LinearAlgebra From 0d965c467a5f866df7c55581a184a0c80f923843 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Mon, 5 May 2025 17:12:06 +0530 Subject: [PATCH 08/12] assert `!hasmethod` if methods pruned --- docs/make.jl | 5 +++-- test/prune_old_LA.jl | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index 7acd964d..b3db7ce7 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -1,5 +1,6 @@ -ENV["JULIA_PRUNE_OLD_LA"] = "true" -include("../test/prune_old_LA.jl") +withenv("JULIA_PRUNE_OLD_LA" => "true") + include("../test/prune_old_LA.jl") +end using LinearAlgebra using Documenter: DocMeta, makedocs, deploydocs, HTML diff --git a/test/prune_old_LA.jl b/test/prune_old_LA.jl index 5fb712f5..aafdebaa 100644 --- a/test/prune_old_LA.jl +++ b/test/prune_old_LA.jl @@ -48,10 +48,11 @@ methods_to_delete = :acsch ] -prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) let - LA = get(Base.loaded_modules, Base.PkgId(Base.UUID("37e2e46d-f89d-539d-b4ee-838fcccc9c8e"), "LinearAlgebra"), nothing) + prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) + LinalgSysImg = Base.PkgId(Base.UUID("37e2e46d-f89d-539d-b4ee-838fcccc9c8e"), "LinearAlgebra") + LA = get(Base.loaded_modules, LinalgSysImg, nothing) if LA !== nothing && prune_old_LA @assert hasmethod(*, Tuple{Matrix{Float64}, Matrix{Float64}}) for methss in methods_to_delete @@ -63,9 +64,17 @@ let end end end - Base.unreference_module(Base.PkgId(Base.UUID("37e2e46d-f89d-539d-b4ee-838fcccc9c8e"), "LinearAlgebra")) end -@assert !hasmethod(*, Tuple{Matrix{Float64}, Matrix{Float64}}) +# check in a separate block to ensure that the latest world age is used +let + prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) + LinalgSysImg = Base.PkgId(Base.UUID("37e2e46d-f89d-539d-b4ee-838fcccc9c8e"), "LinearAlgebra") + LA = get(Base.loaded_modules, LinalgSysImg, nothing) + if LA !== nothing && prune_old_LA + @assert !hasmethod(*, Tuple{Matrix{Float64}, Matrix{Float64}}) + end + Base.unreference_module(LinalgSysImg) +end pruned_old_LA = true From 9ea3e688924d916a02a63b840bd3d569eb416a2b Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Mon, 5 May 2025 17:16:07 +0530 Subject: [PATCH 09/12] Fix `withenv` call within `docs/make.jl` --- docs/make.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index b3db7ce7..0f8b79d9 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -1,4 +1,4 @@ -withenv("JULIA_PRUNE_OLD_LA" => "true") +withenv("JULIA_PRUNE_OLD_LA" => "true") do include("../test/prune_old_LA.jl") end From 451c54f114fdaa4c3b8e33907616f20a56901a24 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Mon, 5 May 2025 17:46:21 +0530 Subject: [PATCH 10/12] Update Readme instructions --- README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bca69d8e..54083f1a 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,9 @@ To use a development version of this package, you can choose one of the followin 1. **Change the UUID in the project file and load the package:** - Start `julia` as - ```julia - JULIA_PRUNE_OLD_LA=true julia +nightly --compiled-modules=existing --project + Start `julia` with the flags + ```console + julia +nightly --compiled-modules=existing --project ``` where it is assumed that one is already within the `LinearAlgebra` directory. Otherwise, adjust the project path accordingly. The `julia +nightly` command above assumes that `juliaup` is being used @@ -48,7 +48,10 @@ To use a development version of this package, you can choose one of the followin Within the `julia` session, load the `LinearAlgebra` module after pruning the one in the sysimage. This may be done as ```julia - include("test/prune_old_LA.jl") && using LinearAlgebra + withenv("JULIA_PRUNE_OLD_LA" => "true") do + include("test/prune_old_LA.jl") + end + using LinearAlgebra ``` 2. **Build Julia with the custom `LinearAlgebra` commit:** From c909365689c32e474013b5a28e6cd7f68d9e3ce2 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Mon, 5 May 2025 18:07:03 +0530 Subject: [PATCH 11/12] Update pruning instruction in Readme --- README.md | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 54083f1a..c0951dcc 100644 --- a/README.md +++ b/README.md @@ -38,20 +38,30 @@ To use a development version of this package, you can choose one of the followin 1. **Change the UUID in the project file and load the package:** - Start `julia` with the flags + Change the UUID line in `Project.toml` as + ```diff + - uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + + uuid = "27e2e46d-f89d-539d-b4ee-838fcccc9c8e" + ``` + + Start `julia` as ```console - julia +nightly --compiled-modules=existing --project + JULIA_PRUNE_OLD_LA=true julia +nightly --compiled-modules=existing --project ``` - where it is assumed that one is already within the `LinearAlgebra` directory. Otherwise, adjust - the project path accordingly. The `julia +nightly` command above assumes that `juliaup` is being used + where it is assumed that one is already within the `LinearAlgebra` directory (otherwise, adjust + the project path accordingly). The `julia +nightly` command above assumes that `juliaup` is being used to launch `julia`, but one may substitute this with the path to the julia executable. Within the `julia` session, load the `LinearAlgebra` module after pruning the one in the sysimage. This may be done as ```julia - withenv("JULIA_PRUNE_OLD_LA" => "true") do - include("test/prune_old_LA.jl") - end - using LinearAlgebra + include("test/prune_old_LA.jl") && using LinearAlgebra + ``` + + Note that loading the test files in the REPL will automatically carry out the pruning to ensure that the development version of the package is used in the tests. + + If you are contributing to the repo using this method, it may be convenient to ignore the local changes to `Project.toml` by running + ```console + git update-index --skip-worktree Project.toml ``` 2. **Build Julia with the custom `LinearAlgebra` commit:** From 34b8d7abe01cd02e2206d45823e999661e4b8ccf Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Tue, 6 May 2025 14:56:12 +0530 Subject: [PATCH 12/12] Unreference `LinearAlgebra` only if env var is true --- test/prune_old_LA.jl | 103 +++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 52 deletions(-) diff --git a/test/prune_old_LA.jl b/test/prune_old_LA.jl index aafdebaa..7e64cfa3 100644 --- a/test/prune_old_LA.jl +++ b/test/prune_old_LA.jl @@ -1,55 +1,54 @@ -methods_to_delete = -[ -:adjoint -:transpose -:inv -:literal_pow -:\ -:/ -:isapprox -:copyto! -:* -:muladd -:copyto! -:isone -:kron! -:kron -:^ -:exp -:cis -:log -:sqrt -:cbrt -:inv -:cos -:sin -:sincos -:tan -:cosh -:sinh -:tanh -:acos -:asin -:atan -:acosh -:asinh -:atanh -:sec -:sech -:csc -:csch -:cot -:coth -:asec -:asech -:acsc -:acot -:acoth -:acsch -] - - let + methods_to_delete = + [ + :adjoint + :transpose + :inv + :literal_pow + :\ + :/ + :isapprox + :copyto! + :* + :muladd + :copyto! + :isone + :kron! + :kron + :^ + :exp + :cis + :log + :sqrt + :cbrt + :inv + :cos + :sin + :sincos + :tan + :cosh + :sinh + :tanh + :acos + :asin + :atan + :acosh + :asinh + :atanh + :sec + :sech + :csc + :csch + :cot + :coth + :asec + :asech + :acsc + :acot + :acoth + :acsch + ] + prune_old_LA = parse(Bool, get(ENV, "JULIA_PRUNE_OLD_LA", "false")) LinalgSysImg = Base.PkgId(Base.UUID("37e2e46d-f89d-539d-b4ee-838fcccc9c8e"), "LinearAlgebra") LA = get(Base.loaded_modules, LinalgSysImg, nothing) @@ -74,7 +73,7 @@ let if LA !== nothing && prune_old_LA @assert !hasmethod(*, Tuple{Matrix{Float64}, Matrix{Float64}}) end - Base.unreference_module(LinalgSysImg) + prune_old_LA && Base.unreference_module(LinalgSysImg) end pruned_old_LA = true