diff --git a/NEWS.md b/NEWS.md index 8dd55d403e7b5..6bbf77b67b9d7 100644 --- a/NEWS.md +++ b/NEWS.md @@ -64,6 +64,7 @@ Compiler/Runtime improvements Code that requires assumptions about object layout and addresses (usually for interoperability with C or other languages) might need to be updated; for example any object that needs a stable address should be a `mutable struct`. + As a result, Array `view`s no longer allocate ([#34126]). Command-line option changes --------------------------- diff --git a/base/array.jl b/base/array.jl index 7ec05e443ee88..d52997bf7af53 100644 --- a/base/array.jl +++ b/base/array.jl @@ -320,6 +320,15 @@ Copy `N` elements from collection `src` starting at offset `so`, to array `dest` offset `do`. Return `dest`. """ function copyto!(dest::Array, doffs::Integer, src::Array, soffs::Integer, n::Integer) + return _copyto_impl!(dest, doffs, src, soffs, n) +end + +# this is only needed to avoid possible ambiguities with methods added in some packages +function copyto!(dest::Array{T}, doffs::Integer, src::Array{T}, soffs::Integer, n::Integer) where T + return _copyto_impl!(dest, doffs, src, soffs, n) +end + +function _copyto_impl!(dest::Array, doffs::Integer, src::Array, soffs::Integer, n::Integer) n == 0 && return dest n > 0 || _throw_argerror() if soffs < 1 || doffs < 1 || soffs+n-1 > length(src) || doffs+n-1 > length(dest) @@ -339,6 +348,9 @@ end copyto!(dest::Array, src::Array) = copyto!(dest, 1, src, 1, length(src)) +# also to avoid ambiguities in packages +copyto!(dest::Array{T}, src::Array{T}) where {T} = copyto!(dest, 1, src, 1, length(src)) + # N.B: The generic definition in multidimensional.jl covers, this, this is just here # for bootstrapping purposes. function fill!(dest::Array{T}, x) where T @@ -1762,8 +1774,8 @@ CartesianIndex(1, 1) ``` """ function findnext(testf::Function, A, start) + i = oftype(first(keys(A)), start) l = last(keys(A)) - i = oftype(l, start) i > l && return nothing while true testf(A[i]) && return i diff --git a/base/boot.jl b/base/boot.jl index 33dfe984e9ba5..f80fd674521ee 100644 --- a/base/boot.jl +++ b/base/boot.jl @@ -370,6 +370,7 @@ _new(:QuoteNode, :Any) _new(:SSAValue, :Int) eval(Core, :(LineNumberNode(l::Int) = $(Expr(:new, :LineNumberNode, :l, nothing)))) eval(Core, :(LineNumberNode(l::Int, @nospecialize(f)) = $(Expr(:new, :LineNumberNode, :l, :f)))) +LineNumberNode(l::Int, f::String) = LineNumberNode(l, Symbol(f)) eval(Core, :(GlobalRef(m::Module, s::Symbol) = $(Expr(:new, :GlobalRef, :m, :s)))) eval(Core, :(SlotNumber(n::Int) = $(Expr(:new, :SlotNumber, :n)))) eval(Core, :(TypedSlot(n::Int, @nospecialize(t)) = $(Expr(:new, :TypedSlot, :n, :t)))) diff --git a/base/dict.jl b/base/dict.jl index b3387d84c9ca2..109538e70cf4f 100644 --- a/base/dict.jl +++ b/base/dict.jl @@ -742,7 +742,7 @@ Create a new entry in the `ImmutableDict` for a `key => value` pair ImmutableDict ImmutableDict(KV::Pair{K,V}) where {K,V} = ImmutableDict{K,V}(KV[1], KV[2]) ImmutableDict(t::ImmutableDict{K,V}, KV::Pair) where {K,V} = ImmutableDict{K,V}(t, KV[1], KV[2]) -ImmutableDict(KV::Pair, rest::Pair...) = ImmutableDict(ImmutableDict(rest...), KV) +ImmutableDict(KV::Pair, rest::Pair...) = ImmutableDict(ImmutableDict(KV), rest...) function in(key_value::Pair, dict::ImmutableDict, valcmp=(==)) key, value = key_value diff --git a/base/math.jl b/base/math.jl index ce9780269ba1c..06458f0ca2766 100644 --- a/base/math.jl +++ b/base/math.jl @@ -101,7 +101,7 @@ end """ evalpoly(x, p) -Evaluate the polynomial ``\\sum_k p[k] x^{k-1}`` for the coefficients `p[1]`, `p[2]`, ...; +Evaluate the polynomial ``\\sum_k x^{k-1} p[k]`` for the coefficients `p[1]`, `p[2]`, ...; that is, the coefficients are given in ascending order by power of `x`. Loops are unrolled at compile time if the number of coefficients is statically known, i.e. when `p` is a `Tuple`. @@ -210,7 +210,7 @@ end """ @evalpoly(z, c...) -Evaluate the polynomial ``\\sum_k c[k] z^{k-1}`` for the coefficients `c[1]`, `c[2]`, ...; +Evaluate the polynomial ``\\sum_k z^{k-1} c[k]`` for the coefficients `c[1]`, `c[2]`, ...; that is, the coefficients are given in ascending order by power of `z`. This macro expands to efficient inline code that uses either Horner's method or, for complex `z`, a more efficient Goertzel-like algorithm. diff --git a/base/reduce.jl b/base/reduce.jl index 414bac5099f78..6d19fa50e3037 100644 --- a/base/reduce.jl +++ b/base/reduce.jl @@ -306,25 +306,29 @@ with reduction `op` over an empty array with element type of `T`. If not defined, this will throw an `ArgumentError`. """ -reduce_empty(op, T) = _empty_reduce_error() -reduce_empty(::typeof(+), T) = zero(T) +reduce_empty(op, ::Type{T}) where {T} = _empty_reduce_error() +reduce_empty(::typeof(+), ::Type{Union{}}) = _empty_reduce_error() +reduce_empty(::typeof(+), ::Type{T}) where {T} = zero(T) reduce_empty(::typeof(+), ::Type{Bool}) = zero(Int) -reduce_empty(::typeof(*), T) = one(T) +reduce_empty(::typeof(*), ::Type{Union{}}) = _empty_reduce_error() +reduce_empty(::typeof(*), ::Type{T}) where {T} = one(T) reduce_empty(::typeof(*), ::Type{<:AbstractChar}) = "" reduce_empty(::typeof(&), ::Type{Bool}) = true reduce_empty(::typeof(|), ::Type{Bool}) = false -reduce_empty(::typeof(add_sum), T) = reduce_empty(+, T) +reduce_empty(::typeof(add_sum), ::Type{Union{}}) = _empty_reduce_error() +reduce_empty(::typeof(add_sum), ::Type{T}) where {T} = reduce_empty(+, T) reduce_empty(::typeof(add_sum), ::Type{T}) where {T<:SmallSigned} = zero(Int) reduce_empty(::typeof(add_sum), ::Type{T}) where {T<:SmallUnsigned} = zero(UInt) -reduce_empty(::typeof(mul_prod), T) = reduce_empty(*, T) +reduce_empty(::typeof(mul_prod), ::Type{Union{}}) = _empty_reduce_error() +reduce_empty(::typeof(mul_prod), ::Type{T}) where {T} = reduce_empty(*, T) reduce_empty(::typeof(mul_prod), ::Type{T}) where {T<:SmallSigned} = one(Int) reduce_empty(::typeof(mul_prod), ::Type{T}) where {T<:SmallUnsigned} = one(UInt) -reduce_empty(op::BottomRF, T) = reduce_empty(op.rf, T) -reduce_empty(op::MappingRF, T) = mapreduce_empty(op.f, op.rf, T) -reduce_empty(op::FilteringRF, T) = reduce_empty(op.rf, T) -reduce_empty(op::FlipArgs, T) = reduce_empty(op.f, T) +reduce_empty(op::BottomRF, ::Type{T}) where {T} = reduce_empty(op.rf, T) +reduce_empty(op::MappingRF, ::Type{T}) where {T} = mapreduce_empty(op.f, op.rf, T) +reduce_empty(op::FilteringRF, ::Type{T}) where {T} = reduce_empty(op.rf, T) +reduce_empty(op::FlipArgs, ::Type{T}) where {T} = reduce_empty(op.f, T) """ Base.mapreduce_empty(f, op, T) diff --git a/base/subarray.jl b/base/subarray.jl index 1df45f8d78781..ba891183924bb 100644 --- a/base/subarray.jl +++ b/base/subarray.jl @@ -64,7 +64,7 @@ size(V::SubArray) = (@_inline_meta; map(n->Int(unsafe_length(n)), axes(V))) similar(V::SubArray, T::Type, dims::Dims) = similar(V.parent, T, dims) -sizeof(V::SubArray) = length(V) * sizeof(eltype(V)) +sizeof(V::SubArray) = length(V) * elsize(V.parent) copy(V::SubArray) = V.parent[V.indices...] diff --git a/base/weakkeydict.jl b/base/weakkeydict.jl index 079015ba8cd16..f21097ddfb3ef 100644 --- a/base/weakkeydict.jl +++ b/base/weakkeydict.jl @@ -69,6 +69,7 @@ function WeakKeyDict(kv) end end +sizehint!(d::WeakKeyDict, newsz) = sizehint!(d.ht, newsz) empty(d::WeakKeyDict, ::Type{K}, ::Type{V}) where {K, V} = WeakKeyDict{K, V}() islocked(wkh::WeakKeyDict) = islocked(wkh.lock) diff --git a/deps/Versions.make b/deps/Versions.make index 7a391be382325..fc381abe4896b 100644 --- a/deps/Versions.make +++ b/deps/Versions.make @@ -33,7 +33,7 @@ LIBUV_BB_REL = 0 OBJCONV_VER = 2.49.0 OBJCONV_BB_REL = 0 ZLIB_VER = 1.2.11 -ZLIB_BB_REL = 6 +ZLIB_BB_REL = 10 P7ZIP_VER = 16.2.0 P7ZIP_BB_REL = 1 diff --git a/deps/checksums/Pkg-eb3726d8f9c68bb91707a5c0e9809c95f1c1eee7.tar.gz/md5 b/deps/checksums/Pkg-eb3726d8f9c68bb91707a5c0e9809c95f1c1eee7.tar.gz/md5 deleted file mode 100644 index 1364874623093..0000000000000 --- a/deps/checksums/Pkg-eb3726d8f9c68bb91707a5c0e9809c95f1c1eee7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -3a73f310604d13fb2cdd2005a5d4b3a6 diff --git a/deps/checksums/Pkg-eb3726d8f9c68bb91707a5c0e9809c95f1c1eee7.tar.gz/sha512 b/deps/checksums/Pkg-eb3726d8f9c68bb91707a5c0e9809c95f1c1eee7.tar.gz/sha512 deleted file mode 100644 index b5d18e89f3d0f..0000000000000 --- a/deps/checksums/Pkg-eb3726d8f9c68bb91707a5c0e9809c95f1c1eee7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -cca6cfbceeabeec46a9b395d0eab58108af6d3a205795bc875212932808a59a5790143877a3f72873f8561f0829f93c762fc38fb1a18affdfa276e3ec813d6d0 diff --git a/deps/checksums/Pkg-fff698d3d7d90a55431ad2f4fa0af9719d899954.tar.gz/md5 b/deps/checksums/Pkg-fff698d3d7d90a55431ad2f4fa0af9719d899954.tar.gz/md5 new file mode 100644 index 0000000000000..a47a137bb59b5 --- /dev/null +++ b/deps/checksums/Pkg-fff698d3d7d90a55431ad2f4fa0af9719d899954.tar.gz/md5 @@ -0,0 +1 @@ +3ef6ca69b7cdef18228ccab2ce20d84f diff --git a/deps/checksums/Pkg-fff698d3d7d90a55431ad2f4fa0af9719d899954.tar.gz/sha512 b/deps/checksums/Pkg-fff698d3d7d90a55431ad2f4fa0af9719d899954.tar.gz/sha512 new file mode 100644 index 0000000000000..d91c754e91496 --- /dev/null +++ b/deps/checksums/Pkg-fff698d3d7d90a55431ad2f4fa0af9719d899954.tar.gz/sha512 @@ -0,0 +1 @@ +eb69f2f5abb8b9a3ec7abd52beff2286d7c2b3861b57459d63dc6783c28c64cb034c539d2b1b05f3bd696ae8adae32cc330b540ad111a06005879f00066a05b9 diff --git a/deps/checksums/Statistics-42f46093985058665b085f24001882f3f33a400c.tar.gz/md5 b/deps/checksums/Statistics-42f46093985058665b085f24001882f3f33a400c.tar.gz/md5 new file mode 100644 index 0000000000000..cf856f514f1fe --- /dev/null +++ b/deps/checksums/Statistics-42f46093985058665b085f24001882f3f33a400c.tar.gz/md5 @@ -0,0 +1 @@ +14b820d6b0c164e36440329304dd8dbb diff --git a/deps/checksums/Statistics-42f46093985058665b085f24001882f3f33a400c.tar.gz/sha512 b/deps/checksums/Statistics-42f46093985058665b085f24001882f3f33a400c.tar.gz/sha512 new file mode 100644 index 0000000000000..b7c828d720ff7 --- /dev/null +++ b/deps/checksums/Statistics-42f46093985058665b085f24001882f3f33a400c.tar.gz/sha512 @@ -0,0 +1 @@ +7160582d061aeeed18d24fe8981a85e02086e2dbe3cda4f3786382351f1764117701a01d5f217b82d9263e0ac63f2caa2ce6ee5ad20dfc6e5cebba6af03b8826 diff --git a/deps/checksums/Statistics-a87c385b812e6576be984cae96beae64252214f0.tar.gz/md5 b/deps/checksums/Statistics-a87c385b812e6576be984cae96beae64252214f0.tar.gz/md5 deleted file mode 100644 index 2ce09501ba824..0000000000000 --- a/deps/checksums/Statistics-a87c385b812e6576be984cae96beae64252214f0.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -02f882a3caa0f9f851c1dd2acfdff157 diff --git a/deps/checksums/Statistics-a87c385b812e6576be984cae96beae64252214f0.tar.gz/sha512 b/deps/checksums/Statistics-a87c385b812e6576be984cae96beae64252214f0.tar.gz/sha512 deleted file mode 100644 index 8d95c0b1d15e4..0000000000000 --- a/deps/checksums/Statistics-a87c385b812e6576be984cae96beae64252214f0.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -176d9830dd411204249588a84c4c37c0e9f7ee6e599c58a242206e0adce9071744ab8d36abdcc837f841e1b6c9385efbec84dd5c8bc0f596afa276a82b29c931 diff --git a/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-gnu.tar.gz/md5 new file mode 100644 index 0000000000000..5cfb66f75df19 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-gnu.tar.gz/md5 @@ -0,0 +1 @@ +51358c64e42d3b8d923451278fc7aa18 diff --git a/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-gnu.tar.gz/sha512 new file mode 100644 index 0000000000000..54ce95ddbe8e0 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-gnu.tar.gz/sha512 @@ -0,0 +1 @@ +4812a79c1abf7b6301f7d1b4d65116e1add5edcaee574c6797d5c6c75b97fc9557d4e321d69afcf2dc1cd7c86b5f23f26a5cffd4541235e43c3d929498793554 diff --git a/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-musl.tar.gz/md5 new file mode 100644 index 0000000000000..7190114e8c8a2 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-musl.tar.gz/md5 @@ -0,0 +1 @@ +d967ee51bc241699462b50466208b7a1 diff --git a/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-musl.tar.gz/sha512 new file mode 100644 index 0000000000000..cd3df5f660438 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.aarch64-linux-musl.tar.gz/sha512 @@ -0,0 +1 @@ +b534781b3aa10ed2d5b426c2e4773ebf02aa09dd3b99326b3d74361260459ca4aff8e0638f5bafc2bc7b1c5e9eb27d37815194667ba09bf75360489caac2dc07 diff --git a/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-gnueabihf.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-gnueabihf.tar.gz/md5 new file mode 100644 index 0000000000000..c0c8feee7312a --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-gnueabihf.tar.gz/md5 @@ -0,0 +1 @@ +4324accedf22fe4733323f91ec408eca diff --git a/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-gnueabihf.tar.gz/sha512 new file mode 100644 index 0000000000000..08588f645c5ae --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-gnueabihf.tar.gz/sha512 @@ -0,0 +1 @@ +e7bc261ef2ff5e1dad9135dd6278365db0865b99b75d4086a27793e8c45276a609556c8145188fdfa9e617f583ac1c8992d02854862453d40849e49c39ae4a2e diff --git a/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-musleabihf.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-musleabihf.tar.gz/md5 new file mode 100644 index 0000000000000..f0c5f60add8fe --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-musleabihf.tar.gz/md5 @@ -0,0 +1 @@ +6544bd96203abd28b5a9ab4de809cfb3 diff --git a/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-musleabihf.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-musleabihf.tar.gz/sha512 new file mode 100644 index 0000000000000..f2430d4cd58b6 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.armv7l-linux-musleabihf.tar.gz/sha512 @@ -0,0 +1 @@ +cec06a2b7a1bd44f69c5281aa4db0f032506598b5d9b2f81716587f07321528aefc8f52c3ad686c16b923715fa13b0d7a0f182d7dacafafe55059346f1ea24cb diff --git a/deps/checksums/Zlib.v1.2.11-10.i686-linux-gnu.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.i686-linux-gnu.tar.gz/md5 new file mode 100644 index 0000000000000..3c4eb40c8cde4 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.i686-linux-gnu.tar.gz/md5 @@ -0,0 +1 @@ +760ea40b76d53f6de170f09a17fc3aec diff --git a/deps/checksums/Zlib.v1.2.11-10.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.i686-linux-gnu.tar.gz/sha512 new file mode 100644 index 0000000000000..eb388256010e0 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.i686-linux-gnu.tar.gz/sha512 @@ -0,0 +1 @@ +550e950ddf02598eefa013c47f9c13ded8468fdf871602de85156f2c4654f515a56ba3b8881441144a78453ebed99b9ea4b580ad940b9d587208309b20da385c diff --git a/deps/checksums/Zlib.v1.2.11-10.i686-linux-musl.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.i686-linux-musl.tar.gz/md5 new file mode 100644 index 0000000000000..b42db353b33e4 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.i686-linux-musl.tar.gz/md5 @@ -0,0 +1 @@ +390f2326a32f1c5ee44585a49a60ecf9 diff --git a/deps/checksums/Zlib.v1.2.11-10.i686-linux-musl.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.i686-linux-musl.tar.gz/sha512 new file mode 100644 index 0000000000000..65c0a0b6a155f --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.i686-linux-musl.tar.gz/sha512 @@ -0,0 +1 @@ +357beb491a420dbbd6640df3ff8bb3e32be9fe0308d4b44c956b1c50f40f08dd6d77118c7ae46a4149e48772e6b545987542e7709d545cc486374710a6bc8cb3 diff --git a/deps/checksums/Zlib.v1.2.11-10.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.i686-w64-mingw32.tar.gz/md5 new file mode 100644 index 0000000000000..42c3fcf5122a1 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.i686-w64-mingw32.tar.gz/md5 @@ -0,0 +1 @@ +0b4e00c3d2ef8a4aaf7154c18ada2348 diff --git a/deps/checksums/Zlib.v1.2.11-10.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.i686-w64-mingw32.tar.gz/sha512 new file mode 100644 index 0000000000000..8949fa694c244 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.i686-w64-mingw32.tar.gz/sha512 @@ -0,0 +1 @@ +9bb1f68607b07c8f20f18d839d7b13ca87e45ac57a6c3bffcf27db26c11d99433e08af391939b61c13f49e5df5feddce2ff5d9d962ca0d7e89d850288f563172 diff --git a/deps/checksums/Zlib.v1.2.11-10.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.powerpc64le-linux-gnu.tar.gz/md5 new file mode 100644 index 0000000000000..746718fc13e8a --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.powerpc64le-linux-gnu.tar.gz/md5 @@ -0,0 +1 @@ +becb958e9f99b08a152824c8a44454d5 diff --git a/deps/checksums/Zlib.v1.2.11-10.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.powerpc64le-linux-gnu.tar.gz/sha512 new file mode 100644 index 0000000000000..d0fb756d83e58 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.powerpc64le-linux-gnu.tar.gz/sha512 @@ -0,0 +1 @@ +857225765e3af15463128b7d4aca87c358c34c802fbf7863cdeed06f958b2c3976750c8583bfcf0ef12c106519563248f80a676337d340fddfc005f7cab09b7c diff --git a/deps/checksums/Zlib.v1.2.11-10.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.x86_64-apple-darwin14.tar.gz/md5 new file mode 100644 index 0000000000000..36752a8ff77b4 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.x86_64-apple-darwin14.tar.gz/md5 @@ -0,0 +1 @@ +b073327b80d77fcb321aa90ac054f3bc diff --git a/deps/checksums/Zlib.v1.2.11-10.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.x86_64-apple-darwin14.tar.gz/sha512 new file mode 100644 index 0000000000000..46257881f45d0 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.x86_64-apple-darwin14.tar.gz/sha512 @@ -0,0 +1 @@ +3e568123255eb2e3fd6b59395ebc72407743f596ead1cc2efaf1f2cbdb88f554ea53cf7caa3f062a8a6695eeb591a6f6ff1304bd0915b148fce4849c36e915e2 diff --git a/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-gnu.tar.gz/md5 new file mode 100644 index 0000000000000..0223a5fba0345 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-gnu.tar.gz/md5 @@ -0,0 +1 @@ +9b387576651cf42d2cba762509603aa0 diff --git a/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-gnu.tar.gz/sha512 new file mode 100644 index 0000000000000..62af5484db9ae --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-gnu.tar.gz/sha512 @@ -0,0 +1 @@ +31020590c9f122954eb545515adeb3b93894caa7098e6a12b70cbbd71a9e1b71f4d3185d0960f4f2e192fbe74a0d2c944d1cd897c715aa3e7182ea3cfc82a63f diff --git a/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-musl.tar.gz/md5 new file mode 100644 index 0000000000000..7a9589bf3255d --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-musl.tar.gz/md5 @@ -0,0 +1 @@ +8eb752c5fb3f1f013a91ba84db33f268 diff --git a/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-musl.tar.gz/sha512 new file mode 100644 index 0000000000000..1b6ab531d9ebb --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.x86_64-linux-musl.tar.gz/sha512 @@ -0,0 +1 @@ +9c4b198cceffc5e3c87e91fa4f9223b973b090f5a343b1ea84425cbb445a7d9a34926ca55e4febae8783fbba3390b3a1aa2bd59b3177335a544c862bd55b8ec5 diff --git a/deps/checksums/Zlib.v1.2.11-10.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.x86_64-unknown-freebsd11.1.tar.gz/md5 new file mode 100644 index 0000000000000..7a2282753a6f8 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.x86_64-unknown-freebsd11.1.tar.gz/md5 @@ -0,0 +1 @@ +bffe25dd8fb78bbf881785eef64202d5 diff --git a/deps/checksums/Zlib.v1.2.11-10.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.x86_64-unknown-freebsd11.1.tar.gz/sha512 new file mode 100644 index 0000000000000..07ff8b9147ade --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.x86_64-unknown-freebsd11.1.tar.gz/sha512 @@ -0,0 +1 @@ +2215ee8ebd3415f35a4f488537b2bb525bc8fef74419b2182bb8bc5b2e236fa7fb637c6aaa234e840c94c3940a71441e5a2dc9e7fb5d674372175a30dbb5fa19 diff --git a/deps/checksums/Zlib.v1.2.11-10.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-10.x86_64-w64-mingw32.tar.gz/md5 new file mode 100644 index 0000000000000..957c62c98ebf2 --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.x86_64-w64-mingw32.tar.gz/md5 @@ -0,0 +1 @@ +9efba92de9aa49b43822309fcdce046a diff --git a/deps/checksums/Zlib.v1.2.11-10.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-10.x86_64-w64-mingw32.tar.gz/sha512 new file mode 100644 index 0000000000000..6e8d8f638743e --- /dev/null +++ b/deps/checksums/Zlib.v1.2.11-10.x86_64-w64-mingw32.tar.gz/sha512 @@ -0,0 +1 @@ +c76553c7b79c8f2ed20dcbfbb55ebe06636e238c3ba7028beef84547cf1ee82c2a2a293712c9241e7b60cb5cf6c907eec7046b272a0ef26aed805eae4947a9c6 diff --git a/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-gnu.tar.gz/md5 deleted file mode 100644 index 00da64ec9a6a0..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-gnu.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -9f518cd093311ea2c8ff624b06aaa4cd diff --git a/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-gnu.tar.gz/sha512 deleted file mode 100644 index e8006fef420c6..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-gnu.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -8ca001e4cdc0de7c3224b92b6e454102c511225757b1c54f32734c65eb11cd57cb2fffc50b7e4d12c9b9cb243bdf87f3b215a2fa3ce538336d1852820b241ebf diff --git a/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-musl.tar.gz/md5 deleted file mode 100644 index 216075ed1144e..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-musl.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -5157dfaf0a62241553783d38d6fa565c diff --git a/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-musl.tar.gz/sha512 deleted file mode 100644 index 631e470856d08..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.aarch64-linux-musl.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -30199abf69bcee900087ae548de0303ae3ac5fa1fba24436ef406ad81675407eefb7157922e4701b2297d139eb8b4e3630a92c01b309de6b0205a98d60f2d63b diff --git a/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-gnueabihf.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-gnueabihf.tar.gz/md5 deleted file mode 100644 index 4485a55d43f41..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-gnueabihf.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -2d42d6a3899b974f9c56c4fabfa34459 diff --git a/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-gnueabihf.tar.gz/sha512 deleted file mode 100644 index 31a1f61e0ff23..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-gnueabihf.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -138254be838d7a9e356632785e5af30a562b498605e366e932011d9a41778e5a81c9073aa698529f95aa1101f2a7642e7ae81449f734d5e7bf0e3b4f26fedcae diff --git a/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-musleabihf.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-musleabihf.tar.gz/md5 deleted file mode 100644 index 4dbcf6944a4a2..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-musleabihf.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -5db5f13979777caac31c830b66e75e8f diff --git a/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-musleabihf.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-musleabihf.tar.gz/sha512 deleted file mode 100644 index c47463b86564c..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.armv7l-linux-musleabihf.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -6088b1a14ff372a2b7d28187edcfe85b613242b812ae23cbaea88da1e580105f38f65f70b2e80833711e2e99ac1683bdf451d55e5dc9283bb7e8dd582680acfb diff --git a/deps/checksums/Zlib.v1.2.11-6.i686-linux-gnu.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.i686-linux-gnu.tar.gz/md5 deleted file mode 100644 index b5d6d15e0769a..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.i686-linux-gnu.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -46d03f5f9190cb787e867c3eb7edea78 diff --git a/deps/checksums/Zlib.v1.2.11-6.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.i686-linux-gnu.tar.gz/sha512 deleted file mode 100644 index 008795089e144..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.i686-linux-gnu.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -ca08a089148260c2b6d81a87a1e00a4e3a881c6d8bdad0d00b3e42a56cc91a7b72b542a748fc01a49ce207785053636587417916c6ec0d112fae49c55f34fb65 diff --git a/deps/checksums/Zlib.v1.2.11-6.i686-linux-musl.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.i686-linux-musl.tar.gz/md5 deleted file mode 100644 index 811bce75bde6b..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.i686-linux-musl.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -34725ad0598db3cd7817e3578453f1d8 diff --git a/deps/checksums/Zlib.v1.2.11-6.i686-linux-musl.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.i686-linux-musl.tar.gz/sha512 deleted file mode 100644 index 1936e8f8500e4..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.i686-linux-musl.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -b2706f68cecc21ab5013b07c226eda8fd1a68101bd17fcd79b991ac3b74d9b9e63e54f804a48a86ea448c5695c3284ac11c07592ae76a10b4fd6f5881c3ee277 diff --git a/deps/checksums/Zlib.v1.2.11-6.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.i686-w64-mingw32.tar.gz/md5 deleted file mode 100644 index 2074ae57eb49f..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.i686-w64-mingw32.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -89611cfd8f7c987de8b8c8cfd9eaeae6 diff --git a/deps/checksums/Zlib.v1.2.11-6.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.i686-w64-mingw32.tar.gz/sha512 deleted file mode 100644 index 482a799d0b6a9..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.i686-w64-mingw32.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -128f0a2db6045c7e886dc283c93a3bff3f7bd64d2b2bcea0e4e67aac6c8e76ef9abcdac10cc56f5880ae32160ffe5ee4b42fdc9bc1fd3e07104776e16dc05aa0 diff --git a/deps/checksums/Zlib.v1.2.11-6.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.powerpc64le-linux-gnu.tar.gz/md5 deleted file mode 100644 index e7b88b4458ee3..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.powerpc64le-linux-gnu.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -1c32a314230b46db6eb02e72bd8b8b47 diff --git a/deps/checksums/Zlib.v1.2.11-6.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.powerpc64le-linux-gnu.tar.gz/sha512 deleted file mode 100644 index 9be88af9676b5..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.powerpc64le-linux-gnu.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -69e785a356eec5c12cb4fe2d3b2a5b6ced16152d51e28c6e4eb646cad07a951d73cfcfd015c233f0164ed28d9ad772403230dcee581526fa4d34fefb95c2bb13 diff --git a/deps/checksums/Zlib.v1.2.11-6.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.x86_64-apple-darwin14.tar.gz/md5 deleted file mode 100644 index 5316272ba1928..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.x86_64-apple-darwin14.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -0e14dd815045e47dd722ff55434428d1 diff --git a/deps/checksums/Zlib.v1.2.11-6.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.x86_64-apple-darwin14.tar.gz/sha512 deleted file mode 100644 index 7b21de4c41657..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.x86_64-apple-darwin14.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -4111e99386cab30de2f1c625079991576e97446c8a85bc37c05629ddf7b867bc32a74b94ed5552c2b057c4cf14f85cbc06b62459ed800cd9faa5a40382a6e958 diff --git a/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-gnu.tar.gz/md5 deleted file mode 100644 index 77123e338d051..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-gnu.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -9fcc23ef8cf1740418a147905f7aa45c diff --git a/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-gnu.tar.gz/sha512 deleted file mode 100644 index 089693b3315bd..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-gnu.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -2da223cb96bcd1845c8b84b44f779c8d464fd8dc21a8c8d7b065da07e7d995db627b9a2df1dc5247f70d1cd9e23f31c118288a0b3047884b19edd886e1dd6f2b diff --git a/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-musl.tar.gz/md5 deleted file mode 100644 index 538081546aba3..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-musl.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -b3e690fe03ab5f57118ae2cff0e82f35 diff --git a/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-musl.tar.gz/sha512 deleted file mode 100644 index 74786b8dcd156..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.x86_64-linux-musl.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -cea679067b995a5503922e81c50dda603b0b9634bb07b54073f74e2d0ccd638ec6c10ab26ae09c5a3566c44d4ee78419abc99f22da55c8131901aa72f790cc5c diff --git a/deps/checksums/Zlib.v1.2.11-6.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.x86_64-unknown-freebsd11.1.tar.gz/md5 deleted file mode 100644 index 85a8c96a236b6..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.x86_64-unknown-freebsd11.1.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -34a32be8fed7b26b3cef2f7c367241b8 diff --git a/deps/checksums/Zlib.v1.2.11-6.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.x86_64-unknown-freebsd11.1.tar.gz/sha512 deleted file mode 100644 index 5b033470ec838..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.x86_64-unknown-freebsd11.1.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -ba351d5415c86457b487e0078b8a86f2429e8c2aef8f3edb48647de8a2b7d05accf9582e8b58f49b46a67684b59c1bfa9ebda6ec93724747128c93f9efd69fa1 diff --git a/deps/checksums/Zlib.v1.2.11-6.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/Zlib.v1.2.11-6.x86_64-w64-mingw32.tar.gz/md5 deleted file mode 100644 index 011042642da29..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.x86_64-w64-mingw32.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -66292bfea89453db4945639d454fa739 diff --git a/deps/checksums/Zlib.v1.2.11-6.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/Zlib.v1.2.11-6.x86_64-w64-mingw32.tar.gz/sha512 deleted file mode 100644 index a9cdbe9cd278d..0000000000000 --- a/deps/checksums/Zlib.v1.2.11-6.x86_64-w64-mingw32.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -2f2ec74977e5a713c2336a0ef5f2553ec5393285ae3a6914ab8d9b535337ad36d9f07fc180df10db302d96dc6b9ca2d7d178a9f42b906276b97b597953dc4782 diff --git a/deps/zlib.mk b/deps/zlib.mk index 0de264223ea06..cdefe1b81ab82 100644 --- a/deps/zlib.mk +++ b/deps/zlib.mk @@ -5,7 +5,7 @@ $(eval $(call git-external,zlib,ZLIB,,,$(SRCCACHE))) ifneq ($(USE_BINARYBUILDER_ZLIB), 1) $(BUILDDIR)/$(ZLIB_SRC_DIR)/build-configured: $(SRCCACHE)/$(ZLIB_SRC_DIR)/source-extracted mkdir -p $(dir $@) - cd $(dir $@) && $(dir $<)/configure --prefix=$(abspath $(build_prefix)) --libdir=$(abspath $(build_libdir)) + cd $(dir $@) && $(CMAKE) -DCMAKE_INSTALL_PREFIX=$(abspath $(build_prefix)) -DCMAKE_BUILD_TYPE=Release -DUNIX=true $(dir $<) echo 1 > $@ $(BUILDDIR)/$(ZLIB_SRC_DIR)/build-compiled: $(BUILDDIR)/$(ZLIB_SRC_DIR)/build-configured diff --git a/doc/src/manual/distributed-computing.md b/doc/src/manual/distributed-computing.md index 2a7f10e01b221..a1f30e579b5ec 100644 --- a/doc/src/manual/distributed-computing.md +++ b/doc/src/manual/distributed-computing.md @@ -1,4 +1,4 @@ -# Multi-process and Distributed Processing +# Multi-processing and Distributed Computing An implementation of distributed memory parallel computing is provided by module `Distributed` as part of the standard library shipped with Julia. @@ -760,7 +760,7 @@ SharedArray{T,N}(dims::NTuple; init=false, pids=Int[]) which creates an `N`-dimensional shared array of a bits type `T` and size `dims` across the processes specified by `pids`. Unlike distributed arrays, a shared array is accessible only from those participating workers specified by the `pids` named argument (and the creating process too, if it is on the -same host). +same host). Note that only elements that are [`isbits`](@ref) are supported in a SharedArray. If an `init` function, of signature `initfn(S::SharedArray)`, is specified, it is called on all the participating workers. You can specify that each worker runs the `init` function on a distinct diff --git a/src/cgutils.cpp b/src/cgutils.cpp index 87c3b5ee75f34..d23bf9c20e7e6 100644 --- a/src/cgutils.cpp +++ b/src/cgutils.cpp @@ -702,7 +702,7 @@ static Type *_julia_struct_to_llvm(jl_codegen_params_t *ctx, jl_value_t *jt, jl_ Type *AlignmentType = IntegerType::get(jl_LLVMContext, 8 * al); unsigned NumATy = fsz / al; unsigned remainder = fsz % al; - assert(NumATy > 0); + assert(al == 1 || NumATy > 0); while (NumATy--) latypes.push_back(AlignmentType); while (remainder--) diff --git a/src/codegen.cpp b/src/codegen.cpp index b171db9047465..487f1a365a171 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -2484,7 +2484,7 @@ static bool emit_builtin_call(jl_codectx_t &ctx, jl_cgval_t *ret, jl_value_t *f, *ret = mark_julia_type(ctx, len, false, jl_long_type); return true; } - else if (jl_is_datatype(sty) && sty->name == jl_array_typename) { + else if (jl_is_array_type(sty)) { auto len = emit_arraylen(ctx, obj); jl_value_t *ety = jl_tparam0(sty); Value *elsize; @@ -2495,6 +2495,11 @@ static bool emit_builtin_call(jl_codectx_t &ctx, jl_cgval_t *ret, jl_value_t *f, if (isboxed) { elsize = ConstantInt::get(T_size, sizeof(void*)); } + else if (jl_is_primitivetype(ety)) { + // Primitive types should use the array element size, but + // this can be different from the type's size + elsize = ConstantInt::get(T_size, LLT_ALIGN(elsz, al)); + } else { elsize = ConstantInt::get(T_size, elsz); } diff --git a/src/llvm-api.cpp b/src/llvm-api.cpp index 03fc39cf091a1..1ec13fca7918d 100644 --- a/src/llvm-api.cpp +++ b/src/llvm-api.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -24,6 +25,7 @@ #include #include #include +#include #include "julia.h" @@ -208,6 +210,28 @@ extern "C" JL_DLLEXPORT void LLVMExtraAddInternalizePassWithExportList( unwrap(PM)->add(createInternalizePass(PreserveFobj)); } +extern "C" JL_DLLEXPORT void LLVMExtraAppendToUsed(LLVMModuleRef Mod, + LLVMValueRef* Values, + size_t Count) { + SmallVector GlobalValues; + for (auto *Value : makeArrayRef(Values, Count)) + GlobalValues.push_back(cast(unwrap(Value))); + appendToUsed(*unwrap(Mod), GlobalValues); +} + +extern "C" JL_DLLEXPORT void LLVMExtraAppendToCompilerUsed(LLVMModuleRef Mod, + LLVMValueRef* Values, + size_t Count) { + SmallVector GlobalValues; + for (auto *Value : makeArrayRef(Values, Count)) + GlobalValues.push_back(cast(unwrap(Value))); + appendToCompilerUsed(*unwrap(Mod), GlobalValues); +} + +extern "C" JL_DLLEXPORT void LLVMExtraAddGenericAnalysisPasses(LLVMPassManagerRef PM) { + unwrap(PM)->add(createTargetTransformInfoWrapperPass(TargetIRAnalysis())); +} + // Awaiting D46627 diff --git a/stdlib/Distributed/src/clusterserialize.jl b/stdlib/Distributed/src/clusterserialize.jl index 6bca816687af3..c50393caeb0f5 100644 --- a/stdlib/Distributed/src/clusterserialize.jl +++ b/stdlib/Distributed/src/clusterserialize.jl @@ -2,7 +2,7 @@ using Serialization: serialize_cycle, deserialize_cycle, writetag, serialize_typename, deserialize_typename, - TYPENAME_TAG, reset_state, serialize_type + TYPENAME_TAG, TASK_TAG, reset_state, serialize_type using Serialization.__deserialized_types__ import Serialization: object_number, lookup_object_number, remember_object @@ -102,6 +102,26 @@ function serialize(s::ClusterSerializer, t::Core.TypeName) nothing end +function serialize(s::ClusterSerializer, t::Task) + serialize_cycle(s, t) && return + if istaskstarted(t) && !istaskdone(t) + error("cannot serialize a running Task") + end + writetag(s.io, TASK_TAG) + serialize(s, t.code) + serialize(s, t.storage) + bt = t.backtrace + if bt !== nothing + if !isa(bt, Vector{Any}) + bt = Base.process_backtrace(bt, 100) + end + serialize(s, bt) + end + serialize(s, t.state) + serialize(s, t.result) + serialize(s, t.exception) +end + function serialize(s::ClusterSerializer, g::GlobalRef) # Record if required and then invoke the default GlobalRef serializer. sym = g.name @@ -231,6 +251,23 @@ function deserialize(s::ClusterSerializer, t::Type{<:CapturedException}) return CapturedException(capex, bt) end +function deserialize(s::ClusterSerializer, ::Type{Task}) + t = Task(nothing) + deserialize_cycle(s, t) + t.code = deserialize(s) + t.storage = deserialize(s) + state_or_bt = deserialize(s) + if state_or_bt isa Symbol + t.state = state_or_bt + else + t.backtrace = state_or_bt + t.state = deserialize(s) + end + t.result = deserialize(s) + t.exception = deserialize(s) + t +end + """ clear!(syms, pids=workers(); mod=Main) diff --git a/stdlib/Distributed/test/distributed_exec.jl b/stdlib/Distributed/test/distributed_exec.jl index 821e999d8d1ef..8bc5c419ade05 100644 --- a/stdlib/Distributed/test/distributed_exec.jl +++ b/stdlib/Distributed/test/distributed_exec.jl @@ -1676,6 +1676,19 @@ let (h, t) = Distributed.head_and_tail(Int[], 0) @test collect(t) == [] end +# issue #35937 +let e + try + pmap(1) do _ + wait(@async error(42)) + end + catch ex + e = ex + end + # check that the inner TaskFailedException is correctly formed & can be printed + @test sprint(showerror, e) isa String +end + include("splitrange.jl") # Run topology tests last after removing all workers, since a given diff --git a/stdlib/InteractiveUtils/src/InteractiveUtils.jl b/stdlib/InteractiveUtils/src/InteractiveUtils.jl index 48bb13b961a6f..a2abf8730cd84 100644 --- a/stdlib/InteractiveUtils/src/InteractiveUtils.jl +++ b/stdlib/InteractiveUtils/src/InteractiveUtils.jl @@ -363,13 +363,14 @@ function report_bug(kind) let Pkg = Base.require(Base.PkgId( Base.UUID((0x44cfe95a_1eb2_52ea,0xb672_e2afdf69b78f)), "Pkg")) mktempdir() do tmp - prev_active = Base.ACTIVE_PROJECT[] - env_path = joinpath(tmp, "TmpForBugReporting") - Pkg.generate(env_path) - Pkg.activate(env_path) + old_load_path = copy(LOAD_PATH) + push!(empty!(LOAD_PATH), joinpath(tmp, "Project.toml")) + old_home_project = Base.HOME_PROJECT[] + Base.HOME_PROJECT[] = nothing Pkg.add(Pkg.PackageSpec(BugReportingId.name, BugReportingId.uuid)) BugReporting = Base.require(BugReportingId) - Base.ACTIVE_PROJECT[] = prev_active + append!(empty!(LOAD_PATH), old_load_path) + Base.HOME_PROJECT[] = old_home_project end end else diff --git a/stdlib/LinearAlgebra/src/triangular.jl b/stdlib/LinearAlgebra/src/triangular.jl index 73a861358022b..106443a0df648 100644 --- a/stdlib/LinearAlgebra/src/triangular.jl +++ b/stdlib/LinearAlgebra/src/triangular.jl @@ -2607,7 +2607,9 @@ function sqrt(A::UpperTriangular{T},::Val{realmatrix}) where {T,realmatrix} @simd for k = i+1:j-1 r -= R[i,k]*R[k,j] end - iszero(r) || (R[i,j] = sylvester(R[i,i],R[j,j],-r)) + if !(iszero(r) || (iszero(R[i,i]) && iszero(R[j,j]))) + R[i,j] = sylvester(R[i,i],R[j,j],-r) + end end end return UpperTriangular(R) diff --git a/stdlib/LinearAlgebra/test/triangular.jl b/stdlib/LinearAlgebra/test/triangular.jl index ca76408e9711f..cee96ba9f7266 100644 --- a/stdlib/LinearAlgebra/test/triangular.jl +++ b/stdlib/LinearAlgebra/test/triangular.jl @@ -651,4 +651,9 @@ end @test_throws ArgumentError LinearAlgebra.powm(A, 2.2) end +# Issue 35058 +let A = [0.9999999999999998 4.649058915617843e-16 -1.3149405273715513e-16 9.9959579317056e-17; -8.326672684688674e-16 1.0000000000000004 2.9280733590254494e-16 -2.9993900031619594e-16; 9.43689570931383e-16 -1.339206523454095e-15 1.0000000000000007 -8.550505126287743e-16; -6.245004513516506e-16 -2.0122792321330962e-16 1.183061278035052e-16 1.0000000000000002], + B = [0.09648289218436859 0.023497875751503007 0.0 0.0; 0.023497875751503007 0.045787575150300804 0.0 0.0; 0.0 0.0 0.0 0.0; 0.0 0.0 0.0 0.0] + @test sqrt(A*B*A')^2 ≈ A*B*A' +end end # module TestTriangular diff --git a/stdlib/Pkg.version b/stdlib/Pkg.version index c09afdea66988..cab9544700174 100644 --- a/stdlib/Pkg.version +++ b/stdlib/Pkg.version @@ -1,2 +1,2 @@ PKG_BRANCH = master -PKG_SHA1 = eb3726d8f9c68bb91707a5c0e9809c95f1c1eee7 +PKG_SHA1 = fff698d3d7d90a55431ad2f4fa0af9719d899954 diff --git a/stdlib/Statistics.version b/stdlib/Statistics.version index 71bbce98ed9c2..7cfb1ca67170b 100644 --- a/stdlib/Statistics.version +++ b/stdlib/Statistics.version @@ -1,2 +1,2 @@ STATISTICS_BRANCH = master -STATISTICS_SHA1 = a87c385b812e6576be984cae96beae64252214f0 +STATISTICS_SHA1 = 42f46093985058665b085f24001882f3f33a400c diff --git a/test/abstractarray.jl b/test/abstractarray.jl index 59c2c573849e6..f7018fe29d6b4 100644 --- a/test/abstractarray.jl +++ b/test/abstractarray.jl @@ -937,3 +937,40 @@ end @testset "vcat with mixed elements" begin @test vcat(Nothing[], [missing], [1.0], [Int8(1)]) isa Vector{Union{Missing, Nothing, Float64}} end + +@testset "sizeof" begin + let arrUInt8 = zeros(UInt8, 10) + @test sizeof(arrUInt8) == 10 + @test Core.sizeof(arrUInt8) == 10 + end + + let arrUInt32 = zeros(UInt32, 10) + @test sizeof(arrUInt32) == 40 + @test Core.sizeof(arrUInt32) == 40 + end + + let arrFloat64 = zeros(Float64, 10, 10) + @test sizeof(arrFloat64) == 800 + @test Core.sizeof(arrFloat64) == 800 + end + + # Test union arrays (Issue #23321) + let arrUnion = Union{Int64, Cvoid}[rand(Bool) ? k : nothing for k = 1:10] + @test sizeof(arrUnion) == 80 + @test Core.sizeof(arrUnion) == 80 + end + + # Test non-power of 2 types (Issue #35884) + primitive type UInt48 48 end + UInt48(x::UInt64) = Core.Intrinsics.trunc_int(UInt48, x) + UInt48(x::UInt32) = Core.Intrinsics.zext_int(UInt48, x) + + a = UInt48(0x00000001); + b = UInt48(0x00000002); + c = UInt48(0x00000003); + let arrayOfUInt48 = [a, b, c] + f35884(x) = sizeof(x) + @test f35884(arrayOfUInt48) == 24 + @test Core.sizeof(arrayOfUInt48) == 24 + end +end diff --git a/test/core.jl b/test/core.jl index da814873820fd..98344bfb44506 100644 --- a/test/core.jl +++ b/test/core.jl @@ -5961,6 +5961,16 @@ let a33709 = A33709(A33709(nothing)) @test isnothing(a33709.a.a) end +# issue #35793 +struct A35793 + x::Union{Nothing, Missing} +end +let x = A35793(nothing), y = A35793(missing) + @test x isa A35793 + @test x.x === nothing + @test y.x === missing +end + # issue 31583 a31583 = "a" f31583() = a31583 === "a" diff --git a/test/dict.jl b/test/dict.jl index 541bc3b50f84d..5f2fc6aa0aef4 100644 --- a/test/dict.jl +++ b/test/dict.jl @@ -722,7 +722,8 @@ import Base.ImmutableDict v = [k1 => v1, k2 => v2] d5 = ImmutableDict(v...) @test d5 == d2 - @test collect(d5) == v + @test reverse(collect(d5)) == v + @test ImmutableDict(:a => 1, :a => 2)[:a] == 2 @test !haskey(ImmutableDict(-0.0=>1), 0.0) end @@ -841,6 +842,7 @@ Dict(1 => rand(2,3), 'c' => "asdf") # just make sure this does not trigger a dep @test isa(WeakKeyDict(A=>2, B=>3, C=>4), WeakKeyDict{Array{Int,1},Int}) @test WeakKeyDict(a=>i+1 for (i,a) in enumerate([A,B,C]) ) == wkd @test WeakKeyDict([(A,2), (B,3), (C,4)]) == wkd + @test WeakKeyDict{typeof(A), Int64}(Pair(A,2), Pair(B,3), Pair(C,4)) == wkd @test WeakKeyDict(Pair(A,2), Pair(B,3), Pair(C,4)) == wkd @test isa(WeakKeyDict(Pair(A,2), Pair(B,3.0), Pair(C,4)), WeakKeyDict{Array{Int,1},Any}) @test isa(WeakKeyDict(Pair(convert(Vector{Number}, A),2), Pair(B,3), Pair(C,4)), WeakKeyDict{Any,Int}) diff --git a/test/reduce.jl b/test/reduce.jl index 69b8b1911e7ea..9501f41f8b77c 100644 --- a/test/reduce.jl +++ b/test/reduce.jl @@ -46,6 +46,8 @@ end @test reduce(max, [8 6 7 5 3 0 9]) == 9 @test reduce(+, 1:5; init=1000) == (1000 + 1 + 2 + 3 + 4 + 5) @test reduce(+, 1) == 1 +@test_throws ArgumentError reduce(*, ()) +@test_throws ArgumentError reduce(*, Union{}[]) # mapreduce @test mapreduce(-, +, [-10 -9 -3]) == ((10 + 9) + 3) @@ -133,6 +135,7 @@ fz = float(z) @test sum(z) === 136 @test sum(fz) === 136.0 +@test_throws ArgumentError sum(Union{}[]) @test_throws ArgumentError sum(sin, Int[]) @test sum(sin, 3) == sin(3.0) @test sum(sin, [3]) == sin(3.0) diff --git a/test/subarray.jl b/test/subarray.jl index f9e48a75612e5..6f643546a56ea 100644 --- a/test/subarray.jl +++ b/test/subarray.jl @@ -589,6 +589,18 @@ end @test sizeof(view(zeros(UInt8, 10), 1:4)) == 4 @test sizeof(view(zeros(UInt8, 10), 1:3)) == 3 @test sizeof(view(zeros(Float64, 10, 10), 1:3, 2:6)) == 120 + + # Test non-power of 2 types (Issue #35884) + primitive type UInt48 48 end + UInt48(x::UInt64) = Core.Intrinsics.trunc_int(UInt48, x) + UInt48(x::UInt32) = Core.Intrinsics.zext_int(UInt48, x) + + a = UInt48(0x00000001); + b = UInt48(0x00000002); + c = UInt48(0x00000003); + arrayOfUInt48 = [a, b, c]; + + @test sizeof(view(arrayOfUInt48, 1:2)) == 16 end