Skip to content

Commit df3fcb0

Browse files
authored
Merge branch 'master' into new-heuristics
2 parents 2cbba34 + 1964621 commit df3fcb0

File tree

140 files changed

+2859
-1533
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

140 files changed

+2859
-1533
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ else ifeq ($(JULIA_BUILD_MODE),debug)
196196
JL_PRIVATE_LIBS-0 += libjulia-internal-debug libjulia-codegen-debug
197197
endif
198198
ifeq ($(USE_GPL_LIBS), 1)
199-
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBSUITESPARSE) += libamd libbtf libcamd libccolamd libcholmod libcolamd libklu libldl librbio libspqr libsuitesparseconfig libumfpack
199+
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBSUITESPARSE) += libamd libbtf libcamd libccolamd libcholmod libcholmod_cuda libcolamd libklu libldl librbio libspqr libspqr_cuda libsuitesparseconfig libumfpack
200200
endif
201201
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBBLASTRAMPOLINE) += libblastrampoline
202202
JL_PRIVATE_LIBS-$(USE_SYSTEM_PCRE) += libpcre2-8

NEWS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,12 @@ Build system changes
2222

2323
New library functions
2424
---------------------
25+
* `copyuntil(out, io, delim)` and `copyline(out, io)` copy data into an `out::IO` stream ([#48273]).
2526

2627
New library features
2728
--------------------
29+
* `replace(string, pattern...)` now supports an optional `IO` argument to
30+
write the output to a stream rather than returning a string ([#48625]).
2831

2932
Standard library changes
3033
------------------------

base/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,11 @@ $(eval $(call symlink_system_library,LIBSUITESPARSE,libamd))
269269
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcamd))
270270
$(eval $(call symlink_system_library,LIBSUITESPARSE,libccolamd))
271271
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcholmod))
272+
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcholmod_cuda))
272273
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcolamd))
273274
$(eval $(call symlink_system_library,LIBSUITESPARSE,libumfpack))
274275
$(eval $(call symlink_system_library,LIBSUITESPARSE,libspqr))
276+
$(eval $(call symlink_system_library,LIBSUITESPARSE,libspqr_cuda))
275277
$(eval $(call symlink_system_library,LIBSUITESPARSE,libsuitesparseconfig))
276278
# EXCLUDED LIBRARIES (installed/used, but not vendored for use with dlopen):
277279
# libunwind

base/abstractarray.jl

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ julia> axes(A)
9595
"""
9696
function axes(A)
9797
@inline
98-
map(oneto, size(A))
98+
map(unchecked_oneto, size(A))
9999
end
100100

101101
"""
@@ -1651,7 +1651,7 @@ function _typed_hcat(::Type{T}, A::AbstractVecOrTuple{AbstractVecOrMat}) where T
16511651
for j = 1:nargs
16521652
Aj = A[j]
16531653
if size(Aj, 1) != nrows
1654-
throw(ArgumentError("number of rows of each array must match (got $(map(x->size(x,1), A)))"))
1654+
throw(DimensionMismatch("number of rows of each array must match (got $(map(x->size(x,1), A)))"))
16551655
end
16561656
dense &= isa(Aj,Array)
16571657
nd = ndims(Aj)
@@ -1686,7 +1686,7 @@ function _typed_vcat(::Type{T}, A::AbstractVecOrTuple{AbstractVecOrMat}) where T
16861686
ncols = size(A[1], 2)
16871687
for j = 2:nargs
16881688
if size(A[j], 2) != ncols
1689-
throw(ArgumentError("number of columns of each array must match (got $(map(x->size(x,2), A)))"))
1689+
throw(DimensionMismatch("number of columns of each array must match (got $(map(x->size(x,2), A)))"))
16901690
end
16911691
end
16921692
B = similar(A[1], T, nrows, ncols)
@@ -1984,16 +1984,14 @@ julia> cat(1, [2], [3;;]; dims=Val(2))
19841984

19851985
# The specializations for 1 and 2 inputs are important
19861986
# especially when running with --inline=no, see #11158
1987-
# The specializations for Union{AbstractVecOrMat,Number} are necessary
1988-
# to have more specialized methods here than in LinearAlgebra/uniformscaling.jl
19891987
vcat(A::AbstractArray) = cat(A; dims=Val(1))
19901988
vcat(A::AbstractArray, B::AbstractArray) = cat(A, B; dims=Val(1))
19911989
vcat(A::AbstractArray...) = cat(A...; dims=Val(1))
1992-
vcat(A::Union{AbstractVecOrMat,Number}...) = cat(A...; dims=Val(1))
1990+
vcat(A::Union{AbstractArray,Number}...) = cat(A...; dims=Val(1))
19931991
hcat(A::AbstractArray) = cat(A; dims=Val(2))
19941992
hcat(A::AbstractArray, B::AbstractArray) = cat(A, B; dims=Val(2))
19951993
hcat(A::AbstractArray...) = cat(A...; dims=Val(2))
1996-
hcat(A::Union{AbstractVecOrMat,Number}...) = cat(A...; dims=Val(2))
1994+
hcat(A::Union{AbstractArray,Number}...) = cat(A...; dims=Val(2))
19971995

19981996
typed_vcat(T::Type, A::AbstractArray) = _cat_t(Val(1), T, A)
19991997
typed_vcat(T::Type, A::AbstractArray, B::AbstractArray) = _cat_t(Val(1), T, A, B)
@@ -2055,8 +2053,8 @@ julia> hvcat((2,2,2), a,b,c,d,e,f) == hvcat(2, a,b,c,d,e,f)
20552053
true
20562054
```
20572055
"""
2058-
hvcat(rows::Tuple{Vararg{Int}}, xs::AbstractVecOrMat...) = typed_hvcat(promote_eltype(xs...), rows, xs...)
2059-
hvcat(rows::Tuple{Vararg{Int}}, xs::AbstractVecOrMat{T}...) where {T} = typed_hvcat(T, rows, xs...)
2056+
hvcat(rows::Tuple{Vararg{Int}}, xs::AbstractArray...) = typed_hvcat(promote_eltype(xs...), rows, xs...)
2057+
hvcat(rows::Tuple{Vararg{Int}}, xs::AbstractArray{T}...) where {T} = typed_hvcat(T, rows, xs...)
20602058

20612059
function typed_hvcat(::Type{T}, rows::Tuple{Vararg{Int}}, as::AbstractVecOrMat...) where T
20622060
nbr = length(rows) # number of block rows
@@ -2084,16 +2082,16 @@ function typed_hvcat(::Type{T}, rows::Tuple{Vararg{Int}}, as::AbstractVecOrMat..
20842082
Aj = as[a+j-1]
20852083
szj = size(Aj,2)
20862084
if size(Aj,1) != szi
2087-
throw(ArgumentError("mismatched height in block row $(i) (expected $szi, got $(size(Aj,1)))"))
2085+
throw(DimensionMismatch("mismatched height in block row $(i) (expected $szi, got $(size(Aj,1)))"))
20882086
end
20892087
if c-1+szj > nc
2090-
throw(ArgumentError("block row $(i) has mismatched number of columns (expected $nc, got $(c-1+szj))"))
2088+
throw(DimensionMismatch("block row $(i) has mismatched number of columns (expected $nc, got $(c-1+szj))"))
20912089
end
20922090
out[r:r-1+szi, c:c-1+szj] = Aj
20932091
c += szj
20942092
end
20952093
if c != nc+1
2096-
throw(ArgumentError("block row $(i) has mismatched number of columns (expected $nc, got $(c-1))"))
2094+
throw(DimensionMismatch("block row $(i) has mismatched number of columns (expected $nc, got $(c-1))"))
20972095
end
20982096
r += szi
20992097
a += rows[i]
@@ -2115,7 +2113,7 @@ function hvcat(rows::Tuple{Vararg{Int}}, xs::T...) where T<:Number
21152113
k = 1
21162114
@inbounds for i=1:nr
21172115
if nc != rows[i]
2118-
throw(ArgumentError("row $(i) has mismatched number of columns (expected $nc, got $(rows[i]))"))
2116+
throw(DimensionMismatch("row $(i) has mismatched number of columns (expected $nc, got $(rows[i]))"))
21192117
end
21202118
for j=1:nc
21212119
a[i,j] = xs[k]
@@ -2144,14 +2142,14 @@ end
21442142
hvcat(rows::Tuple{Vararg{Int}}, xs::Number...) = typed_hvcat(promote_typeof(xs...), rows, xs...)
21452143
hvcat(rows::Tuple{Vararg{Int}}, xs...) = typed_hvcat(promote_eltypeof(xs...), rows, xs...)
21462144
# the following method is needed to provide a more specific one compared to LinearAlgebra/uniformscaling.jl
2147-
hvcat(rows::Tuple{Vararg{Int}}, xs::Union{AbstractVecOrMat,Number}...) = typed_hvcat(promote_eltypeof(xs...), rows, xs...)
2145+
hvcat(rows::Tuple{Vararg{Int}}, xs::Union{AbstractArray,Number}...) = typed_hvcat(promote_eltypeof(xs...), rows, xs...)
21482146

21492147
function typed_hvcat(::Type{T}, rows::Tuple{Vararg{Int}}, xs::Number...) where T
21502148
nr = length(rows)
21512149
nc = rows[1]
21522150
for i = 2:nr
21532151
if nc != rows[i]
2154-
throw(ArgumentError("row $(i) has mismatched number of columns (expected $nc, got $(rows[i]))"))
2152+
throw(DimensionMismatch("row $(i) has mismatched number of columns (expected $nc, got $(rows[i]))"))
21552153
end
21562154
end
21572155
hvcat_fill!(Matrix{T}(undef, nr, nc), xs)
@@ -2319,7 +2317,7 @@ function _typed_hvncat(::Type{T}, ::Val{N}, as::AbstractArray...) where {T, N}
23192317
Ndim += cat_size(as[i], N)
23202318
nd = max(nd, cat_ndims(as[i]))
23212319
for d 1:N - 1
2322-
cat_size(as[1], d) == cat_size(as[i], d) || throw(ArgumentError("mismatched size along axis $d in element $i"))
2320+
cat_size(as[1], d) == cat_size(as[i], d) || throw(DimensionMismatch("mismatched size along axis $d in element $i"))
23232321
end
23242322
end
23252323

@@ -2346,7 +2344,7 @@ function _typed_hvncat(::Type{T}, ::Val{N}, as...) where {T, N}
23462344
nd = max(nd, cat_ndims(as[i]))
23472345
for d 1:N-1
23482346
cat_size(as[i], d) == 1 ||
2349-
throw(ArgumentError("all dimensions of element $i other than $N must be of length 1"))
2347+
throw(DimensionMismatch("all dimensions of element $i other than $N must be of length 1"))
23502348
end
23512349
end
23522350

@@ -2463,7 +2461,7 @@ function _typed_hvncat_dims(::Type{T}, dims::NTuple{N, Int}, row_first::Bool, as
24632461
for dd 1:N
24642462
dd == d && continue
24652463
if cat_size(as[startelementi], dd) != cat_size(as[i], dd)
2466-
throw(ArgumentError("incompatible shape in element $i"))
2464+
throw(DimensionMismatch("incompatible shape in element $i"))
24672465
end
24682466
end
24692467
end
@@ -2500,18 +2498,18 @@ function _typed_hvncat_dims(::Type{T}, dims::NTuple{N, Int}, row_first::Bool, as
25002498
elseif currentdims[d] < outdims[d] # dimension in progress
25012499
break
25022500
else # exceeded dimension
2503-
throw(ArgumentError("argument $i has too many elements along axis $d"))
2501+
throw(DimensionMismatch("argument $i has too many elements along axis $d"))
25042502
end
25052503
end
25062504
end
25072505
elseif currentdims[d1] > outdims[d1] # exceeded dimension
2508-
throw(ArgumentError("argument $i has too many elements along axis $d1"))
2506+
throw(DimensionMismatch("argument $i has too many elements along axis $d1"))
25092507
end
25102508
end
25112509

25122510
outlen = prod(outdims)
25132511
elementcount == outlen ||
2514-
throw(ArgumentError("mismatched number of elements; expected $(outlen), got $(elementcount)"))
2512+
throw(DimensionMismatch("mismatched number of elements; expected $(outlen), got $(elementcount)"))
25152513

25162514
# copy into final array
25172515
A = cat_similar(as[1], T, outdims)
@@ -2572,8 +2570,8 @@ function _typed_hvncat_shape(::Type{T}, shape::NTuple{N, Tuple}, row_first, as::
25722570
if d == 1 || i == 1 || wasstartblock
25732571
currentdims[d] += dsize
25742572
elseif dsize != cat_size(as[i - 1], ad)
2575-
throw(ArgumentError("argument $i has a mismatched number of elements along axis $ad; \
2576-
expected $(cat_size(as[i - 1], ad)), got $dsize"))
2573+
throw(DimensionMismatch("argument $i has a mismatched number of elements along axis $ad; \
2574+
expected $(cat_size(as[i - 1], ad)), got $dsize"))
25772575
end
25782576

25792577
wasstartblock = blockcounts[d] == 1 # remember for next dimension
@@ -2583,15 +2581,15 @@ function _typed_hvncat_shape(::Type{T}, shape::NTuple{N, Tuple}, row_first, as::
25832581
if outdims[d] == -1
25842582
outdims[d] = currentdims[d]
25852583
elseif outdims[d] != currentdims[d]
2586-
throw(ArgumentError("argument $i has a mismatched number of elements along axis $ad; \
2587-
expected $(abs(outdims[d] - (currentdims[d] - dsize))), got $dsize"))
2584+
throw(DimensionMismatch("argument $i has a mismatched number of elements along axis $ad; \
2585+
expected $(abs(outdims[d] - (currentdims[d] - dsize))), got $dsize"))
25882586
end
25892587
currentdims[d] = 0
25902588
blockcounts[d] = 0
25912589
shapepos[d] += 1
25922590
d > 1 && (blockcounts[d - 1] == 0 ||
2593-
throw(ArgumentError("shape in level $d is inconsistent; level counts must nest \
2594-
evenly into each other")))
2591+
throw(DimensionMismatch("shape in level $d is inconsistent; level counts must nest \
2592+
evenly into each other")))
25952593
end
25962594
end
25972595
end

base/array.jl

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1757,7 +1757,7 @@ function splice!(a::Vector, i::Integer, ins=_default_splice)
17571757
if m == 0
17581758
_deleteat!(a, i, 1)
17591759
elseif m == 1
1760-
a[i] = ins[1]
1760+
a[i] = only(ins)
17611761
else
17621762
_growat!(a, i, m-1)
17631763
k = 1
@@ -2041,18 +2041,6 @@ function vcat(arrays::Vector{T}...) where T
20412041
end
20422042
vcat(A::Vector...) = cat(A...; dims=Val(1)) # more special than SparseArrays's vcat
20432043

2044-
# disambiguation with LinAlg/special.jl
2045-
# Union{Number,Vector,Matrix} is for LinearAlgebra._DenseConcatGroup
2046-
# VecOrMat{T} is for LinearAlgebra._TypedDenseConcatGroup
2047-
hcat(A::Union{Number,Vector,Matrix}...) = cat(A...; dims=Val(2))
2048-
hcat(A::VecOrMat{T}...) where {T} = typed_hcat(T, A...)
2049-
vcat(A::Union{Number,Vector,Matrix}...) = cat(A...; dims=Val(1))
2050-
vcat(A::VecOrMat{T}...) where {T} = typed_vcat(T, A...)
2051-
hvcat(rows::Tuple{Vararg{Int}}, xs::Union{Number,Vector,Matrix}...) =
2052-
typed_hvcat(promote_eltypeof(xs...), rows, xs...)
2053-
hvcat(rows::Tuple{Vararg{Int}}, xs::VecOrMat{T}...) where {T} =
2054-
typed_hvcat(T, rows, xs...)
2055-
20562044
_cat(n::Integer, x::Integer...) = reshape([x...], (ntuple(Returns(1), n-1)..., length(x)))
20572045

20582046
## find ##
@@ -2445,9 +2433,8 @@ julia> findall(x -> x >= 0, d)
24452433
```
24462434
"""
24472435
function findall(testf::Function, A)
2448-
T = eltype(keys(A))
24492436
gen = (first(p) for p in pairs(A) if testf(last(p)))
2450-
isconcretetype(T) ? collect(T, gen) : collect(gen)
2437+
@default_eltype(gen) === Union{} ? collect(@default_eltype(keys(A)), gen) : collect(gen)
24512438
end
24522439

24532440
# Broadcasting is much faster for small testf, and computing

base/asyncevent.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,8 @@ julia> begin
272272
3
273273
```
274274
"""
275-
function Timer(cb::Function, timeout::Real; interval::Real=0.0)
276-
timer = Timer(timeout, interval=interval)
275+
function Timer(cb::Function, timeout; kwargs...)
276+
timer = Timer(timeout; kwargs...)
277277
t = @task begin
278278
unpreserve_handle(timer)
279279
while _trywait(timer)

0 commit comments

Comments
 (0)