diff --git a/Make.inc b/Make.inc index 03b60f17a1cb0..47c8a9adaa15b 100644 --- a/Make.inc +++ b/Make.inc @@ -1001,10 +1001,7 @@ else ifeq ($(OS), Darwin) RPATH_ESCAPED_ORIGIN := $(RPATH_ORIGIN) RPATH_LIB := -Wl,-rpath,'@loader_path/julia/' -Wl,-rpath,'@loader_path/' else - RPATH := -Wl,-rpath,'$$ORIGIN/$(build_libdir_rel)' -Wl,-rpath-link,$(build_shlibdir) -Wl,-z,origin -ifeq ($(OS), FreeBSD) - RPATH += -Wl,-rpath,'$$ORIGIN/$(build_private_libdir_rel)' -endif + RPATH := -Wl,-rpath,'$$ORIGIN/$(build_libdir_rel)' -Wl,-rpath,'$$ORIGIN/$(build_private_libdir_rel)' -Wl,-rpath-link,$(build_shlibdir) -Wl,-z,origin RPATH_ORIGIN := -Wl,-rpath,'$$ORIGIN' -Wl,-z,origin RPATH_ESCAPED_ORIGIN := -Wl,-rpath,'\$$\$$ORIGIN' -Wl,-z,origin -Wl,-rpath-link,$(build_shlibdir) RPATH_LIB := -Wl,-rpath,'$$ORIGIN/julia' -Wl,-rpath,'$$ORIGIN' -Wl,-z,origin diff --git a/NEWS.md b/NEWS.md index ecacf6720077a..1800a956a3b7b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -81,6 +81,11 @@ Standard library changes form `kron(u, v')`, `u * v'`, and `u .* v'` where `u` and `v` are sparse vectors or column views ([#24980]). +#### Sockets + +* `getipaddrs` returns IP addresses in the order provided by libuv ([#32260]). +* `getipaddr` prefers to return the first `IPv4` interface address provided by libuv ([#32260]). + #### Statistics * `quantile` now accepts in all cases collections whose `eltype` is not a subtype of `Number` ([#30938]). diff --git a/base/compiler/abstractinterpretation.jl b/base/compiler/abstractinterpretation.jl index 9c15c49f5888a..8e636cf3237e0 100644 --- a/base/compiler/abstractinterpretation.jl +++ b/base/compiler/abstractinterpretation.jl @@ -422,10 +422,13 @@ function precise_container_type(@nospecialize(typ), vtypes::VarTable, sv::Infere tti0 = widenconst(typ) tti = unwrap_unionall(tti0) if isa(tti, DataType) && tti.name === NamedTuple_typename - tti0 = tti.parameters[2] - while isa(tti0, TypeVar) - tti0 = tti0.ub + # A NamedTuple iteration is the the same as the iteration of its Tuple parameter: + # compute a new `tti == unwrap_unionall(tti0)` based on that Tuple type + tti = tti.parameters[2] + while isa(tti, TypeVar) + tti = tti.ub end + tti0 = rewrap_unionall(tti, tti0) end if isa(tti, Union) utis = uniontypes(tti) diff --git a/base/download.jl b/base/download.jl index 1f5487d943195..63ae232167624 100644 --- a/base/download.jl +++ b/base/download.jl @@ -28,7 +28,7 @@ function find_curl() "/usr/bin/curl" elseif Sys.iswindows() && Sys.isexecutable(joinpath(get(ENV, "SYSTEMROOT", "C:\\Windows"), "System32\\curl.exe")) joinpath(get(ENV, "SYSTEMROOT", "C:\\Windows"), "System32\\curl.exe") - elseif Sys.which("curl") !== nothing + elseif !Sys.iswindows() && Sys.which("curl") !== nothing "curl" else nothing diff --git a/base/parse.jl b/base/parse.jl index a652e1f7387ab..762ce70368482 100644 --- a/base/parse.jl +++ b/base/parse.jl @@ -123,7 +123,8 @@ function tryparse_internal(::Type{T}, s::AbstractString, startpos::Int, endpos:: _Z = UInt32('Z') _z = UInt32('z') while n <= m - _c = UInt32(c) + # Fast path from `UInt32(::Char)`; non-ascii will be >= 0x80 + _c = reinterpret(UInt32, c) >> 24 d::T = _0 <= _c <= _9 ? _c-_0 : _A <= _c <= _Z ? _c-_A+ UInt32(10) : _a <= _c <= _z ? _c-_a+a : base @@ -142,7 +143,8 @@ function tryparse_internal(::Type{T}, s::AbstractString, startpos::Int, endpos:: end (T <: Signed) && (n *= sgn) while !isspace(c) - _c = UInt32(c) + # Fast path from `UInt32(::Char)`; non-ascii will be >= 0x80 + _c = reinterpret(UInt32, c) >> 24 d::T = _0 <= _c <= _9 ? _c-_0 : _A <= _c <= _Z ? _c-_A+ UInt32(10) : _a <= _c <= _z ? _c-_a+a : base diff --git a/base/strings/util.jl b/base/strings/util.jl index d6d65ebd7dd99..6921e1bb5ed1f 100644 --- a/base/strings/util.jl +++ b/base/strings/util.jl @@ -245,7 +245,7 @@ function lpad( n::Integer, p::Union{AbstractChar,AbstractString}=' ', ) :: String - m = n - length(s) + m = signed(n) - length(s) m ≤ 0 && return string(s) l = length(p) q, r = divrem(m, l) @@ -272,7 +272,7 @@ function rpad( n::Integer, p::Union{AbstractChar,AbstractString}=' ', ) :: String - m = n - length(s) + m = signed(n) - length(s) m ≤ 0 && return string(s) l = length(p) q, r = divrem(m, l) diff --git a/base/task.jl b/base/task.jl index 1985fc03b9611..02d1a4dbccb81 100644 --- a/base/task.jl +++ b/base/task.jl @@ -409,7 +409,7 @@ end function enq_work(t::Task) (t.state == :runnable && t.queue === nothing) || error("schedule: Task not runnable") - if t.sticky + if t.sticky || Threads.nthreads() == 1 tid = Threads.threadid(t) if tid == 0 tid = Threads.threadid() diff --git a/contrib/normalize_triplet.py b/contrib/normalize_triplet.py index ce23ea065b893..7bc5554ffff3d 100755 --- a/contrib/normalize_triplet.py +++ b/contrib/normalize_triplet.py @@ -117,7 +117,7 @@ def p(x): "7": "gcc7", "8": "gcc8", "9": "gcc8", - }[list(filter(lambda x: re.match("\d+\.\d+\.\d+", x), sys.argv[2].split()))[-1][0]] + }[list(filter(lambda x: re.match("\d+\.\d+(\.\d+)?", x), sys.argv[2].split()))[-1][0]] if cxx_abi == "blank_cxx_abi": if len(sys.argv) == 4: diff --git a/deps/Versions.make b/deps/Versions.make index f120400fa092b..ff103cbbe1e7e 100644 --- a/deps/Versions.make +++ b/deps/Versions.make @@ -4,7 +4,7 @@ PCRE_VER = 10.31 PCRE_BB_REL = 0 DSFMT_VER = 2.2.3 OPENBLAS_VER = 0.3.5 -OPENBLAS_BB_REL = 1 +OPENBLAS_BB_REL = 2 LAPACK_VER = 3.5.0 SUITESPARSE_VER = 5.4.0 SUITESPARSE_BB_REL = 2 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index 3dcb93d281005..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -e7bdee6a6978f2cbc900fa32ef492854 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index 4c2c48e5de56d..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -286f84e14600617e46eb3d3bfd14dee24845385f9c3a764ce4a925d1a2d31defad9adcbba83956952c940c1e90dbf06e9d995d83176858392290e9f3bf93dc01 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index 1376bb06eae0e..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -263e0d085b723b7ec4d01838841ff3ee diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index 0ef72f2aeb5b1..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -977bc0754829ecceb9b4d8c4fa00bf972b1d42d5975d005472400f7429feddebfb1fe5930fabf9378ad552d3d771d31b984588816062da1a48df373b7b1228bc diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index 1da34a4a8ef79..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -1a5602d74db720b49ae6cc81f0dace96 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index 3d7d2e271a207..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -a42d3ee2904152538890266cabc30f4487a2b1e4c98a4dfa831d7bd42ffc0904a4cc587d9cee06cc07a46be727f7943914359f10f686ecd0e26f926ac04523dc diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/md5 deleted file mode 100644 index d5429a91195a5..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -b68c8f87ba525da59d3ce41dadefc1ce diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/sha512 deleted file mode 100644 index efff55d0029c1..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -3eeb0d6bab2a2084bd6cef5a7cdcbb7ba9fd810add7f41ae25d227b3a374a200c0273278171525f3e67f72fce2485c50665e8b506b86604cd1966ae576e196c2 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/md5 deleted file mode 100644 index 6d096f6cf6769..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -ea0c8c2a9db5b9be0ab1e092b76afca2 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/sha512 deleted file mode 100644 index a0a4321f57ebb..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -c142559c03571421eb72909bd305894c87c15a781d2b40d15d9996b69c7f027331b498fc2374a3477a7c8a8405afda5e8da4f0d2b9c205b730bf83065f5f6abc diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/md5 deleted file mode 100644 index 9d35c51ffcfc1..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -b8710afad990120835ba26b41a9960c9 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/sha512 deleted file mode 100644 index 5e0c168ab41a1..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -7b522018b4c02ed21c623d612199f1230c00cbe583ef8f3f6a64b685f38f77c2559d5043684b07d98eed0ef53649da8efcd0d93ec355f332d2e36b494b678659 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/md5 deleted file mode 100644 index 6703857508076..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -8c5723161d0d8cd8fdb19ba7d78a3e2e diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/sha512 deleted file mode 100644 index fefca48417060..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -fdec45cd4d25279496e08acec67bb21a19baced49ad35a9141651ea3a97f07159cd69651ca3c734ffa94cbf341b22ff0a13d1d615365fb7caecfb847ef5717e9 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/md5 deleted file mode 100644 index b4865f7a786cb..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -dbf33f89fe63b67f0b4e1eb6c479d7f9 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/sha512 deleted file mode 100644 index 06dc50f9059b4..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -13a5496d516ac6925b76918ffcc564ddaf4da1d7074e803a127d69e233d8c536650618b6775683eeafe0476c0fbb3ff85f5a76caedaa36c389ff4584901b7e89 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/md5 deleted file mode 100644 index 8e70545e496dd..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -217840cf4bcc2874c1b19aceab3ebe64 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/sha512 deleted file mode 100644 index a1fd61b15559d..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -9fd866d18ce6632b1e6a65122535289e5dcd260cfb430900acaa7413ee51c8344ca8dc7958a0f5e68d14f5526de06b1c23d84276ee2eae54ad08c052ac18ddee diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/md5 deleted file mode 100644 index 8a8a117fb8c36..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -b6319b5b891eddcdff8d32f094565fe1 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/sha512 deleted file mode 100644 index d90dc5e610926..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -6fd68da70076596ab16a493cd574afdf1740f0734659d0ff8cf1a3c293191c524b99f80453a2a368a362b987d3681cbcdfec8db3edfc668666652ef25623c64d diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/md5 deleted file mode 100644 index 3c34ba323c9ee..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -329ae468ca4c70d3e1a9b420caa8d4e9 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/sha512 deleted file mode 100644 index 3a7e19009e3c9..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -448a474f4015e249ec4ff0c199a5ed7ed16e5ed836b3f51cf6da23de3a20a8c06ecbf9ce1f81c0d10cf6e2441dddf88feff23dc14dd3281f1a2670f58b40bf61 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/md5 deleted file mode 100644 index ba13c7d83ca0c..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -9d42d4a77d2de9fbeb9347b742178417 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/sha512 deleted file mode 100644 index 58472df703951..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -41c0ca1c37526d362676bdeedf7fcf0b962b3a151b954c8b576a51594b9447c7e8d5bb5cf559afcc8b475041d8230bada00f24851c9b41259c841461e11979a3 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index 5f91d1818513d..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -a3e70794241cace350cf9a2e62924970 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index a132a6c8f8a12..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -382db2c8a8f5d4846f5c0a97e4ff6788a1cd64986afaf7cb04ccb8a30cf5d95077000ac23cef1be434eca9243990f5b57cccb6c85f673af8c3d6bdbcabc0bf11 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index 9f80027ff0c75..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -632440a7aa473e1578514e9661b54e57 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index 351b08eb50074..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -a70e3fa94d82ef7627da5316a143d7e7fe13e343d87bc911fa176784ebaf7765edf86071e23ebee9a90af45656986bf460d5e6ae625b556d6e98651ef5466c41 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index 551aabe2b0f39..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -1024754603b9cfe4efaafaae570667c2 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index 6027dc7b2e09c..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -8017c6f87694ce9a3d7260dda9ba9da224cf6741afa8f7a9b3381ce3a174a690f1dcf6ae149d2efc12e245a80e2060c0137fdd06934466a9950ab460b83f9de8 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/md5 deleted file mode 100644 index 70f131a4caa4f..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -264e7a054dfa8943771e3601bad54afa diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/sha512 deleted file mode 100644 index dcef40ec1339b..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -685db01127485d6bdfe9b09519df8009919b5822e72a2f90fdaa7cf459cbbc7a3b088f659a7e8bf5581fb246ca72ed29cb619a7d59ee5e887acc8fcde5b32e28 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/md5 deleted file mode 100644 index 7c77230842749..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -d10c66984952c61b6d5592b4f868441a diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/sha512 deleted file mode 100644 index ef3313f723da2..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -09b2f7ef9b0714aa200e0629bbd4479d86359df2ae5e302401dbc0b8cb0b48cc9581b0c59c55b60bb8eb8fcc708823dc6095f5dba10a7e9441855480df9a84d3 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/md5 deleted file mode 100644 index 0729c8a1d29b4..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -44401fc99bfce6426732585b5f1041b0 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/sha512 deleted file mode 100644 index f43da5902dd9a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -2ace1bcc1dbfdf970f7d918ef063ff1fc28c7544cd12dc29537323340f3fc7795860521ca9ab0846743bb1c9a86f840589136e3000e73a938d5c5793b3841adb diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/md5 deleted file mode 100644 index 0534748118b0c..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -ba247273bd873c3ef197fd28bad26fa7 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/sha512 deleted file mode 100644 index 38ab40ba0bc5b..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -898cd3e950947fe2c6a63f3c01190940f50bc9a7853280b40b3ff1f4e97edeb8b1a8e2863091ab59833d04f33c7901ef6eec689bac0e18eb8816788b435e9f43 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/md5 deleted file mode 100644 index e9683849b9b4d..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -12181786711e96ce3065c93303b4d6a8 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/sha512 deleted file mode 100644 index d0029630b3dc7..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -f039bad2310e7f0cc77d38a52b8ed097449d321c1cc875505b1228ddcb251837ff83b96baf08d64b1d50abe0d3c3d707f5b047c942fe3b0e1f2b6bb42baf63d4 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/md5 deleted file mode 100644 index 18543539e7f63..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -82973454e669cf7e7dfe3a3fea7855e8 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/sha512 deleted file mode 100644 index dbdf3ef0b2c95..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -6c16dda2d864f9005e9683559a2dabaf4219bf623d00eefac1654e864228acc69bac4e8ca392fa66289ae4b85394c3222e62ad770a7eb23fd7e0f60a4a336afd diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index 28d3c5881cbbb..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -8286ff436acbc1e913e5b91ac092dfab diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index f0f28f5b841d3..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -9fb6e92b5f55797d1052cd3cde2fbc505fc4bdc71ede36596afae58d9f1c9d590b25874b4737556edb26aeb4ba496c68cc42b1d3fc9458fb236bebcfeecd8eae diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index f334d7c073688..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -29f180d127ffb6e8cdbda84a56583d72 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index cf7f03bacaf8d..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -b88923466b35e99144888d1bc0eaf7ad071c03dea5c131a0cbf2f656dcaeac6e01d828429f7d06cb7ca371e6e94b8df34780be5cd8abed1232ce87d0b285336b diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index fa861da38739e..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -f596396c143bd3f5127961cc4879f466 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index 3e6ecfdf61238..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -f9fa067716f8a7de879b0883300b58bd35d84a247309a9118516653f763b309a55f18e727bbebd22b1fc337fecfc6e89e88285fea140d28a5297ef748a56dc37 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/md5 deleted file mode 100644 index 0130c514deb0f..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -e95a1dccfda94470b7f9a73ea69f54be diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/sha512 deleted file mode 100644 index 2f2741f491e21..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -f9a85ab5c2682506f386807a385ce987b8174280cea6574973168ef9b894c70eaa44069bc012716369aff6a385a3d6b702fce072eb809577b42182ceb9425d96 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/md5 deleted file mode 100644 index 584f50652f99b..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -9321019c8df77a9906744372f68dd7fa diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/sha512 deleted file mode 100644 index e05032022a631..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -5beb2cb810f5eb15d88ef11c535ea2cec111db3c37463593f7d0599bab3b667ead48022a5fbfaf13bbd3e5a5eaf27f7e9650a6b93530fb8d901237e5a4becc04 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/md5 deleted file mode 100644 index b275077d454f9..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -02d9695224b412599f488e6609659733 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/sha512 deleted file mode 100644 index a2fd81bc90b3f..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -f0ca29ca9317a667c00f4d4abc54c76913f00a014435cb38d89cbcf7a1acae6243b952b03ba83d6364c7ccb259bc73f3c523ab967143f23023ceee429f8db423 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index fdd9ae5ae0776..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -7335302c32b7312f7fe1baa968843fb0 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index 14fa834bbbe16..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -0ea8b27800b55bccea50ed12375ef6d6f3f170c8f43f8c1a5069daff84708fe6147a543e6f6691696511767fdae8cc11c21b7e345ae8d66a97b3bfc9d8d08e53 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index ba0b25c9b40a7..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -822f466ae7d0b6679d03dbd8585a013f diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index 56c5af73a2a85..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -b63078c9adb4e04f91d79c73e77b74c8c5048fbac6e7333411c5c4a4766ff6dd04d0be307d4745d14a6e4fa9e68f3fe6301f7d2a01cb9a4d14d1a3fbb7be27af diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index 453a4df5d2756..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -ccc32c921492a71458e94b819e909222 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index ed20426118390..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -17c18fb0c68458c73481136cf3fca5f5402a5c969e4824cbae665fea0db97d586abb55b0b11150032d510e6d99b96525220fa523be6310619b28f92ef5e8ade3 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/md5 deleted file mode 100644 index 04bc7bab4eebf..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -bf3264c9d17103f9f24207d4caa99f0d diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/sha512 deleted file mode 100644 index 40d5d5a6e584b..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -f97f2f0fd2770cda7ad7bb9054e541f1f7cd02e9c0fe1343129d4cc5ff36d5f918bc4a2a15be9e569de9f51e83d88b01e0935743963d47cc583063c01b42bd6b diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/md5 deleted file mode 100644 index af78ac87734bf..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -6285a6281c0297582d9bac5b9b703276 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/sha512 deleted file mode 100644 index 06a601c305ffe..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -e700ddf90c9130282f5021ea31cb45750ec6221017b0cf04fe0adc8872b2faf408a389e6285aad8f40ae77f149295ef591dfdfbbaf82506180bfbab7274f7668 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/md5 deleted file mode 100644 index 55e398465b526..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -3422a5e0e9f5fb513b9f622c54aa1738 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/sha512 deleted file mode 100644 index f4335aec93426..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -04499062d8b408ca67d0821857c59767af5bf5b63d34bec12b688c76f6dd189ea5259f90f55541266262d450d31cdf6ed4b6094290214f8e50db5e9d578d7a89 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 deleted file mode 100644 index d209413ec52c1..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -2f9d2d3ba3dd8795a0a5f7d51585dac7 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 deleted file mode 100644 index a98c643ed80be..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -3e519a123f0cacd20e3a02986c6f6700c1848ceda51ae6f57385e4314b21301fb8dbe7c053ba839d1b9a876ac444fbb72795220bbc39f2fefbf6ea362b5e1d3f diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 deleted file mode 100644 index 079ee8ac73976..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -074216cd3e1b25584e169261a5438c24 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 deleted file mode 100644 index 253191bd51694..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -d1f9f98caef821f5951c24ac01d9c83cb965d380ee687e3fa74edf5dee38b33c70ee6edcb8e4f22ecaa0be9d4dc75dcaba53a408a160c8459aa88c2d6d1cb741 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 deleted file mode 100644 index c1a0e60dd764a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -c9ce1f9cc6715b39a3526946da1531a6 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 deleted file mode 100644 index 479749a59fe6c..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -c420e4df91c022a7ae9e33c59234e918c42f67776971ac37a12638cb833a7e959fc1955a37c032fca863e3674d7f9ca915657db66d77d21a292734484f228909 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/md5 deleted file mode 100644 index 190c1291443ab..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -1dd1480e20562a5a3e68a6c8f05fa78f diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/sha512 deleted file mode 100644 index 5e03e5ab35db8..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -8ed77800a2677d6f4beb7a5f74277da94c6f48b478881b79bf78f64f231d7f264aaffdb9d5960e3e6ca1884537091f9744cac1313b8e6605808d87390ca52801 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/md5 deleted file mode 100644 index f16cfc31487ad..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -e8224db17d67300482aad424f15a0394 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/sha512 deleted file mode 100644 index 9845b1a62702a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -b8206363591dc15d8bd7e1d604f8b50b29955b378e378b7002ca5d0a9404a1c2f452f57a492f4ec620d98b8a297df5f4e4a5683fcfaa263589951fb9f034ddb7 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/md5 deleted file mode 100644 index 092558bf2dc91..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -a89adc41795565b3724322e7b7c720f1 diff --git a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/sha512 deleted file mode 100644 index 023b1c7c54afc..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -3886c78bba70184a433f4e2660522f42bab85ce2e23b24e8b27a5a26870e96aa780193615c3aa6c45f397747b1f1bd199af70a4dfba27e0a203207e15c2bd142 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..0ff730e27bbd5 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +14d62da838b053ab78c3c84a8df7c429 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..b6d2b6523c322 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +0141f903dbc62ccdcf01d8722ce7b03c74d94c661be796c1a242b0f385f891c15daf015331029b8ed692867d2e7f8303fa3d5c443ee65a9cfb9b78e3663617ab diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..13d91016ca6ea --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +a16f6e2bffd56d76735d64a36852f650 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..a7e5183c80e27 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +cc164665889562b2e86c4387f85175bd20bd665fc0ce2842a28107eea7f67d49f58067c2face4d768fffec7eb6ca17450c9f07b927b897bed4114e43bde0e83a diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..f50a76bcdb99b --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +8d492b89b0b1c09e620647976df19512 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..1c908038d6288 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +ff3de25afefc10577c7860cd3fb9496585b763aad683ee39ccbbb596223910ace4b8411fc1f20a3b5708098cafcfe31b873009cf12777cd9b9c4b8d462122fd6 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..6d5f519ff9b3b --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +9d7a69fe6ed99592087f3b81c6b1c8a1 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..90cf64b1c40b0 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +7c2029a0e9f9efc59813f99fd220a7c8796989db47758857da31b8c794d92de167f35992d399301d79641f79f3b2831afe83af1e85ad99fe4153248dbe5badaf diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..e679b3a09153d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +93a1250c75e7cec00a52c091a6fa89cc diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..f5a13bfe372a7 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +1949277d8a762c2f0d8bd37fcc10d97420b82d5a96da2987323ec7d6954b36b7eae52732499e7a054adae1b395158e46eda41daf1e0008c23a02fe4f8059ee3c diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..e73b73e93ab95 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +f8e98218f3a832972531924b770cf8fe diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..28b66a95b06f8 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.aarch64-linux-musl-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +7a4064f5e79dd11cc14d85dc1e37fd923cebaebc92483a1c90e7a73b072d789a87fb3b0c46bfd0668307e4bb32c2c4af3f190eac2da934f37d61d81b980a878b diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..425aa69633ad5 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +636d2d2c14abc9e3b14d1dc546ad8935 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..33056420be53d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +3394f5ee2f35c168e7f6be9c0653dd157e7da49040b9ec94d6f4d6d1ad2736cdc6f10f6626f08548238c3a11b69ffefa159c5495d1fe58855c0c41c2383641fd diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..359a29ce73ba3 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +a336efef9cf11945477b2bb805282810 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..35b378898f5df --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +8c0e558aa047f60a5e695229b0f7585363448dd2b61c0a193bdf00d27fffecd3a9c37a0e423821af7beb909c874074fe7a1d4d4cec623bd964205ee20d2e3b23 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..306b7bd150621 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +28dd6d175a5a6fe86a4d01f9031b76cf diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..0944fab6b0cae --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-gnueabihf-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +986cabd473a353731479036db91f4a462fe6b389ddee35aacb3f66a15df8e1d38956c385d3ef02e399bde70458a3fc6b769466db652f4495abd7d7d2ff0b26b1 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..d7a989258cf1e --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +1487ee7fb0ff0e2824be40dfa79badff diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..856c33f5ca046 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +ecd8abcb46bd26e72e6ccda2ef463521629dcf6132dd065079b8da71e7291c0561c801bf7c94a467b6aa2839539ee990ccf4b4ea5160f492fb704b2ffcfe0283 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..8b940c0392ebe --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +c478e1ae81917a27fffbdef01829d79e diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..92d6a1791620b --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +22aef28d214c41556fc45ffc3903073bd7f5b44ec6714f4c9d8f50757200c89c3da3e61d96ab587dc353ec4e88b67b8c553c938ecb32261347b1e3c5e8901c0e diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..33248b04076f8 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +fb6116f48854a9e183d6c6773e889756 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..debea1328236c --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.arm-linux-musleabihf-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +33edfa3fe05f2e6a246eda391813e8db30ed744789032e499cbfb4e1f9f73c67ce6e439dc7ca4795d8b38b9dab6420979f51ef818511e8601398144ef41f7b2e diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..88150070e1dbe --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +15c38ae63c6c70bbcf7e52bff16ec915 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..86c389ba825ae --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +5f2464ad3b56cec0ca343f301460819141dec3217cf15b171da657768571eae77313ce156d56fd5cc76c6d95758597015dc7d04e209c0ffb0dcbeedb99d788e0 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..8f3b533c8a12e --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +ad1c639472af0e6245f8faa5cbf65f57 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..32f1d34614434 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +fe85b545b4e0787fc1b6c1f2948a4db09eafe365c1bf52a5979430f014d23a8713bb7c1ff29264fa02e16736b9407c7aaf56416354dd3c1e2e2ae9b32a00f5d2 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..2811baa62830a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +e25cb820b2eb0d593fb0c875ae2086a1 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..813e18b37d218 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +6b5d4f21609f9382d01b4e5c4b7becbf61b50aa3c20f0db6a78736506ad83b0ec7225790f1127d1601bb96ea3318d3704b18e71fd6c1559006147525cb2b3389 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..a25e0ac9cd1ee --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +f2c96e84acbded44c263270367b6cf9f diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..ac7fd7a98cd88 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +3d0d2fac80ec4760c96740e4607086b192d3309ae5bd5b43288655137b5a2a4c78448b283cd50c935f2ad742348bb4770213446c31216972ed1ecf520e34c629 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..517b093841772 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +520372fb05206ac794ff2ac5d23234b4 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..0d6b5fce24b0b --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +92ffc6f2d0fbf6c79dba8f47f44ca7ca11a12e5e6ad43e88d166ba66fcc2b82f62f914ef97ae0831267309ee10c450e191ae0dae51eaf969315e4d3539a8ab57 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..dc6f97866ad07 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +c94c117ba0d7eeeb59df74ffe3733431 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..5ecad97d852d6 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-linux-musl-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +dd11c827b50e5983ed7705dcebfb50249ebbaf661a371d7d0e4f2a8d7401d9999def5bf2491c2461a4dd9b582e714d9350c70298ef388cb32a4d38060a124d88 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..8e0ecf2ae8175 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +fb8b0d915623c27936ea293a2eb2850e diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..c051be3ce60c7 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +e3600b813bc7ba5f736899348bf34965f3affead6fadc71555b8bc5e338b06e90a6865a409186604b0fc2d3bdf84ff2e2bf103909cbf7c253dfaff030bbe21fb diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..ca619b7d00e22 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +5b9eabe82ad7de280d739f2d594e8fdc diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..5382db5450f90 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +a532481b46d1d7999618676b5d9eba5fd527d25dca5ac2666d9a2258245d77aef742bb2909ff70543d7a06e5182a99fd6c356f3c59c8aff822f9280cbcaa9cf3 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..5d4006dab8d1d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +d02eacbfb41fe7827331865396707b4b diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..4519f15a3ee78 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.i686-w64-mingw32-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +8c58b822ecfef7192cf36ff391bf34087eecad299c4417da06fdd990c2e71daf8b717770eabeca7e5b67a020b415b9294d44ac897ccb503a1a34943cd563efc5 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..5a551dbca1f2f --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +d1e4a5d1a43e018b67532fa98081206e diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..a9738af935abd --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +4357a9f323739c90e6f1e0797be0d8f11e36fbfa9f8a64a6050833244a786166a8391e2c73b1f8130fa83db3d57b58fd48bf2081ba79992b452ffec57d1759a2 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..9e59162e95545 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +2c7930c84ea6cd11c69aa25941087f5c diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..fc2938fabcf47 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +a53d47e1d7ff25258b20394195e374c9f986b2e7edb0dd66c314a5f12a7d28b4518e5ab87fe5f0feaac99c2f2961292b1ce1d5436ea83104bf089d3d08607d93 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..9de6c1c372789 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +1b881141039ba34a7f2c29cef9305062 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..809915d1f951d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +23ab0524b4403e002bdf280f83fb955de11176fdf7cfaed3f9197993f7c09ad5c1fea14dc6402f1756272aa5e427ffd904418db4de02ea9efbc96de60baf6ee5 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..8e4794e0c1e90 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +eda2584e55dc066e5549048b84b35f05 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..8a2877a50c43a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +3034f82dc2e06f8f3474ffd6c9692d58186edb59f5f32578de9c21777fbff9def9abe000ca79ae5044be82825f70fab4a9612bbc8df7b0d23dfc77fa28b8f363 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..31a0759103425 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +aa649a88f904208bc3e979af833c9ecd diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..ec02f2fc3d2f7 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +c2d7c3a718106de87777beea3addd658ce06f7f1ed5973c5d17fcf97d958741a19df114f62771afc77a7f2c5e25f8302471772cafa30ee40ef7cdfebcec8477b diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..6b0b046be9baa --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +f3c53bfaabc5027cd95838524ed1ab4e diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..2ac1f2ad3fcab --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-apple-darwin14-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +cd40f1510f66071551ef1d752a64dada6cf82128b725030d8bab7a3cd4b25397b3504763f165498c7231f9c2577c5eddee4cd8b7d8810526221b15d3647ad9cc diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..29cb2f9ae2f68 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +d6452ff5d4fd1cf1d77239d22cf6a1b5 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..75e512ab6563a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +801c374ee8e8f296e6b84536d2d719bee35e1f0380d947ea119d0a5ebfa7151e358a6228078b516338a4957580de63b3fa083d5be08be2930832c105286cfc49 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..6abba7cc4e1b3 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +124282a831a7d39036a7d3b391d513ec diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..f197900f95b54 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +2ff54c2700e5c1c1dd8bca51cbe8654aa364e5b57f871b6f2701f4a5412ff0ad64ce173fbd9ce7443b6625177e4d645991736966bfbf3fdbdc66bc96fc22d4a5 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..5fdab5acc4caa --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +e0822060b13864f9b0a4416149d89336 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..1364968afd6b5 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +8beca6be0853117eae41b84e984601fd61ef15fd5f6555f1d71375d60a22693cdbfbfac93ec76dd14fa476a6d474b29e8c7efe96a4acb2e90433fe8f325690e1 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..0b8f5e81d8145 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +4c3dffaacf774f5838cd2d0f178a4e67 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..65b9bd3cb1598 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +9552f805840c48ed24d65ac858ac13db158cb3579753400c778a3aabac39b20d47a59ab36c86293e5c8b15837e8567e8635792f5ee426be83d26cc6de7bfdcb0 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..e3e217878cb5a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +d0724e5fd3ffdb759e293724f4b9fa73 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..b0ea95ed0220d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +00b6d2eb995e0c1d973e6d30bd70b92d7d2c5f6d14f9cb1788b16d772e91faef8b095e3ae13729c168088fe005caf2e303d51b9414c243b4e12d8beee7547d3d diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..f7b5eba54c30d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +36258813bf0e72e1566bd73816bd7b6a diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..f7c773c4f3834 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-linux-musl-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +289903f344b251e122dd76bb0c9e097323e2da1f3995391dc9882098346355767c8d4933e6d1cc98074f3d85bb326aac5785b716dd6198d122e48f2c7fd072d4 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..3f7656c4b0f73 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +457e4f86c5f482d777f41a24eb9642e1 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..7b67ada7f99b8 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +acd3f8b3d42e1fa4c46d82bc9c60042d91985d41b440fd7259b4370b93b19287792d8b14fa7d5a5510945b5201f225aadbbc96ff2edee0ab2c1a254624647247 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..9132655c248fd --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +e57e4cb36402d9acb3d1a89a88e37826 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..ba5d1fb77c43e --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +b372b1d6fbaacb2e4c9baf585e1c6fa85a72ff37e9dc644a27308586edffa5e1c5c7e0be4245fb965e7cd0c6686f284d0112be60d5456e0892b097737756f4cf diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..a9ec847feb1a1 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +61b60d24090c00e38cf8b6af83fd884f diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..47d269f26f87a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +7f6cf4818134353462b08d23ed1adf4360653e58eb848b56bf49aee3c3f591ec91999048f4c1540001a35d15bc5e7795eb09ad8cb549663d56f7613c987b4b7c diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc4.tar.gz/md5 new file mode 100644 index 0000000000000..cb8220313e440 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +f5c0d5d809ddcf721ae1dc68eaf2c0c4 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc4.tar.gz/sha512 new file mode 100644 index 0000000000000..7e8c7609b2b04 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +395bdc4a316cf55206966c858bf7320d0f66cdf2f7d6393cc8b3dfd74fc4983a59dc522ac8c18534c6ecde5bf877af57dbc088c83fa6dd8270326f587ceecd6a diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc7.tar.gz/md5 new file mode 100644 index 0000000000000..a6c82f8f63eb1 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +f40e5bc882602ea1298089a92350bf5a diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc7.tar.gz/sha512 new file mode 100644 index 0000000000000..72ce16a123776 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +c4bc4b6922a57a9806ad007bd3e0655206717acf722e4e794b709f8b06efd6106d4b4e943276061a7632e7191e307317e3f3a205ff46e8ef3b9c0ea8634fe4f3 diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc8.tar.gz/md5 new file mode 100644 index 0000000000000..09801e687c899 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +617c4587e25dc495446d389fa323c45f diff --git a/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc8.tar.gz/sha512 new file mode 100644 index 0000000000000..38bc2a3bf33a6 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-2.x86_64-w64-mingw32-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +63938a2e8ee30807cbeca92589d79d3c438f2aed3eb818735c3ab28e6a6d9835fb7cf250ea7c05fdc8949ba32769f394e6981be46c71b19a389a9b00501962ee diff --git a/deps/checksums/Pkg-394e7c5d55d3722f5b2ab660ca0a694ea0041974.tar.gz/md5 b/deps/checksums/Pkg-394e7c5d55d3722f5b2ab660ca0a694ea0041974.tar.gz/md5 new file mode 100644 index 0000000000000..232f1eff47021 --- /dev/null +++ b/deps/checksums/Pkg-394e7c5d55d3722f5b2ab660ca0a694ea0041974.tar.gz/md5 @@ -0,0 +1 @@ +4fc38de76502dba6b87a0da938dfd8f7 diff --git a/deps/checksums/Pkg-394e7c5d55d3722f5b2ab660ca0a694ea0041974.tar.gz/sha512 b/deps/checksums/Pkg-394e7c5d55d3722f5b2ab660ca0a694ea0041974.tar.gz/sha512 new file mode 100644 index 0000000000000..dd1fda7d20e33 --- /dev/null +++ b/deps/checksums/Pkg-394e7c5d55d3722f5b2ab660ca0a694ea0041974.tar.gz/sha512 @@ -0,0 +1 @@ +6b5324ee3efad2bf1af6ed4503509c6297e710040ccd7d5c67263625f24eab9a88f28ad56cb77ca04ccc976c051f2fbf2bb2019df442ab4823e5a7aff977b825 diff --git a/deps/checksums/Pkg-b7d26be39a4e5467f73530592b27fe28e40f357b.tar.gz/md5 b/deps/checksums/Pkg-b7d26be39a4e5467f73530592b27fe28e40f357b.tar.gz/md5 deleted file mode 100644 index e1b902fa28ba3..0000000000000 --- a/deps/checksums/Pkg-b7d26be39a4e5467f73530592b27fe28e40f357b.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -dd32624c45e8b3077bd12751ac541c4d diff --git a/deps/checksums/Pkg-b7d26be39a4e5467f73530592b27fe28e40f357b.tar.gz/sha512 b/deps/checksums/Pkg-b7d26be39a4e5467f73530592b27fe28e40f357b.tar.gz/sha512 deleted file mode 100644 index 6fa0233ed6ac4..0000000000000 --- a/deps/checksums/Pkg-b7d26be39a4e5467f73530592b27fe28e40f357b.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -e30b43d06bf201fd4131881c7806769f4c9963c65f0e03eb5bbdb147d2373c69e5f8e1a567883acb12fb6c91fcbeb0acbc06cccb2232f5ce924f4c62a3039917 diff --git a/deps/tools/bb-install.mk b/deps/tools/bb-install.mk index 198cfe1fc84cd..4db7c5d029691 100644 --- a/deps/tools/bb-install.mk +++ b/deps/tools/bb-install.mk @@ -1,6 +1,6 @@ # Auto-detect triplet once, create different versions that we use as defaults below for each BB install target # This is much more efficient than launching `gcc` and `python` once for each BB install target. -BB_TRIPLET_GCCABI_CXXABI := $(shell python $(call cygpath_w,$(JULIAHOME)/contrib/normalize_triplet.py) $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)) "$(shell $(FC) --version | head -1)" "$(shell echo '\#include ' | $(CXX) $(CXXFLAGS) -x c++ -dM -E - | grep _GLIBCXX_USE_CXX11_ABI | awk '{ print $$3 }' )") +BB_TRIPLET_GCCABI_CXXABI := $(shell python $(JULIAHOME)/contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)) "$(shell $(FC) --version | head -1)" "$(shell echo '\#include ' | $(CXX) $(CXXFLAGS) -x c++ -dM -E - | grep _GLIBCXX_USE_CXX11_ABI | awk '{ print $$3 }' )") BB_TRIPLET_GCCABI := $(subst $(SPACE),-,$(filter-out cxx%,$(subst -,$(SPACE),$(BB_TRIPLET_GCCABI_CXXABI)))) BB_TRIPLET_CXXABI := $(subst $(SPACE),-,$(filter-out gcc%,$(subst -,$(SPACE),$(BB_TRIPLET_GCCABI_CXXABI)))) BB_TRIPLET := $(subst $(SPACE),-,$(filter-out cxx%,$(filter-out gcc%,$(subst -,$(SPACE),$(BB_TRIPLET_GCCABI_CXXABI))))) diff --git a/src/array.c b/src/array.c index 2744eafeab958..e5885f2308220 100644 --- a/src/array.c +++ b/src/array.c @@ -470,6 +470,8 @@ JL_DLLEXPORT jl_value_t *jl_array_to_string(jl_array_t *a) JL_DLLEXPORT jl_value_t *jl_pchar_to_string(const char *str, size_t len) { size_t sz = sizeof(size_t) + len + 1; // add space for trailing \nul protector and size + if (sz < len) // overflow + jl_throw(jl_memory_exception); if (len == 0) return jl_an_empty_string; jl_value_t *s = jl_gc_alloc_(jl_get_ptls_states(), sz, jl_string_type); // force inlining @@ -482,6 +484,8 @@ JL_DLLEXPORT jl_value_t *jl_pchar_to_string(const char *str, size_t len) JL_DLLEXPORT jl_value_t *jl_alloc_string(size_t len) { size_t sz = sizeof(size_t) + len + 1; // add space for trailing \nul protector and size + if (sz < len) // overflow + jl_throw(jl_memory_exception); if (len == 0) return jl_an_empty_string; jl_value_t *s = jl_gc_alloc_(jl_get_ptls_states(), sz, jl_string_type); // force inlining diff --git a/src/ccall.cpp b/src/ccall.cpp index 9cf25cf8a33ff..baded9e5b8c7e 100644 --- a/src/ccall.cpp +++ b/src/ccall.cpp @@ -1669,10 +1669,10 @@ static jl_cgval_t emit_ccall(jl_codectx_t &ctx, jl_value_t **args, size_t nargs) } else if (!jl_has_free_typevars(ety)) { Value *idx = emit_unbox(ctx, T_size, idxv, (jl_value_t*)jl_ulong_type); - Value *arrayptr = emit_bitcast(ctx, emit_arrayptr(ctx, aryv, aryex), T_ppjlvalue); - Value *slot_addr = ctx.builder.CreateGEP(arrayptr, idx); - Value *load = tbaa_decorate(tbaa_arraybuf, ctx.builder.CreateLoad(slot_addr)); - Value *res = ctx.builder.CreateZExt(ctx.builder.CreateICmpNE(load, V_null), T_int32); + Value *arrayptr = emit_bitcast(ctx, emit_arrayptr(ctx, aryv, aryex), T_pprjlvalue); + Value *slot_addr = ctx.builder.CreateInBoundsGEP(T_prjlvalue, arrayptr, idx); + Value *load = tbaa_decorate(tbaa_ptrarraybuf, ctx.builder.CreateLoad(T_prjlvalue, slot_addr)); + Value *res = ctx.builder.CreateZExt(ctx.builder.CreateICmpNE(load, Constant::getNullValue(T_prjlvalue)), T_int32); JL_GC_POP(); return mark_or_box_ccall_result(ctx, res, retboxed, rt, unionall, static_rt); } diff --git a/src/cgutils.cpp b/src/cgutils.cpp index 13faef984574e..db0821fd9e8ac 100644 --- a/src/cgutils.cpp +++ b/src/cgutils.cpp @@ -785,13 +785,18 @@ static unsigned get_box_tindex(jl_datatype_t *jt, jl_value_t *ut) static Value *emit_nthptr_addr(jl_codectx_t &ctx, Value *v, ssize_t n, bool gctracked = true) { - return ctx.builder.CreateInBoundsGEP(emit_bitcast(ctx, maybe_decay_tracked(v), T_pprjlvalue), - ConstantInt::get(T_size, n)); + return ctx.builder.CreateInBoundsGEP( + T_prjlvalue, + emit_bitcast(ctx, maybe_decay_tracked(v), T_pprjlvalue), + ConstantInt::get(T_size, n)); } static Value *emit_nthptr_addr(jl_codectx_t &ctx, Value *v, Value *idx) { - return ctx.builder.CreateInBoundsGEP(emit_bitcast(ctx, maybe_decay_tracked(v), T_pprjlvalue), idx); + return ctx.builder.CreateInBoundsGEP( + T_prjlvalue, + emit_bitcast(ctx, maybe_decay_tracked(v), T_pprjlvalue), + idx); } static Value *emit_nthptr(jl_codectx_t &ctx, Value *v, ssize_t n, MDNode *tbaa) @@ -1482,8 +1487,10 @@ static bool emit_getfield_unknownidx(jl_codectx_t &ctx, minimum_align = std::min(minimum_align, (size_t)julia_alignment(ft)); } - Value *fldptr = ctx.builder.CreateInBoundsGEP(maybe_decay_tracked( - emit_bitcast(ctx, data_pointer(ctx, strct), T_pprjlvalue)), idx); + Value *fldptr = ctx.builder.CreateInBoundsGEP( + T_prjlvalue, + maybe_decay_tracked(emit_bitcast(ctx, data_pointer(ctx, strct), T_pprjlvalue)), + idx); Value *fld = tbaa_decorate(strct.tbaa, maybe_mark_load_dereferenceable( ctx.builder.CreateLoad(T_prjlvalue, fldptr), @@ -1565,8 +1572,9 @@ static jl_cgval_t emit_getfield_knownidx(jl_codectx_t &ctx, const jl_cgval_t &st // can pessimize mem2reg if (byte_offset > 0) { addr = ctx.builder.CreateInBoundsGEP( - emit_bitcast(ctx, staddr, T_pint8), - ConstantInt::get(T_size, byte_offset)); + T_int8, + emit_bitcast(ctx, staddr, T_pint8), + ConstantInt::get(T_size, byte_offset)); } else { addr = staddr; @@ -1921,8 +1929,8 @@ static Value *emit_array_nd_index( ctx.builder.SetInsertPoint(failBB); // CreateAlloca is OK here since we are on an error branch Value *tmp = ctx.builder.CreateAlloca(T_size, ConstantInt::get(T_size, nidxs)); - for(size_t k=0; k < nidxs; k++) { - ctx.builder.CreateStore(idxs[k], ctx.builder.CreateInBoundsGEP(tmp, ConstantInt::get(T_size, k))); + for (size_t k = 0; k < nidxs; k++) { + ctx.builder.CreateStore(idxs[k], ctx.builder.CreateInBoundsGEP(T_size, tmp, ConstantInt::get(T_size, k))); } ctx.builder.CreateCall(prepare_call(jlboundserrorv_func), { mark_callee_rooted(a), tmp, ConstantInt::get(T_size, nidxs) }); @@ -2435,8 +2443,9 @@ static void emit_setfield(jl_codectx_t &ctx, Value *addr = data_pointer(ctx, strct); if (byte_offset > 0) { addr = ctx.builder.CreateInBoundsGEP( - emit_bitcast(ctx, maybe_decay_tracked(addr), T_pint8), - ConstantInt::get(T_size, byte_offset)); // TODO: use emit_struct_gep + T_int8, + emit_bitcast(ctx, maybe_decay_tracked(addr), T_pint8), + ConstantInt::get(T_size, byte_offset)); // TODO: use emit_struct_gep } jl_value_t *jfty = jl_svecref(sty->types, idx0); if (jl_field_isptr(sty, idx0)) { @@ -2558,7 +2567,9 @@ static jl_cgval_t emit_new_struct(jl_codectx_t &ctx, jl_value_t *ty, size_t narg if (!jl_field_isptr(sty, i) && jl_is_uniontype(jl_field_type(sty, i))) { tbaa_decorate(tbaa_unionselbyte, ctx.builder.CreateStore( ConstantInt::get(T_int8, 0), - ctx.builder.CreateInBoundsGEP(emit_bitcast(ctx, strct, T_pint8), + ctx.builder.CreateInBoundsGEP( + T_int8, + emit_bitcast(ctx, strct, T_pint8), ConstantInt::get(T_size, jl_field_offset(sty, i) + jl_field_size(sty, i) - 1)))); } } @@ -2578,7 +2589,7 @@ static jl_cgval_t emit_new_struct(jl_codectx_t &ctx, jl_value_t *ty, size_t narg tbaa_decorate(strctinfo.tbaa, ctx.builder.CreateStore( ConstantPointerNull::get(cast(T_prjlvalue)), ctx.builder.CreateInBoundsGEP(T_prjlvalue, emit_bitcast(ctx, strct, T_pprjlvalue), - ConstantInt::get(T_size, jl_field_offset(sty, i) / sizeof(void*))))); + ConstantInt::get(T_size, jl_field_offset(sty, i) / sizeof(void*))))); } } for (size_t i = nargs; i < nf; i++) { @@ -2586,7 +2597,7 @@ static jl_cgval_t emit_new_struct(jl_codectx_t &ctx, jl_value_t *ty, size_t narg tbaa_decorate(tbaa_unionselbyte, ctx.builder.CreateStore( ConstantInt::get(T_int8, 0), ctx.builder.CreateInBoundsGEP(emit_bitcast(ctx, strct, T_pint8), - ConstantInt::get(T_size, jl_field_offset(sty, i) + jl_field_size(sty, i) - 1)))); + ConstantInt::get(T_size, jl_field_offset(sty, i) + jl_field_size(sty, i) - 1)))); } } bool need_wb = false; diff --git a/src/gc.c b/src/gc.c index 785018c5a5b05..1de7c1715ab34 100644 --- a/src/gc.c +++ b/src/gc.c @@ -3,6 +3,9 @@ #include "gc.h" #include "julia_gcext.h" #include "julia_assert.h" +#ifdef __GLIBC__ +#include // for malloc_trim +#endif #ifdef __cplusplus extern "C" { @@ -555,6 +558,10 @@ static int prev_sweep_full = 1; // Full collection heuristics static int64_t live_bytes = 0; static int64_t promoted_bytes = 0; +#ifdef __GLIBC__ +// maxrss at last malloc_trim +static int64_t last_trim_maxrss = 0; +#endif static int64_t last_full_live_ub = 0; static int64_t last_full_live_est = 0; @@ -2500,7 +2507,9 @@ static void mark_roots(jl_gc_mark_cache_t *gc_cache, jl_gc_mark_sp_t *sp) gc_mark_queue_obj(gc_cache, sp, jl_main_module); // tasks +#ifdef JULIA_ENABLE_THREADING jl_gc_mark_enqueued_tasks(gc_cache, sp); +#endif // invisible builtin values if (jl_an_empty_vec_any != NULL) @@ -2683,6 +2692,8 @@ static void jl_gc_queue_bt_buf(jl_gc_mark_cache_t *gc_cache, jl_gc_mark_sp_t *sp } } +size_t jl_maxrss(void); + // Only one thread should be running in this function static int _jl_gc_collect(jl_ptls_t ptls, int full) { @@ -2839,6 +2850,18 @@ static int _jl_gc_collect(jl_ptls_t ptls, int full) } } +#ifdef __GLIBC__ + if (sweep_full) { + // issue #30653 + // empirically, the malloc runaway seemed to occur within a growth gap + // of about 20-25% + if (jl_maxrss() > (last_trim_maxrss/4)*5) { + malloc_trim(0); + last_trim_maxrss = jl_maxrss(); + } + } +#endif + uint64_t gc_end_t = jl_hrtime(); uint64_t pause = gc_end_t - t0; gc_final_pause_end(t0, gc_end_t); diff --git a/src/jl_uv.c b/src/jl_uv.c index 5aa5c3ddf0962..3ca423171d4d3 100644 --- a/src/jl_uv.c +++ b/src/jl_uv.c @@ -190,6 +190,8 @@ JL_DLLEXPORT void jl_uv_req_set_data(uv_req_t *req, void *data) { req->data = da JL_DLLEXPORT void *jl_uv_handle_data(uv_handle_t *handle) { return handle->data; } JL_DLLEXPORT void *jl_uv_write_handle(uv_write_t *req) { return req->handle; } +extern volatile unsigned _threadedregion; + JL_DLLEXPORT int jl_run_once(uv_loop_t *loop) { jl_ptls_t ptls = jl_get_ptls_states(); @@ -207,13 +209,14 @@ JL_DLLEXPORT int jl_run_once(uv_loop_t *loop) JL_DLLEXPORT int jl_process_events(uv_loop_t *loop) { jl_ptls_t ptls = jl_get_ptls_states(); - if (loop) { + if (loop && (_threadedregion || ptls->tid == 0)) { jl_gc_safepoint_(ptls); - JL_UV_LOCK(); - loop->stop_flag = 0; - int r = uv_run(loop,UV_RUN_NOWAIT); - JL_UV_UNLOCK(); - return r; + if (jl_mutex_trylock(&jl_uv_mutex)) { + loop->stop_flag = 0; + int r = uv_run(loop,UV_RUN_NOWAIT); + JL_UV_UNLOCK(); + return r; + } } return 0; } diff --git a/src/jloptions.c b/src/jloptions.c index 4b11093433045..04f6f42165d61 100644 --- a/src/jloptions.c +++ b/src/jloptions.c @@ -620,8 +620,9 @@ JL_DLLEXPORT void jl_parse_opts(int *argcp, char ***argvp) } jl_options.code_coverage = codecov; jl_options.malloc_log = malloclog; - *argvp += optind; - *argcp -= optind; + int proc_args = *argcp < optind ? *argcp : optind; + *argvp += proc_args; + *argcp -= proc_args; } JL_DLLEXPORT void jl_set_ARGS(int argc, char **argv) diff --git a/src/jltypes.c b/src/jltypes.c index 0d59bdc3e659e..780930e2354c0 100644 --- a/src/jltypes.c +++ b/src/jltypes.c @@ -819,8 +819,21 @@ static int within_typevar(jl_value_t *t, jl_value_t *vlb, jl_value_t *vub) struct _jl_typestack_t; typedef struct _jl_typestack_t jl_typestack_t; -static jl_value_t *inst_datatype(jl_datatype_t *dt, jl_svec_t *p, jl_value_t **iparams, size_t ntp, - int cacheable, jl_typestack_t *stack); +static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value_t **iparams, size_t ntp, + int cacheable, jl_typestack_t *stack, jl_typeenv_t *env); + +// Build an environment mapping a TypeName's parameters to parameter values. +// This is the environment needed for instantiating a type's supertype and field types. +static jl_value_t *inst_datatype_env(jl_value_t *dt, jl_svec_t *p, jl_value_t **iparams, size_t ntp, + int cacheable, jl_typestack_t *stack, jl_typeenv_t *env, int c) +{ + if (jl_is_datatype(dt)) + return inst_datatype_inner((jl_datatype_t*)dt, p, iparams, ntp, cacheable, stack, env); + assert(jl_is_unionall(dt)); + jl_unionall_t *ua = (jl_unionall_t*)dt; + jl_typeenv_t e = { ua->var, iparams[c], env }; + return inst_datatype_env(ua->body, p, iparams, ntp, cacheable, stack, &e, c + 1); +} jl_value_t *jl_apply_type(jl_value_t *tc, jl_value_t **params, size_t n) { @@ -836,12 +849,13 @@ jl_value_t *jl_apply_type(jl_value_t *tc, jl_value_t **params, size_t n) if (jl_is_datatype(u) && n == jl_nparams((jl_datatype_t*)u) && ((jl_datatype_t*)u)->name->wrapper == tc) { int cacheable = 1; - for(i=0; i < n; i++) { + for (i = 0; i < n; i++) { if (jl_has_free_typevars(params[i])) { - cacheable = 0; break; + cacheable = 0; + break; } } - return inst_datatype((jl_datatype_t*)u, NULL, params, n, cacheable, NULL); + return inst_datatype_env(tc, NULL, params, n, cacheable, NULL, NULL, 0); } } JL_GC_PUSH1(&tc); @@ -1068,6 +1082,8 @@ static jl_value_t *normalize_vararg(jl_value_t *va) return va; } +static jl_value_t *_jl_instantiate_type_in_env(jl_value_t *ty, jl_unionall_t *env, jl_value_t **vals, jl_typeenv_t *prev, jl_typestack_t *stack); + static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value_t **iparams, size_t ntp, int cacheable, jl_typestack_t *stack, jl_typeenv_t *env) { @@ -1244,6 +1260,7 @@ static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value if (cacheable && !ndt->abstract) ndt->uid = jl_assign_type_uid(); + jl_datatype_t *primarydt = ((jl_datatype_t*)jl_unwrap_unionall(tn->wrapper)); if (istuple || isnamedtuple) { ndt->super = jl_any_type; } @@ -1252,10 +1269,12 @@ static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value jl_gc_wb(ndt, ndt->super); } jl_svec_t *ftypes = dt->types; + if (ftypes == NULL) + ftypes = primarydt->types; if (ftypes == NULL || dt->super == NULL) { // in the process of creating this type definition: // need to instantiate the super and types fields later - assert(inside_typedef && !istuple && !isnamedtuple); + assert((inside_typedef || primarydt->super) && !istuple && !isnamedtuple); arraylist_push(&partial_inst, ndt); } else { @@ -1292,25 +1311,6 @@ static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value return (jl_value_t*)ndt; } -// Build an environment mapping a TypeName's parameters to parameter values. -// This is the environment needed for instantiating a type's supertype and field types. -static jl_value_t *inst_datatype_env(jl_value_t *dt, jl_svec_t *p, jl_value_t **iparams, size_t ntp, - int cacheable, jl_typestack_t *stack, jl_typeenv_t *env, int c) -{ - if (jl_is_datatype(dt)) - return inst_datatype_inner((jl_datatype_t*)dt, p, iparams, ntp, cacheable, stack, env); - assert(jl_is_unionall(dt)); - jl_unionall_t *ua = (jl_unionall_t*)dt; - jl_typeenv_t e = { ua->var, iparams[c], env }; - return inst_datatype_env(ua->body, p, iparams, ntp, cacheable, stack, &e, c+1); -} - -static jl_value_t *inst_datatype(jl_datatype_t *dt, jl_svec_t *p, jl_value_t **iparams, size_t ntp, - int cacheable, jl_typestack_t *stack) -{ - return inst_datatype_env(dt->name->wrapper, p, iparams, ntp, cacheable, stack, NULL, 0); -} - static jl_tupletype_t *jl_apply_tuple_type_v_(jl_value_t **p, size_t np, jl_svec_t *params) { int cacheable = 1; @@ -1319,9 +1319,7 @@ static jl_tupletype_t *jl_apply_tuple_type_v_(jl_value_t **p, size_t np, jl_svec if (!jl_is_concrete_type(p[i])) cacheable = 0; } - jl_datatype_t *ndt = (jl_datatype_t*)inst_datatype(jl_anytuple_type, params, p, np, - cacheable, NULL); - return ndt; + return (jl_datatype_t*)inst_datatype_inner(jl_anytuple_type, params, p, np, cacheable, NULL, NULL); } JL_DLLEXPORT jl_tupletype_t *jl_apply_tuple_type(jl_svec_t *params) @@ -1336,12 +1334,12 @@ JL_DLLEXPORT jl_tupletype_t *jl_apply_tuple_type_v(jl_value_t **p, size_t np) jl_datatype_t *jl_inst_concrete_tupletype(jl_svec_t *p) { - return (jl_datatype_t*)inst_datatype(jl_anytuple_type, p, jl_svec_data(p), jl_svec_len(p), 1, NULL); + return (jl_datatype_t*)inst_datatype_inner(jl_anytuple_type, p, jl_svec_data(p), jl_svec_len(p), 1, NULL, NULL); } jl_datatype_t *jl_inst_concrete_tupletype_v(jl_value_t **p, size_t np) { - return (jl_datatype_t*)inst_datatype(jl_anytuple_type, NULL, p, np, 1, NULL); + return (jl_datatype_t*)inst_datatype_inner(jl_anytuple_type, NULL, p, np, 1, NULL, NULL); } static jl_svec_t *inst_all(jl_svec_t *p, jl_typeenv_t *env, jl_typestack_t *stack, int check) @@ -1363,7 +1361,7 @@ static jl_value_t *inst_tuple_w_(jl_value_t *t, jl_typeenv_t *env, jl_typestack_ jl_svec_t *tp = tt->parameters; size_t ntp = jl_svec_len(tp); // Instantiate NTuple{3,Int} - // Note this does not instantiate Tuple{Vararg{Int,3}}; that's done in inst_datatype + // Note this does not instantiate Tuple{Vararg{Int,3}}; that's done in inst_datatype_inner if (jl_is_va_tuple(tt) && ntp == 1) { // If this is a Tuple{Vararg{T,N}} with known N, expand it to // a fixed-length tuple @@ -1389,12 +1387,13 @@ static jl_value_t *inst_tuple_w_(jl_value_t *t, jl_typeenv_t *env, jl_typestack_ jl_value_t **iparams; int onstack = ntp < jl_page_size/sizeof(jl_value_t*); JL_GC_PUSHARGS(iparams, onstack ? ntp : 1); - jl_svec_t *ip_heap=NULL; + jl_svec_t *ip_heap = NULL; if (!onstack) { ip_heap = jl_alloc_svec(ntp); iparams[0] = (jl_value_t*)ip_heap; iparams = jl_svec_data(ip_heap); } + int bound = 0; int cacheable = 1; if (jl_is_va_tuple(tt)) cacheable = 0; @@ -1405,12 +1404,14 @@ static jl_value_t *inst_tuple_w_(jl_value_t *t, jl_typeenv_t *env, jl_typestack_ iparams[i] = pi; if (ip_heap) jl_gc_wb(ip_heap, pi); + bound |= (pi != elt); if (cacheable && !jl_is_concrete_type(pi)) cacheable = 0; } - jl_value_t *result = inst_datatype((jl_datatype_t*)tt, ip_heap, iparams, ntp, cacheable, stack); + if (bound) + t = inst_datatype_inner(tt, ip_heap, iparams, ntp, cacheable, stack, env); JL_GC_POP(); - return result; + return t; } static jl_value_t *inst_type_w_(jl_value_t *t, jl_typeenv_t *env, jl_typestack_t *stack, int check) @@ -1421,44 +1422,38 @@ static jl_value_t *inst_type_w_(jl_value_t *t, jl_typeenv_t *env, jl_typestack_t while (e != NULL) { if (e->var == (jl_tvar_t*)t) { jl_value_t *val = e->val; - // TODO jb/subtype this seems unnecessary - //if (check && !jl_is_typevar(val) && !within_typevar(val, (jl_tvar_t*)t)) { - // jl_type_error_rt("type parameter", - // jl_symbol_name(((jl_tvar_t*)t)->name), t, val); - //} return val; } e = e->prev; } - return (jl_value_t*)t; + return t; } if (jl_is_unionall(t)) { - if (!jl_has_free_typevars(t)) - return t; jl_unionall_t *ua = (jl_unionall_t*)t; - jl_value_t *res=NULL, *lb=ua->var->lb, *ub=ua->var->ub; - JL_GC_PUSH3(&lb, &ub, &res); - res = jl_new_struct(jl_unionall_type, ua->var, NULL); - if (jl_has_bound_typevars(ua->var->lb, env)) - lb = inst_type_w_(ua->var->lb, env, stack, check); - if (jl_has_bound_typevars(ua->var->ub, env)) - ub = inst_type_w_(ua->var->ub, env, stack, check); - if (lb != ua->var->lb || ub != ua->var->ub) { - ((jl_unionall_t*)res)->var = jl_new_typevar(ua->var->name, lb, ub); - jl_gc_wb(res, ((jl_unionall_t*)res)->var); + jl_value_t *lb = NULL; + jl_value_t *var = NULL; + jl_value_t *newbody = NULL; + JL_GC_PUSH3(&lb, &var, &newbody); + lb = inst_type_w_(ua->var->lb, env, stack, check); + var = inst_type_w_(ua->var->ub, env, stack, check); + if (lb != ua->var->lb || var != ua->var->ub) { + var = (jl_value_t*)jl_new_typevar(ua->var->name, lb, var); + } + else { + var = (jl_value_t*)ua->var; } - jl_typeenv_t newenv = { ua->var, (jl_value_t*)((jl_unionall_t*)res)->var, env }; - jl_value_t *newbody = inst_type_w_(ua->body, &newenv, stack, check); + jl_typeenv_t newenv = { ua->var, var, env }; + newbody = inst_type_w_(ua->body, &newenv, stack, check); if (newbody == (jl_value_t*)jl_emptytuple_type) { // NTuple{0} => Tuple{} can make a typevar disappear - res = (jl_value_t*)jl_emptytuple_type; + t = (jl_value_t*)jl_emptytuple_type; } - else { - ((jl_unionall_t*)res)->body = newbody; - jl_gc_wb(res, newbody); + else if (newbody != ua->body || var != (jl_value_t*)ua->var) { + // if t's parameters are not bound in the environment, return it uncopied (#9378) + t = jl_new_struct(jl_unionall_type, var, newbody); } JL_GC_POP(); - return res; + return t; } if (jl_is_uniontype(t)) { jl_uniontype_t *u = (jl_uniontype_t*)t; @@ -1466,23 +1461,19 @@ static jl_value_t *inst_type_w_(jl_value_t *t, jl_typeenv_t *env, jl_typestack_t jl_value_t *b = NULL; JL_GC_PUSH2(&a, &b); b = inst_type_w_(u->b, env, stack, check); - jl_value_t *res; - if (a == u->a && b == u->b) { - res = t; - } - else { + if (a != u->a || b != u->b) { jl_value_t *uargs[2] = {a, b}; - res = jl_type_union(uargs, 2); + t = jl_type_union(uargs, 2); } JL_GC_POP(); - return res; + return t; } if (!jl_is_datatype(t)) return t; jl_datatype_t *tt = (jl_datatype_t*)t; jl_svec_t *tp = tt->parameters; if (tp == jl_emptysvec) - return (jl_value_t*)t; + return t; jl_typename_t *tn = tt->name; if (tn == jl_tuple_typename) return inst_tuple_w_(t, env, stack, check); @@ -1490,19 +1481,19 @@ static jl_value_t *inst_type_w_(jl_value_t *t, jl_typeenv_t *env, jl_typestack_t jl_value_t **iparams; JL_GC_PUSHARGS(iparams, ntp); int cacheable = 1, bound = 0; - for(i=0; i < ntp; i++) { + for (i = 0; i < ntp; i++) { jl_value_t *elt = jl_svecref(tp, i); - iparams[i] = (jl_value_t*)inst_type_w_(elt, env, stack, check); - bound |= (iparams[i] != elt); - if (cacheable && jl_has_free_typevars(iparams[i])) + jl_value_t *pi = inst_type_w_(elt, env, stack, check); + iparams[i] = pi; + bound |= (pi != elt); + if (cacheable && jl_has_free_typevars(pi)) cacheable = 0; } // if t's parameters are not bound in the environment, return it uncopied (#9378) - if (!bound) { JL_GC_POP(); return (jl_value_t*)t; } - - jl_value_t *result = inst_datatype((jl_datatype_t*)tt, NULL, iparams, ntp, cacheable, stack); + if (bound) + t = inst_datatype_inner(tt, NULL, iparams, ntp, cacheable, stack, env); JL_GC_POP(); - return result; + return t; } jl_value_t *instantiate_with(jl_value_t *t, jl_value_t **env, size_t n, jl_typeenv_t *te, jl_typestack_t *stack) @@ -1519,13 +1510,13 @@ jl_value_t *jl_instantiate_type_with(jl_value_t *t, jl_value_t **env, size_t n) return instantiate_with(t, env, n, NULL, NULL); } -static jl_value_t *_jl_instantiate_type_in_env(jl_value_t *ty, jl_unionall_t *env, jl_value_t **vals, jl_typeenv_t *prev) +static jl_value_t *_jl_instantiate_type_in_env(jl_value_t *ty, jl_unionall_t *env, jl_value_t **vals, jl_typeenv_t *prev, jl_typestack_t *stack) { jl_typeenv_t en = { env->var, vals[0], prev }; if (jl_is_unionall(env->body)) - return _jl_instantiate_type_in_env(ty, (jl_unionall_t*)env->body, vals + 1, &en); + return _jl_instantiate_type_in_env(ty, (jl_unionall_t*)env->body, vals + 1, &en, stack); else - return inst_type_w_(ty, &en, NULL, 1); + return inst_type_w_(ty, &en, stack, 1); } JL_DLLEXPORT jl_value_t *jl_instantiate_type_in_env(jl_value_t *ty, jl_unionall_t *env, jl_value_t **vals) @@ -1533,7 +1524,7 @@ JL_DLLEXPORT jl_value_t *jl_instantiate_type_in_env(jl_value_t *ty, jl_unionall_ jl_value_t *typ = ty; if (jl_is_unionall(env)) { JL_TRY { - typ = _jl_instantiate_type_in_env(ty, env, vals, NULL); + typ = _jl_instantiate_type_in_env(ty, env, vals, NULL, NULL); } JL_CATCH { typ = jl_bottom_type; @@ -1599,11 +1590,14 @@ void jl_reinstantiate_inner_types(jl_datatype_t *t) // can throw! int k; assert(ndt->types == NULL); - ndt->types = jl_alloc_svec(jl_svec_len(t->types)); - jl_gc_wb(ndt, ndt->types); + jl_svec_t *ft = jl_alloc_svec(jl_svec_len(t->types)); + JL_GC_PUSH1(&ft); for (k=0; k < jl_svec_len(t->types); k++) { - jl_svecset(ndt->types, k, instantiate_with(jl_svecref(t->types,k), env, n, NULL, &top)); + jl_svecset(ft, k, instantiate_with(jl_svecref(t->types,k), env, n, NULL, &top)); } + ndt->types = ft; + jl_gc_wb(ndt, ndt->types); + JL_GC_POP(); if (ndt->uid) { // cacheable jl_compute_field_offsets(ndt); } diff --git a/src/julia-syntax.scm b/src/julia-syntax.scm index 171e607977021..1ae4454ce1a86 100644 --- a/src/julia-syntax.scm +++ b/src/julia-syntax.scm @@ -840,9 +840,9 @@ (error (string "field name \"" (deparse v) "\" is not a symbol")))) field-names) `(block + (global ,name) (const ,name) (scope-block (block - (global ,name) (const ,name) ,@(map (lambda (v) `(local ,v)) params) ,@(map (lambda (n v) (make-assignment n (bounds-to-TypeVar v #t))) params bounds) (struct_type ,name (call (core svec) ,@params) @@ -1794,6 +1794,14 @@ (else (error (string "invalid " syntax-str " \"" (deparse el) "\"")))))))) +;; move an assignment into the last statement of a block to keep more statements at top level +(define (sink-assignment lhs rhs) + (if (and (pair? rhs) (eq? (car rhs) 'block)) + (let ((rr (reverse (cdr rhs)))) + `(block ,@(reverse (cdr rr)) + (= ,lhs ,(car rr)))) + `(= ,lhs ,rhs))) + (define (expand-forms e) (if (or (atom? e) (memq (car e) '(quote inert top core globalref outerref line module toplevel ssavalue null meta using import export))) e @@ -1882,20 +1890,13 @@ ,@(map (lambda (l) `(= ,l ,rr)) lhss) (unnecessary ,rr))))))) - ((and (symbol-like? lhs) (valid-name? lhs)) - `(= ,lhs ,(expand-forms (caddr e)))) + ((or (and (symbol-like? lhs) (valid-name? lhs)) + (globalref? lhs)) + (sink-assignment lhs (expand-forms (caddr e)))) ((atom? lhs) (error (string "invalid assignment location \"" (deparse lhs) "\""))) (else (case (car lhs) - ((globalref) - ;; M.b = - (let* ((rhs (caddr e)) - (rr (if (or (symbol-like? rhs) (atom? rhs)) rhs (make-ssavalue)))) - `(block - ,.(if (eq? rr rhs) '() `((= ,rr ,(expand-forms rhs)))) - (= ,lhs ,rr) - (unnecessary ,rr)))) ((|.|) ;; a.b = (let* ((a (cadr lhs)) @@ -1909,9 +1910,9 @@ b (make-ssavalue))) (rr (if (or (symbol-like? rhs) (atom? rhs)) rhs (make-ssavalue)))) `(block - ,.(if (eq? aa a) '() `((= ,aa ,(expand-forms a)))) - ,.(if (eq? bb b) '() `((= ,bb ,(expand-forms b)))) - ,.(if (eq? rr rhs) '() `((= ,rr ,(expand-forms rhs)))) + ,.(if (eq? aa a) '() (list (sink-assignment aa (expand-forms a)))) + ,.(if (eq? bb b) '() (list (sink-assignment bb (expand-forms b)))) + ,.(if (eq? rr rhs) '() (list (sink-assignment rr (expand-forms rhs)))) (call (top setproperty!) ,aa ,bb ,rr) (unnecessary ,rr))))) ((tuple) @@ -1933,7 +1934,7 @@ (let* ((xx (if (or (and (symbol? x) (not (memq x lhss))) (ssavalue? x)) x (make-ssavalue))) - (ini (if (eq? x xx) '() `((= ,xx ,(expand-forms x))))) + (ini (if (eq? x xx) '() (list (sink-assignment xx (expand-forms x))))) (n (length lhss)) (st (gensy))) `(block @@ -1965,7 +1966,7 @@ (stmts (if reuse `((= ,arr ,(expand-forms a))) '())) (rrhs (and (pair? rhs) (not (ssavalue? rhs)) (not (quoted? rhs)))) (r (if rrhs (make-ssavalue) rhs)) - (rini (if rrhs `((= ,r ,(expand-forms rhs))) '()))) + (rini (if rrhs (list (sink-assignment r (expand-forms rhs))) '()))) (receive (new-idxs stuff) (process-indices arr idxs) `(block diff --git a/src/macroexpand.scm b/src/macroexpand.scm index e1d607885b10d..3ed334b2f4d27 100644 --- a/src/macroexpand.scm +++ b/src/macroexpand.scm @@ -414,6 +414,14 @@ (body (cadr e)) (m (caddr e))) (resolve-expansion-vars-with-new-env body env m parent-scope inarg #t))) + ((tuple) + (cons (car e) + (map (lambda (x) + (if (assignment? x) + `(= ,(unescape (cadr x)) + ,(resolve-expansion-vars-with-new-env (caddr x) env m parent-scope inarg)) + (resolve-expansion-vars-with-new-env x env m parent-scope inarg))) + (cdr e)))) ;; todo: trycatch (else @@ -488,10 +496,17 @@ ((and (eq? (car e) '=) (not (function-def? e))) (append! (filter symbol? (decl-vars* (cadr e))) (find-assigned-vars-in-expansion (caddr e) #f))) + ((eq? (car e) 'tuple) + (apply append! (map (lambda (x) + (find-assigned-vars-in-expansion (if (assignment? x) + (caddr x) + x) + #f)) + (cdr e)))) (else (apply append! (map (lambda (x) (find-assigned-vars-in-expansion x #f)) - e))))) + (cdr e)))))) (define (keywords-introduced-by e) (let ((v (pattern-expand1 keywords-introduced-by-patterns e))) diff --git a/src/partr.c b/src/partr.c index 4c8fc326e2195..11b7c985b132e 100644 --- a/src/partr.c +++ b/src/partr.c @@ -14,8 +14,6 @@ extern "C" { #endif -#define JULIA_ENABLE_PARTR - #ifdef JULIA_ENABLE_THREADING // GC functions used @@ -176,6 +174,13 @@ static inline jl_task_t *multiq_deletemin(void) } +void jl_gc_mark_enqueued_tasks(jl_gc_mark_cache_t *gc_cache, jl_gc_mark_sp_t *sp) +{ + for (int16_t i = 0; i < heap_p; ++i) + for (int16_t j = 0; j < heaps[i].ntasks; ++j) + jl_gc_mark_queue_obj_explicit(gc_cache, sp, (jl_value_t *)heaps[i].tasks[j]); +} + // parallel task runtime // --- @@ -217,8 +222,18 @@ void jl_threadfun(void *arg) jl_finish_task(jl_current_task, jl_nothing); // noreturn } +// enqueue the specified task for execution +JL_DLLEXPORT void jl_enqueue_task(jl_task_t *task) +{ + multiq_insert(task, task->prio); +} + +#endif // JULIA_ENABLE_THREADING + + JL_DLLEXPORT void jl_wakeup_thread(int16_t tid) { +#ifdef JULIA_ENABLE_THREADING jl_ptls_t ptls = jl_get_ptls_states(); /* ensure thread tid is awake if necessary */ if (ptls->tid != tid && !_threadedregion && tid != -1) { @@ -230,23 +245,25 @@ JL_DLLEXPORT void jl_wakeup_thread(int16_t tid) jl_wake_libuv(); else uv_stop(jl_global_event_loop()); -} - - -// enqueue the specified task for execution -JL_DLLEXPORT void jl_enqueue_task(jl_task_t *task) -{ - multiq_insert(task, task->prio); +#else + uv_stop(jl_global_event_loop()); +#endif } // get the next runnable task from the multiq static jl_task_t *get_next_task(jl_value_t *getsticky) { + jl_gc_safepoint(); jl_task_t *task = (jl_task_t*)jl_apply(&getsticky, 1); if (jl_typeis(task, jl_task_type)) return task; +#ifdef JULIA_ENABLE_THREADING + jl_gc_safepoint(); return multiq_deletemin(); +#else + return NULL; +#endif } @@ -258,7 +275,6 @@ JL_DLLEXPORT jl_task_t *jl_task_get_next(jl_value_t *getsticky) jl_task_t *task; while (1) { - jl_gc_safepoint(); task = get_next_task(getsticky); if (task) return task; @@ -277,6 +293,7 @@ JL_DLLEXPORT jl_task_t *jl_task_get_next(jl_value_t *getsticky) #endif } } +#ifdef JULIA_ENABLE_THREADING else { int sleepnow = 0; uv_mutex_lock(&sleep_lock); @@ -293,6 +310,7 @@ JL_DLLEXPORT jl_task_t *jl_task_get_next(jl_value_t *getsticky) jl_gc_safe_leave(ptls, gc_state); } } +#endif } else { if (++spin_count > 1000 && jl_atomic_load(&jl_uv_n_waiters) == 0 && jl_mutex_trylock(&jl_uv_mutex)) { @@ -317,16 +335,6 @@ JL_DLLEXPORT jl_task_t *jl_task_get_next(jl_value_t *getsticky) } } - -void jl_gc_mark_enqueued_tasks(jl_gc_mark_cache_t *gc_cache, jl_gc_mark_sp_t *sp) -{ - for (int16_t i = 0; i < heap_p; ++i) - for (int16_t j = 0; j < heaps[i].ntasks; ++j) - jl_gc_mark_queue_obj_explicit(gc_cache, sp, (jl_value_t *)heaps[i].tasks[j]); -} - -#endif // JULIA_ENABLE_THREADING - #ifdef __cplusplus } #endif diff --git a/src/subtype.c b/src/subtype.c index 7cabc63b9416b..d1c37498cb05a 100644 --- a/src/subtype.c +++ b/src/subtype.c @@ -92,7 +92,8 @@ typedef struct jl_stenv_t { jl_value_t **envout; // for passing caller the computed bounds of right-side variables int envsz; // length of envout int envidx; // current index in envout - int invdepth; // current number of invariant constructors we're nested in + int invdepth; // # of invariant constructors we're nested in on the left + int Rinvdepth; // # of invariant constructors we're nested in on the right int ignore_free; // treat free vars as black boxes; used during intersection int intersection; // true iff subtype is being called from intersection int emptiness_only; // true iff intersection only needs to test for emptiness @@ -498,7 +499,7 @@ static void record_var_occurrence(jl_varbinding_t *vb, jl_stenv_t *e, int param) { if (vb != NULL && param) { // saturate counters at 2; we don't need values bigger than that - if (param == 2 && e->invdepth > vb->depth0 && vb->occurs_inv < 2) + if (param == 2 && (vb->right ? e->Rinvdepth : e->invdepth) > vb->depth0 && vb->occurs_inv < 2) vb->occurs_inv++; else if (vb->occurs_cov < 2) vb->occurs_cov++; @@ -517,7 +518,7 @@ static int var_outside(jl_stenv_t *e, jl_tvar_t *x, jl_tvar_t *y) return 0; } -static jl_value_t *intersect_aside(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int depth); +static jl_value_t *intersect_aside(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int R, int d); // check that type var `b` is <: `a`, and update b's upper bound. static int var_lt(jl_tvar_t *b, jl_value_t *a, jl_stenv_t *e, int param) @@ -535,7 +536,7 @@ static int var_lt(jl_tvar_t *b, jl_value_t *a, jl_stenv_t *e, int param) // for this to work we need to compute issub(left,right) before issub(right,left), // since otherwise the issub(a, bb.ub) check in var_gt becomes vacuous. if (e->intersection) { - jl_value_t *ub = intersect_aside(bb->ub, a, e, bb->depth0); + jl_value_t *ub = intersect_aside(bb->ub, a, e, 0, bb->depth0); if (ub != (jl_value_t*)b) bb->ub = ub; } @@ -662,7 +663,8 @@ static int subtype_unionall(jl_value_t *t, jl_unionall_t *u, jl_stenv_t *e, int8 } btemp = btemp->prev; } - jl_varbinding_t vb = { u->var, u->var->lb, u->var->ub, R, NULL, 0, 0, 0, 0, e->invdepth, 0, NULL, e->vars }; + jl_varbinding_t vb = { u->var, u->var->lb, u->var->ub, R, NULL, 0, 0, 0, 0, + R ? e->Rinvdepth : e->invdepth, 0, NULL, e->vars }; JL_GC_PUSH4(&u, &vb.lb, &vb.ub, &vb.innervars); e->vars = &vb; int ans; @@ -787,8 +789,10 @@ static int check_vararg_length(jl_value_t *v, ssize_t n, jl_stenv_t *e) jl_value_t *nn = jl_box_long(n); JL_GC_PUSH1(&nn); e->invdepth++; + e->Rinvdepth++; int ans = subtype(nn, N, e, 2) && subtype(N, nn, e, 0); e->invdepth--; + e->Rinvdepth--; JL_GC_POP(); if (!ans) return 0; @@ -1044,13 +1048,16 @@ static int subtype(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int param) if (!subtype(xp1, yp1, e, 1)) return 0; // Vararg{T,N} <: Vararg{T2,N2}; equate N and N2 e->invdepth++; + e->Rinvdepth++; int ans = forall_exists_equal(xp2, yp2, e); e->invdepth--; + e->Rinvdepth--; return ans; } size_t i, np = jl_nparams(xd); int ans = 1; e->invdepth++; + e->Rinvdepth++; for (i=0; i < np; i++) { jl_value_t *xi = jl_tparam(xd, i), *yi = jl_tparam(yd, i); if (!(xi == yi || forall_exists_equal(xi, yi, e))) { @@ -1058,6 +1065,7 @@ static int subtype(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int param) } } e->invdepth--; + e->Rinvdepth--; return ans; } if (jl_is_type(y)) @@ -1168,7 +1176,7 @@ static void init_stenv(jl_stenv_t *e, jl_value_t **env, int envsz) if (envsz) memset(env, 0, envsz*sizeof(void*)); e->envidx = 0; - e->invdepth = 0; + e->invdepth = e->Rinvdepth = 0; e->ignore_free = 0; e->intersection = 0; e->emptiness_only = 0; @@ -1403,20 +1411,31 @@ JL_DLLEXPORT int jl_subtype_env(jl_value_t *x, jl_value_t *y, jl_value_t **env, return subtype; } -static int subtype_in_env(jl_value_t *x, jl_value_t *y, jl_stenv_t *e) +static int subtype_in_env_(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int invdepth, int Rinvdepth) { jl_stenv_t e2; init_stenv(&e2, NULL, 0); e2.vars = e->vars; e2.intersection = e->intersection; e2.ignore_free = e->ignore_free; - e2.invdepth = e->invdepth; + e2.invdepth = invdepth; + e2.Rinvdepth = Rinvdepth; e2.envsz = e->envsz; e2.envout = e->envout; e2.envidx = e->envidx; return forall_exists_subtype(x, y, &e2, 0); } +static int subtype_in_env(jl_value_t *x, jl_value_t *y, jl_stenv_t *e) +{ + return subtype_in_env_(x, y, e, e->invdepth, e->Rinvdepth); +} + +static int subtype_bounds_in_env(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int R, int d) +{ + return subtype_in_env_(x, y, e, R ? e->invdepth : d, R ? d : e->Rinvdepth); +} + JL_DLLEXPORT int jl_subtype(jl_value_t *x, jl_value_t *y) { return jl_subtype_env(x, y, NULL, 0); @@ -1543,7 +1562,7 @@ static jl_value_t *intersect(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int pa static jl_value_t *intersect_all(jl_value_t *x, jl_value_t *y, jl_stenv_t *e); // intersect in nested union environment, similar to subtype_ccheck -static jl_value_t *intersect_aside(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int depth) +static jl_value_t *intersect_aside(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int R, int d) { // band-aid for #30335 if (x == (jl_value_t*)jl_any_type && !jl_is_typevar(y)) @@ -1551,14 +1570,16 @@ static jl_value_t *intersect_aside(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, if (y == (jl_value_t*)jl_any_type && !jl_is_typevar(x)) return x; - int savedepth = e->invdepth; jl_unionstate_t oldRunions = e->Runions; - e->invdepth = depth; + int savedepth = e->invdepth, Rsavedepth = e->Rinvdepth; + // TODO: this doesn't quite make sense + e->invdepth = e->Rinvdepth = d; jl_value_t *res = intersect_all(x, y, e); e->Runions = oldRunions; e->invdepth = savedepth; + e->Rinvdepth = Rsavedepth; return res; } @@ -1602,12 +1623,12 @@ static jl_value_t *set_var_to_const(jl_varbinding_t *bb, jl_value_t *v JL_MAYBE_ return v; } -static int try_subtype_in_env(jl_value_t *a, jl_value_t *b, jl_stenv_t *e) +static int try_subtype_in_env(jl_value_t *a, jl_value_t *b, jl_stenv_t *e, int R, int d) { jl_value_t *root=NULL; jl_savedenv_t se; JL_GC_PUSH1(&root); save_env(e, &root, &se); - int ret = subtype_in_env(a, b, e); + int ret = subtype_bounds_in_env(a, b, e, R, d); restore_env(e, root, &se); free(se.buf); JL_GC_POP(); @@ -1629,7 +1650,7 @@ static void set_bound(jl_value_t **bound, jl_value_t *val, jl_tvar_t *v, jl_sten } // subtype, treating all vars as existential -static int subtype_in_env_existential(jl_value_t *x, jl_value_t *y, jl_stenv_t *e) +static int subtype_in_env_existential(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int R, int d) { jl_varbinding_t *v = e->vars; int len = 0; @@ -1647,7 +1668,7 @@ static int subtype_in_env_existential(jl_value_t *x, jl_value_t *y, jl_stenv_t * v->right = 1; v = v->prev; } - int issub = subtype_in_env(x, y, e); + int issub = subtype_bounds_in_env(x, y, e, R, d); n = 0; v = e->vars; while (v != NULL) { v->right = rs[n++]; @@ -1661,7 +1682,7 @@ static jl_value_t *intersect_var(jl_tvar_t *b, jl_value_t *a, jl_stenv_t *e, int { jl_varbinding_t *bb = lookup(e, b); if (bb == NULL) - return R ? intersect_aside(a, b->ub, e, 0) : intersect_aside(b->ub, a, e, 0); + return R ? intersect_aside(a, b->ub, e, 1, 0) : intersect_aside(b->ub, a, e, 0, 0); if (bb->lb == bb->ub && jl_is_typevar(bb->lb) && bb->lb != (jl_value_t*)b) return intersect(a, bb->lb, e, param); if (!jl_is_type(a) && !jl_is_typevar(a)) @@ -1669,7 +1690,7 @@ static jl_value_t *intersect_var(jl_tvar_t *b, jl_value_t *a, jl_stenv_t *e, int int d = bb->depth0; jl_value_t *root=NULL; jl_savedenv_t se; if (param == 2) { - if (!(subtype_in_env_existential(bb->lb, a, e) && subtype_in_env_existential(a, bb->ub, e))) + if (!(subtype_in_env_existential(bb->lb, a, e, 0, d) && subtype_in_env_existential(a, bb->ub, e, 1, d))) return jl_bottom_type; jl_value_t *ub = a; if (ub != (jl_value_t*)b) { @@ -1694,17 +1715,17 @@ static jl_value_t *intersect_var(jl_tvar_t *b, jl_value_t *a, jl_stenv_t *e, int } else if (bb->constraintkind == 0) { if (!jl_is_typevar(bb->ub) && !jl_is_typevar(a)) { - if (try_subtype_in_env(bb->ub, a, e)) + if (try_subtype_in_env(bb->ub, a, e, 0, d)) return (jl_value_t*)b; } - return R ? intersect_aside(a, bb->ub, e, d) : intersect_aside(bb->ub, a, e, d); + return R ? intersect_aside(a, bb->ub, e, 1, d) : intersect_aside(bb->ub, a, e, 0, d); } else if (bb->concrete || bb->constraintkind == 1) { - jl_value_t *ub = R ? intersect_aside(a, bb->ub, e, d) : intersect_aside(bb->ub, a, e, d); + jl_value_t *ub = R ? intersect_aside(a, bb->ub, e, 1, d) : intersect_aside(bb->ub, a, e, 0, d); JL_GC_PUSH1(&ub); if (ub == jl_bottom_type || // this fixes issue #30122. TODO: better fix for R flag. - (!R && !subtype_in_env(bb->lb, a, e))) { + (!R && !subtype_bounds_in_env(bb->lb, a, e, 0, d))) { JL_GC_POP(); return jl_bottom_type; } @@ -1715,7 +1736,7 @@ static jl_value_t *intersect_var(jl_tvar_t *b, jl_value_t *a, jl_stenv_t *e, int else if (bb->constraintkind == 2) { // TODO: removing this case fixes many test_brokens in test/subtype.jl // but breaks other tests. - if (!subtype_in_env(a, bb->ub, e)) { + if (!subtype_bounds_in_env(a, bb->ub, e, 1, d)) { // mark var as unsatisfiable by making it circular bb->lb = (jl_value_t*)b; return jl_bottom_type; @@ -1725,7 +1746,7 @@ static jl_value_t *intersect_var(jl_tvar_t *b, jl_value_t *a, jl_stenv_t *e, int return a; } assert(bb->constraintkind == 3); - jl_value_t *ub = R ? intersect_aside(a, bb->ub, e, d) : intersect_aside(bb->ub, a, e, d); + jl_value_t *ub = R ? intersect_aside(a, bb->ub, e, 1, d) : intersect_aside(bb->ub, a, e, 0, d); if (ub == jl_bottom_type) return jl_bottom_type; if (jl_is_typevar(a)) @@ -1743,7 +1764,7 @@ static jl_value_t *intersect_var(jl_tvar_t *b, jl_value_t *a, jl_stenv_t *e, int root = NULL; JL_GC_PUSH2(&root, &ub); save_env(e, &root, &se); - jl_value_t *ii = R ? intersect_aside(a, bb->lb, e, d) : intersect_aside(bb->lb, a, e, d); + jl_value_t *ii = R ? intersect_aside(a, bb->lb, e, 1, d) : intersect_aside(bb->lb, a, e, 0, d); if (ii == jl_bottom_type) { restore_env(e, root, &se); ii = (jl_value_t*)b; @@ -1977,7 +1998,8 @@ static jl_value_t *intersect_unionall(jl_value_t *t, jl_unionall_t *u, jl_stenv_ { jl_value_t *res=NULL, *res2=NULL, *save=NULL, *save2=NULL; jl_savedenv_t se, se2; - jl_varbinding_t vb = { u->var, u->var->lb, u->var->ub, R, NULL, 0, 0, 0, 0, e->invdepth, 0, NULL, e->vars }; + jl_varbinding_t vb = { u->var, u->var->lb, u->var->ub, R, NULL, 0, 0, 0, 0, + R ? e->Rinvdepth : e->invdepth, 0, NULL, e->vars }; JL_GC_PUSH6(&res, &save2, &vb.lb, &vb.ub, &save, &vb.innervars); save_env(e, &save, &se); res = intersect_unionall_(t, u, e, R, param, &vb); @@ -2183,8 +2205,10 @@ static jl_value_t *intersect_invariant(jl_value_t *x, jl_value_t *y, jl_stenv_t return (jl_subtype(x,y) && jl_subtype(y,x)) ? y : NULL; } e->invdepth++; + e->Rinvdepth++; jl_value_t *ii = intersect(x, y, e, 2); e->invdepth--; + e->Rinvdepth--; if (jl_is_typevar(x) && jl_is_typevar(y) && (jl_is_typevar(ii) || !jl_is_type(ii))) return ii; if (ii == jl_bottom_type) { @@ -2312,7 +2336,7 @@ static jl_value_t *intersect(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int pa } jl_value_t *ub=NULL, *lb=NULL; JL_GC_PUSH2(&lb, &ub); - ub = intersect_aside(xub, yub, e, xx ? xx->depth0 : 0); + ub = intersect_aside(xub, yub, e, 0, xx ? xx->depth0 : 0); lb = simple_join(xlb, ylb); if (yy) { if (lb != y) diff --git a/src/threading.c b/src/threading.c index 67f9317d6f136..d3d91c7b9abe8 100644 --- a/src/threading.c +++ b/src/threading.c @@ -505,19 +505,23 @@ JL_DLLEXPORT void jl_threading_run(jl_value_t *func) args2[0] = schd_func; args2[1] = (jl_value_t*)t; jl_apply(args2, 2); +#ifdef JULIA_ENABLE_THREADING if (i == 1) { // let threads know work is coming (optimistic) uv_mutex_lock(&sleep_lock); uv_cond_broadcast(&sleep_alarm); uv_mutex_unlock(&sleep_lock); } +#endif } +#ifdef JULIA_ENABLE_THREADING if (nthreads > 2) { // let threads know work is ready (guaranteed) uv_mutex_lock(&sleep_lock); uv_cond_broadcast(&sleep_alarm); uv_mutex_unlock(&sleep_lock); } +#endif // join with all tasks JL_TRY { for (int i = 0; i < nthreads; i++) { diff --git a/stdlib/Base64/src/buffer.jl b/stdlib/Base64/src/buffer.jl index 9daff0d1c7a54..44a9c0931ac95 100644 --- a/stdlib/Base64/src/buffer.jl +++ b/stdlib/Base64/src/buffer.jl @@ -28,8 +28,8 @@ end function read_to_buffer(io::IO, buffer::Buffer) offset = buffer.ptr - pointer(buffer.data) - copyto!(buffer.data, 1, buffer.data, offset, buffer.size) - buffer.ptr = pointer(buffer.data) + buffer.size + copyto!(buffer.data, 1, buffer.data, offset + 1, buffer.size) + buffer.ptr = pointer(buffer.data) if !eof(io) n = min(bytesavailable(io), capacity(buffer) - buffer.size) unsafe_read(io, buffer.ptr + buffer.size, n) diff --git a/stdlib/Base64/test/runtests.jl b/stdlib/Base64/test/runtests.jl index 5a1fc9ee9cc65..c6b6a3715544f 100644 --- a/stdlib/Base64/test/runtests.jl +++ b/stdlib/Base64/test/runtests.jl @@ -16,12 +16,15 @@ dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=""" +const longEncodedText = "bmFtZSA9ICJHZW5pZSIKdXVpZCA9ICJjNDNjNzM2ZS1hMmQxLTExZTgtMTYx\nZi1hZjk1MTE3ZmJkMWUiCmF1dGhvcnMgPSBbIkFkcmlhbiBTYWxjZWFudSA8\nZUBlc3NlbmNpYXJ5LmNvbT4iXQp2ZXJzaW9uID0gIjAuOS40IgoKW2RlcHNd\nCkFyZ1BhcnNlID0gImM3ZTQ2MGM2LTJmYjktNTNhOS04YzViLTE2ZjUzNTg1\nMWM2MyIKRGF0ZXMgPSAiYWRlMmNhNzAtMzg5MS01OTQ1LTk4ZmItZGMwOTk0\nMzJlMDZhIgpEaXN0cmlidXRlZCA9ICI4YmE4OWUyMC0yODVjLTViNmYtOTM1\nNy05NDcwMDUyMGVlMWIiCkd1bWJvID0gIjcwOGVjMzc1LWIzZDYtNWE1Ny1h\nN2NlLTgyNTdiZjk4NjU3YSIKSFRUUCA9ICJjZDNlYjAxNi0zNWZiLTUwOTQt\nOTI5Yi01NThhOTZmYWQ2ZjMiCkh0dHBDb21tb24gPSAiNzcxNzJjMWItMjAz\nZi01NGFjLWFhNTQtM2YxMTk4ZmU5ZjkwIgpKU09OID0gIjY4MmMwNmEwLWRl\nNmEtNTRhYi1hMTQyLWM4YjFjZjc5Y2RlNiIKTWFya2Rvd24gPSAiZDZmNDM3\nNmUtYWVmNS01MDVhLTk2YzEtOWMwMjczOTQ2MDdhIgpNYmVkVExTID0gIjcz\nOWJlNDI5LWJlYTgtNTE0MS05OTEzLWNjNzBlN2YzNzM2ZCIKTWlsbGJvYXJk\nID0gIjM5ZWMxNDQ3LWRmNDQtNWY0Yy1iZWFhLTg2NmYzMGI0ZDNiMiIKTWlu\naUxvZ2dpbmcgPSAiZjU5NDAyZWMtMDI2Mi01NzA3LWE1NjEtNzcwYWY5NGJj\nNWE2IgpOZXR0bGUgPSAiNDlkZWExZWUtZjZmYS01YWE2LTlhMTEtODgxNmNl\nZTdkNGI5IgpOdWxsYWJsZXMgPSAiNGQxZTFkNzctNjI1ZS01YjQwLTkxMTMt\nYTU2MGVjN2E4ZWNkIgpPcmRlcmVkQ29sbGVjdGlvbnMgPSAiYmFjNTU4ZTEt\nNWU3Mi01ZWJjLThmZWUtYWJlOGE0NjlmNTVkIgpQa2cgPSAiNDRjZmU5NWEt\nMWViMi01MmVhLWI2NzItZTJhZmRmNjliNzhmIgpSZWV4cG9ydCA9ICIxODlh\nMzg2Ny0zMDUwLTUyZGEtYTgzNi1lNjMwYmE5MGFiNjkiClJldmlzZSA9ICIy\nOTVhZjMwZi1lNGFkLTUzN2ItODk4My0wMDEyNmMyYTNhYmUiClNIQSA9ICJl\nYThlOTE5Yy0yNDNjLTUxYWYtODgyNS1hYWE2M2NkNzIxY2UiClNlcmlhbGl6\nYXRpb24gPSAiOWU4OGI0MmEtZjgyOS01YjBjLWJiZTktOWU5MjMxOTgxNjZi\nIgpTb2NrZXRzID0gIjY0NjJmZTBiLTI0ZGUtNTYzMS04Njk3LWRkOTQxZjkw\nZGVjYyIKVVJJUGFyc2VyID0gIjMwNTc4YjQ1LTlhZGMtNTk0Ni1iMjgzLTY0\nNWVjNDIwYWY2NyIKVW5pY29kZSA9ICI0ZWMwYTgzZS00OTNlLTUwZTItYjlh\nYy04ZjcyYWNmNWE4ZjUiCllBTUwgPSAiZGRiNmQ5MjgtMjg2OC01NzBmLWJk\nZGYtYWIzZjljZjk5ZWI2IgoKW2NvbXBhdF0KanVsaWEgPSAiMSIK" +const longDecodedText = "name = \"Genie\"\nuuid = \"c43c736e-a2d1-11e8-161f-af95117fbd1e\"\nauthors = [\"Adrian Salceanu \"]\nversion = \"0.9.4\"\n\n[deps]\nArgParse = \"c7e460c6-2fb9-53a9-8c5b-16f535851c63\"\nDates = \"ade2ca70-3891-5945-98fb-dc099432e06a\"\nDistributed = \"8ba89e20-285c-5b6f-9357-94700520ee1b\"\nGumbo = \"708ec375-b3d6-5a57-a7ce-8257bf98657a\"\nHTTP = \"cd3eb016-35fb-5094-929b-558a96fad6f3\"\nHttpCommon = \"77172c1b-203f-54ac-aa54-3f1198fe9f90\"\nJSON = \"682c06a0-de6a-54ab-a142-c8b1cf79cde6\"\nMarkdown = \"d6f4376e-aef5-505a-96c1-9c027394607a\"\nMbedTLS = \"739be429-bea8-5141-9913-cc70e7f3736d\"\nMillboard = \"39ec1447-df44-5f4c-beaa-866f30b4d3b2\"\nMiniLogging = \"f59402ec-0262-5707-a561-770af94bc5a6\"\nNettle = \"49dea1ee-f6fa-5aa6-9a11-8816cee7d4b9\"\nNullables = \"4d1e1d77-625e-5b40-9113-a560ec7a8ecd\"\nOrderedCollections = \"bac558e1-5e72-5ebc-8fee-abe8a469f55d\"\nPkg = \"44cfe95a-1eb2-52ea-b672-e2afdf69b78f\"\nReexport = \"189a3867-3050-52da-a836-e630ba90ab69\"\nRevise = \"295af30f-e4ad-537b-8983-00126c2a3abe\"\nSHA = \"ea8e919c-243c-51af-8825-aaa63cd721ce\"\nSerialization = \"9e88b42a-f829-5b0c-bbe9-9e923198166b\"\nSockets = \"6462fe0b-24de-5631-8697-dd941f90decc\"\nURIParser = \"30578b45-9adc-5946-b283-645ec420af67\"\nUnicode = \"4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5\"\nYAML = \"ddb6d928-2868-570f-bddf-ab3f9cf99eb6\"\n\n[compat]\njulia = \"1\"\n" + @testset "Examples" begin # Encode and decode fname = tempname() open(fname, "w") do f opipe = Base64EncodePipe(f) - write(opipe,inputText) + write(opipe, inputText) @test close(opipe) === nothing end @@ -58,15 +61,18 @@ ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=""" #@test read(ipipe, String) == inputText # Decode with two padding characters ("==") - ipipe = Base64DecodePipe(IOBuffer(string(encodedMaxLine76[1:end-2],"=="))) - @test read(ipipe, String) == inputText[1:end-1] + ipipe = Base64DecodePipe(IOBuffer(string(encodedMaxLine76[1:end - 2], "=="))) + @test read(ipipe, String) == inputText[1:end - 1] # Test incorrect format - ipipe = Base64DecodePipe(IOBuffer(encodedMaxLine76[1:end-3])) + ipipe = Base64DecodePipe(IOBuffer(encodedMaxLine76[1:end - 3])) @test_throws ArgumentError read(ipipe, String) # issue #21314 @test base64decode(chomp("test")) == base64decode("test") + + # issue #32397 + @test String(base64decode(longEncodedText)) == longDecodedText; end @testset "Random data" begin @@ -85,6 +91,25 @@ Base.show(io::IO, ::MIME"image/png", ::PNG) = print(io, "PNG") @test stringmime("text/html", "raw html data") == "raw html data" @test stringmime("text/plain", "string") == "\"string\"" @test stringmime("image/png", UInt8[2,3,4,7]) == "AgMEBw==" - @test stringmime("text/plain", 3.141592653589793, context=:compact=>true) == "3.14159" + @test stringmime("text/plain", 3.141592653589793, context = :compact => true) == "3.14159" @test stringmime("image/png", PNG()) == stringmime(MIME("image/png"), PNG()) == "UE5H" end + +function splace(in::String, p = 0.3) + spaces = ["\n"," "] + len = length(in) + len == 0 && return in + rc::String = "" + i = 1 + for (x, v) in enumerate(sort(randsubseq(collect(1:len), p))) + rc = rc * in[i:v] * rand(spaces)^rand(Int.(1:10)) + i = v + 1 + end + return rc * in[i:len] * rand(spaces)^rand(Int.(1:10)) +end + +@testset "lstrsplaced" begin + for _ in 1:1000 + @test String(base64decode(splace(longEncodedText))) == longDecodedText + end +end diff --git a/stdlib/DelimitedFiles/src/DelimitedFiles.jl b/stdlib/DelimitedFiles/src/DelimitedFiles.jl index 99bd0a7217cae..2a545eb413bae 100644 --- a/stdlib/DelimitedFiles/src/DelimitedFiles.jl +++ b/stdlib/DelimitedFiles/src/DelimitedFiles.jl @@ -226,7 +226,7 @@ readdlm(input, dlm::AbstractChar, T::Type, eol::AbstractChar; opts...) = readdlm_auto(input, dlm, T, eol, false; opts...) readdlm_auto(input::Vector{UInt8}, dlm::AbstractChar, T::Type, eol::AbstractChar, auto::Bool; opts...) = - readdlm_string(String(input), dlm, T, eol, auto, val_opts(opts)) + readdlm_string(String(copyto!(Base.StringVector(length(input)), input)), dlm, T, eol, auto, val_opts(opts)) readdlm_auto(input::IO, dlm::AbstractChar, T::Type, eol::AbstractChar, auto::Bool; opts...) = readdlm_string(read(input, String), dlm, T, eol, auto, val_opts(opts)) function readdlm_auto(input::AbstractString, dlm::AbstractChar, T::Type, eol::AbstractChar, auto::Bool; opts...) diff --git a/stdlib/DelimitedFiles/test/runtests.jl b/stdlib/DelimitedFiles/test/runtests.jl index c1a9700d09d99..900d97ace2122 100644 --- a/stdlib/DelimitedFiles/test/runtests.jl +++ b/stdlib/DelimitedFiles/test/runtests.jl @@ -288,6 +288,12 @@ let data = "\"1\",\"灣\"\"灣灣灣灣\",\"3\"" @test readdlm(IOBuffer(data), ',') == Any[1 "灣\"灣灣灣灣" 3] end +# reading from a byte array (#16731) +let data = Vector{UInt8}("1,2,3\n4,5,6"), origdata = copy(data) + @test readdlm(data, ',') == [1 2 3; 4 5 6] + @test data == origdata +end + # issue #11484: useful error message for invalid readdlm filepath arguments @test_throws ArgumentError readdlm(tempdir()) diff --git a/stdlib/Distributed/src/macros.jl b/stdlib/Distributed/src/macros.jl index 4285073ec90a3..d85e2af8f2e7d 100644 --- a/stdlib/Distributed/src/macros.jl +++ b/stdlib/Distributed/src/macros.jl @@ -172,7 +172,7 @@ Equivalent to calling `remotecall_eval(Main, procs, expr)`. """ macro everywhere(ex) procs = GlobalRef(@__MODULE__, :procs) - return esc(:(@everywhere $procs() $ex)) + return esc(:($(Distributed).@everywhere $procs() $ex)) end macro everywhere(procs, ex) diff --git a/stdlib/Distributed/src/pmap.jl b/stdlib/Distributed/src/pmap.jl index 35f23acde33c5..77a59af94eed7 100644 --- a/stdlib/Distributed/src/pmap.jl +++ b/stdlib/Distributed/src/pmap.jl @@ -238,14 +238,11 @@ Return `head`: the first `n` elements of `c`; and `tail`: an iterator over the remaining elements. ```jldoctest -julia> a = 1:10 -1:10 - -julia> b, c = Base.head_and_tail(a, 3) -([1,2,3],Base.Iterators.Rest{UnitRange{Int64},Int64}(1:10,4)) +julia> b, c = Distributed.head_and_tail(1:10, 3) +([1, 2, 3], Base.Iterators.Rest{UnitRange{Int64},Int64}(1:10, 3)) julia> collect(c) -7-element Array{Any,1}: +7-element Array{Int64,1}: 4 5 6 @@ -268,7 +265,7 @@ function head_and_tail(c, n) i += 1 head[i] = y[1] end - return head, Iterators.rest(c, s) + return head, Iterators.rest(c, y[2]) end """ diff --git a/stdlib/Distributed/test/distributed_exec.jl b/stdlib/Distributed/test/distributed_exec.jl index 90ecb16f82230..c00e8b01d75cc 100644 --- a/stdlib/Distributed/test/distributed_exec.jl +++ b/stdlib/Distributed/test/distributed_exec.jl @@ -1614,6 +1614,44 @@ for T in (UInt8, Int8, UInt16, Int16, UInt32, Int32, UInt64) @test n == 55 end +# issue #28966 +let code = """ + import Distributed + Distributed.addprocs(1) + Distributed.@everywhere f() = myid() + for w in Distributed.workers() + @assert Distributed.remotecall_fetch(f, w) == w + end + """ + @test success(`$(Base.julia_cmd()) --startup-file=no -e $code`) +end + +# PR 32431: tests for internal Distributed.head_and_tail +let (h, t) = Distributed.head_and_tail(1:10, 3) + @test h == 1:3 + @test collect(t) == 4:10 +end +let (h, t) = Distributed.head_and_tail(1:10, 0) + @test h == [] + @test collect(t) == 1:10 +end +let (h, t) = Distributed.head_and_tail(1:3, 5) + @test h == 1:3 + @test collect(t) == [] +end +let (h, t) = Distributed.head_and_tail(1:3, 3) + @test h == 1:3 + @test collect(t) == [] +end +let (h, t) = Distributed.head_and_tail(Int[], 3) + @test h == [] + @test collect(t) == [] +end +let (h, t) = Distributed.head_and_tail(Int[], 0) + @test h == [] + @test collect(t) == [] +end + # Run topology tests last after removing all workers, since a given # cluster at any time only supports a single topology. rmprocs(workers()) diff --git a/stdlib/LibGit2/test/online.jl b/stdlib/LibGit2/test/online.jl index 7c7029d3f064c..888af97fe0a69 100644 --- a/stdlib/LibGit2/test/online.jl +++ b/stdlib/LibGit2/test/online.jl @@ -68,7 +68,8 @@ mktempdir() do dir error("unexpected") catch ex @test isa(ex, LibGit2.Error.GitError) - @test ex.code == LibGit2.Error.EAUTH + # Return code seems to vary, see #32186, #32219 + @test ex.code ∈ (LibGit2.Error.EAUTH, LibGit2.Error.ERROR) end Base.shred!(cred) end diff --git a/stdlib/LinearAlgebra/src/symmetric.jl b/stdlib/LinearAlgebra/src/symmetric.jl index 71f557b15fbed..995a2e42dcdb5 100644 --- a/stdlib/LinearAlgebra/src/symmetric.jl +++ b/stdlib/LinearAlgebra/src/symmetric.jl @@ -74,6 +74,12 @@ implemented for a custom type, so should be `symmetric_type`, and vice versa. function symmetric_type(::Type{T}) where {S, T<:AbstractMatrix{S}} return Symmetric{Union{S, promote_op(transpose, S), symmetric_type(S)}, T} end +function symmetric_type(::Type{T}) where {S<:Number, T<:AbstractMatrix{S}} + return Symmetric{S, T} +end +function symmetric_type(::Type{T}) where {S<:AbstractMatrix, T<:AbstractMatrix{S}} + return Symmetric{AbstractMatrix, T} +end symmetric_type(::Type{T}) where {T<:Number} = T struct Hermitian{T,S<:AbstractMatrix{<:T}} <: AbstractMatrix{T} @@ -147,9 +153,15 @@ The type of the object returned by `hermitian(::T, ::Symbol)`. For matrices, thi appropriately typed `Hermitian`, for `Number`s, it is the original type. If `hermitian` is implemented for a custom type, so should be `hermitian_type`, and vice versa. """ -function hermitian_type(::Type{T}) where {S,T<:AbstractMatrix{S}} +function hermitian_type(::Type{T}) where {S, T<:AbstractMatrix{S}} return Hermitian{Union{S, promote_op(adjoint, S), hermitian_type(S)}, T} end +function hermitian_type(::Type{T}) where {S<:Number, T<:AbstractMatrix{S}} + return Hermitian{S, T} +end +function hermitian_type(::Type{T}) where {S<:AbstractMatrix, T<:AbstractMatrix{S}} + return Hermitian{AbstractMatrix, T} +end hermitian_type(::Type{T}) where {T<:Number} = T for (S, H) in ((:Symmetric, :Hermitian), (:Hermitian, :Symmetric)) @@ -402,8 +414,8 @@ function triu(A::Symmetric, k::Integer=0) end end -(-)(A::Symmetric{Tv,S}) where {Tv,S} = Symmetric{Tv,S}(-A.data, A.uplo) -(-)(A::Hermitian{Tv,S}) where {Tv,S} = Hermitian{Tv,S}(-A.data, A.uplo) +(-)(A::Symmetric) = Symmetric(-A.data, sym_uplo(A.uplo)) +(-)(A::Hermitian) = Hermitian(-A.data, sym_uplo(A.uplo)) ## Addition/subtraction for f in (:+, :-) diff --git a/stdlib/LinearAlgebra/test/symmetric.jl b/stdlib/LinearAlgebra/test/symmetric.jl index 6d9c95a1a3ff2..5a6d38cdb2c36 100644 --- a/stdlib/LinearAlgebra/test/symmetric.jl +++ b/stdlib/LinearAlgebra/test/symmetric.jl @@ -88,6 +88,8 @@ end @testset "Unary minus for Symmetric/Hermitian matrices" begin @test (-Symmetric(asym))::typeof(Symmetric(asym)) == -asym @test (-Hermitian(aherm))::typeof(Hermitian(aherm)) == -aherm + @test (-Symmetric([true true; false false]))::Symmetric{Int,Matrix{Int}} == [-1 -1; -1 0] + @test (-Hermitian([true false; true false]))::Hermitian{Int,Matrix{Int}} == [-1 0; 0 0] end @testset "Addition and subtraction for Symmetric/Hermitian matrices" begin diff --git a/stdlib/Pkg.version b/stdlib/Pkg.version index 59f6f4a249533..e0c956ac6dba1 100644 --- a/stdlib/Pkg.version +++ b/stdlib/Pkg.version @@ -1,2 +1,2 @@ PKG_BRANCH = master -PKG_SHA1 = b7d26be39a4e5467f73530592b27fe28e40f357b +PKG_SHA1 = 394e7c5d55d3722f5b2ab660ca0a694ea0041974 diff --git a/stdlib/REPL/src/REPLCompletions.jl b/stdlib/REPL/src/REPLCompletions.jl index c5e3ced9dfb01..9edb6d9e56ccd 100644 --- a/stdlib/REPL/src/REPLCompletions.jl +++ b/stdlib/REPL/src/REPLCompletions.jl @@ -530,14 +530,11 @@ function dict_identifier_key(str,tag) sym = Symbol(name) isdefined(obj, sym) || return (nothing, nothing, nothing) obj = getfield(obj, sym) - # Avoid `isdefined(::Array, ::Symbol)` - isa(obj, Array) && return (nothing, nothing, nothing) end - begin_of_key = first(something(findnext(r"\S", str, nextind(str, end_of_identifier) + 1), 1)) # 1 for [ - begin_of_key==0 && return (true, nothing, nothing) - partial_key = str[begin_of_key:end] - (isa(obj, AbstractDict) && length(obj) < 1e6) || return (true, nothing, nothing) - return (obj, partial_key, begin_of_key) + (isa(obj, AbstractDict) && length(obj) < 1_000_000) || return (nothing, nothing, nothing) + begin_of_key = something(findnext(!isspace, str, nextind(str, end_of_identifier) + 1), # +1 for [ + lastindex(str)+1) + return (obj, str[begin_of_key:end], begin_of_key) end # This needs to be a separate non-inlined function, see #19441 @@ -581,13 +578,9 @@ function completions(string, pos, context_module=Main)::Completions # if completing a key in a Dict identifier, partial_key, loc = dict_identifier_key(partial,inc_tag) if identifier !== nothing - if partial_key !== nothing - matches = find_dict_matches(identifier, partial_key) - length(matches)==1 && (length(string) <= pos || string[pos+1] != ']') && (matches[1]*="]") - length(matches)>0 && return [DictCompletion(identifier, match) for match in sort!(matches)], loc:pos, true - else - return Completion[], 0:-1, false - end + matches = find_dict_matches(identifier, partial_key) + length(matches)==1 && (lastindex(string) <= pos || string[nextind(string,pos)] != ']') && (matches[1]*=']') + length(matches)>0 && return [DictCompletion(identifier, match) for match in sort!(matches)], loc:pos, true end # otherwise... @@ -605,7 +598,7 @@ function completions(string, pos, context_module=Main)::Completions length(paths) == 1 && # Only close if there's a single choice, !isdir(expanduser(replace(string[startpos:prevind(string, first(r))] * paths[1].path, r"\\ " => " "))) && # except if it's a directory - (length(string) <= pos || + (lastindex(string) <= pos || string[nextind(string,pos)] != '"') # or there's already a " at the cursor. paths[1] = PathCompletion(paths[1].path * "\"") end diff --git a/stdlib/REPL/test/replcompletions.jl b/stdlib/REPL/test/replcompletions.jl index eb19f8d60097b..5f3d9e9e57c19 100644 --- a/stdlib/REPL/test/replcompletions.jl +++ b/stdlib/REPL/test/replcompletions.jl @@ -266,6 +266,14 @@ let s = "\"C:\\\\ \\alpha" @test length(c) == 1 end +# test latex symbol completion in getindex expressions (#24705) +let s = "tuple[\\alpha" + c, r, res = test_complete_context(s) + @test c[1] == "α" + @test r == 7:12 + @test length(c) == 1 +end + let s = "\\a" c, r, res = test_complete(s) "\\alpha" in c @@ -863,7 +871,7 @@ function test_dict_completion(dict_name) @test c == Any[":α]"] s = "$dict_name[" c, r = test_complete(s) - @test !isempty(c) + @test c == sort!(repr.(keys(Main.CompletionFoo.test_dict))) end test_dict_completion("CompletionFoo.test_dict") test_dict_completion("CompletionFoo.test_customdict") diff --git a/stdlib/Sockets/src/addrinfo.jl b/stdlib/Sockets/src/addrinfo.jl index 0ed5c8781915d..21066d0ea37fc 100644 --- a/stdlib/Sockets/src/addrinfo.jl +++ b/stdlib/Sockets/src/addrinfo.jl @@ -234,10 +234,14 @@ ip"fe80::9731:35af:e1c5:6e49" """ function getipaddr(addr_type::Type{T}) where T<:IPAddr addrs = getipaddrs(addr_type) + if length(addrs) == 0 error("No networking interface available") end - return addrs[1] + + # Prefer the first IPv4 address + i = something(findfirst(ip -> ip isa IPv4, addrs), 1) + return addrs[i] end getipaddr() = getipaddr(IPv4) @@ -295,14 +299,5 @@ function getipaddrs(addr_type::Type{T}=IPAddr; loopback::Bool=false) where T<:IP end end ccall(:uv_free_interface_addresses, Cvoid, (Ptr{UInt8}, Int32), addr, count) - sort!(addresses, lt=(addr1,addr2) -> begin - if addr1 isa IPv4 && addr2 isa IPv6 - return true - elseif addr1 isa IPv6 && addr2 isa IPv4 - return false - else - return addr1 < addr2 - end - end) return addresses end diff --git a/stdlib/SparseArrays/src/sparseconvert.jl b/stdlib/SparseArrays/src/sparseconvert.jl index bdadc3a4729ff..9f4bb6cd452f1 100644 --- a/stdlib/SparseArrays/src/sparseconvert.jl +++ b/stdlib/SparseArrays/src/sparseconvert.jl @@ -76,9 +76,6 @@ For other types return A itself. unwrap(A::Any) = A unwrap(A::AbstractMatrix) = iswrsparse(A) ? convert(SparseMatrixCSC, A) : convert(Array, A) -import Base.copy -copy(A::SubArray{T,2}) where T = getindex(unwrap(parent(A)), A.indices...) - # For pure sparse matrices and vectors return A. # For wrapped sparse matrices or vectors convert to SparseMatrixCSC. # Handle nested wrappers properly. diff --git a/stdlib/Statistics/Project.toml b/stdlib/Statistics/Project.toml index 7c796eeab89aa..12c967736bbfb 100644 --- a/stdlib/Statistics/Project.toml +++ b/stdlib/Statistics/Project.toml @@ -6,7 +6,8 @@ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [extras] +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["Test"] +test = ["Random", "Test"] diff --git a/test/compiler/inference.jl b/test/compiler/inference.jl index f98838b68560a..db0fe17fec228 100644 --- a/test/compiler/inference.jl +++ b/test/compiler/inference.jl @@ -1928,6 +1928,12 @@ Base.iterate(::Iterator27434, ::Any) = nothing @test @inferred((1, 2, 3) == (1, 2, 3)) @test Core.Compiler.return_type(splat27434, Tuple{typeof(Iterators.repeated(1))}) == Union{} +# issue #32465 +let rt = Base.return_types(splat27434, (NamedTuple{(:x,), Tuple{T}} where T,)) + @test rt == Any[Tuple{Any}] + @test !Base.has_free_typevars(rt[1]) +end + # issue #27078 f27078(T::Type{S}) where {S} = isa(T, UnionAll) ? f27078(T.body) : T T27078 = Vector{Vector{T}} where T diff --git a/test/strings/basic.jl b/test/strings/basic.jl index af17c4dee095a..255c3b9b78505 100644 --- a/test/strings/basic.jl +++ b/test/strings/basic.jl @@ -377,6 +377,12 @@ end @test tryparse(Float32, "32o") === nothing end +@testset "tryparse invalid chars" begin + # #32314: tryparse shouldn't throw, even given strings with invalid Chars + @test tryparse(UInt8, "\xb5") === nothing + @test tryparse(UInt8, "100\xb5") === nothing # Code path for numeric overflow +end + import Unicode @testset "issue #10994: handle embedded NUL chars for string parsing" begin @@ -606,6 +612,8 @@ end @test repeat(s, 3) === S @test repeat(S, 3) === S*S*S end + # Issue #32160 (string allocation unsigned overflow) + @test_throws OutOfMemoryError repeat('x', typemax(Csize_t)) end @testset "issue #12495: check that logical indexing attempt raises ArgumentError" begin @test_throws ArgumentError "abc"[[true, false, true]] diff --git a/test/strings/util.jl b/test/strings/util.jl index 43d88853c4db9..59024e972021b 100644 --- a/test/strings/util.jl +++ b/test/strings/util.jl @@ -41,6 +41,9 @@ @test rpad("αβ", 8, "¹₂³") == "αβ¹₂³¹₂³" @test lpad("αβ", 9, "¹₂³") == "¹₂³¹₂³¹αβ" @test rpad("αβ", 9, "¹₂³") == "αβ¹₂³¹₂³¹" + # Issue #32160 (unsigned underflow in lpad/rpad) + @test lpad("xx", UInt(1), " ") == "xx" + @test rpad("xx", UInt(1), " ") == "xx" end # string manipulation diff --git a/test/subtype.jl b/test/subtype.jl index aeaafe751f961..571509d110d18 100644 --- a/test/subtype.jl +++ b/test/subtype.jl @@ -1543,3 +1543,8 @@ let X = LinearAlgebra.Symmetric{T, S} where S<:(AbstractArray{U, 2} where U<:T) LinearAlgebra.Symmetric{T, S} where S<:(AbstractArray{U, 2} where U<:T) where T} @test X <: Y end + +# issue #32386 +# TODO: intersect currently returns a bad answer here (it has free typevars) +@test typeintersect(Type{S} where S<:(Array{Pair{_A,N} where N, 1} where _A), + Type{Vector{T}} where T) != Union{} diff --git a/test/syntax.jl b/test/syntax.jl index 85951185f4a57..479ba13d4c3ca 100644 --- a/test/syntax.jl +++ b/test/syntax.jl @@ -1848,6 +1848,30 @@ macro id28992(x) x end @test @id28992(2 ^ -2) == 0.25 @test @id28992(2 .^ -2) == 0.25 +# issue #32121 +@test @id28992((a=1, b=2)) === (a=1, b=2) +a32121 = 8 +b32121 = 9 +@test @id28992((a32121=a32121, b32121=b32121)) === (a32121=8, b32121=9) + # issue #31596 f31596(x; kw...) = x @test f31596((a=1,), b = 1.0) === (a=1,) + +# issue #32325 +let + struct a32325 end + a32325(x) = a32325() +end +@test a32325(0) === a32325() + +# issue #32499 +x32499 = begin + struct S32499 + function S32499(; x=1) + x + end + end + S32499(x=2) +end +@test x32499 == 2