From a75921aade78430de95f7549975aae19a9938ad3 Mon Sep 17 00:00:00 2001 From: Elliot Saba Date: Thu, 18 Apr 2019 19:46:42 -0400 Subject: [PATCH 01/34] Change BB tarball naming scheme to include release number This will avoid hash collisions when we need to bump a tarball due to a build issue. This also bumps the OpenBLAS BB tarball release to include a SkylakeX patch --- contrib/refresh_bb_tarballs.sh | 2 +- deps/Versions.make | 2 +- .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../LibOSXUnwind.v0.0.5-0.x86_64-apple-darwin14.tar.gz/md5 | 1 + .../LibOSXUnwind.v0.0.5-0.x86_64-apple-darwin14.tar.gz/sha512 | 1 + .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/sha512 | 1 + deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/sha512 | 1 + deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/sha512 | 1 + deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/sha512 | 1 + .../checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/sha512 | 1 + .../checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/sha512 | 1 + .../checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/sha512 | 1 + .../md5 | 1 + .../sha512 | 1 + .../md5 | 1 + .../sha512 | 1 + .../md5 | 1 + .../sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/sha512 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/md5 | 1 + .../OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/sha512 | 1 + .../checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc4.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc4.tar.gz/sha512 | 1 - .../checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc7.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc7.tar.gz/sha512 | 1 - .../checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc8.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc8.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.aarch64-linux-musl-gcc4.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.aarch64-linux-musl-gcc4.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.aarch64-linux-musl-gcc7.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.aarch64-linux-musl-gcc7.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.aarch64-linux-musl-gcc8.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.aarch64-linux-musl-gcc8.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc4.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc4.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc7.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc7.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc8.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc8.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc4.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc4.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc7.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc7.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc8.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc8.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc4.tar.gz/md5 | 1 - .../checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc4.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc7.tar.gz/md5 | 1 - .../checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc7.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc8.tar.gz/md5 | 1 - .../checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc8.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc4.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.i686-linux-musl-gcc4.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc7.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.i686-linux-musl-gcc7.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc8.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.i686-linux-musl-gcc8.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc4.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.i686-w64-mingw32-gcc4.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc7.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.i686-w64-mingw32-gcc7.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc8.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.i686-w64-mingw32-gcc8.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc4.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc7.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc8.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc4.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc4.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc7.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc7.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc8.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc8.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc4.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc4.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc7.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc7.tar.gz/sha512 | 1 - deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc8.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc8.tar.gz/sha512 | 1 - .../checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc4.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-linux-musl-gcc4.tar.gz/sha512 | 1 - .../checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc7.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-linux-musl-gcc7.tar.gz/sha512 | 1 - .../checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc8.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-linux-musl-gcc8.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 | 1 - .../sha512 | 1 - .../OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 | 1 - .../sha512 | 1 - .../OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 | 1 - .../sha512 | 1 - .../OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc4.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc4.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc7.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc7.tar.gz/sha512 | 1 - .../OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc8.tar.gz/md5 | 1 - .../OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc8.tar.gz/sha512 | 1 - .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 .../md5 | 0 .../sha512 | 0 deps/tools/bb-install.mk | 2 +- 649 files changed, 83 insertions(+), 81 deletions(-) rename deps/checksums/{GMP.v6.1.2.aarch64-linux-gnu.tar.gz => GMP.v6.1.2-1.aarch64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.aarch64-linux-gnu.tar.gz => GMP.v6.1.2-1.aarch64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.aarch64-linux-musl.tar.gz => GMP.v6.1.2-1.aarch64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.aarch64-linux-musl.tar.gz => GMP.v6.1.2-1.aarch64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.arm-linux-gnueabihf.tar.gz => GMP.v6.1.2-1.arm-linux-gnueabihf.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.arm-linux-gnueabihf.tar.gz => GMP.v6.1.2-1.arm-linux-gnueabihf.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.arm-linux-musleabihf.tar.gz => GMP.v6.1.2-1.arm-linux-musleabihf.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.arm-linux-musleabihf.tar.gz => GMP.v6.1.2-1.arm-linux-musleabihf.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.i686-linux-gnu.tar.gz => GMP.v6.1.2-1.i686-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.i686-linux-gnu.tar.gz => GMP.v6.1.2-1.i686-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.i686-linux-musl.tar.gz => GMP.v6.1.2-1.i686-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.i686-linux-musl.tar.gz => GMP.v6.1.2-1.i686-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.i686-w64-mingw32.tar.gz => GMP.v6.1.2-1.i686-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.i686-w64-mingw32.tar.gz => GMP.v6.1.2-1.i686-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.powerpc64le-linux-gnu.tar.gz => GMP.v6.1.2-1.powerpc64le-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.powerpc64le-linux-gnu.tar.gz => GMP.v6.1.2-1.powerpc64le-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.x86_64-apple-darwin14.tar.gz => GMP.v6.1.2-1.x86_64-apple-darwin14.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.x86_64-apple-darwin14.tar.gz => GMP.v6.1.2-1.x86_64-apple-darwin14.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.x86_64-linux-gnu.tar.gz => GMP.v6.1.2-1.x86_64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.x86_64-linux-gnu.tar.gz => GMP.v6.1.2-1.x86_64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.x86_64-linux-musl.tar.gz => GMP.v6.1.2-1.x86_64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.x86_64-linux-musl.tar.gz => GMP.v6.1.2-1.x86_64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.x86_64-unknown-freebsd11.1.tar.gz => GMP.v6.1.2-1.x86_64-unknown-freebsd11.1.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.x86_64-unknown-freebsd11.1.tar.gz => GMP.v6.1.2-1.x86_64-unknown-freebsd11.1.tar.gz}/sha512 (100%) rename deps/checksums/{GMP.v6.1.2.x86_64-w64-mingw32.tar.gz => GMP.v6.1.2-1.x86_64-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{GMP.v6.1.2.x86_64-w64-mingw32.tar.gz => GMP.v6.1.2-1.x86_64-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.aarch64-linux-gnu-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.aarch64-linux-gnu-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.aarch64-linux-gnu-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.aarch64-linux-gnu-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.aarch64-linux-gnu-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.aarch64-linux-gnu-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.arm-linux-gnueabihf-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.arm-linux-gnueabihf-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.arm-linux-gnueabihf-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.arm-linux-gnueabihf-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.arm-linux-gnueabihf-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.arm-linux-gnueabihf-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-linux-gnu-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-linux-gnu-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-linux-gnu-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-linux-gnu-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-linux-gnu-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-linux-gnu-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-w64-mingw32-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-w64-mingw32-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-w64-mingw32-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-w64-mingw32-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-w64-mingw32-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.i686-w64-mingw32-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.powerpc64le-linux-gnu-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.powerpc64le-linux-gnu-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.powerpc64le-linux-gnu-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.powerpc64le-linux-gnu-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.powerpc64le-linux-gnu-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.powerpc64le-linux-gnu-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-apple-darwin14-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-apple-darwin14-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-apple-darwin14-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-apple-darwin14-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-apple-darwin14-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-apple-darwin14-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-gnu-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-gnu-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-gnu-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-gnu-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-gnu-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-gnu-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-musl-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-musl-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-musl-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-musl-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-musl-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-linux-musl-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-w64-mingw32-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-w64-mingw32-gcc4.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-w64-mingw32-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-w64-mingw32-gcc7.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-w64-mingw32-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{LLVM.v6.0.1.x86_64-w64-mingw32-gcc8.tar.gz => LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.aarch64-linux-gnu.tar.gz => LibCURL.v7.61.0-1.aarch64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.aarch64-linux-gnu.tar.gz => LibCURL.v7.61.0-1.aarch64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.aarch64-linux-musl.tar.gz => LibCURL.v7.61.0-1.aarch64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.aarch64-linux-musl.tar.gz => LibCURL.v7.61.0-1.aarch64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.arm-linux-gnueabihf.tar.gz => LibCURL.v7.61.0-1.arm-linux-gnueabihf.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.arm-linux-gnueabihf.tar.gz => LibCURL.v7.61.0-1.arm-linux-gnueabihf.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.arm-linux-musleabihf.tar.gz => LibCURL.v7.61.0-1.arm-linux-musleabihf.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.arm-linux-musleabihf.tar.gz => LibCURL.v7.61.0-1.arm-linux-musleabihf.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.i686-linux-gnu.tar.gz => LibCURL.v7.61.0-1.i686-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.i686-linux-gnu.tar.gz => LibCURL.v7.61.0-1.i686-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.i686-linux-musl.tar.gz => LibCURL.v7.61.0-1.i686-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.i686-linux-musl.tar.gz => LibCURL.v7.61.0-1.i686-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.i686-w64-mingw32.tar.gz => LibCURL.v7.61.0-1.i686-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.i686-w64-mingw32.tar.gz => LibCURL.v7.61.0-1.i686-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.powerpc64le-linux-gnu.tar.gz => LibCURL.v7.61.0-1.powerpc64le-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.powerpc64le-linux-gnu.tar.gz => LibCURL.v7.61.0-1.powerpc64le-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.x86_64-apple-darwin14.tar.gz => LibCURL.v7.61.0-1.x86_64-apple-darwin14.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.x86_64-apple-darwin14.tar.gz => LibCURL.v7.61.0-1.x86_64-apple-darwin14.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.x86_64-linux-gnu.tar.gz => LibCURL.v7.61.0-1.x86_64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.x86_64-linux-gnu.tar.gz => LibCURL.v7.61.0-1.x86_64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.x86_64-linux-musl.tar.gz => LibCURL.v7.61.0-1.x86_64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.x86_64-linux-musl.tar.gz => LibCURL.v7.61.0-1.x86_64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.x86_64-unknown-freebsd11.1.tar.gz => LibCURL.v7.61.0-1.x86_64-unknown-freebsd11.1.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.x86_64-unknown-freebsd11.1.tar.gz => LibCURL.v7.61.0-1.x86_64-unknown-freebsd11.1.tar.gz}/sha512 (100%) rename deps/checksums/{LibCURL.v7.61.0.x86_64-w64-mingw32.tar.gz => LibCURL.v7.61.0-1.x86_64-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{LibCURL.v7.61.0.x86_64-w64-mingw32.tar.gz => LibCURL.v7.61.0-1.x86_64-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.aarch64-linux-gnu.tar.gz => LibGit2.v0.27.7-1.aarch64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.aarch64-linux-gnu.tar.gz => LibGit2.v0.27.7-1.aarch64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.aarch64-linux-musl.tar.gz => LibGit2.v0.27.7-1.aarch64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.aarch64-linux-musl.tar.gz => LibGit2.v0.27.7-1.aarch64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.arm-linux-gnueabihf.tar.gz => LibGit2.v0.27.7-1.arm-linux-gnueabihf.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.arm-linux-gnueabihf.tar.gz => LibGit2.v0.27.7-1.arm-linux-gnueabihf.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.arm-linux-musleabihf.tar.gz => LibGit2.v0.27.7-1.arm-linux-musleabihf.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.arm-linux-musleabihf.tar.gz => LibGit2.v0.27.7-1.arm-linux-musleabihf.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.i686-linux-gnu.tar.gz => LibGit2.v0.27.7-1.i686-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.i686-linux-gnu.tar.gz => LibGit2.v0.27.7-1.i686-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.i686-linux-musl.tar.gz => LibGit2.v0.27.7-1.i686-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.i686-linux-musl.tar.gz => LibGit2.v0.27.7-1.i686-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.i686-w64-mingw32.tar.gz => LibGit2.v0.27.7-1.i686-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.i686-w64-mingw32.tar.gz => LibGit2.v0.27.7-1.i686-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.powerpc64le-linux-gnu.tar.gz => LibGit2.v0.27.7-1.powerpc64le-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.powerpc64le-linux-gnu.tar.gz => LibGit2.v0.27.7-1.powerpc64le-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.x86_64-apple-darwin14.tar.gz => LibGit2.v0.27.7-1.x86_64-apple-darwin14.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.x86_64-apple-darwin14.tar.gz => LibGit2.v0.27.7-1.x86_64-apple-darwin14.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.x86_64-linux-gnu.tar.gz => LibGit2.v0.27.7-1.x86_64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.x86_64-linux-gnu.tar.gz => LibGit2.v0.27.7-1.x86_64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.x86_64-linux-musl.tar.gz => LibGit2.v0.27.7-1.x86_64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.x86_64-linux-musl.tar.gz => LibGit2.v0.27.7-1.x86_64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.x86_64-unknown-freebsd11.1.tar.gz => LibGit2.v0.27.7-1.x86_64-unknown-freebsd11.1.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.x86_64-unknown-freebsd11.1.tar.gz => LibGit2.v0.27.7-1.x86_64-unknown-freebsd11.1.tar.gz}/sha512 (100%) rename deps/checksums/{LibGit2.v0.27.7.x86_64-w64-mingw32.tar.gz => LibGit2.v0.27.7-1.x86_64-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{LibGit2.v0.27.7.x86_64-w64-mingw32.tar.gz => LibGit2.v0.27.7-1.x86_64-w64-mingw32.tar.gz}/sha512 (100%) create mode 100644 deps/checksums/LibOSXUnwind.v0.0.5-0.x86_64-apple-darwin14.tar.gz/md5 create mode 100644 deps/checksums/LibOSXUnwind.v0.0.5-0.x86_64-apple-darwin14.tar.gz/sha512 rename deps/checksums/{LibSSH2.v1.8.2.aarch64-linux-gnu.tar.gz => LibSSH2.v1.8.2-0.aarch64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.aarch64-linux-gnu.tar.gz => LibSSH2.v1.8.2-0.aarch64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.aarch64-linux-musl.tar.gz => LibSSH2.v1.8.2-0.aarch64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.aarch64-linux-musl.tar.gz => LibSSH2.v1.8.2-0.aarch64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.arm-linux-gnueabihf.tar.gz => LibSSH2.v1.8.2-0.arm-linux-gnueabihf.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.arm-linux-gnueabihf.tar.gz => LibSSH2.v1.8.2-0.arm-linux-gnueabihf.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.arm-linux-musleabihf.tar.gz => LibSSH2.v1.8.2-0.arm-linux-musleabihf.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.arm-linux-musleabihf.tar.gz => LibSSH2.v1.8.2-0.arm-linux-musleabihf.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.i686-linux-gnu.tar.gz => LibSSH2.v1.8.2-0.i686-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.i686-linux-gnu.tar.gz => LibSSH2.v1.8.2-0.i686-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.i686-linux-musl.tar.gz => LibSSH2.v1.8.2-0.i686-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.i686-linux-musl.tar.gz => LibSSH2.v1.8.2-0.i686-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.i686-w64-mingw32.tar.gz => LibSSH2.v1.8.2-0.i686-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.i686-w64-mingw32.tar.gz => LibSSH2.v1.8.2-0.i686-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.powerpc64le-linux-gnu.tar.gz => LibSSH2.v1.8.2-0.powerpc64le-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.powerpc64le-linux-gnu.tar.gz => LibSSH2.v1.8.2-0.powerpc64le-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.x86_64-apple-darwin14.tar.gz => LibSSH2.v1.8.2-0.x86_64-apple-darwin14.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.x86_64-apple-darwin14.tar.gz => LibSSH2.v1.8.2-0.x86_64-apple-darwin14.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.x86_64-linux-gnu.tar.gz => LibSSH2.v1.8.2-0.x86_64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.x86_64-linux-gnu.tar.gz => LibSSH2.v1.8.2-0.x86_64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.x86_64-linux-musl.tar.gz => LibSSH2.v1.8.2-0.x86_64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.x86_64-linux-musl.tar.gz => LibSSH2.v1.8.2-0.x86_64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.x86_64-unknown-freebsd11.1.tar.gz => LibSSH2.v1.8.2-0.x86_64-unknown-freebsd11.1.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.x86_64-unknown-freebsd11.1.tar.gz => LibSSH2.v1.8.2-0.x86_64-unknown-freebsd11.1.tar.gz}/sha512 (100%) rename deps/checksums/{LibSSH2.v1.8.2.x86_64-w64-mingw32.tar.gz => LibSSH2.v1.8.2-0.x86_64-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{LibSSH2.v1.8.2.x86_64-w64-mingw32.tar.gz => LibSSH2.v1.8.2-0.x86_64-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.aarch64-linux-gnu.tar.gz => LibUV.v1.24.0-1.aarch64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.aarch64-linux-gnu.tar.gz => LibUV.v1.24.0-1.aarch64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.aarch64-linux-musl.tar.gz => LibUV.v1.24.0-1.aarch64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.aarch64-linux-musl.tar.gz => LibUV.v1.24.0-1.aarch64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.arm-linux-gnueabihf.tar.gz => LibUV.v1.24.0-1.arm-linux-gnueabihf.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.arm-linux-gnueabihf.tar.gz => LibUV.v1.24.0-1.arm-linux-gnueabihf.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.arm-linux-musleabihf.tar.gz => LibUV.v1.24.0-1.arm-linux-musleabihf.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.arm-linux-musleabihf.tar.gz => LibUV.v1.24.0-1.arm-linux-musleabihf.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.i686-linux-gnu.tar.gz => LibUV.v1.24.0-1.i686-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.i686-linux-gnu.tar.gz => LibUV.v1.24.0-1.i686-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.i686-linux-musl.tar.gz => LibUV.v1.24.0-1.i686-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.i686-linux-musl.tar.gz => LibUV.v1.24.0-1.i686-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.i686-w64-mingw32.tar.gz => LibUV.v1.24.0-1.i686-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.i686-w64-mingw32.tar.gz => LibUV.v1.24.0-1.i686-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.powerpc64le-linux-gnu.tar.gz => LibUV.v1.24.0-1.powerpc64le-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.powerpc64le-linux-gnu.tar.gz => LibUV.v1.24.0-1.powerpc64le-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.x86_64-apple-darwin14.tar.gz => LibUV.v1.24.0-1.x86_64-apple-darwin14.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.x86_64-apple-darwin14.tar.gz => LibUV.v1.24.0-1.x86_64-apple-darwin14.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.x86_64-linux-gnu.tar.gz => LibUV.v1.24.0-1.x86_64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.x86_64-linux-gnu.tar.gz => LibUV.v1.24.0-1.x86_64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.x86_64-linux-musl.tar.gz => LibUV.v1.24.0-1.x86_64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.x86_64-linux-musl.tar.gz => LibUV.v1.24.0-1.x86_64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.x86_64-unknown-freebsd11.1.tar.gz => LibUV.v1.24.0-1.x86_64-unknown-freebsd11.1.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.x86_64-unknown-freebsd11.1.tar.gz => LibUV.v1.24.0-1.x86_64-unknown-freebsd11.1.tar.gz}/sha512 (100%) rename deps/checksums/{LibUV.v1.24.0.x86_64-w64-mingw32.tar.gz => LibUV.v1.24.0-1.x86_64-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{LibUV.v1.24.0.x86_64-w64-mingw32.tar.gz => LibUV.v1.24.0-1.x86_64-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{LibUnwind.v1.3.1.aarch64-linux-gnu.tar.gz => LibUnwind.v1.3.1-3.aarch64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibUnwind.v1.3.1.aarch64-linux-gnu.tar.gz => LibUnwind.v1.3.1-3.aarch64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibUnwind.v1.3.1.arm-linux-gnueabihf.tar.gz => LibUnwind.v1.3.1-3.arm-linux-gnueabihf.tar.gz}/md5 (100%) rename deps/checksums/{LibUnwind.v1.3.1.arm-linux-gnueabihf.tar.gz => LibUnwind.v1.3.1-3.arm-linux-gnueabihf.tar.gz}/sha512 (100%) rename deps/checksums/{LibUnwind.v1.3.1.i686-linux-gnu.tar.gz => LibUnwind.v1.3.1-3.i686-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibUnwind.v1.3.1.i686-linux-gnu.tar.gz => LibUnwind.v1.3.1-3.i686-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibUnwind.v1.3.1.powerpc64le-linux-gnu.tar.gz => LibUnwind.v1.3.1-3.powerpc64le-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibUnwind.v1.3.1.powerpc64le-linux-gnu.tar.gz => LibUnwind.v1.3.1-3.powerpc64le-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibUnwind.v1.3.1.x86_64-linux-gnu.tar.gz => LibUnwind.v1.3.1-3.x86_64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{LibUnwind.v1.3.1.x86_64-linux-gnu.tar.gz => LibUnwind.v1.3.1-3.x86_64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{LibUnwind.v1.3.1.x86_64-unknown-freebsd11.1.tar.gz => LibUnwind.v1.3.1-3.x86_64-unknown-freebsd11.1.tar.gz}/md5 (100%) rename deps/checksums/{LibUnwind.v1.3.1.x86_64-unknown-freebsd11.1.tar.gz => LibUnwind.v1.3.1-3.x86_64-unknown-freebsd11.1.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.aarch64-linux-gnu.tar.gz => MPFR.v4.0.2-1.aarch64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.aarch64-linux-gnu.tar.gz => MPFR.v4.0.2-1.aarch64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.aarch64-linux-musl.tar.gz => MPFR.v4.0.2-1.aarch64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.aarch64-linux-musl.tar.gz => MPFR.v4.0.2-1.aarch64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.arm-linux-gnueabihf.tar.gz => MPFR.v4.0.2-1.arm-linux-gnueabihf.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.arm-linux-gnueabihf.tar.gz => MPFR.v4.0.2-1.arm-linux-gnueabihf.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.arm-linux-musleabihf.tar.gz => MPFR.v4.0.2-1.arm-linux-musleabihf.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.arm-linux-musleabihf.tar.gz => MPFR.v4.0.2-1.arm-linux-musleabihf.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.i686-linux-gnu.tar.gz => MPFR.v4.0.2-1.i686-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.i686-linux-gnu.tar.gz => MPFR.v4.0.2-1.i686-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.i686-linux-musl.tar.gz => MPFR.v4.0.2-1.i686-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.i686-linux-musl.tar.gz => MPFR.v4.0.2-1.i686-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.i686-w64-mingw32.tar.gz => MPFR.v4.0.2-1.i686-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.i686-w64-mingw32.tar.gz => MPFR.v4.0.2-1.i686-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.powerpc64le-linux-gnu.tar.gz => MPFR.v4.0.2-1.powerpc64le-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.powerpc64le-linux-gnu.tar.gz => MPFR.v4.0.2-1.powerpc64le-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.x86_64-apple-darwin14.tar.gz => MPFR.v4.0.2-1.x86_64-apple-darwin14.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.x86_64-apple-darwin14.tar.gz => MPFR.v4.0.2-1.x86_64-apple-darwin14.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.x86_64-linux-gnu.tar.gz => MPFR.v4.0.2-1.x86_64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.x86_64-linux-gnu.tar.gz => MPFR.v4.0.2-1.x86_64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.x86_64-linux-musl.tar.gz => MPFR.v4.0.2-1.x86_64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.x86_64-linux-musl.tar.gz => MPFR.v4.0.2-1.x86_64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.x86_64-unknown-freebsd11.1.tar.gz => MPFR.v4.0.2-1.x86_64-unknown-freebsd11.1.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.x86_64-unknown-freebsd11.1.tar.gz => MPFR.v4.0.2-1.x86_64-unknown-freebsd11.1.tar.gz}/sha512 (100%) rename deps/checksums/{MPFR.v4.0.2.x86_64-w64-mingw32.tar.gz => MPFR.v4.0.2-1.x86_64-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{MPFR.v4.0.2.x86_64-w64-mingw32.tar.gz => MPFR.v4.0.2-1.x86_64-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.aarch64-linux-gnu.tar.gz => MbedTLS.v2.16.0-v0.17.0.aarch64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.aarch64-linux-gnu.tar.gz => MbedTLS.v2.16.0-v0.17.0.aarch64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.aarch64-linux-musl.tar.gz => MbedTLS.v2.16.0-v0.17.0.aarch64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.aarch64-linux-musl.tar.gz => MbedTLS.v2.16.0-v0.17.0.aarch64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.arm-linux-gnueabihf.tar.gz => MbedTLS.v2.16.0-v0.17.0.arm-linux-gnueabihf.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.arm-linux-gnueabihf.tar.gz => MbedTLS.v2.16.0-v0.17.0.arm-linux-gnueabihf.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.arm-linux-musleabihf.tar.gz => MbedTLS.v2.16.0-v0.17.0.arm-linux-musleabihf.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.arm-linux-musleabihf.tar.gz => MbedTLS.v2.16.0-v0.17.0.arm-linux-musleabihf.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.i686-linux-gnu.tar.gz => MbedTLS.v2.16.0-v0.17.0.i686-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.i686-linux-gnu.tar.gz => MbedTLS.v2.16.0-v0.17.0.i686-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.i686-linux-musl.tar.gz => MbedTLS.v2.16.0-v0.17.0.i686-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.i686-linux-musl.tar.gz => MbedTLS.v2.16.0-v0.17.0.i686-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.i686-w64-mingw32.tar.gz => MbedTLS.v2.16.0-v0.17.0.i686-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.i686-w64-mingw32.tar.gz => MbedTLS.v2.16.0-v0.17.0.i686-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.powerpc64le-linux-gnu.tar.gz => MbedTLS.v2.16.0-v0.17.0.powerpc64le-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.powerpc64le-linux-gnu.tar.gz => MbedTLS.v2.16.0-v0.17.0.powerpc64le-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.x86_64-apple-darwin14.tar.gz => MbedTLS.v2.16.0-v0.17.0.x86_64-apple-darwin14.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.x86_64-apple-darwin14.tar.gz => MbedTLS.v2.16.0-v0.17.0.x86_64-apple-darwin14.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.x86_64-linux-gnu.tar.gz => MbedTLS.v2.16.0-v0.17.0.x86_64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.x86_64-linux-gnu.tar.gz => MbedTLS.v2.16.0-v0.17.0.x86_64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.x86_64-linux-musl.tar.gz => MbedTLS.v2.16.0-v0.17.0.x86_64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.x86_64-linux-musl.tar.gz => MbedTLS.v2.16.0-v0.17.0.x86_64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.x86_64-unknown-freebsd11.1.tar.gz => MbedTLS.v2.16.0-v0.17.0.x86_64-unknown-freebsd11.1.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.x86_64-unknown-freebsd11.1.tar.gz => MbedTLS.v2.16.0-v0.17.0.x86_64-unknown-freebsd11.1.tar.gz}/sha512 (100%) rename deps/checksums/{MbedTLS.v2.16.0.x86_64-w64-mingw32.tar.gz => MbedTLS.v2.16.0-v0.17.0.x86_64-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{MbedTLS.v2.16.0.x86_64-w64-mingw32.tar.gz => MbedTLS.v2.16.0-v0.17.0.x86_64-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.aarch64-linux-gnu.tar.gz => Objconv.v2.49.0-0.aarch64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.aarch64-linux-gnu.tar.gz => Objconv.v2.49.0-0.aarch64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.aarch64-linux-musl.tar.gz => Objconv.v2.49.0-0.aarch64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.aarch64-linux-musl.tar.gz => Objconv.v2.49.0-0.aarch64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.arm-linux-gnueabihf.tar.gz => Objconv.v2.49.0-0.arm-linux-gnueabihf.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.arm-linux-gnueabihf.tar.gz => Objconv.v2.49.0-0.arm-linux-gnueabihf.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.arm-linux-musleabihf.tar.gz => Objconv.v2.49.0-0.arm-linux-musleabihf.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.arm-linux-musleabihf.tar.gz => Objconv.v2.49.0-0.arm-linux-musleabihf.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.i686-linux-gnu.tar.gz => Objconv.v2.49.0-0.i686-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.i686-linux-gnu.tar.gz => Objconv.v2.49.0-0.i686-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.i686-linux-musl.tar.gz => Objconv.v2.49.0-0.i686-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.i686-linux-musl.tar.gz => Objconv.v2.49.0-0.i686-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.i686-w64-mingw32.tar.gz => Objconv.v2.49.0-0.i686-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.i686-w64-mingw32.tar.gz => Objconv.v2.49.0-0.i686-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.powerpc64le-linux-gnu.tar.gz => Objconv.v2.49.0-0.powerpc64le-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.powerpc64le-linux-gnu.tar.gz => Objconv.v2.49.0-0.powerpc64le-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.x86_64-apple-darwin14.tar.gz => Objconv.v2.49.0-0.x86_64-apple-darwin14.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.x86_64-apple-darwin14.tar.gz => Objconv.v2.49.0-0.x86_64-apple-darwin14.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.x86_64-linux-gnu.tar.gz => Objconv.v2.49.0-0.x86_64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.x86_64-linux-gnu.tar.gz => Objconv.v2.49.0-0.x86_64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.x86_64-linux-musl.tar.gz => Objconv.v2.49.0-0.x86_64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.x86_64-linux-musl.tar.gz => Objconv.v2.49.0-0.x86_64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.x86_64-unknown-freebsd11.1.tar.gz => Objconv.v2.49.0-0.x86_64-unknown-freebsd11.1.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.x86_64-unknown-freebsd11.1.tar.gz => Objconv.v2.49.0-0.x86_64-unknown-freebsd11.1.tar.gz}/sha512 (100%) rename deps/checksums/{Objconv.v2.49.0.x86_64-w64-mingw32.tar.gz => Objconv.v2.49.0-0.x86_64-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{Objconv.v2.49.0.x86_64-w64-mingw32.tar.gz => Objconv.v2.49.0-0.x86_64-w64-mingw32.tar.gz}/sha512 (100%) create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/sha512 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/md5 create mode 100644 deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc4.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc4.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc7.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc7.tar.gz/sha512 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc8.tar.gz/md5 delete mode 100644 deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc8.tar.gz/sha512 rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-gnu-gcc4.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-gnu-gcc4.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-gnu-gcc7.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-gnu-gcc7.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-gnu-gcc8.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-gnu-gcc8.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-musl-gcc4.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-musl-gcc4.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-musl-gcc7.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-musl-gcc7.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-musl-gcc8.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.aarch64-linux-musl-gcc8.tar.gz => OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc4.tar.gz => OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc4.tar.gz => OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc7.tar.gz => OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc7.tar.gz => OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc8.tar.gz => OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc8.tar.gz => OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-musleabihf-gcc4.tar.gz => OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-musleabihf-gcc4.tar.gz => OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-musleabihf-gcc7.tar.gz => OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-musleabihf-gcc7.tar.gz => OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-musleabihf-gcc8.tar.gz => OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.arm-linux-musleabihf-gcc8.tar.gz => OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-gnu-gcc4.tar.gz => OpenLibm.v0.6.0-0.i686-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-gnu-gcc4.tar.gz => OpenLibm.v0.6.0-0.i686-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-gnu-gcc7.tar.gz => OpenLibm.v0.6.0-0.i686-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-gnu-gcc7.tar.gz => OpenLibm.v0.6.0-0.i686-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-gnu-gcc8.tar.gz => OpenLibm.v0.6.0-0.i686-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-gnu-gcc8.tar.gz => OpenLibm.v0.6.0-0.i686-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-musl-gcc4.tar.gz => OpenLibm.v0.6.0-0.i686-linux-musl-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-musl-gcc4.tar.gz => OpenLibm.v0.6.0-0.i686-linux-musl-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-musl-gcc7.tar.gz => OpenLibm.v0.6.0-0.i686-linux-musl-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-musl-gcc7.tar.gz => OpenLibm.v0.6.0-0.i686-linux-musl-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-musl-gcc8.tar.gz => OpenLibm.v0.6.0-0.i686-linux-musl-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-linux-musl-gcc8.tar.gz => OpenLibm.v0.6.0-0.i686-linux-musl-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-w64-mingw32-gcc4.tar.gz => OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-w64-mingw32-gcc4.tar.gz => OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-w64-mingw32-gcc7.tar.gz => OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-w64-mingw32-gcc7.tar.gz => OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-w64-mingw32-gcc8.tar.gz => OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.i686-w64-mingw32-gcc8.tar.gz => OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc4.tar.gz => OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc4.tar.gz => OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc7.tar.gz => OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc7.tar.gz => OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc8.tar.gz => OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc8.tar.gz => OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc4.tar.gz => OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc4.tar.gz => OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc7.tar.gz => OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc7.tar.gz => OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc8.tar.gz => OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc8.tar.gz => OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-gnu-gcc4.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-gnu-gcc4.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-gnu-gcc7.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-gnu-gcc7.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-gnu-gcc8.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-gnu-gcc8.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-musl-gcc4.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-musl-gcc4.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-musl-gcc7.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-musl-gcc7.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-musl-gcc8.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-linux-musl-gcc8.tar.gz => OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz => OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz => OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz => OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz => OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz => OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz => OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc4.tar.gz => OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc4.tar.gz => OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc7.tar.gz => OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc7.tar.gz => OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc8.tar.gz => OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc8.tar.gz => OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.aarch64-linux-gnu.tar.gz => PCRE2.v10.31.0-0.aarch64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.aarch64-linux-gnu.tar.gz => PCRE2.v10.31.0-0.aarch64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.aarch64-linux-musl.tar.gz => PCRE2.v10.31.0-0.aarch64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.aarch64-linux-musl.tar.gz => PCRE2.v10.31.0-0.aarch64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.arm-linux-gnueabihf.tar.gz => PCRE2.v10.31.0-0.arm-linux-gnueabihf.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.arm-linux-gnueabihf.tar.gz => PCRE2.v10.31.0-0.arm-linux-gnueabihf.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.arm-linux-musleabihf.tar.gz => PCRE2.v10.31.0-0.arm-linux-musleabihf.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.arm-linux-musleabihf.tar.gz => PCRE2.v10.31.0-0.arm-linux-musleabihf.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.i686-linux-gnu.tar.gz => PCRE2.v10.31.0-0.i686-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.i686-linux-gnu.tar.gz => PCRE2.v10.31.0-0.i686-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.i686-linux-musl.tar.gz => PCRE2.v10.31.0-0.i686-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.i686-linux-musl.tar.gz => PCRE2.v10.31.0-0.i686-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.i686-w64-mingw32.tar.gz => PCRE2.v10.31.0-0.i686-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.i686-w64-mingw32.tar.gz => PCRE2.v10.31.0-0.i686-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.powerpc64le-linux-gnu.tar.gz => PCRE2.v10.31.0-0.powerpc64le-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.powerpc64le-linux-gnu.tar.gz => PCRE2.v10.31.0-0.powerpc64le-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.x86_64-apple-darwin14.tar.gz => PCRE2.v10.31.0-0.x86_64-apple-darwin14.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.x86_64-apple-darwin14.tar.gz => PCRE2.v10.31.0-0.x86_64-apple-darwin14.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.x86_64-linux-gnu.tar.gz => PCRE2.v10.31.0-0.x86_64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.x86_64-linux-gnu.tar.gz => PCRE2.v10.31.0-0.x86_64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.x86_64-linux-musl.tar.gz => PCRE2.v10.31.0-0.x86_64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.x86_64-linux-musl.tar.gz => PCRE2.v10.31.0-0.x86_64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.x86_64-unknown-freebsd11.1.tar.gz => PCRE2.v10.31.0-0.x86_64-unknown-freebsd11.1.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.x86_64-unknown-freebsd11.1.tar.gz => PCRE2.v10.31.0-0.x86_64-unknown-freebsd11.1.tar.gz}/sha512 (100%) rename deps/checksums/{PCRE2.v10.31.0.x86_64-w64-mingw32.tar.gz => PCRE2.v10.31.0-0.x86_64-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{PCRE2.v10.31.0.x86_64-w64-mingw32.tar.gz => PCRE2.v10.31.0-0.x86_64-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc4.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc4.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc7.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc7.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc8.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc8.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-musl-gcc4.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-musl-gcc4.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-musl-gcc7.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-musl-gcc7.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-musl-gcc8.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.aarch64-linux-musl-gcc8.tar.gz => SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc4.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc4.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc7.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc7.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc8.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc8.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc4.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc4.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc7.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc7.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc8.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc8.tar.gz => SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-gnu-gcc4.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-gnu-gcc4.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-gnu-gcc7.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-gnu-gcc7.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-gnu-gcc8.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-gnu-gcc8.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-musl-gcc4.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-musl-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-musl-gcc4.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-musl-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-musl-gcc7.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-musl-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-musl-gcc7.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-musl-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-musl-gcc8.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-musl-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-linux-musl-gcc8.tar.gz => SuiteSparse.v5.4.0-2.i686-linux-musl-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-w64-mingw32-gcc4.tar.gz => SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-w64-mingw32-gcc4.tar.gz => SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-w64-mingw32-gcc7.tar.gz => SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-w64-mingw32-gcc7.tar.gz => SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-w64-mingw32-gcc8.tar.gz => SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.i686-w64-mingw32-gcc8.tar.gz => SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc4.tar.gz => SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc4.tar.gz => SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc7.tar.gz => SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc7.tar.gz => SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc8.tar.gz => SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc8.tar.gz => SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc4.tar.gz => SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc4.tar.gz => SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc7.tar.gz => SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc7.tar.gz => SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc8.tar.gz => SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc8.tar.gz => SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc4.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc4.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc7.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc7.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc8.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc8.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-musl-gcc4.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-musl-gcc4.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-musl-gcc7.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-musl-gcc7.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-musl-gcc8.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-linux-musl-gcc8.tar.gz => SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz => SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz => SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz => SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz => SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz => SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz => SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc4.tar.gz => SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc4.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc4.tar.gz => SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc4.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc7.tar.gz => SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc7.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc7.tar.gz => SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc7.tar.gz}/sha512 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc8.tar.gz => SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc8.tar.gz}/md5 (100%) rename deps/checksums/{SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc8.tar.gz => SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc8.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.aarch64-linux-gnu.tar.gz => dSFMT.v2.2.3-0.aarch64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.aarch64-linux-gnu.tar.gz => dSFMT.v2.2.3-0.aarch64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.aarch64-linux-musl.tar.gz => dSFMT.v2.2.3-0.aarch64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.aarch64-linux-musl.tar.gz => dSFMT.v2.2.3-0.aarch64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.arm-linux-gnueabihf.tar.gz => dSFMT.v2.2.3-0.arm-linux-gnueabihf.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.arm-linux-gnueabihf.tar.gz => dSFMT.v2.2.3-0.arm-linux-gnueabihf.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.arm-linux-musleabihf.tar.gz => dSFMT.v2.2.3-0.arm-linux-musleabihf.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.arm-linux-musleabihf.tar.gz => dSFMT.v2.2.3-0.arm-linux-musleabihf.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.i686-linux-gnu.tar.gz => dSFMT.v2.2.3-0.i686-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.i686-linux-gnu.tar.gz => dSFMT.v2.2.3-0.i686-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.i686-linux-musl.tar.gz => dSFMT.v2.2.3-0.i686-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.i686-linux-musl.tar.gz => dSFMT.v2.2.3-0.i686-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.i686-w64-mingw32.tar.gz => dSFMT.v2.2.3-0.i686-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.i686-w64-mingw32.tar.gz => dSFMT.v2.2.3-0.i686-w64-mingw32.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.powerpc64le-linux-gnu.tar.gz => dSFMT.v2.2.3-0.powerpc64le-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.powerpc64le-linux-gnu.tar.gz => dSFMT.v2.2.3-0.powerpc64le-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.x86_64-apple-darwin14.tar.gz => dSFMT.v2.2.3-0.x86_64-apple-darwin14.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.x86_64-apple-darwin14.tar.gz => dSFMT.v2.2.3-0.x86_64-apple-darwin14.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.x86_64-linux-gnu.tar.gz => dSFMT.v2.2.3-0.x86_64-linux-gnu.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.x86_64-linux-gnu.tar.gz => dSFMT.v2.2.3-0.x86_64-linux-gnu.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.x86_64-linux-musl.tar.gz => dSFMT.v2.2.3-0.x86_64-linux-musl.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.x86_64-linux-musl.tar.gz => dSFMT.v2.2.3-0.x86_64-linux-musl.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.x86_64-unknown-freebsd11.1.tar.gz => dSFMT.v2.2.3-0.x86_64-unknown-freebsd11.1.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.x86_64-unknown-freebsd11.1.tar.gz => dSFMT.v2.2.3-0.x86_64-unknown-freebsd11.1.tar.gz}/sha512 (100%) rename deps/checksums/{dSFMT.v2.2.3.x86_64-w64-mingw32.tar.gz => dSFMT.v2.2.3-0.x86_64-w64-mingw32.tar.gz}/md5 (100%) rename deps/checksums/{dSFMT.v2.2.3.x86_64-w64-mingw32.tar.gz => dSFMT.v2.2.3-0.x86_64-w64-mingw32.tar.gz}/sha512 (100%) diff --git a/contrib/refresh_bb_tarballs.sh b/contrib/refresh_bb_tarballs.sh index 7a9d86b8d94a9..cd7bb3f2be865 100755 --- a/contrib/refresh_bb_tarballs.sh +++ b/contrib/refresh_bb_tarballs.sh @@ -15,7 +15,7 @@ BB_PROJECTS="gmp mbedtls libssh2 mpfr curl libgit2 pcre libuv unwind osxunwind d BB_GCC_EXPANDED_PROJECTS="llvm openblas suitesparse openlibm" # If we've been given a project name, filter down to that one: -if [ -n ${1} ]; then +if [ -n "${1}" ]; then case "${BB_PROJECTS}" in *${1}*) BB_PROJECTS="${1}" ;; *) BB_PROJECTS="" ;; diff --git a/deps/Versions.make b/deps/Versions.make index 4ba4d3efe5758..c813df75efc02 100644 --- a/deps/Versions.make +++ b/deps/Versions.make @@ -5,7 +5,7 @@ PCRE_BB_REL = 0 DSFMT_VER = 2.2.3 DSFMT_BB_REL = 0 OPENBLAS_VER = 0.3.5 -OPENBLAS_BB_REL = 0 +OPENBLAS_BB_REL = 1 LAPACK_VER = 3.5.0 SUITESPARSE_VER = 5.4.0 SUITESPARSE_BB_REL = 2 diff --git a/deps/checksums/GMP.v6.1.2.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.aarch64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.aarch64-linux-gnu.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.aarch64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.aarch64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.aarch64-linux-gnu.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.aarch64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.aarch64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.aarch64-linux-musl.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.aarch64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.aarch64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.aarch64-linux-musl.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.aarch64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.arm-linux-gnueabihf.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.arm-linux-gnueabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.arm-linux-gnueabihf.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.arm-linux-gnueabihf.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.arm-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.arm-linux-gnueabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.arm-linux-gnueabihf.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.arm-linux-gnueabihf.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.arm-linux-musleabihf.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.arm-linux-musleabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.arm-linux-musleabihf.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.arm-linux-musleabihf.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.arm-linux-musleabihf.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.arm-linux-musleabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.arm-linux-musleabihf.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.arm-linux-musleabihf.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.i686-linux-gnu.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.i686-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.i686-linux-gnu.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.i686-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.i686-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.i686-linux-gnu.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.i686-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.i686-linux-musl.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.i686-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.i686-linux-musl.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.i686-linux-musl.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.i686-linux-musl.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.i686-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.i686-linux-musl.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.i686-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.i686-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.i686-w64-mingw32.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.i686-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.i686-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.i686-w64-mingw32.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.i686-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.powerpc64le-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.powerpc64le-linux-gnu.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.powerpc64le-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.powerpc64le-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.powerpc64le-linux-gnu.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.powerpc64le-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.x86_64-apple-darwin14.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.x86_64-apple-darwin14.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.x86_64-apple-darwin14.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.x86_64-apple-darwin14.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.x86_64-apple-darwin14.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.x86_64-apple-darwin14.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.x86_64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.x86_64-linux-gnu.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.x86_64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.x86_64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.x86_64-linux-gnu.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.x86_64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.x86_64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.x86_64-linux-musl.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.x86_64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.x86_64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.x86_64-linux-musl.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.x86_64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.x86_64-unknown-freebsd11.1.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.x86_64-unknown-freebsd11.1.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.x86_64-unknown-freebsd11.1.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.x86_64-unknown-freebsd11.1.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.x86_64-unknown-freebsd11.1.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.x86_64-unknown-freebsd11.1.tar.gz/sha512 diff --git a/deps/checksums/GMP.v6.1.2.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/GMP.v6.1.2-1.x86_64-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/GMP.v6.1.2.x86_64-w64-mingw32.tar.gz/md5 rename to deps/checksums/GMP.v6.1.2-1.x86_64-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/GMP.v6.1.2.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/GMP.v6.1.2-1.x86_64-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/GMP.v6.1.2.x86_64-w64-mingw32.tar.gz/sha512 rename to deps/checksums/GMP.v6.1.2-1.x86_64-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.aarch64-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.aarch64-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc4.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc4.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc4.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc4.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc4.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc7.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc7.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc7.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc7.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc7.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc8.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc8.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc8.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.arm-linux-gnueabihf-gcc8.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.arm-linux-gnueabihf-gcc8.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc4.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc4.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc4.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc4.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc7.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc7.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc7.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc7.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc8.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc8.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.i686-w64-mingw32-gcc8.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.i686-w64-mingw32-gcc8.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc4.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc4.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc4.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc4.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc4.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc7.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc7.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc7.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc7.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc7.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc8.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc8.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc8.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-apple-darwin14-gcc8.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-apple-darwin14-gcc8.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc4.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc4.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc4.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc4.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc7.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc7.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc7.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc7.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc8.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc8.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-linux-musl-gcc8.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-linux-musl-gcc8.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc4.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc4.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc4.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc4.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc7.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc7.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc7.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc7.tar.gz/sha512 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc8.tar.gz/md5 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc8.tar.gz/md5 diff --git a/deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/LLVM.v6.0.1.x86_64-w64-mingw32-gcc8.tar.gz/sha512 rename to deps/checksums/LLVM.v6.0.1-6+nowasm.x86_64-w64-mingw32-gcc8.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.aarch64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.aarch64-linux-gnu.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.aarch64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.aarch64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.aarch64-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.aarch64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.aarch64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.aarch64-linux-musl.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.aarch64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.aarch64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.aarch64-linux-musl.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.aarch64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.arm-linux-gnueabihf.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.arm-linux-gnueabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.arm-linux-gnueabihf.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.arm-linux-gnueabihf.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.arm-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.arm-linux-gnueabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.arm-linux-gnueabihf.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.arm-linux-gnueabihf.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.arm-linux-musleabihf.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.arm-linux-musleabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.arm-linux-musleabihf.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.arm-linux-musleabihf.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.arm-linux-musleabihf.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.arm-linux-musleabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.arm-linux-musleabihf.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.arm-linux-musleabihf.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.i686-linux-gnu.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.i686-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.i686-linux-gnu.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.i686-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.i686-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.i686-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.i686-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.i686-linux-musl.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.i686-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.i686-linux-musl.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.i686-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.i686-linux-musl.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.i686-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.i686-linux-musl.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.i686-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.i686-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.i686-w64-mingw32.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.i686-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.i686-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.i686-w64-mingw32.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.i686-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.powerpc64le-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.powerpc64le-linux-gnu.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.powerpc64le-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.powerpc64le-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.powerpc64le-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.powerpc64le-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.x86_64-apple-darwin14.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.x86_64-apple-darwin14.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.x86_64-apple-darwin14.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.x86_64-apple-darwin14.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.x86_64-apple-darwin14.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.x86_64-apple-darwin14.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.x86_64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.x86_64-linux-gnu.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.x86_64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.x86_64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.x86_64-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.x86_64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.x86_64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.x86_64-linux-musl.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.x86_64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.x86_64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.x86_64-linux-musl.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.x86_64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.x86_64-unknown-freebsd11.1.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.x86_64-unknown-freebsd11.1.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.x86_64-unknown-freebsd11.1.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.x86_64-unknown-freebsd11.1.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.x86_64-unknown-freebsd11.1.tar.gz/sha512 diff --git a/deps/checksums/LibCURL.v7.61.0.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/LibCURL.v7.61.0-1.x86_64-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.x86_64-w64-mingw32.tar.gz/md5 rename to deps/checksums/LibCURL.v7.61.0-1.x86_64-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/LibCURL.v7.61.0.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/LibCURL.v7.61.0-1.x86_64-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibCURL.v7.61.0.x86_64-w64-mingw32.tar.gz/sha512 rename to deps/checksums/LibCURL.v7.61.0-1.x86_64-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.aarch64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.aarch64-linux-gnu.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.aarch64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.aarch64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.aarch64-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.aarch64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.aarch64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.aarch64-linux-musl.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.aarch64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.aarch64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.aarch64-linux-musl.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.aarch64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.arm-linux-gnueabihf.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.arm-linux-gnueabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.arm-linux-gnueabihf.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.arm-linux-gnueabihf.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.arm-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.arm-linux-gnueabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.arm-linux-gnueabihf.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.arm-linux-gnueabihf.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.arm-linux-musleabihf.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.arm-linux-musleabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.arm-linux-musleabihf.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.arm-linux-musleabihf.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.arm-linux-musleabihf.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.arm-linux-musleabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.arm-linux-musleabihf.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.arm-linux-musleabihf.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.i686-linux-gnu.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.i686-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.i686-linux-gnu.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.i686-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.i686-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.i686-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.i686-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.i686-linux-musl.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.i686-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.i686-linux-musl.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.i686-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.i686-linux-musl.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.i686-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.i686-linux-musl.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.i686-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.i686-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.i686-w64-mingw32.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.i686-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.i686-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.i686-w64-mingw32.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.i686-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.powerpc64le-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.powerpc64le-linux-gnu.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.powerpc64le-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.powerpc64le-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.powerpc64le-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.powerpc64le-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.x86_64-apple-darwin14.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.x86_64-apple-darwin14.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.x86_64-apple-darwin14.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.x86_64-apple-darwin14.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.x86_64-apple-darwin14.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.x86_64-apple-darwin14.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.x86_64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.x86_64-linux-gnu.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.x86_64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.x86_64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.x86_64-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.x86_64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.x86_64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.x86_64-linux-musl.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.x86_64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.x86_64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.x86_64-linux-musl.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.x86_64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.x86_64-unknown-freebsd11.1.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.x86_64-unknown-freebsd11.1.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.x86_64-unknown-freebsd11.1.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.x86_64-unknown-freebsd11.1.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.x86_64-unknown-freebsd11.1.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.x86_64-unknown-freebsd11.1.tar.gz/sha512 diff --git a/deps/checksums/LibGit2.v0.27.7.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/LibGit2.v0.27.7-1.x86_64-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.x86_64-w64-mingw32.tar.gz/md5 rename to deps/checksums/LibGit2.v0.27.7-1.x86_64-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/LibGit2.v0.27.7.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/LibGit2.v0.27.7-1.x86_64-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibGit2.v0.27.7.x86_64-w64-mingw32.tar.gz/sha512 rename to deps/checksums/LibGit2.v0.27.7-1.x86_64-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/LibOSXUnwind.v0.0.5-0.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/LibOSXUnwind.v0.0.5-0.x86_64-apple-darwin14.tar.gz/md5 new file mode 100644 index 0000000000000..cc1cd671359a2 --- /dev/null +++ b/deps/checksums/LibOSXUnwind.v0.0.5-0.x86_64-apple-darwin14.tar.gz/md5 @@ -0,0 +1 @@ +3e092d738b24f7a121065b46af327f1a diff --git a/deps/checksums/LibOSXUnwind.v0.0.5-0.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/LibOSXUnwind.v0.0.5-0.x86_64-apple-darwin14.tar.gz/sha512 new file mode 100644 index 0000000000000..6bc69f952730e --- /dev/null +++ b/deps/checksums/LibOSXUnwind.v0.0.5-0.x86_64-apple-darwin14.tar.gz/sha512 @@ -0,0 +1 @@ +6c484cba8b5151814764d73a8bc4e56292831ae48eb172c03135c8d83e49571380abe275209fdeb8855d0e6a78d1a4f12e15ef4ab09eebee73056cd406fe017b diff --git a/deps/checksums/LibSSH2.v1.8.2.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.aarch64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.aarch64-linux-gnu.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.aarch64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.aarch64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.aarch64-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.aarch64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.aarch64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.aarch64-linux-musl.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.aarch64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.aarch64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.aarch64-linux-musl.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.aarch64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.arm-linux-gnueabihf.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.arm-linux-gnueabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.arm-linux-gnueabihf.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.arm-linux-gnueabihf.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.arm-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.arm-linux-gnueabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.arm-linux-gnueabihf.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.arm-linux-gnueabihf.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.arm-linux-musleabihf.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.arm-linux-musleabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.arm-linux-musleabihf.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.arm-linux-musleabihf.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.arm-linux-musleabihf.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.arm-linux-musleabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.arm-linux-musleabihf.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.arm-linux-musleabihf.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.i686-linux-gnu.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.i686-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.i686-linux-gnu.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.i686-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.i686-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.i686-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.i686-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.i686-linux-musl.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.i686-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.i686-linux-musl.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.i686-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.i686-linux-musl.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.i686-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.i686-linux-musl.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.i686-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.i686-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.i686-w64-mingw32.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.i686-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.i686-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.i686-w64-mingw32.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.i686-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.powerpc64le-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.powerpc64le-linux-gnu.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.powerpc64le-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.powerpc64le-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.powerpc64le-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.powerpc64le-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.x86_64-apple-darwin14.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.x86_64-apple-darwin14.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.x86_64-apple-darwin14.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.x86_64-apple-darwin14.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.x86_64-apple-darwin14.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.x86_64-apple-darwin14.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.x86_64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.x86_64-linux-gnu.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.x86_64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.x86_64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.x86_64-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.x86_64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.x86_64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.x86_64-linux-musl.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.x86_64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.x86_64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.x86_64-linux-musl.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.x86_64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.x86_64-unknown-freebsd11.1.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.x86_64-unknown-freebsd11.1.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.x86_64-unknown-freebsd11.1.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.x86_64-unknown-freebsd11.1.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.x86_64-unknown-freebsd11.1.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.x86_64-unknown-freebsd11.1.tar.gz/sha512 diff --git a/deps/checksums/LibSSH2.v1.8.2.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/LibSSH2.v1.8.2-0.x86_64-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.x86_64-w64-mingw32.tar.gz/md5 rename to deps/checksums/LibSSH2.v1.8.2-0.x86_64-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/LibSSH2.v1.8.2.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/LibSSH2.v1.8.2-0.x86_64-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibSSH2.v1.8.2.x86_64-w64-mingw32.tar.gz/sha512 rename to deps/checksums/LibSSH2.v1.8.2-0.x86_64-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.aarch64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.aarch64-linux-gnu.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.aarch64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.aarch64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.aarch64-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.aarch64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.aarch64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.aarch64-linux-musl.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.aarch64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.aarch64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.aarch64-linux-musl.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.aarch64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.arm-linux-gnueabihf.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.arm-linux-gnueabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.arm-linux-gnueabihf.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.arm-linux-gnueabihf.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.arm-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.arm-linux-gnueabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.arm-linux-gnueabihf.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.arm-linux-gnueabihf.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.arm-linux-musleabihf.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.arm-linux-musleabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.arm-linux-musleabihf.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.arm-linux-musleabihf.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.arm-linux-musleabihf.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.arm-linux-musleabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.arm-linux-musleabihf.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.arm-linux-musleabihf.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.i686-linux-gnu.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.i686-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.i686-linux-gnu.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.i686-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.i686-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.i686-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.i686-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.i686-linux-musl.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.i686-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.i686-linux-musl.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.i686-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.i686-linux-musl.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.i686-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.i686-linux-musl.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.i686-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.i686-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.i686-w64-mingw32.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.i686-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.i686-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.i686-w64-mingw32.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.i686-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.powerpc64le-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.powerpc64le-linux-gnu.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.powerpc64le-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.powerpc64le-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.powerpc64le-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.powerpc64le-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.x86_64-apple-darwin14.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.x86_64-apple-darwin14.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.x86_64-apple-darwin14.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.x86_64-apple-darwin14.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.x86_64-apple-darwin14.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.x86_64-apple-darwin14.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.x86_64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.x86_64-linux-gnu.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.x86_64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.x86_64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.x86_64-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.x86_64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.x86_64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.x86_64-linux-musl.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.x86_64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.x86_64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.x86_64-linux-musl.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.x86_64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.x86_64-unknown-freebsd11.1.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.x86_64-unknown-freebsd11.1.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.x86_64-unknown-freebsd11.1.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.x86_64-unknown-freebsd11.1.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.x86_64-unknown-freebsd11.1.tar.gz/sha512 diff --git a/deps/checksums/LibUV.v1.24.0.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/LibUV.v1.24.0-1.x86_64-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.x86_64-w64-mingw32.tar.gz/md5 rename to deps/checksums/LibUV.v1.24.0-1.x86_64-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/LibUV.v1.24.0.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/LibUV.v1.24.0-1.x86_64-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUV.v1.24.0.x86_64-w64-mingw32.tar.gz/sha512 rename to deps/checksums/LibUV.v1.24.0-1.x86_64-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/LibUnwind.v1.3.1.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/LibUnwind.v1.3.1-3.aarch64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.aarch64-linux-gnu.tar.gz/md5 rename to deps/checksums/LibUnwind.v1.3.1-3.aarch64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibUnwind.v1.3.1.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/LibUnwind.v1.3.1-3.aarch64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.aarch64-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibUnwind.v1.3.1-3.aarch64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibUnwind.v1.3.1.arm-linux-gnueabihf.tar.gz/md5 b/deps/checksums/LibUnwind.v1.3.1-3.arm-linux-gnueabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.arm-linux-gnueabihf.tar.gz/md5 rename to deps/checksums/LibUnwind.v1.3.1-3.arm-linux-gnueabihf.tar.gz/md5 diff --git a/deps/checksums/LibUnwind.v1.3.1.arm-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/LibUnwind.v1.3.1-3.arm-linux-gnueabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.arm-linux-gnueabihf.tar.gz/sha512 rename to deps/checksums/LibUnwind.v1.3.1-3.arm-linux-gnueabihf.tar.gz/sha512 diff --git a/deps/checksums/LibUnwind.v1.3.1.i686-linux-gnu.tar.gz/md5 b/deps/checksums/LibUnwind.v1.3.1-3.i686-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.i686-linux-gnu.tar.gz/md5 rename to deps/checksums/LibUnwind.v1.3.1-3.i686-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibUnwind.v1.3.1.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/LibUnwind.v1.3.1-3.i686-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.i686-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibUnwind.v1.3.1-3.i686-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibUnwind.v1.3.1.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/LibUnwind.v1.3.1-3.powerpc64le-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.powerpc64le-linux-gnu.tar.gz/md5 rename to deps/checksums/LibUnwind.v1.3.1-3.powerpc64le-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibUnwind.v1.3.1.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/LibUnwind.v1.3.1-3.powerpc64le-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.powerpc64le-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibUnwind.v1.3.1-3.powerpc64le-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibUnwind.v1.3.1.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/LibUnwind.v1.3.1-3.x86_64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.x86_64-linux-gnu.tar.gz/md5 rename to deps/checksums/LibUnwind.v1.3.1-3.x86_64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/LibUnwind.v1.3.1.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/LibUnwind.v1.3.1-3.x86_64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.x86_64-linux-gnu.tar.gz/sha512 rename to deps/checksums/LibUnwind.v1.3.1-3.x86_64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/LibUnwind.v1.3.1.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/LibUnwind.v1.3.1-3.x86_64-unknown-freebsd11.1.tar.gz/md5 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.x86_64-unknown-freebsd11.1.tar.gz/md5 rename to deps/checksums/LibUnwind.v1.3.1-3.x86_64-unknown-freebsd11.1.tar.gz/md5 diff --git a/deps/checksums/LibUnwind.v1.3.1.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/LibUnwind.v1.3.1-3.x86_64-unknown-freebsd11.1.tar.gz/sha512 similarity index 100% rename from deps/checksums/LibUnwind.v1.3.1.x86_64-unknown-freebsd11.1.tar.gz/sha512 rename to deps/checksums/LibUnwind.v1.3.1-3.x86_64-unknown-freebsd11.1.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.aarch64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.aarch64-linux-gnu.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.aarch64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.aarch64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.aarch64-linux-gnu.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.aarch64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.aarch64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.aarch64-linux-musl.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.aarch64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.aarch64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.aarch64-linux-musl.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.aarch64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.arm-linux-gnueabihf.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.arm-linux-gnueabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.arm-linux-gnueabihf.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.arm-linux-gnueabihf.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.arm-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.arm-linux-gnueabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.arm-linux-gnueabihf.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.arm-linux-gnueabihf.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.arm-linux-musleabihf.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.arm-linux-musleabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.arm-linux-musleabihf.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.arm-linux-musleabihf.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.arm-linux-musleabihf.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.arm-linux-musleabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.arm-linux-musleabihf.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.arm-linux-musleabihf.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.i686-linux-gnu.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.i686-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.i686-linux-gnu.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.i686-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.i686-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.i686-linux-gnu.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.i686-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.i686-linux-musl.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.i686-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.i686-linux-musl.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.i686-linux-musl.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.i686-linux-musl.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.i686-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.i686-linux-musl.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.i686-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.i686-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.i686-w64-mingw32.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.i686-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.i686-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.i686-w64-mingw32.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.i686-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.powerpc64le-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.powerpc64le-linux-gnu.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.powerpc64le-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.powerpc64le-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.powerpc64le-linux-gnu.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.powerpc64le-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.x86_64-apple-darwin14.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.x86_64-apple-darwin14.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.x86_64-apple-darwin14.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.x86_64-apple-darwin14.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.x86_64-apple-darwin14.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.x86_64-apple-darwin14.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.x86_64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.x86_64-linux-gnu.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.x86_64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.x86_64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.x86_64-linux-gnu.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.x86_64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.x86_64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.x86_64-linux-musl.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.x86_64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.x86_64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.x86_64-linux-musl.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.x86_64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.x86_64-unknown-freebsd11.1.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.x86_64-unknown-freebsd11.1.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.x86_64-unknown-freebsd11.1.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.x86_64-unknown-freebsd11.1.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.x86_64-unknown-freebsd11.1.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.x86_64-unknown-freebsd11.1.tar.gz/sha512 diff --git a/deps/checksums/MPFR.v4.0.2.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/MPFR.v4.0.2-1.x86_64-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.x86_64-w64-mingw32.tar.gz/md5 rename to deps/checksums/MPFR.v4.0.2-1.x86_64-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/MPFR.v4.0.2.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/MPFR.v4.0.2-1.x86_64-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/MPFR.v4.0.2.x86_64-w64-mingw32.tar.gz/sha512 rename to deps/checksums/MPFR.v4.0.2-1.x86_64-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.aarch64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.aarch64-linux-gnu.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.aarch64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.aarch64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.aarch64-linux-gnu.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.aarch64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.aarch64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.aarch64-linux-musl.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.aarch64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.aarch64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.aarch64-linux-musl.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.aarch64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.arm-linux-gnueabihf.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.arm-linux-gnueabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.arm-linux-gnueabihf.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.arm-linux-gnueabihf.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.arm-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.arm-linux-gnueabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.arm-linux-gnueabihf.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.arm-linux-gnueabihf.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.arm-linux-musleabihf.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.arm-linux-musleabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.arm-linux-musleabihf.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.arm-linux-musleabihf.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.arm-linux-musleabihf.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.arm-linux-musleabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.arm-linux-musleabihf.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.arm-linux-musleabihf.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.i686-linux-gnu.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.i686-linux-gnu.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.i686-linux-gnu.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.i686-linux-musl.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.i686-linux-musl.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-linux-musl.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.i686-linux-musl.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.i686-linux-musl.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.i686-w64-mingw32.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.i686-w64-mingw32.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.i686-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.powerpc64le-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.powerpc64le-linux-gnu.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.powerpc64le-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.powerpc64le-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.powerpc64le-linux-gnu.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.powerpc64le-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-apple-darwin14.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.x86_64-apple-darwin14.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-apple-darwin14.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-apple-darwin14.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.x86_64-apple-darwin14.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-apple-darwin14.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.x86_64-linux-gnu.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.x86_64-linux-gnu.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.x86_64-linux-musl.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.x86_64-linux-musl.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-unknown-freebsd11.1.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.x86_64-unknown-freebsd11.1.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-unknown-freebsd11.1.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 diff --git a/deps/checksums/MbedTLS.v2.16.0.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.x86_64-w64-mingw32.tar.gz/md5 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/MbedTLS.v2.16.0.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/MbedTLS.v2.16.0.x86_64-w64-mingw32.tar.gz/sha512 rename to deps/checksums/MbedTLS.v2.16.0-v0.17.0.x86_64-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.aarch64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.aarch64-linux-gnu.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.aarch64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.aarch64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.aarch64-linux-gnu.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.aarch64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.aarch64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.aarch64-linux-musl.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.aarch64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.aarch64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.aarch64-linux-musl.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.aarch64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.arm-linux-gnueabihf.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.arm-linux-gnueabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.arm-linux-gnueabihf.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.arm-linux-gnueabihf.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.arm-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.arm-linux-gnueabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.arm-linux-gnueabihf.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.arm-linux-gnueabihf.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.arm-linux-musleabihf.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.arm-linux-musleabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.arm-linux-musleabihf.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.arm-linux-musleabihf.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.arm-linux-musleabihf.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.arm-linux-musleabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.arm-linux-musleabihf.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.arm-linux-musleabihf.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.i686-linux-gnu.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.i686-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.i686-linux-gnu.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.i686-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.i686-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.i686-linux-gnu.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.i686-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.i686-linux-musl.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.i686-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.i686-linux-musl.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.i686-linux-musl.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.i686-linux-musl.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.i686-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.i686-linux-musl.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.i686-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.i686-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.i686-w64-mingw32.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.i686-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.i686-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.i686-w64-mingw32.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.i686-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.powerpc64le-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.powerpc64le-linux-gnu.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.powerpc64le-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.powerpc64le-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.powerpc64le-linux-gnu.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.powerpc64le-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.x86_64-apple-darwin14.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.x86_64-apple-darwin14.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.x86_64-apple-darwin14.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.x86_64-apple-darwin14.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.x86_64-apple-darwin14.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.x86_64-apple-darwin14.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.x86_64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.x86_64-linux-gnu.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.x86_64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.x86_64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.x86_64-linux-gnu.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.x86_64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.x86_64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.x86_64-linux-musl.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.x86_64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.x86_64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.x86_64-linux-musl.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.x86_64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.x86_64-unknown-freebsd11.1.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.x86_64-unknown-freebsd11.1.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.x86_64-unknown-freebsd11.1.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.x86_64-unknown-freebsd11.1.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.x86_64-unknown-freebsd11.1.tar.gz/sha512 diff --git a/deps/checksums/Objconv.v2.49.0.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/Objconv.v2.49.0-0.x86_64-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.x86_64-w64-mingw32.tar.gz/md5 rename to deps/checksums/Objconv.v2.49.0-0.x86_64-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/Objconv.v2.49.0.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/Objconv.v2.49.0-0.x86_64-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/Objconv.v2.49.0.x86_64-w64-mingw32.tar.gz/sha512 rename to deps/checksums/Objconv.v2.49.0-0.x86_64-w64-mingw32.tar.gz/sha512 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 new file mode 100644 index 0000000000000..3dcb93d281005 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..4c2c48e5de56d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..1376bb06eae0e --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..0ef72f2aeb5b1 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..1da34a4a8ef79 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..3d7d2e271a207 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..d5429a91195a5 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..efff55d0029c1 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..6d096f6cf6769 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..a0a4321f57ebb --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..9d35c51ffcfc1 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..5e0c168ab41a1 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.aarch64-linux-musl-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..6703857508076 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..fefca48417060 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..b4865f7a786cb --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..06dc50f9059b4 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..8e70545e496dd --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..a1fd61b15559d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-gnueabihf-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..8a8a117fb8c36 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..d90dc5e610926 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..3c34ba323c9ee --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..3a7e19009e3c9 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..ba13c7d83ca0c --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..58472df703951 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.arm-linux-musleabihf-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..5f91d1818513d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..a132a6c8f8a12 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..9f80027ff0c75 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..351b08eb50074 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..551aabe2b0f39 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..6027dc7b2e09c --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..70f131a4caa4f --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..dcef40ec1339b --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..7c77230842749 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..ef3313f723da2 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..0729c8a1d29b4 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..f43da5902dd9a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-linux-musl-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..0534748118b0c --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..38ab40ba0bc5b --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..e9683849b9b4d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..d0029630b3dc7 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..18543539e7f63 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..dbdf3ef0b2c95 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.i686-w64-mingw32-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..28d3c5881cbbb --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..f0f28f5b841d3 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..f334d7c073688 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..cf7f03bacaf8d --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..fa861da38739e --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..3e6ecfdf61238 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..0130c514deb0f --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..2f2741f491e21 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..584f50652f99b --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..e05032022a631 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..b275077d454f9 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..a2fd81bc90b3f --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-apple-darwin14-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..fdd9ae5ae0776 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..14fa834bbbe16 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..ba0b25c9b40a7 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..56c5af73a2a85 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..453a4df5d2756 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..ed20426118390 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-gnu-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..04bc7bab4eebf --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..40d5d5a6e584b --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..af78ac87734bf --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..06a601c305ffe --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..55e398465b526 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..f4335aec93426 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-linux-musl-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..d209413ec52c1 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..a98c643ed80be --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..079ee8ac73976 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..253191bd51694 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..c1a0e60dd764a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..479749a59fe6c --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..190c1291443ab --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..5e03e5ab35db8 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc4.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..f16cfc31487ad --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..9845b1a62702a --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc7.tar.gz/sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..092558bf2dc91 --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/md5 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000..023b1c7c54afc --- /dev/null +++ b/deps/checksums/OpenBLAS.v0.3.5-1.x86_64-w64-mingw32-gcc8.tar.gz/sha512 @@ -0,0 +1 @@ +3886c78bba70184a433f4e2660522f42bab85ce2e23b24e8b27a5a26870e96aa780193615c3aa6c45f397747b1f1bd199af70a4dfba27e0a203207e15c2bd142 diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index acba2a9e2d042..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -06a9d9511a85e50d8a79bb936539ddf8 diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index 30a8ab8908f8e..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -24ff8fe79b5827be9242dd8782fd78233109988f23cb4576f3bbbcd1465c51a0dcec97a6410b13db8d6d17662d756565650319805227f86256a059975a55601f diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index a48137ebaff31..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -7cd182b8cbc600a349e6e642f258dc8b diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index d663ff27242b4..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -b3ef56e1ad20f23c64b66e5ad276dffc2bea411d2412cd329703896c92cc55806d93800cc1b54627010a1c8b7402f91cbec482a5274d462dcf1e8054acea7d7f diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index 8f46e8edb2f0c..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -f53e16e71a9239b7a7d6019bfa05dade diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index 010036e1ab0c4..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -90dffda4d5ff4720573b2db4066e29ffe7d559217173307bb2548747c4a07b9d42f6f6ba9980f1d900bd0030b134834165f86051d73e0d61092890fbf6cbb6d8 diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc4.tar.gz/md5 deleted file mode 100644 index e467232b0858d..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -29bdeaa48e3163b3f3d2c108a1506ea1 diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc4.tar.gz/sha512 deleted file mode 100644 index 1bd8a19e58740..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -9c68ff99c1d2eb8766294ba525e031ab47d8601d750466517960401f963a0df15feb3902a96884737e9da2bd714adf00f68e914776d21602ea4446593b7da24c diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc7.tar.gz/md5 deleted file mode 100644 index fae0c941fb9fb..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -be968f1f5c8d5b6fb7bbf5f0a4bdd0e0 diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc7.tar.gz/sha512 deleted file mode 100644 index 241a0aa7b8def..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -d62cc78fd2ba80d6ed9a57a20f7b65f1ab29b20f8bd28955429dc177fee75c7352b38ec71a6c8b3d9e5133e27ecd3d224771b1eebd7d007155d23cc34d7b7a80 diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc8.tar.gz/md5 deleted file mode 100644 index ef8872369c679..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -46fc46670dcde65cf1822d67a137ffc7 diff --git a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc8.tar.gz/sha512 deleted file mode 100644 index d5a5388770f65..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.aarch64-linux-musl-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -2ecbea1e9356684526e66f2218767cb4beb22d6b9ab9f95065dba8225bd19465773e0490e87c11180e7a3c26900296da030c72222ce0f5b5b03cea64b8af0ee4 diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc4.tar.gz/md5 deleted file mode 100644 index 104fa55ecae84..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -b397415435c92153c5ed478754051fd5 diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc4.tar.gz/sha512 deleted file mode 100644 index 78c921ffa592b..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -290ea9a6a0b9b1f6f1f36bc79d23c3b18bf5f9f21e0b4fb1c556ba7733dd56345e24c7ab94451101975e86e5339be83e7f4d281a237db7c8edc4aa727837e37f diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc7.tar.gz/md5 deleted file mode 100644 index 11dd9dfed6e21..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -b9e2c3d3a1e50b88a6c6d8e615dc101d diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc7.tar.gz/sha512 deleted file mode 100644 index c7740fc74ca5b..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -2ba5e64459a12b97e22a8122bb50ef72bb53ef2f9f6262aa369664eb2a70c466bf70a23ee0fa9abd27e0fe13ee18df3bf3f7aabdcabf571b942216b7226dc5ed diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc8.tar.gz/md5 deleted file mode 100644 index 930782f0cfb59..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -ef8662652f978b8aac4236f84a244414 diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc8.tar.gz/sha512 deleted file mode 100644 index cd6c563bbcc62..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-gnueabihf-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -94655019f8210b371e2413aea19d530bc4b836444f11e9443bbc48c3960f271aad597ab9af24784897cdba9d46699f2272a5fd15293966f0634ce57b81b34a91 diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc4.tar.gz/md5 deleted file mode 100644 index 93e528787c1bf..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -e8dacb5741015ac5ef24717a516afdd2 diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc4.tar.gz/sha512 deleted file mode 100644 index cd319446add11..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -3700ff4f8b21dba9091bc521dade172c98977e65c1df9b5a89491951b1938ccc382ced1f14c16e2ac07897dcb189bf8a366ff31f4f31f0f2225de81d035cb1b8 diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc7.tar.gz/md5 deleted file mode 100644 index 8c8a09db06420..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -40c46fd64c254d4ab12dc3413b20b8b2 diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc7.tar.gz/sha512 deleted file mode 100644 index b22f82e8b1abf..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -7e1b9a4ed54c4759315449c0064ed2aaf16b61b9bbee8b3423a3cb524b9a42978c8e60314b58e5b028b700acdd64d1f0c5cf21b04ebdf7894008f582eed3eb9c diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc8.tar.gz/md5 deleted file mode 100644 index c2d4edcd38e05..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -1e2d7e6651b88c2303271f0f6ad0810b diff --git a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc8.tar.gz/sha512 deleted file mode 100644 index 1670c812eab8b..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.arm-linux-musleabihf-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -ce518cf98b47bf4596727d34b7fa976aa09efe267d85264a645b5d7558c2d153f5a6ab29b6c616b750b944e13f10a0068a50c99f8451ef776d53d4c311b26396 diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index c3913c52f64b8..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -e7e4c6c423ba6f77928e28fd2a3845b9 diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index 62c00b632b138..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -67df80dff44dccd578769b76c97a5c8722593a87625a698ba37c9c6fac3ea2c7e8b7b09c38cb75d642005824275b59fd94c1ae167a669718c504b896f49da1fd diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index d856de66a59df..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -d0e4499fd3fee29b3d492e48a22f30d1 diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index 93a98f24a06b6..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -1e9fd5ea457b8d51739752920ec56ade5f251b0c89eec9c3b1664070c795f981bb97594414fd0d8f121b19c58dff4db0f6ebf9e1220d2eb2e13de6eb3c49bea5 diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index 0299dba1f46e8..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -3717d664e32c8b148ad06d237817daa5 diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index 81de98cc31c62..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -5da28a52f98a5b8c195947c1652dcc10bcae0b2eaed7044520ebdc548a8968799f42b58dd7501c36d41139508869214ab92d6070f22279e44f7c6b99cd1a200d diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc4.tar.gz/md5 deleted file mode 100644 index 0d87208618040..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -a8f3ae3fc74b361df1faff561d608960 diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc4.tar.gz/sha512 deleted file mode 100644 index c986f66d39282..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -ec4925a1cd7ca64f25e4f6b7abf22ec6f41ef8443a0ace55feca3ff7b7efb3ff5d00ca38ad996e9e399adfc3615f4b125f64ea724ac2d1f9dabb55ce3243e4eb diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc7.tar.gz/md5 deleted file mode 100644 index ed603104b08e4..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -b75a4690a60f098b9d8839ab3d4310a1 diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc7.tar.gz/sha512 deleted file mode 100644 index 05845cbdcb9db..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -0e0583e6b587d521c49084c6506fceda8657342908e5190d20788cbadc25334db60ce15fc8a05fe5d49219cc1521354e7dcc1a56a9d7491f0ee5eff06c962159 diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc8.tar.gz/md5 deleted file mode 100644 index e14bafbfc8799..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -6d61d61f9721b271847e5a2fda63b0cf diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc8.tar.gz/sha512 deleted file mode 100644 index 9ee142d5175e3..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-linux-musl-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -bf5f88ff768f4a3562becf8949659f043fe9c03ade46295d3c559ede88c53ca78c1527a27f0b759f8f9047e241787abad37949164c0f0af5a091eee084e69301 diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc4.tar.gz/md5 deleted file mode 100644 index 37ae50af48e10..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -19c85d4b502d7ff9502b9123b0ff3dec diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc4.tar.gz/sha512 deleted file mode 100644 index c32ff03646463..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -bbc4ccbb277a8b42a7b122e77a31c843883acf69c171fb00c64ead952277d09e4a6fbdcf2a564ce511fc9434b6e5c0f135deb6e426c00ea7069fdb6a45fe7b2a diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc7.tar.gz/md5 deleted file mode 100644 index 8bca2d9277212..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -4e273ad486504fdbba93328f3a078ceb diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc7.tar.gz/sha512 deleted file mode 100644 index 9d064ab31d90a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -45ab4a745186d6667d59f738916cdb196b0c1c2938df4abc9a1144a1206b49d90fa29afff6f3fdad3a94598f9732ca74acf36a798343b943ea2a598c8b74bcc3 diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc8.tar.gz/md5 deleted file mode 100644 index e46788193d9e7..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -2fa71c9cdc761838433115cd3d2891aa diff --git a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc8.tar.gz/sha512 deleted file mode 100644 index 003cf8318eb6a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.i686-w64-mingw32-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -d8f609d63b773c9f2740ae7d757f7917c433281c6ee317074118c824dc9b599cf921d0c17a1a71e50e06cf04c1a9d3bb1f1fd4637047dc64e47ffe79dc2750b0 diff --git a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index 16dca991aa19a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -c7c1ba32c585058c128788648d36836c diff --git a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index 197ef6485e220..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -14ca3e01468858737a9a68deb5e45738799c6abae9068491a323826a2fd5bc85ec9f1655bb74fa372af194d90790a1343a38de5c5aa74b75006e785e4dc24be8 diff --git a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index fc06979ec236d..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -d1912328ca42249b7a4df094e335a1e1 diff --git a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index 3e6daed658b1d..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -a0f771353d2afa4520b7a557f60938c03ef5216dca8b0e4614b9b6801a70ad3bd0661450257d3ea916729f0218c3058a9c4140fc9c1290d2bb820c03684aee6b diff --git a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index a1f6aa5615de8..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -dda328e0db0898044451080567bccb09 diff --git a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index 7947b8a20cf09..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -7668a6a024b908ad7066e15998a8eb3584877724fc396587d5f19bdfc0eaa036d0dab8280496a743ff371dbb331e4f5488734343e844b838f6e116e5153beca1 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc4.tar.gz/md5 deleted file mode 100644 index 3f988b663a6a0..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -1a66bcf5bbcd121d713c1c797044bd47 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc4.tar.gz/sha512 deleted file mode 100644 index c66aacb27710b..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -d3b0151ef2b128a0c514d29858197e159e13415de4aa6d934f0100324b90c8ae5cba1fac72699a1b2799ea615f409eb2d01f082c6308d0efb3b47fab16c1a81f diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc7.tar.gz/md5 deleted file mode 100644 index d632cd44ed358..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -3683eda8c651c1204e5dd7108cc5e249 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc7.tar.gz/sha512 deleted file mode 100644 index 000f2addeadd8..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -d1ea308ad6fcbbc518f3726702d543740652da7d755c3c77bc5df249cf27b93371ee95c46d4ae62fcdaba7266f4ae7b3ba8a71c04e18ac0494e134874463cc2a diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc8.tar.gz/md5 deleted file mode 100644 index 403613dfe6c80..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -4f0e377ae1d54b9f1d8a267572ce2229 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc8.tar.gz/sha512 deleted file mode 100644 index f367193bec207..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-apple-darwin14-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -2f626a8246d215294e989f2b007207e1258ef4ab3407a15856eff02ccca06797587bcadbf0cd7f4b4a51e2f00429a2cbdab9003527cf382fac259740940cbd1d diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc4.tar.gz/md5 deleted file mode 100644 index 6f91975b1b076..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -b876e4e07dff1956d748233d391d1c46 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc4.tar.gz/sha512 deleted file mode 100644 index 9ef71c5420b86..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -c3312a27b9c49b2258dcd07031f252701796611cd56d03b12e1a27ced844d82a7acdb1b1ffb877a3eae472530746aad9b992ea55b2013880e94fdc0952bb6ba3 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc7.tar.gz/md5 deleted file mode 100644 index 6ca896cf32903..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -a4f7e8721159c0e6b1484f33b1b32ac4 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc7.tar.gz/sha512 deleted file mode 100644 index a94f2263e799a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -47ddcc0e038f9960448b5a2c8f666f205fa1349ab342f74ed033585a879e2c8f5654957e590552e8365b7cef93f0cf770dc8148ea8a3137b2719e026b83d2164 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc8.tar.gz/md5 deleted file mode 100644 index 14994638dc551..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -bce32245281c56a0bd57f64296ffae53 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc8.tar.gz/sha512 deleted file mode 100644 index bd5911c78ec02..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-gnu-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -b80c77a52f0f6894b3dfead6f2a74cc00fd00703aed0a88587abe90d865d886b318a02d2eac8d248a6b45e07c99a02b218e1ab90ddc4a51b00fd1e3c42b531d7 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc4.tar.gz/md5 deleted file mode 100644 index 467a39fb7fc2a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -8d5e5d8b3ef91bfdbcdb9b4059969083 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc4.tar.gz/sha512 deleted file mode 100644 index eed9679461050..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -f84ca6f2afe1f1cb7dbf51bb8170b1c73a556e7bd75e7c2e9aad9227b1696ee1e4030ef4b0c6c114f297320712e084413d1ef317b6cbfd8fb6a7f49dcba9b95b diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc7.tar.gz/md5 deleted file mode 100644 index 5a27f3dfa5da0..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -3b9e1522ce765e9ebcf9589faa04124a diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc7.tar.gz/sha512 deleted file mode 100644 index 0f7f675ef3ce8..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -3ad4663e95d8692b8ce1b55906b30ebbd79e5d5288bce9c4bc7cb26730516ebf022436f47cb22fea7aef26729bb69672b5c0487f53e871389de0afda3593fc7e diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc8.tar.gz/md5 deleted file mode 100644 index bfeb0cc84139c..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -1c694be0eadd8c59ac871dff2037501d diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc8.tar.gz/sha512 deleted file mode 100644 index e07e2da8d670a..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-linux-musl-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -941527a66b969187a2bc021c3f97d027e7b7c789c5fd13b360de19793dc0057ebc9829482c2f84ce6dcefad4061a968cc154e47c731844aa361fe4734f23f5d3 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 deleted file mode 100644 index 65c030e723b75..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -501b3d55c1d9f176c8f14999321741b0 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 deleted file mode 100644 index 9bfbf141ebfbf..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -8512f7b1af187dea4fccb095d4972845260900659d17f6069163646773b467bc87ed8836d740ed3c919f76cad297a16f5d9150074b2f3ecfad09bd14c19c5dc9 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 deleted file mode 100644 index 4ed8897ef7f4d..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -df2edd514454ca81ffb586fd23f00d3d diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 deleted file mode 100644 index a1cd9b13a1c1e..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -9c429147dab694d40fdaa1adac3d3244bda24e9961654bd8d9312d0dd2166445d0ea4ff1cf22a7b0342baeb7d94c96e62379fa44395822775d249814399cb0b8 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 deleted file mode 100644 index 3425c34a92c2b..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -1dbf5264a8a99721cbd86d827acc7c86 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 deleted file mode 100644 index d37d9133710f1..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -afeb29e593e126ff189e980d8368dd66dd3155ee06342e167e978a057469022f7a56fc20f5c10c9e3fb709d0a4b5ca55ac395b6f96894fdad385bf08f6baf824 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc4.tar.gz/md5 deleted file mode 100644 index f0fd1a832097f..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc4.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -72a603da39eb9bff9e8f990453fbef19 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc4.tar.gz/sha512 deleted file mode 100644 index a907c38feaffc..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc4.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -f6eb5989ff229d64f9b7c5776640a8fb6a9f43f30058cfbfc87335d66aafaca3aea9546aff63da74f4135fbdb5bd6166656efe6cc69f2555363cf41b9cef69e7 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc7.tar.gz/md5 deleted file mode 100644 index 949cbc2bee61f..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc7.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -d00a792dda1fadac591522eae52cca11 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc7.tar.gz/sha512 deleted file mode 100644 index 6c1b1b6c04409..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc7.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -5708be544b8333af2cf0338138dfa54c1924b903d1622002d9834c3700c4d8f5e776d1d43a5a65fb39e052be619a8d50c8e4f9f68576f8cbcae64bd736bae3f5 diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc8.tar.gz/md5 deleted file mode 100644 index d1f8f192c73fd..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc8.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -cd99cbb0bb5684bc8019c76cdecc3ebc diff --git a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc8.tar.gz/sha512 deleted file mode 100644 index f9736e18bb485..0000000000000 --- a/deps/checksums/OpenBLAS.v0.3.5.x86_64-w64-mingw32-gcc8.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -30737ff40a21e4a94128d5b547c1034aa2bf2629ad9b2880c6ee9598b9c69820f3ddc352c366648f229cc5e98acc696519ca39b20947b469c08c7f16fd6d1db9 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.aarch64-linux-musl-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.aarch64-linux-musl-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-gnueabihf-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-gnueabihf-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.arm-linux-musleabihf-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.arm-linux-musleabihf-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-linux-musl-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-linux-musl-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.i686-w64-mingw32-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.i686-w64-mingw32-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-apple-darwin14-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-apple-darwin14-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-linux-musl-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-linux-musl-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc4.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc4.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc4.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc4.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc7.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc7.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc7.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc7.tar.gz/sha512 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc8.tar.gz/md5 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc8.tar.gz/md5 diff --git a/deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/OpenLibm.v0.6.0.x86_64-w64-mingw32-gcc8.tar.gz/sha512 rename to deps/checksums/OpenLibm.v0.6.0-0.x86_64-w64-mingw32-gcc8.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.aarch64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.aarch64-linux-gnu.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.aarch64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.aarch64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.aarch64-linux-gnu.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.aarch64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.aarch64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.aarch64-linux-musl.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.aarch64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.aarch64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.aarch64-linux-musl.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.aarch64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.arm-linux-gnueabihf.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.arm-linux-gnueabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.arm-linux-gnueabihf.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.arm-linux-gnueabihf.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.arm-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.arm-linux-gnueabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.arm-linux-gnueabihf.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.arm-linux-gnueabihf.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.arm-linux-musleabihf.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.arm-linux-musleabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.arm-linux-musleabihf.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.arm-linux-musleabihf.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.arm-linux-musleabihf.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.arm-linux-musleabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.arm-linux-musleabihf.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.arm-linux-musleabihf.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.i686-linux-gnu.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.i686-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.i686-linux-gnu.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.i686-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.i686-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.i686-linux-gnu.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.i686-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.i686-linux-musl.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.i686-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.i686-linux-musl.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.i686-linux-musl.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.i686-linux-musl.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.i686-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.i686-linux-musl.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.i686-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.i686-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.i686-w64-mingw32.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.i686-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.i686-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.i686-w64-mingw32.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.i686-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.powerpc64le-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.powerpc64le-linux-gnu.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.powerpc64le-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.powerpc64le-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.powerpc64le-linux-gnu.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.powerpc64le-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.x86_64-apple-darwin14.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.x86_64-apple-darwin14.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.x86_64-apple-darwin14.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.x86_64-apple-darwin14.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.x86_64-apple-darwin14.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.x86_64-apple-darwin14.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.x86_64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.x86_64-linux-gnu.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.x86_64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.x86_64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.x86_64-linux-gnu.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.x86_64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.x86_64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.x86_64-linux-musl.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.x86_64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.x86_64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.x86_64-linux-musl.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.x86_64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.x86_64-unknown-freebsd11.1.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.x86_64-unknown-freebsd11.1.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.x86_64-unknown-freebsd11.1.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.x86_64-unknown-freebsd11.1.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.x86_64-unknown-freebsd11.1.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.x86_64-unknown-freebsd11.1.tar.gz/sha512 diff --git a/deps/checksums/PCRE2.v10.31.0.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/PCRE2.v10.31.0-0.x86_64-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.x86_64-w64-mingw32.tar.gz/md5 rename to deps/checksums/PCRE2.v10.31.0-0.x86_64-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/PCRE2.v10.31.0.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/PCRE2.v10.31.0-0.x86_64-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/PCRE2.v10.31.0.x86_64-w64-mingw32.tar.gz/sha512 rename to deps/checksums/PCRE2.v10.31.0-0.x86_64-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.aarch64-linux-musl-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.aarch64-linux-musl-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-gnueabihf-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-gnueabihf-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.arm-linux-musleabihf-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.arm-linux-musleabihf-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-linux-musl-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-linux-musl-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.i686-w64-mingw32-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.i686-w64-mingw32-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.powerpc64le-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-apple-darwin14-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-apple-darwin14-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-gnu-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-gnu-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-linux-musl-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-linux-musl-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-unknown-freebsd11.1-gcc8.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc4.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc4.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc4.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc4.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc4.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc4.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc4.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc4.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc7.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc7.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc7.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc7.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc7.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc7.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc7.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc7.tar.gz/sha512 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc8.tar.gz/md5 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc8.tar.gz/md5 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc8.tar.gz/md5 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc8.tar.gz/md5 diff --git a/deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc8.tar.gz/sha512 b/deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc8.tar.gz/sha512 similarity index 100% rename from deps/checksums/SuiteSparse.v5.4.0.x86_64-w64-mingw32-gcc8.tar.gz/sha512 rename to deps/checksums/SuiteSparse.v5.4.0-2.x86_64-w64-mingw32-gcc8.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.aarch64-linux-gnu.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.aarch64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.aarch64-linux-gnu.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.aarch64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.aarch64-linux-gnu.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.aarch64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.aarch64-linux-gnu.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.aarch64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.aarch64-linux-musl.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.aarch64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.aarch64-linux-musl.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.aarch64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.aarch64-linux-musl.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.aarch64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.aarch64-linux-musl.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.aarch64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.arm-linux-gnueabihf.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.arm-linux-gnueabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.arm-linux-gnueabihf.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.arm-linux-gnueabihf.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.arm-linux-gnueabihf.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.arm-linux-gnueabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.arm-linux-gnueabihf.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.arm-linux-gnueabihf.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.arm-linux-musleabihf.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.arm-linux-musleabihf.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.arm-linux-musleabihf.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.arm-linux-musleabihf.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.arm-linux-musleabihf.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.arm-linux-musleabihf.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.arm-linux-musleabihf.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.arm-linux-musleabihf.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.i686-linux-gnu.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.i686-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.i686-linux-gnu.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.i686-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.i686-linux-gnu.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.i686-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.i686-linux-gnu.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.i686-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.i686-linux-musl.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.i686-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.i686-linux-musl.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.i686-linux-musl.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.i686-linux-musl.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.i686-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.i686-linux-musl.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.i686-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.i686-w64-mingw32.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.i686-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.i686-w64-mingw32.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.i686-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.i686-w64-mingw32.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.i686-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.i686-w64-mingw32.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.i686-w64-mingw32.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.powerpc64le-linux-gnu.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.powerpc64le-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.powerpc64le-linux-gnu.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.powerpc64le-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.powerpc64le-linux-gnu.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.powerpc64le-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.powerpc64le-linux-gnu.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.powerpc64le-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.x86_64-apple-darwin14.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.x86_64-apple-darwin14.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.x86_64-apple-darwin14.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.x86_64-apple-darwin14.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.x86_64-apple-darwin14.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.x86_64-apple-darwin14.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.x86_64-apple-darwin14.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.x86_64-apple-darwin14.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.x86_64-linux-gnu.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.x86_64-linux-gnu.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.x86_64-linux-gnu.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.x86_64-linux-gnu.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.x86_64-linux-gnu.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.x86_64-linux-gnu.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.x86_64-linux-gnu.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.x86_64-linux-gnu.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.x86_64-linux-musl.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.x86_64-linux-musl.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.x86_64-linux-musl.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.x86_64-linux-musl.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.x86_64-linux-musl.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.x86_64-linux-musl.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.x86_64-linux-musl.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.x86_64-linux-musl.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.x86_64-unknown-freebsd11.1.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.x86_64-unknown-freebsd11.1.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.x86_64-unknown-freebsd11.1.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.x86_64-unknown-freebsd11.1.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.x86_64-unknown-freebsd11.1.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.x86_64-unknown-freebsd11.1.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.x86_64-unknown-freebsd11.1.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.x86_64-unknown-freebsd11.1.tar.gz/sha512 diff --git a/deps/checksums/dSFMT.v2.2.3.x86_64-w64-mingw32.tar.gz/md5 b/deps/checksums/dSFMT.v2.2.3-0.x86_64-w64-mingw32.tar.gz/md5 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.x86_64-w64-mingw32.tar.gz/md5 rename to deps/checksums/dSFMT.v2.2.3-0.x86_64-w64-mingw32.tar.gz/md5 diff --git a/deps/checksums/dSFMT.v2.2.3.x86_64-w64-mingw32.tar.gz/sha512 b/deps/checksums/dSFMT.v2.2.3-0.x86_64-w64-mingw32.tar.gz/sha512 similarity index 100% rename from deps/checksums/dSFMT.v2.2.3.x86_64-w64-mingw32.tar.gz/sha512 rename to deps/checksums/dSFMT.v2.2.3-0.x86_64-w64-mingw32.tar.gz/sha512 diff --git a/deps/tools/bb-install.mk b/deps/tools/bb-install.mk index 15626d3f76ea5..198cfe1fc84cd 100644 --- a/deps/tools/bb-install.mk +++ b/deps/tools/bb-install.mk @@ -16,7 +16,7 @@ TRIPLET_VAR := $$(TRIPLET_VAR)_CXXABI endif $(2)_BB_TRIPLET := $$($$(TRIPLET_VAR)) $(2)_BB_URL := $$($(2)_BB_URL_BASE)/$$($(2)_BB_NAME).$$($(2)_BB_TRIPLET).tar.gz -$(2)_BB_BASENAME := $$(shell basename $$($(2)_BB_URL)) +$(2)_BB_BASENAME := $$($(2)_BB_NAME)-$$($(2)_BB_REL).$$($(2)_BB_TRIPLET).tar.gz $$(BUILDDIR)/$$($(2)_BB_NAME): mkdir -p $$@ From a8c8377cc43f024b0c02200f1cd7e0c1ab83caca Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Wed, 24 Apr 2019 14:29:07 -0400 Subject: [PATCH 02/34] types: lazy initialize the field-types when first needed For concrete datatypes, we still always initialize the fieldtypes immediately (so that we can immediately also compute the layout and other related properties). Note that this implies that constructing the fieldtype is no longer part of subtyping, (since construction no longer verifies these conditions), and so impossible constraints now lead to a computed value of `Union{}` being given for the type of that field, instead of throwing an error when trying to allocate the type. It might be possible to instead store this error, and rethrow it when someone tries to construct a (partially initialized) copy of the type and/or when the user (but not inference or introspection tools) tries to examine the fieldtype of the object. But I think this extra complexity (and additional failure cases to consider) isn't worthwhile to add. --- base/compiler/tfuncs.jl | 29 +++++++------- base/reflection.jl | 13 ++++-- base/show.jl | 2 +- base/summarysize.jl | 4 +- src/array.c | 7 ++-- src/builtins.c | 7 ++-- src/cgutils.cpp | 14 ++++--- src/datatype.c | 10 ++--- src/dump.c | 2 +- src/gf.c | 12 +++--- src/interpreter.c | 15 ++++--- src/jlapi.c | 6 +++ src/jltypes.c | 88 ++++++++++++++++++++++++++++------------- src/julia.h | 8 +++- src/subtype.c | 2 +- src/typemap.c | 36 ++++++++--------- test/core.jl | 36 +++++++++++------ test/precompile.jl | 15 +++---- 18 files changed, 190 insertions(+), 116 deletions(-) diff --git a/base/compiler/tfuncs.jl b/base/compiler/tfuncs.jl index 00dce1b6a3ddd..1c56916cbaec6 100644 --- a/base/compiler/tfuncs.jl +++ b/base/compiler/tfuncs.jl @@ -338,7 +338,7 @@ function nfields_tfunc(@nospecialize(x)) x = widenconst(x) if isa(x, DataType) && !x.abstract && !(x.name === Tuple.name && isvatuple(x)) if !(x.name === _NAMEDTUPLE_NAME && !isconcretetype(x)) - return Const(length(x.types)) + return Const(isdefined(x, :types) ? length(x.types) : length(x.name.names)) end end return Int @@ -588,7 +588,7 @@ function fieldcount_noerror(@nospecialize t) if abstr return nothing end - return length(t.types) + return isdefined(t, :types) ? length(t.types) : length(t.name.names) end @@ -744,7 +744,8 @@ function getfield_tfunc(@nospecialize(s00), @nospecialize(name)) # TODO: better approximate inference return Any end - if isempty(s.types) + ftypes = datatype_fieldtypes(s) + if isempty(ftypes) return Bottom end if isa(name, Conditional) @@ -754,27 +755,27 @@ function getfield_tfunc(@nospecialize(s00), @nospecialize(name)) if !(Int <: name || Symbol <: name) return Bottom end - if length(s.types) == 1 - return rewrap_unionall(unwrapva(s.types[1]), s00) + if length(ftypes) == 1 + return rewrap_unionall(unwrapva(ftypes[1]), s00) end # union together types of all fields t = Bottom - for _ft in s.types + for _ft in ftypes t = tmerge(t, rewrap_unionall(unwrapva(_ft), s00)) t === Any && break end return t end fld = name.val - if isa(fld,Symbol) + if isa(fld, Symbol) fld = fieldindex(s, fld, false) end - if !isa(fld,Int) + if !isa(fld, Int) return Bottom end - nf = length(s.types) - if s <: Tuple && fld >= nf && isvarargtype(s.types[nf]) - return rewrap_unionall(unwrapva(s.types[nf]), s00) + nf = length(ftypes) + if s <: Tuple && fld >= nf && isvarargtype(ftypes[nf]) + return rewrap_unionall(unwrapva(ftypes[nf]), s00) end if fld < 1 || fld > nf return Bottom @@ -790,7 +791,7 @@ function getfield_tfunc(@nospecialize(s00), @nospecialize(name)) t = const_datatype_getfield_tfunc(sp, fld) t !== nothing && return t end - R = s.types[fld] + R = ftypes[fld] if isempty(s.parameters) return R end @@ -843,7 +844,7 @@ function _fieldtype_nothrow(@nospecialize(s), exact::Bool, name::Const) fld = fieldindex(u, fld, false) end isa(fld, Int) || return false - ftypes = u.types + ftypes = datatype_fieldtypes(u) nf = length(ftypes) (fld >= 1 && fld <= nf) || return false if u.name === Tuple.name && fld >= nf && isvarargtype(ftypes[nf]) @@ -893,7 +894,7 @@ function _fieldtype_tfunc(@nospecialize(s), exact::Bool, @nospecialize(name)) # TODO: better approximate inference return Type end - ftypes = u.types + ftypes = datatype_fieldtypes(u) if isempty(ftypes) return Bottom end diff --git a/base/reflection.jl b/base/reflection.jl index abf5268922933..acc24dba51dbc 100644 --- a/base/reflection.jl +++ b/base/reflection.jl @@ -313,6 +313,8 @@ objectid(@nospecialize(x)) = ccall(:jl_object_id, UInt, (Any,), x) # concrete datatype predicates +datatype_fieldtypes(x::DataType) = ccall(:jl_get_fieldtypes, Any, (Any,), x) + struct DataTypeLayout nfields::UInt32 alignment::UInt32 @@ -407,7 +409,8 @@ function isstructtype(@nospecialize(t::Type)) t = unwrap_unionall(t) # TODO: what to do for `Union`? isa(t, DataType) || return false - return length(t.types) != 0 || (t.size == 0 && !t.abstract) + hasfield = !isdefined(t, :types) || !isempty(t.types) + return hasfield || (t.size == 0 && !t.abstract) end """ @@ -421,7 +424,8 @@ function isprimitivetype(@nospecialize(t::Type)) t = unwrap_unionall(t) # TODO: what to do for `Union`? isa(t, DataType) || return false - return length(t.types) == 0 && t.size != 0 && !t.abstract + hasfield = !isdefined(t, :types) || !isempty(t.types) + return !hasfield && t.size != 0 && !t.abstract end """ @@ -674,7 +678,10 @@ function fieldcount(@nospecialize t) if abstr throw(ArgumentError("type does not have a definite number of fields")) end - return length(t.types) + if isdefined(t, :types) + return length(t.types) + end + return length(t.name.names) end """ diff --git a/base/show.jl b/base/show.jl index 29320479f7534..69ac6b2bb8d76 100644 --- a/base/show.jl +++ b/base/show.jl @@ -1729,7 +1729,7 @@ function dump(io::IOContext, x::DataType, n::Int, indent) end end fields = fieldnames(x) - fieldtypes = x.types + fieldtypes = datatype_fieldtypes(x) for idx in 1:length(fields) println(io) print(io, indent, " ", fields[idx], "::") diff --git a/base/summarysize.jl b/base/summarysize.jl index c6cac492b88c4..3ae3ee135d531 100644 --- a/base/summarysize.jl +++ b/base/summarysize.jl @@ -89,7 +89,9 @@ function (ss::SummarySize)(obj::DataType) size::Int = 7 * Core.sizeof(Int) + 6 * Core.sizeof(Int32) size += 4 * nfields(obj) + ifelse(Sys.WORD_SIZE == 64, 4, 0) size += ss(obj.parameters)::Int - size += ss(obj.types)::Int + if isdefined(obj, :types) + size += ss(obj.types)::Int + end return size end diff --git a/src/array.c b/src/array.c index 2744eafeab958..1afceb7054a56 100644 --- a/src/array.c +++ b/src/array.c @@ -171,9 +171,10 @@ static inline int is_ntuple_long(jl_value_t *v) { if (!jl_is_tuple(v)) return 0; - size_t nfields = jl_nfields(v); - for (size_t i = 0; i < nfields; i++) { - if (jl_field_type(jl_typeof(v), i) != (jl_value_t*)jl_long_type) { + jl_value_t *tt = jl_typeof(v); + size_t i, nfields = jl_nparams(tt); + for (i = 0; i < nfields; i++) { + if (jl_tparam(tt, i) != (jl_value_t*)jl_long_type) { return 0; } } diff --git a/src/builtins.c b/src/builtins.c index ba8eee130288e..a14167567ee3d 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -752,7 +752,8 @@ static jl_value_t *get_fieldtype(jl_value_t *t, jl_value_t *f, int dothrow) return (jl_value_t*)jl_any_type; return get_fieldtype(tt, f, dothrow); } - int nf = jl_field_count(st); + jl_svec_t *types = jl_get_fieldtypes(st); + int nf = jl_svec_len(types); if (nf > 0 && field_index >= nf-1 && st->name == jl_tuple_typename) { jl_value_t *ft = jl_field_type(st, nf-1); if (jl_is_vararg_type(ft)) @@ -790,8 +791,8 @@ JL_CALLABLE(jl_f_fieldtype) JL_CALLABLE(jl_f_nfields) { JL_NARGS(nfields, 1, 1); - jl_value_t *x = args[0]; - return jl_box_long(jl_field_count(jl_typeof(x))); + jl_datatype_t *xt = (jl_datatype_t*)jl_typeof(args[0]); + return jl_box_long(jl_datatype_nfields(xt)); } JL_CALLABLE(jl_f_isdefined) diff --git a/src/cgutils.cpp b/src/cgutils.cpp index ec1cb73da2ff8..9a2f452a30197 100644 --- a/src/cgutils.cpp +++ b/src/cgutils.cpp @@ -569,9 +569,10 @@ static bool julia_struct_has_layout(jl_datatype_t *dt, jl_unionall_t *ua) if (dt->layout || dt->struct_decl || jl_justbits((jl_value_t*)dt)) return true; if (ua) { - size_t i, ntypes = jl_svec_len(dt->types); + jl_svec_t *types = jl_get_fieldtypes(dt); + size_t i, ntypes = jl_svec_len(types); for (i = 0; i < ntypes; i++) { - jl_value_t *ty = jl_svecref(dt->types, i); + jl_value_t *ty = jl_svecref(types, i); if (jl_has_typevar_from_unionall(ty, ua)) return false; } @@ -603,7 +604,8 @@ static Type *julia_struct_to_llvm(jl_value_t *jt, jl_unionall_t *ua, bool *isbox if (jst->struct_decl != NULL) return (Type*)jst->struct_decl; if (jl_is_structtype(jt) && !(jst->layout && jl_is_layout_opaque(jst->layout))) { - size_t i, ntypes = jl_svec_len(jst->types); + jl_svec_t *ftypes = jl_get_fieldtypes(jst); + size_t i, ntypes = jl_svec_len(ftypes); if (ntypes == 0 || (jst->layout && jl_datatype_nbits(jst) == 0)) return T_void; if (!julia_struct_has_layout(jst, ua)) @@ -615,7 +617,7 @@ static Type *julia_struct_to_llvm(jl_value_t *jt, jl_unionall_t *ua, bool *isbox Type *lasttype = NULL; bool allghost = true; for (i = 0; i < ntypes; i++) { - jl_value_t *ty = jl_svecref(jst->types, i); + jl_value_t *ty = jl_svecref(ftypes, i); if (jlasttype != NULL && ty != jlasttype) isvector = false; jlasttype = ty; @@ -1496,7 +1498,7 @@ static bool emit_getfield_unknownidx(jl_codectx_t &ctx, } else if (is_tupletype_homogeneous(stt->types)) { assert(nfields > 0); // nf == 0 trapped by all_pointers case - jl_value_t *jt = jl_field_type(stt, 0); + jl_value_t *jt = jl_svecref(stt->types, 0); idx = emit_bounds_check(ctx, strct, (jl_value_t*)stt, idx, ConstantInt::get(T_size, nfields), inbounds); Value *ptr = maybe_decay_tracked(data_pointer(ctx, strct)); if (!stt->mutabl && !(maybe_null && jt == (jl_value_t*)jl_bool_type)) { @@ -1526,7 +1528,7 @@ static bool emit_getfield_unknownidx(jl_codectx_t &ctx, return true; } assert(!jl_field_isptr(stt, 0)); - jl_value_t *jt = jl_field_type(stt, 0); + jl_value_t *jt = jl_svecref(stt->types, 0); Value *idx0 = emit_bounds_check(ctx, strct, (jl_value_t*)stt, idx, ConstantInt::get(T_size, nfields), inbounds); if (strct.isghost) { *ret = ghostValue(jt); diff --git a/src/datatype.c b/src/datatype.c index dceba56f8ea92..dd2f60769a6de 100644 --- a/src/datatype.c +++ b/src/datatype.c @@ -202,7 +202,7 @@ unsigned jl_special_vector_alignment(size_t nfields, jl_value_t *t) if (mask) return 0; // nfields has more than two 1s assert(jl_datatype_nfields(t)==1); - jl_value_t *ty = jl_field_type(t, 0); + jl_value_t *ty = jl_field_type((jl_datatype_t*)t, 0); if (!jl_is_primitivetype(ty)) // LLVM requires that a vector element be a primitive type. // LLVM allows pointer types as vector elements, but until a @@ -301,9 +301,9 @@ void jl_compute_field_offsets(jl_datatype_t *st) // based on whether its definition is self-referential if (w->types != NULL) { st->isbitstype = st->isconcretetype && !st->mutabl; - size_t i, nf = jl_field_count(st); + size_t i, nf = jl_svec_len(st->types); for (i = 0; i < nf; i++) { - jl_value_t *fld = jl_field_type(st, i); + jl_value_t *fld = jl_svecref(st->types, i); if (st->isbitstype) st->isbitstype = jl_is_datatype(fld) && ((jl_datatype_t*)fld)->isbitstype; if (!st->zeroinit) @@ -311,9 +311,9 @@ void jl_compute_field_offsets(jl_datatype_t *st) } if (st->isbitstype) { st->isinlinealloc = 1; - size_t i, nf = jl_field_count(w); + size_t i, nf = jl_svec_len(w->types); for (i = 0; i < nf; i++) { - jl_value_t *fld = jl_field_type(w, i); + jl_value_t *fld = jl_svecref(w->types, i); if (references_name(fld, w->name)) { st->isinlinealloc = 0; st->isbitstype = 0; diff --git a/src/dump.c b/src/dump.c index 27c8524a2c0b4..3702f29c16613 100644 --- a/src/dump.c +++ b/src/dump.c @@ -1458,7 +1458,7 @@ static jl_value_t *jl_deserialize_datatype(jl_serializer_state *s, int pos, jl_v dt->super = (jl_datatype_t*)jl_deserialize_value(s, (jl_value_t**)&dt->super); jl_gc_wb(dt, dt->super); dt->types = (jl_svec_t*)jl_deserialize_value(s, (jl_value_t**)&dt->types); - jl_gc_wb(dt, dt->types); + if (dt->types) jl_gc_wb(dt, dt->types); return (jl_value_t*)dt; } diff --git a/src/gf.c b/src/gf.c index a50f9a29d9643..1620b5c7a455e 100644 --- a/src/gf.c +++ b/src/gf.c @@ -421,13 +421,13 @@ static int very_general_type(jl_value_t *t) jl_value_t *jl_nth_slot_type(jl_value_t *sig, size_t i) { sig = jl_unwrap_unionall(sig); - size_t len = jl_field_count(sig); + size_t len = jl_nparams(sig); if (len == 0) return NULL; if (i < len-1) return jl_tparam(sig, i); - if (jl_is_vararg_type(jl_tparam(sig,len-1))) - return jl_unwrap_vararg(jl_tparam(sig,len-1)); + if (jl_is_vararg_type(jl_tparam(sig, len-1))) + return jl_unwrap_vararg(jl_tparam(sig, len-1)); if (i == len-1) return jl_tparam(sig, i); return NULL; @@ -473,7 +473,7 @@ static void jl_compilation_sig( jl_value_t *decl = definition->sig; assert(jl_is_tuple_type(tt)); size_t i, np = jl_nparams(tt); - size_t nargs = definition->nargs; // == jl_field_count(jl_unwrap_unionall(decl)); + size_t nargs = definition->nargs; // == jl_nparams(jl_unwrap_unionall(decl)); for (i = 0; i < np; i++) { jl_value_t *elt = jl_tparam(tt, i); jl_value_t *decl_i = jl_nth_slot_type(decl, i); @@ -678,7 +678,7 @@ JL_DLLEXPORT int jl_isa_compileable_sig( return 0; size_t i, np = jl_nparams(type); - size_t nargs = definition->nargs; // == jl_field_count(jl_unwrap_unionall(decl)); + size_t nargs = definition->nargs; // == jl_nparams(jl_unwrap_unionall(decl)); if (np == 0) return nargs == 0; @@ -2565,7 +2565,7 @@ int jl_has_concrete_subtype(jl_value_t *typ) return 1; if (((jl_datatype_t*)typ)->name == jl_namedtuple_typename) return jl_has_concrete_subtype(jl_tparam1(typ)); - jl_svec_t *fields = ((jl_datatype_t*)typ)->types; + jl_svec_t *fields = jl_get_fieldtypes((jl_datatype_t*)typ); size_t i, l = jl_svec_len(fields); if (l != ((jl_datatype_t*)typ)->ninitialized) if (((jl_datatype_t*)typ)->name != jl_tuple_typename) diff --git a/src/interpreter.c b/src/interpreter.c index f4b93fe3ffa39..478527a98ee3d 100644 --- a/src/interpreter.c +++ b/src/interpreter.c @@ -47,11 +47,11 @@ SECT_INTERP static int equiv_type(jl_datatype_t *dta, jl_datatype_t *dtb) dta->ninitialized == dtb->ninitialized && jl_egal((jl_value_t*)jl_field_names(dta), (jl_value_t*)jl_field_names(dtb)) && jl_nparams(dta) == jl_nparams(dtb) && - jl_field_count(dta) == jl_field_count(dtb))) + jl_svec_len(dta->types) == jl_svec_len(dtb->types))) return 0; jl_value_t *a=NULL, *b=NULL; int ok = 1; - size_t i, nf = jl_field_count(dta); + size_t i, nf = jl_svec_len(dta->types); JL_GC_PUSH2(&a, &b); a = jl_rewrap_unionall((jl_value_t*)dta->super, dta->name->wrapper); b = jl_rewrap_unionall((jl_value_t*)dtb->super, dtb->name->wrapper); @@ -63,7 +63,8 @@ SECT_INTERP static int equiv_type(jl_datatype_t *dta, jl_datatype_t *dtb) JL_CATCH { ok = 0; } - if (!ok) goto no; + if (!ok) + goto no; assert(jl_is_datatype(a)); a = dta->name->wrapper; b = dtb->name->wrapper; @@ -77,9 +78,11 @@ SECT_INTERP static int equiv_type(jl_datatype_t *dta, jl_datatype_t *dtb) b = ub->body; } assert(jl_is_datatype(a) && jl_is_datatype(b)); - for (i=0; i < nf; i++) { - jl_value_t *ta = jl_svecref(((jl_datatype_t*)a)->types, i); - jl_value_t *tb = jl_svecref(((jl_datatype_t*)b)->types, i); + a = (jl_value_t*)jl_get_fieldtypes((jl_datatype_t*)a); + b = (jl_value_t*)jl_get_fieldtypes((jl_datatype_t*)b); + for (i = 0; i < nf; i++) { + jl_value_t *ta = jl_svecref(a, i); + jl_value_t *tb = jl_svecref(b, i); if (jl_has_free_typevars(ta)) { if (!jl_has_free_typevars(tb) || !jl_egal(ta, tb)) goto no; diff --git a/src/jlapi.c b/src/jlapi.c index 4bdb86e319919..c28fb9cf5aa27 100644 --- a/src/jlapi.c +++ b/src/jlapi.c @@ -394,6 +394,12 @@ JL_DLLEXPORT jl_value_t *(jl_typeof)(jl_value_t *v) return jl_typeof(v); } +JL_DLLEXPORT jl_value_t *(jl_get_fieldtypes)(jl_value_t *v) +{ + return (jl_value_t*)jl_get_fieldtypes((jl_datatype_t*)v); +} + + #ifndef __clang_analyzer__ JL_DLLEXPORT int8_t (jl_gc_unsafe_enter)(void) { diff --git a/src/jltypes.c b/src/jltypes.c index 0d59bdc3e659e..2e6e193480626 100644 --- a/src/jltypes.c +++ b/src/jltypes.c @@ -921,7 +921,7 @@ JL_EXTENSION struct _jl_typestack_t { }; static jl_value_t *inst_type_w_(jl_value_t *t, jl_typeenv_t *env, jl_typestack_t *stack, int check); -static jl_svec_t *inst_all(jl_svec_t *p, jl_typeenv_t *env, jl_typestack_t *stack, int check); +static jl_svec_t *inst_ftypes(jl_svec_t *p, jl_typeenv_t *env, jl_typestack_t *stack); JL_DLLEXPORT jl_value_t *jl_instantiate_unionall(jl_unionall_t *u, jl_value_t *p) { @@ -1251,6 +1251,9 @@ static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value ndt->super = (jl_datatype_t*)inst_type_w_((jl_value_t*)dt->super, env, stack, 1); jl_gc_wb(ndt, ndt->super); } + if (cacheable) { + jl_cache_type_(ndt); + } jl_svec_t *ftypes = dt->types; if (ftypes == NULL || dt->super == NULL) { // in the process of creating this type definition: @@ -1258,12 +1261,15 @@ static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value assert(inside_typedef && !istuple && !isnamedtuple); arraylist_push(&partial_inst, ndt); } - else { - assert(ftypes != jl_emptysvec || jl_field_names(ndt) == jl_emptysvec || isnamedtuple); + else if (!isnamedtuple && !istuple) { + assert(ftypes != jl_emptysvec || jl_field_names(ndt) == jl_emptysvec); assert(ftypes == jl_emptysvec || !ndt->abstract); - if (!istuple && !isnamedtuple) { + if (ftypes == jl_emptysvec) { + ndt->types = ftypes; + } + else if (cacheable) { // recursively instantiate the types of the fields - ndt->types = inst_all(ftypes, env, stack, 1); + ndt->types = inst_ftypes(ftypes, env, stack); jl_gc_wb(ndt, ndt->types); } } @@ -1284,7 +1290,6 @@ static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value ndt->ninitialized = dt->ninitialized; if (cacheable) { - jl_cache_type_(ndt); JL_UNLOCK(&typecache_lock); // Might GC } @@ -1344,14 +1349,21 @@ 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); } -static jl_svec_t *inst_all(jl_svec_t *p, jl_typeenv_t *env, jl_typestack_t *stack, int check) +static jl_svec_t *inst_ftypes(jl_svec_t *p, jl_typeenv_t *env, jl_typestack_t *stack) { size_t i; size_t lp = jl_svec_len(p); jl_svec_t *np = jl_alloc_svec(lp); JL_GC_PUSH1(&np); - for(i=0; i < lp; i++) { - jl_svecset(np, i, (jl_value_t*)inst_type_w_(jl_svecref(p,i), env, stack, check)); + for (i = 0; i < lp; i++) { + jl_value_t *pi = jl_svecref(p, i); + JL_TRY { + pi = inst_type_w_(pi, env, stack, 1); + } + JL_CATCH { + pi = jl_bottom_type; + } + jl_svecset(np, i, pi); } JL_GC_POP(); return np; @@ -1401,7 +1413,7 @@ static jl_value_t *inst_tuple_w_(jl_value_t *t, jl_typeenv_t *env, jl_typestack_ int i; for (i = 0; i < ntp; i++) { jl_value_t *elt = jl_svecref(tp, i); - jl_value_t *pi = (jl_value_t*)inst_type_w_(elt, env, stack, 0); + jl_value_t *pi = inst_type_w_(elt, env, stack, 0); iparams[i] = pi; if (ip_heap) jl_gc_wb(ip_heap, pi); @@ -1492,7 +1504,7 @@ static jl_value_t *inst_type_w_(jl_value_t *t, jl_typeenv_t *env, jl_typestack_t int cacheable = 1, bound = 0; 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); + iparams[i] = inst_type_w_(elt, env, stack, check); bound |= (iparams[i] != elt); if (cacheable && jl_has_free_typevars(iparams[i])) cacheable = 0; @@ -1505,18 +1517,18 @@ static jl_value_t *inst_type_w_(jl_value_t *t, jl_typeenv_t *env, jl_typestack_t return result; } -jl_value_t *instantiate_with(jl_value_t *t, jl_value_t **env, size_t n, jl_typeenv_t *te, jl_typestack_t *stack) +static jl_value_t *instantiate_with(jl_value_t *t, jl_value_t **env, size_t n, jl_typeenv_t *te) { if (n > 0) { jl_typeenv_t en = { (jl_tvar_t*)env[0], env[1], te }; - return instantiate_with(t, &env[2], n-1, &en, stack); + return instantiate_with(t, &env[2], n-1, &en ); } - return inst_type_w_(t, te, stack, 1); + return inst_type_w_(t, te, NULL, 1); } 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); + return instantiate_with(t, env, n, 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) @@ -1562,6 +1574,30 @@ jl_value_t *jl_wrap_vararg(jl_value_t *t, jl_value_t *n) return vn; } +JL_DLLEXPORT jl_svec_t *jl_compute_fieldtypes(jl_datatype_t *st) +{ + assert(st->name != jl_namedtuple_typename && st->name != jl_tuple_typename); + jl_datatype_t *wt = (jl_datatype_t*)jl_unwrap_unionall(st->name->wrapper); + size_t i, n = jl_svec_len(wt->parameters); + assert(n > 0 && "expected empty case to be handled during construction"); + //if (n == 0) + // return ((st->types = jl_emptysvec)); + jl_typeenv_t *env = (jl_typeenv_t*)alloca(n * sizeof(jl_typeenv_t)); + for (i = 0; i < n; i++) { + env[i].var = (jl_tvar_t*)jl_svecref(wt->parameters, i); + env[i].val = jl_svecref(st->parameters, i); + env[i].prev = i == 0 ? NULL : &env[i - 1]; + } + jl_typestack_t top; + top.tt = st; + top.prev = NULL; + st->types = inst_ftypes(wt->types, &env[n - 1], &top); + jl_gc_wb(st, st->types); + JL_GC_POP(); + return st->types; +} + + void jl_reinstantiate_inner_types(jl_datatype_t *t) // can throw! { inside_typedef = 0; @@ -1575,19 +1611,20 @@ void jl_reinstantiate_inner_types(jl_datatype_t *t) // can throw! return; } - jl_value_t **env = (jl_value_t**)alloca(n * 2 * sizeof(void*)); + jl_typeenv_t *env = (jl_typeenv_t*)alloca(n * sizeof(jl_typeenv_t)); for (i = 0; i < n; i++) { - env[i * 2] = jl_svecref(t->parameters, i); - env[i * 2 + 1] = NULL; + env[i].var = (jl_tvar_t*)jl_svecref(t->parameters, i); + env[i].val = NULL; + env[i].prev = i == 0 ? NULL : &env[i - 1]; } for (j = 0; j < partial_inst.len; j++) { jl_datatype_t *ndt = (jl_datatype_t*)partial_inst.items[j]; assert(jl_unwrap_unionall(ndt->name->wrapper) == (jl_value_t*)t); for (i = 0; i < n; i++) - env[i * 2 + 1] = jl_svecref(ndt->parameters, i); + env[i].val = jl_svecref(ndt->parameters, i); - ndt->super = (jl_datatype_t*)instantiate_with((jl_value_t*)t->super, env, n, NULL, &top); + ndt->super = (jl_datatype_t*)inst_type_w_((jl_value_t*)t->super, env, &top, 1); jl_gc_wb(ndt, ndt->super); } @@ -1595,15 +1632,10 @@ void jl_reinstantiate_inner_types(jl_datatype_t *t) // can throw! for (j = 0; j < partial_inst.len; j++) { jl_datatype_t *ndt = (jl_datatype_t*)partial_inst.items[j]; for (i = 0; i < n; i++) - env[i * 2 + 1] = jl_svecref(ndt->parameters, i); - - int k; + env[i].val = jl_svecref(ndt->parameters, i); assert(ndt->types == NULL); - ndt->types = jl_alloc_svec(jl_svec_len(t->types)); + ndt->types = inst_ftypes(t->types, env, &top); jl_gc_wb(ndt, ndt->types); - 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)); - } if (ndt->uid) { // cacheable jl_compute_field_offsets(ndt); } @@ -1707,7 +1739,7 @@ void jl_init_types(void) JL_GC_DISABLED // NOTE: types should not really be mutable, but the instance and // struct_decl fields are basically caches, which are mutated. jl_datatype_type->mutabl = 1; - jl_datatype_type->ninitialized = 4; + jl_datatype_type->ninitialized = 3; jl_precompute_memoized_dt(jl_datatype_type); jl_typename_type->name = jl_new_typename_in(jl_symbol("TypeName"), core); diff --git a/src/julia.h b/src/julia.h index 0d4f3855c43e0..ba5348b77d2a9 100644 --- a/src/julia.h +++ b/src/julia.h @@ -896,6 +896,8 @@ STATIC_INLINE void jl_array_uint8_set(void *a, size_t i, uint8_t x) JL_NOTSAFEPO #define jl_gf_name(f) (jl_gf_mtable(f)->name) // struct type info +JL_DLLEXPORT jl_svec_t *jl_compute_fieldtypes(jl_datatype_t *st); +#define jl_get_fieldtypes(st) ((st)->types ? (st)->types : jl_compute_fieldtypes((st))) STATIC_INLINE jl_svec_t *jl_field_names(jl_datatype_t *st) JL_NOTSAFEPOINT { jl_svec_t *names = st->names; @@ -907,8 +909,10 @@ STATIC_INLINE jl_sym_t *jl_field_name(jl_datatype_t *st, size_t i) JL_NOTSAFEPOI { return (jl_sym_t*)jl_svecref(jl_field_names(st), i); } -#define jl_field_type(st,i) jl_svecref(((jl_datatype_t*)st)->types, (i)) -#define jl_field_count(st) jl_svec_len(((jl_datatype_t*)st)->types) +STATIC_INLINE jl_value_t *jl_field_type(jl_datatype_t *st, size_t i) +{ + return jl_svecref(jl_get_fieldtypes(st), i); +} #define jl_datatype_size(t) (((jl_datatype_t*)t)->size) #define jl_datatype_align(t) (((jl_datatype_t*)t)->layout->alignment) #define jl_datatype_nbits(t) ((((jl_datatype_t*)t)->size)*8) diff --git a/src/subtype.c b/src/subtype.c index 6cee9d9de2eb7..c257bcae89393 100644 --- a/src/subtype.c +++ b/src/subtype.c @@ -2791,7 +2791,7 @@ static int num_occurs(jl_tvar_t *v, jl_typeenv_t *env); static jl_value_t *nth_tuple_elt(jl_datatype_t *t JL_PROPAGATES_ROOT, size_t i) JL_NOTSAFEPOINT { - size_t len = jl_field_count(t); + size_t len = jl_nparams(t); if (len == 0) return NULL; if (i < len-1) diff --git a/src/typemap.c b/src/typemap.c index ef7aa50120204..593e401932ed0 100644 --- a/src/typemap.c +++ b/src/typemap.c @@ -30,7 +30,7 @@ static int sig_match_by_type_leaf(jl_value_t **types, jl_tupletype_t *sig, size_ { size_t i; for (i = 0; i < n; i++) { - jl_value_t *decl = jl_field_type(sig, i); + jl_value_t *decl = jl_tparam(sig, i); jl_value_t *a = types[i]; if (jl_is_type_type(a)) // decl is not Type, because it wouldn't be leafsig a = jl_typeof(jl_tparam0(a)); @@ -45,7 +45,7 @@ static int sig_match_by_type_simple(jl_value_t **types, size_t n, jl_tupletype_t size_t i; if (va) lensig -= 1; for (i = 0; i < lensig; i++) { - jl_value_t *decl = jl_field_type(sig, i); + jl_value_t *decl = jl_tparam(sig, i); jl_value_t *a = types[i]; jl_value_t *unw = jl_is_unionall(decl) ? ((jl_unionall_t*)decl)->body : decl; if (jl_is_type_type(unw)) { @@ -78,7 +78,7 @@ static int sig_match_by_type_simple(jl_value_t **types, size_t n, jl_tupletype_t } } if (va) { - jl_value_t *decl = jl_unwrap_unionall(jl_field_type(sig, i)); + jl_value_t *decl = jl_unwrap_unionall(jl_tparam(sig, i)); if (jl_vararg_kind(decl) == JL_VARARG_INT) { if (n - i != jl_unbox_long(jl_tparam1(decl))) return 0; @@ -258,7 +258,7 @@ jl_typemap_t *mtcache_hash_lookup(const struct jl_ordereddict_t *a JL_PROPAGATES t = ((jl_typemap_level_t*)ml)->key; } else { - t = jl_field_type(jl_unwrap_unionall(jl_typemap_entry_sig(ml)), offs); + t = jl_tparam(jl_unwrap_unionall(jl_typemap_entry_sig(ml)), offs); if (tparam) t = jl_tparam0(t); } @@ -281,7 +281,7 @@ static void mtcache_rehash(struct jl_ordereddict_t *pa, size_t newlen, jl_value_ t = ((jl_typemap_level_t*)ml)->key; } else { - t = jl_field_type(jl_unwrap_unionall(jl_typemap_entry_sig(ml)), offs); + t = jl_tparam(jl_unwrap_unionall(jl_typemap_entry_sig(ml)), offs); if (tparam) t = jl_tparam0(t); } @@ -359,7 +359,7 @@ static jl_typemap_t **mtcache_hash_bp(struct jl_ordereddict_t *pa JL_PROPAGATES_ t = ((jl_typemap_level_t*)*pml)->key; } else { - t = jl_field_type(jl_unwrap_unionall( + t = jl_tparam(jl_unwrap_unionall( jl_typemap_entry_sig(*pml)), offs); if (tparam) @@ -437,7 +437,7 @@ static int jl_typemap_intersection_array_visitor(struct jl_ordereddict_t *a, jl_ t = ((jl_typemap_level_t*)ml)->key; } else { - t = jl_field_type(jl_unwrap_unionall(jl_typemap_entry_sig(ml)), offs); + t = jl_tparam(jl_unwrap_unionall(jl_typemap_entry_sig(ml)), offs); if (tparam) t = jl_tparam0(t); } @@ -514,7 +514,7 @@ int jl_typemap_intersection_visitor(jl_typemap_t *map, int offs, if (jl_typeof(map) == (jl_value_t *)jl_typemap_level_type) { jl_typemap_level_t *cache = (jl_typemap_level_t*)map; jl_value_t *ty = NULL; - size_t l = jl_field_count(ttypes); + size_t l = jl_nparams(ttypes); if (closure->va && l <= offs + 1) { ty = closure->va; } @@ -590,16 +590,16 @@ static jl_typemap_entry_t *jl_typemap_assoc_by_type_(jl_typemap_entry_t *ml, jl_ { jl_value_t *unw = jl_unwrap_unionall((jl_value_t*)types); int isua = jl_is_unionall(types); - size_t n = jl_field_count(unw); + size_t n = jl_nparams(unw); int typesisva = n == 0 ? 0 : jl_is_vararg_type(jl_tparam(unw, n-1)); for (; ml != (void*)jl_nothing; ml = ml->next) { if (world < ml->min_world || world > (ml->max_world | max_world_mask)) continue; // ignore replaced methods - size_t lensig = jl_field_count(jl_unwrap_unionall((jl_value_t*)ml->sig)); + size_t lensig = jl_nparams(jl_unwrap_unionall((jl_value_t*)ml->sig)); if (lensig == n || (ml->va && lensig <= n+1)) { int resetenv = 0, ismatch = 1; if (ml->simplesig != (void*)jl_nothing && !isua) { - size_t lensimplesig = jl_field_count(ml->simplesig); + size_t lensimplesig = jl_nparams(ml->simplesig); int isva = lensimplesig > 0 && jl_is_vararg_type(jl_tparam(ml->simplesig, lensimplesig - 1)); if (lensig == n || (isva && lensimplesig <= n + 1)) ismatch = sig_match_by_type_simple(jl_svec_data(((jl_datatype_t*)types)->parameters), n, @@ -690,7 +690,7 @@ jl_typemap_entry_t *jl_typemap_assoc_by_type(jl_typemap_t *ml_or_cache, jl_value jl_value_t *ty = NULL; jl_value_t *ttypes = jl_unwrap_unionall((jl_value_t*)types); assert(jl_is_datatype(ttypes)); - size_t l = jl_field_count(ttypes); + size_t l = jl_nparams(ttypes); int isva = 0; // compute the type at offset `offs` into `types`, which may be a Vararg if (l <= offs + 1) { @@ -760,7 +760,7 @@ jl_typemap_entry_t *jl_typemap_entry_assoc_exact(jl_typemap_entry_t *ml, jl_valu while (ml->simplesig == (void*)jl_nothing && ml->guardsigs == jl_emptysvec && ml->isleafsig) { // use a tight loop for as long as possible if (world >= ml->min_world && world <= ml->max_world) { - if (n == jl_field_count(ml->sig) && jl_typeof(args[0]) == jl_tparam(ml->sig, 0)) { + if (n == jl_nparams(ml->sig) && jl_typeof(args[0]) == jl_tparam(ml->sig, 0)) { if (n == 1) return ml; if (n == 2) { @@ -786,10 +786,10 @@ jl_typemap_entry_t *jl_typemap_entry_assoc_exact(jl_typemap_entry_t *ml, jl_valu for (; ml != (void*)jl_nothing; ml = ml->next) { if (world < ml->min_world || world > ml->max_world) continue; // ignore replaced methods - size_t lensig = jl_field_count(ml->sig); + size_t lensig = jl_nparams(ml->sig); if (lensig == n || (ml->va && lensig <= n+1)) { if (ml->simplesig != (void*)jl_nothing) { - size_t lensimplesig = jl_field_count(ml->simplesig); + size_t lensimplesig = jl_nparams(ml->simplesig); int isva = lensimplesig > 0 && jl_is_vararg_type(jl_tparam(ml->simplesig, lensimplesig - 1)); if (lensig == n || (isva && lensimplesig <= n + 1)) { if (!sig_match_simple(args, n, jl_svec_data(ml->simplesig->parameters), isva, lensimplesig)) @@ -959,7 +959,7 @@ static void jl_typemap_level_insert_(jl_typemap_level_t *cache, jl_typemap_entry const struct jl_typemap_info *tparams) { jl_value_t *ttypes = jl_unwrap_unionall((jl_value_t*)newrec->sig); - size_t l = jl_field_count(ttypes); + size_t l = jl_nparams(ttypes); // compute the type at offset `offs` into `sig`, which may be a Vararg jl_value_t *t1 = NULL; int isva = 0; @@ -1047,8 +1047,8 @@ jl_typemap_entry_t *jl_typemap_insert(jl_typemap_t **cache, jl_value_t *parent, JL_GC_PUSH1(&newrec); assert(jl_is_tuple_type(ttype)); size_t i, l; - for (i = 0, l = jl_field_count(ttype); i < l && newrec->issimplesig; i++) { - jl_value_t *decl = jl_field_type(ttype, i); + for (i = 0, l = jl_nparams(ttype); i < l && newrec->issimplesig; i++) { + jl_value_t *decl = jl_tparam(ttype, i); if (jl_is_kind(decl)) newrec->isleafsig = 0; // Type{} may have a higher priority than a kind else if (jl_is_type_type(decl)) diff --git a/test/core.jl b/test/core.jl index 517bda1fe1812..0a126a8189317 100644 --- a/test/core.jl +++ b/test/core.jl @@ -219,13 +219,16 @@ struct D21923{T,N}; v::D21923{T}; end # issue #22624, more circular definitions struct T22624{A,B,C}; v::Vector{T22624{Int64,A}}; end -let elT = T22624.body.body.body.types[1].parameters[1] +let ft = Base.datatype_fieldtypes + elT = T22624.body.body.body.types[1].parameters[1] @test elT == T22624{Int64, T22624.var, C} where C - elT2 = elT.body.types[1].parameters[1] + elT2 = ft(elT.body)[1].parameters[1] @test elT2 == T22624{Int64, Int64, C} where C - @test elT2.body.types[1].parameters[1] === elT2 - @test Base.isconcretetype(elT2.body.types[1]) + @test ft(elT2.body)[1].parameters[1] === elT2 + @test Base.isconcretetype(ft(elT2.body)[1]) end +struct S22624{A,B,C} <: Ref{S22624{Int64,A}}; end +@test @isdefined S22624 # issue #3890 mutable struct A3890{T1} @@ -3459,15 +3462,22 @@ end mutable struct FooNTuple{N} z::Tuple{Integer, Vararg{Int, N}} end -@test_throws ErrorException FooNTuple{-1} -@test_throws ErrorException FooNTuple{typemin(Int)} -@test_throws TypeError FooNTuple{0x01} +for i in (-1, typemin(Int), 0x01) + T = FooNTuple{i} + @test T.parameters[1] == i + @test fieldtypes(T) == (Union{},) +end @test fieldtype(FooNTuple{0}, 1) == Tuple{Integer} mutable struct FooTupleT{T} z::Tuple{Int, T, Int} end -@test_throws TypeError FooTupleT{Vararg{Int, 2}} +let R = Vararg{Int, 2} + @test_throws TypeError Val{R} + @test_throws TypeError Ref{R} + @test_throws TypeError FooTupleT{R} + @test_throws TypeError Union{R} +end @test fieldtype(FooTupleT{Int}, 1) == NTuple{3, Int} @test Tuple{} === NTuple{0, Any} @@ -4619,7 +4629,9 @@ mutable struct B12238{T,S} end @test B12238.body.body.types[1] === A12238{B12238{Int}.body} @test isa(A12238{B12238{Int}}.instance, A12238{B12238{Int}}) -@test !isdefined(B12238.body.body.types[1], :instance) # has free type vars +let ft = Base.datatype_fieldtypes + @test !isdefined(ft(B12238.body.body)[1], :instance) # has free type vars +end # issue #16315 let a = Any[] @@ -4732,8 +4744,10 @@ end mutable struct C16767{T} b::A16767{C16767{:a}} end -@test B16767.body.types[1].types[1].parameters[1].types[1] === A16767{B16767.body} -@test C16767.body.types[1].types[1].parameters[1].types[1] === A16767{C16767{:a}} +let ft = Base.datatype_fieldtypes + @test ft(ft(B16767.body.types[1])[1].parameters[1])[1] === A16767{B16767.body} + @test ft(C16767.body.types[1].types[1].parameters[1])[1] === A16767{C16767{:a}} +end # issue #16340 function f16340(x::T) where T diff --git a/test/precompile.jl b/test/precompile.jl index b75ffed9e6667..836d73e9393ae 100644 --- a/test/precompile.jl +++ b/test/precompile.jl @@ -293,13 +293,14 @@ try some_method, Tuple{typeof(Base.include), String}, Core.svec(), typemax(UInt)) @test Foo.some_linfo::Core.MethodInstance === some_linfo - PV = Foo.Value18343{Some}.body.types[1] - VR = PV.types[1].parameters[1] - @test PV.types[1] === Array{VR,1} - @test pointer_from_objref(PV.types[1]) === - pointer_from_objref(PV.types[1].parameters[1].types[1].types[1]) - @test PV === PV.types[1].parameters[1].types[1] - @test pointer_from_objref(PV) === pointer_from_objref(PV.types[1].parameters[1].types[1]) + ft = Base.datatype_fieldtypes + PV = ft(Foo.Value18343{Some}.body)[1] + VR = ft(PV)[1].parameters[1] + @test ft(PV)[1] === Array{VR,1} + @test pointer_from_objref(ft(PV)[1]) === + pointer_from_objref(ft(ft(ft(PV)[1].parameters[1])[1])[1]) + @test PV === ft(ft(PV)[1].parameters[1])[1] + @test pointer_from_objref(PV) === pointer_from_objref(ft(ft(PV)[1].parameters[1])[1]) end Baz_file = joinpath(dir, "Baz.jl") From 667740697b82b0dc62a1b081f821f1fea643565b Mon Sep 17 00:00:00 2001 From: Mustafa M Date: Thu, 2 May 2019 14:54:00 -0400 Subject: [PATCH 03/34] Remove unused download of 7z-extra --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 0d2899c76f2ed..ce199f1a9da3b 100644 --- a/Makefile +++ b/Makefile @@ -606,7 +606,6 @@ else $(error no win-extras target for ARCH=$(ARCH)) endif cd $(JULIAHOME)/dist-extras && \ - $(JLDOWNLOAD) http://downloads.sourceforge.net/sevenzip/7z1900-extra.7z && \ $(JLDOWNLOAD) https://sourceforge.net/projects/nsis/files/NSIS%203/3.04/nsis-3.04-setup.exe && \ chmod a+x 7z.exe && \ chmod a+x 7z.dll && \ From f3312ce3690412f0e8a1da0485276e756d8feb92 Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Mon, 6 May 2019 12:39:49 -0400 Subject: [PATCH 04/34] Revert "optimize append_any more" --- base/compiler/abstractinterpretation.jl | 2 +- base/compiler/tfuncs.jl | 24 ++-- base/essentials.jl | 77 ++++++++++++ src/builtins.c | 161 ++++++++---------------- src/module.c | 2 + test/compiler/codegen.jl | 3 - test/compiler/inference.jl | 14 +-- test/core.jl | 8 -- 8 files changed, 143 insertions(+), 148 deletions(-) diff --git a/base/compiler/abstractinterpretation.jl b/base/compiler/abstractinterpretation.jl index a6d28c14762a3..9895a0c59138f 100644 --- a/base/compiler/abstractinterpretation.jl +++ b/base/compiler/abstractinterpretation.jl @@ -547,7 +547,7 @@ function abstract_apply(@nospecialize(aft), aargtypes::Vector{Any}, vtypes::VarT tail = tuple_tail_elem(unwrapva(ct[end]), cti) push!(ctypes´, push!(ct[1:(end - 1)], tail)) else - push!(ctypes´, append!(ct[:], cti)) + push!(ctypes´, append_any(ct, cti)) end end end diff --git a/base/compiler/tfuncs.jl b/base/compiler/tfuncs.jl index d1cd76eea779b..00dce1b6a3ddd 100644 --- a/base/compiler/tfuncs.jl +++ b/base/compiler/tfuncs.jl @@ -302,25 +302,25 @@ function sizeof_nothrow(@nospecialize(x)) else x = widenconst(x) end + isconstType(x) && (x = x.parameters[1]) if isa(x, Union) return sizeof_nothrow(x.a) && sizeof_nothrow(x.b) end - isconstType(x) && (x = x.parameters[1]) # since sizeof(typeof(x)) == sizeof(x) x === DataType && return false - return isconcretetype(x) || isprimitivetype(x) + return isconcretetype(x) end function _const_sizeof(@nospecialize(x)) # Constant Vector does not have constant size isa(x, Vector) && return Int size = try - Core.sizeof(x) - catch ex - # Might return - # "argument is an abstract type; size is indeterminate" or - # "type does not have a fixed size" - isa(ex, ErrorException) || rethrow() - return Int - end + Core.sizeof(x) + catch ex + # Might return + # "argument is an abstract type; size is indeterminate" or + # "type does not have a fixed size" + isa(ex, ErrorException) || rethrow() + return Int + end return Const(size) end function sizeof_tfunc(@nospecialize(x),) @@ -328,11 +328,7 @@ function sizeof_tfunc(@nospecialize(x),) isa(x, Conditional) && return _const_sizeof(Bool) isconstType(x) && return _const_sizeof(x.parameters[1]) x = widenconst(x) - if isa(x, Union) - return tmerge(sizeof_tfunc(x.a), sizeof_tfunc(x.b)) - end x !== DataType && isconcretetype(x) && return _const_sizeof(x) - isprimitivetype(x) && return _const_sizeof(x) return Int end add_tfunc(Core.sizeof, 1, 1, sizeof_tfunc, 0) diff --git a/base/essentials.jl b/base/essentials.jl index 37c4361a47403..34f993d22642f 100644 --- a/base/essentials.jl +++ b/base/essentials.jl @@ -659,6 +659,83 @@ function isassigned(v::SimpleVector, i::Int) end +# used by ... syntax to access the `iterate` function from inside the Core._apply implementation +# must be a separate function from append(), since Core._apply needs this exact function +function append_any(xs...) + @nospecialize + lx = length(xs) + l = 4 + i = 1 + out = Vector{Any}(undef, l) + for xi in 1:lx + x = @inbounds xs[xi] + # handle some common cases, where we know the length + # and can inline the iterator because the runtime + # has an optimized version of the iterator + if x isa SimpleVector + lx = length(x) + if i + lx - 1 > l + ladd = lx > 16 ? lx : 16 + _growend!(out, ladd) + l += ladd + end + for j in 1:lx + y = @inbounds x[j] + arrayset(false, out, y, i) + i += 1 + end + elseif x isa Tuple + lx = nfields(x) + if i + lx - 1 > l + ladd = lx > 16 ? lx : 16 + _growend!(out, ladd) + l += ladd + end + for j in 1:lx + y = getfield(x, j, false) + arrayset(false, out, y, i) + i += 1 + end + elseif x isa NamedTuple + lx = nfields(x) + if i + lx - 1 > l + ladd = lx > 16 ? lx : 16 + _growend!(out, ladd) + l += ladd + end + for j in 1:lx + y = getfield(x, j, false) + arrayset(false, out, y, i) + i += 1 + end + elseif x isa Array + lx = length(x) + if i + lx - 1 > l + ladd = lx > 16 ? lx : 16 + _growend!(out, ladd) + l += ladd + end + for j in 1:lx + y = arrayref(false, x, j) + arrayset(false, out, y, i) + i += 1 + end + else + for y in x + if i > l + _growend!(out, 16) + l += 16 + end + arrayset(false, out, y, i) + i += 1 + end + end + end + _deleteend!(out, l - i + 1) + return out +end + + """ Colon() diff --git a/src/builtins.c b/src/builtins.c index 9425dfb538ff4..ba8eee130288e 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -445,41 +445,13 @@ JL_CALLABLE(jl_f_ifelse) // apply ---------------------------------------------------------------------- -static NOINLINE jl_svec_t *_copy_to(size_t newalloc, jl_value_t **oldargs, size_t oldalloc) -{ - size_t j; - jl_svec_t *newheap = jl_alloc_svec_uninit(newalloc); - jl_value_t **newargs = jl_svec_data(newheap); - for (j = 0; j < oldalloc; j++) - newargs[j] = oldargs[j]; - for (; j < newalloc; j++) - newargs[j] = NULL; - return newheap; -} - -void STATIC_INLINE _grow_to(jl_value_t **root, jl_value_t ***oldargs, jl_svec_t **arg_heap, size_t *n_alloc, size_t newalloc, size_t extra) -{ - size_t oldalloc = *n_alloc; - if (oldalloc >= newalloc) - return; - if (extra) - // grow by an extra 50% if newalloc is still only a guess - newalloc += oldalloc / 2 + 16; - jl_svec_t *newheap = _copy_to(newalloc, *oldargs, oldalloc); - *root = (jl_value_t*)newheap; - *arg_heap = newheap; - *oldargs = jl_svec_data(newheap); - *n_alloc = newalloc; -} - -static jl_function_t *jl_iterate_func; +jl_function_t *jl_append_any_func; JL_CALLABLE(jl_f__apply) { JL_NARGSV(apply, 1); jl_function_t *f = args[0]; if (nargs == 2) { - // some common simple cases if (f == jl_builtin_svec) { if (jl_is_svec(args[1])) return args[1]; @@ -487,7 +459,7 @@ JL_CALLABLE(jl_f__apply) size_t n = jl_array_len(args[1]); jl_svec_t *t = jl_alloc_svec(n); JL_GC_PUSH1(&t); - for (size_t i = 0; i < n; i++) { + for(size_t i=0; i < n; i++) { jl_svecset(t, i, jl_arrayref((jl_array_t*)args[1], i)); } JL_GC_POP(); @@ -498,93 +470,85 @@ JL_CALLABLE(jl_f__apply) return args[1]; } } - // estimate how many real arguments we appear to have - size_t precount = 1; - size_t extra = 0; - size_t i; - for (i = 1; i < nargs; i++) { + size_t n=0, i, j; + for(i=1; i < nargs; i++) { if (jl_is_svec(args[i])) { - precount += jl_svec_len(args[i]); + n += jl_svec_len(args[i]); } else if (jl_is_tuple(args[i]) || jl_is_namedtuple(args[i])) { - precount += jl_nfields(args[i]); + n += jl_nfields(args[i]); } else if (jl_is_array(args[i])) { - precount += jl_array_len(args[i]); + n += jl_array_len(args[i]); } else { - extra += 1; + if (jl_append_any_func == NULL) { + jl_append_any_func = + (jl_function_t*)jl_get_global(jl_top_module, jl_symbol("append_any")); + if (jl_append_any_func == NULL) { + // error if append_any not available + JL_TYPECHK(apply, tuple, jl_typeof(args[i])); + } + } + jl_array_t *argarr = NULL; + JL_GC_PUSH2(&argarr, &f); + args[0] = jl_append_any_func; + argarr = (jl_array_t*)jl_apply(args, nargs); + assert(jl_typeis(argarr, jl_array_any_type)); + jl_array_grow_beg(argarr, 1); + jl_array_ptr_set(argarr, 0, f); + args[0] = f; + jl_value_t *result = jl_apply(jl_array_ptr_data(argarr), jl_array_len(argarr)); + JL_GC_POP(); + return result; } } - if (extra && jl_iterate_func == NULL) { - jl_iterate_func = jl_get_function(jl_top_module, "iterate"); - if (jl_iterate_func == NULL) - jl_undefined_var_error(jl_symbol("iterate")); - } - // allocate space for the argument array and gc roots for it - // based on our previous estimates - // use the stack if we have a good estimate that it is small - // otherwise, use the heap and grow it incrementally - // and if there are any extra elements, we'll also need a couple extra roots - int onstack = (precount + 32 * extra < jl_page_size / sizeof(jl_value_t*)); - size_t stackalloc = onstack ? (precount + 4 * extra + (extra ? 16 : 0)) : 1; - size_t n_alloc; - jl_value_t **roots; - JL_GC_PUSHARGS(roots, stackalloc + (extra ? 2 : 0)); - jl_value_t **newargs = NULL; + jl_value_t **newargs; + n++; + int onstack = (n < jl_page_size/sizeof(jl_value_t*)); + JL_GC_PUSHARGS(newargs, onstack ? n : 1); jl_svec_t *arg_heap = NULL; - if (onstack) { - newargs = roots; - n_alloc = stackalloc; - } - else { + if (!onstack) { // put arguments on the heap if there are too many - n_alloc = 0; - _grow_to(&roots[0], &newargs, &arg_heap, &n_alloc, precount, extra); + arg_heap = jl_alloc_svec(n); + newargs[0] = (jl_value_t*)arg_heap; + newargs = jl_svec_data(arg_heap); } + // GC Note: here we assume that the return value of `jl_svecref`, + // `jl_array_ptr_ref` will not be young if `arg_heap` becomes old + // since they are allocated before `arg_heap`. Otherwise, + // we need to add write barrier for !onstack newargs[0] = f; - precount -= 1; - size_t n = 1; - for (i = 1; i < nargs; i++) { + n = 1; + for(i=1; i < nargs; i++) { jl_value_t *ai = args[i]; if (jl_is_svec(ai)) { jl_svec_t *t = (jl_svec_t*)ai; - size_t j, al = jl_svec_len(t); - precount = (precount > al) ? precount - al : 0; - _grow_to(&roots[0], &newargs, &arg_heap, &n_alloc, n + precount + al, extra); - for (j = 0; j < al; j++) { + size_t al = jl_svec_len(t); + for(j=0; j < al; j++) newargs[n++] = jl_svecref(t, j); - // GC Note: here we assume that the return value of `jl_svecref` - // will not be young if `arg_heap` becomes old - // since they are allocated before `arg_heap`. Otherwise, - // we need to add write barrier for !onstack - } } else if (jl_is_tuple(ai) || jl_is_namedtuple(ai)) { - size_t j, al = jl_nfields(ai); - precount = (precount > al) ? precount - al : 0; - _grow_to(&roots[0], &newargs, &arg_heap, &n_alloc, n + precount + al, extra); - for (j = 0; j < al; j++) { + size_t al = jl_nfields(ai); + for(j=0; j < al; j++) { // jl_fieldref may allocate. newargs[n++] = jl_fieldref(ai, j); if (arg_heap) jl_gc_wb(arg_heap, newargs[n - 1]); } } - else if (jl_is_array(ai)) { + else { + assert(jl_is_array(ai)); jl_array_t *aai = (jl_array_t*)ai; - size_t j, al = jl_array_len(aai); - precount = (precount > al) ? precount - al : 0; - _grow_to(&roots[0], &newargs, &arg_heap, &n_alloc, n + precount + al, extra); + size_t al = jl_array_len(aai); if (aai->flags.ptrarray) { for (j = 0; j < al; j++) { jl_value_t *arg = jl_array_ptr_ref(aai, j); - // apply with array splatting may have embedded NULL value (#11772) + // apply with array splatting may have embedded NULL value + // #11772 if (__unlikely(arg == NULL)) jl_throw(jl_undefref_exception); newargs[n++] = arg; - if (arg_heap) - jl_gc_wb(arg_heap, arg); } } else { @@ -595,33 +559,6 @@ JL_CALLABLE(jl_f__apply) } } } - else { - assert(extra > 0); - jl_value_t *args[3]; - args[0] = jl_iterate_func; - args[1] = ai; - jl_value_t *next = jl_apply(args, 2); - while (next != jl_nothing) { - roots[stackalloc] = next; - jl_value_t *value = jl_fieldref(next, 0); - roots[stackalloc + 1] = next; - jl_value_t *state = jl_fieldref(next, 1); - roots[stackalloc] = state; - _grow_to(&roots[0], &newargs, &arg_heap, &n_alloc, n + precount + 1, extra); - newargs[n++] = value; - if (arg_heap) - jl_gc_wb(arg_heap, value); - roots[stackalloc + 1] = NULL; - args[2] = state; - next = jl_apply(args, 3); - } - roots[stackalloc] = NULL; - extra -= 1; - } - } - if (arg_heap) { - // optimization: keep only the first root, free the others - ((void**)roots)[-2] = (void*)(((size_t)1) << 1); } jl_value_t *result = jl_apply(newargs, n); JL_GC_POP(); diff --git a/src/module.c b/src/module.c index ae7520e09830f..5651a069491ac 100644 --- a/src/module.c +++ b/src/module.c @@ -15,6 +15,7 @@ jl_module_t *jl_main_module = NULL; jl_module_t *jl_core_module = NULL; jl_module_t *jl_base_module = NULL; jl_module_t *jl_top_module = NULL; +extern jl_function_t *jl_append_any_func; JL_DLLEXPORT jl_module_t *jl_new_module(jl_sym_t *name) { @@ -76,6 +77,7 @@ JL_DLLEXPORT void jl_set_istopmod(jl_module_t *self, uint8_t isprimary) self->istopmod = 1; if (isprimary) { jl_top_module = self; + jl_append_any_func = NULL; } } diff --git a/test/compiler/codegen.jl b/test/compiler/codegen.jl index da25fac0da10f..ffbdc4814f218 100644 --- a/test/compiler/codegen.jl +++ b/test/compiler/codegen.jl @@ -93,7 +93,6 @@ end if opt_level > 0 # Make sure `jl_string_ptr` is inlined @test !occursin(" call ", get_llvm(jl_string_ptr, Tuple{String})) - # Make sure `Core.sizeof` call is inlined s = "aaa" @test jl_string_ptr(s) == pointer_from_objref(s) + sizeof(Int) # String @@ -106,8 +105,6 @@ if opt_level > 0 test_loads_no_call(get_llvm(core_sizeof, Tuple{Array{Any}}), [Iptr]) # Check that we load the elsize test_loads_no_call(get_llvm(core_sizeof, Tuple{Vector}), [Iptr, "i16"]) - # Primitive Type size should be folded to a constant - test_loads_no_call(get_llvm(core_sizeof, Tuple{Ptr}), String[]) test_jl_dump_compiles() test_jl_dump_compiles_toplevel_thunks() diff --git a/test/compiler/inference.jl b/test/compiler/inference.jl index 21e80639ab657..b215a65eefacc 100644 --- a/test/compiler/inference.jl +++ b/test/compiler/inference.jl @@ -1360,18 +1360,12 @@ let egal_tfunc end using Core.Compiler: PartialStruct, nfields_tfunc, sizeof_tfunc, sizeof_nothrow -@test sizeof_tfunc(Const(Ptr)) === sizeof_tfunc(Union{Ptr, Int, Type{Ptr{Int8}}, Type{Int}}) === Const(Sys.WORD_SIZE ÷ 8) -@test sizeof_tfunc(Type{Ptr}) === Int -@test sizeof_nothrow(Union{Ptr, Int, Type{Ptr{Int8}}, Type{Int}}) -@test sizeof_nothrow(Const(Ptr)) -@test !sizeof_nothrow(Type{Ptr}) -@test !sizeof_nothrow(Type{Union{Ptr{Int}, Int}}) -@test !sizeof_nothrow(Const(Tuple)) let PT = PartialStruct(Tuple{Int64,UInt64}, Any[Const(10, false), UInt64]) - @test sizeof_tfunc(PT) === Const(16) - @test nfields_tfunc(PT) === Const(2) - @test sizeof_nothrow(PT) + @test sizeof_tfunc(PT) === Const(16, false) + @test nfields_tfunc(PT) === Const(2, false) + @test sizeof_nothrow(PT) === true end +@test sizeof_nothrow(Const(Tuple)) === false using Core.Compiler: typeof_tfunc @test typeof_tfunc(Tuple{Vararg{Int}}) == Type{Tuple{Vararg{Int,N}}} where N diff --git a/test/core.jl b/test/core.jl index 6e965dbb1870d..d25568f8adf53 100644 --- a/test/core.jl +++ b/test/core.jl @@ -4957,14 +4957,6 @@ let a = fill(["sdf"], 2*10^6), temp_vcat(x...) = vcat(x...) @test b[1] == b[end] == "sdf" end -# test for splatting of something fairly large and unusual (not builtin or pre-countable) -@noinline splat10981(a...) = a -for trail in ((), ntuple(_ -> (), 4 * 10^7)) # 150 / 300 MB of pointers - got = splat10981((1, 2, "3")..., (trail...)..., Core.svec("4",)..., (5 => 6)..., (trail...)..., ([i => j for i in 1:100, j=2.0:2:20]...)..., ntuple(identity, 1000)..., (trail...)...) - expected = (1,2,"3","4",5,6,1,2.0,2,2.0,3,2.0,4,2.0,5,2.0,6,2.0,7,2.0,8,2.0,9,2.0,10,2.0,11,2.0,12,2.0,13,2.0,14,2.0,15,2.0,16,2.0,17,2.0,18,2.0,19,2.0,20,2.0,21,2.0,22,2.0,23,2.0,24,2.0,25,2.0,26,2.0,27,2.0,28,2.0,29,2.0,30,2.0,31,2.0,32,2.0,33,2.0,34,2.0,35,2.0,36,2.0,37,2.0,38,2.0,39,2.0,40,2.0,41,2.0,42,2.0,43,2.0,44,2.0,45,2.0,46,2.0,47,2.0,48,2.0,49,2.0,50,2.0,51,2.0,52,2.0,53,2.0,54,2.0,55,2.0,56,2.0,57,2.0,58,2.0,59,2.0,60,2.0,61,2.0,62,2.0,63,2.0,64,2.0,65,2.0,66,2.0,67,2.0,68,2.0,69,2.0,70,2.0,71,2.0,72,2.0,73,2.0,74,2.0,75,2.0,76,2.0,77,2.0,78,2.0,79,2.0,80,2.0,81,2.0,82,2.0,83,2.0,84,2.0,85,2.0,86,2.0,87,2.0,88,2.0,89,2.0,90,2.0,91,2.0,92,2.0,93,2.0,94,2.0,95,2.0,96,2.0,97,2.0,98,2.0,99,2.0,100,2.0,1,4.0,2,4.0,3,4.0,4,4.0,5,4.0,6,4.0,7,4.0,8,4.0,9,4.0,10,4.0,11,4.0,12,4.0,13,4.0,14,4.0,15,4.0,16,4.0,17,4.0,18,4.0,19,4.0,20,4.0,21,4.0,22,4.0,23,4.0,24,4.0,25,4.0,26,4.0,27,4.0,28,4.0,29,4.0,30,4.0,31,4.0,32,4.0,33,4.0,34,4.0,35,4.0,36,4.0,37,4.0,38,4.0,39,4.0,40,4.0,41,4.0,42,4.0,43,4.0,44,4.0,45,4.0,46,4.0,47,4.0,48,4.0,49,4.0,50,4.0,51,4.0,52,4.0,53,4.0,54,4.0,55,4.0,56,4.0,57,4.0,58,4.0,59,4.0,60,4.0,61,4.0,62,4.0,63,4.0,64,4.0,65,4.0,66,4.0,67,4.0,68,4.0,69,4.0,70,4.0,71,4.0,72,4.0,73,4.0,74,4.0,75,4.0,76,4.0,77,4.0,78,4.0,79,4.0,80,4.0,81,4.0,82,4.0,83,4.0,84,4.0,85,4.0,86,4.0,87,4.0,88,4.0,89,4.0,90,4.0,91,4.0,92,4.0,93,4.0,94,4.0,95,4.0,96,4.0,97,4.0,98,4.0,99,4.0,100,4.0,1,6.0,2,6.0,3,6.0,4,6.0,5,6.0,6,6.0,7,6.0,8,6.0,9,6.0,10,6.0,11,6.0,12,6.0,13,6.0,14,6.0,15,6.0,16,6.0,17,6.0,18,6.0,19,6.0,20,6.0,21,6.0,22,6.0,23,6.0,24,6.0,25,6.0,26,6.0,27,6.0,28,6.0,29,6.0,30,6.0,31,6.0,32,6.0,33,6.0,34,6.0,35,6.0,36,6.0,37,6.0,38,6.0,39,6.0,40,6.0,41,6.0,42,6.0,43,6.0,44,6.0,45,6.0,46,6.0,47,6.0,48,6.0,49,6.0,50,6.0,51,6.0,52,6.0,53,6.0,54,6.0,55,6.0,56,6.0,57,6.0,58,6.0,59,6.0,60,6.0,61,6.0,62,6.0,63,6.0,64,6.0,65,6.0,66,6.0,67,6.0,68,6.0,69,6.0,70,6.0,71,6.0,72,6.0,73,6.0,74,6.0,75,6.0,76,6.0,77,6.0,78,6.0,79,6.0,80,6.0,81,6.0,82,6.0,83,6.0,84,6.0,85,6.0,86,6.0,87,6.0,88,6.0,89,6.0,90,6.0,91,6.0,92,6.0,93,6.0,94,6.0,95,6.0,96,6.0,97,6.0,98,6.0,99,6.0,100,6.0,1,8.0,2,8.0,3,8.0,4,8.0,5,8.0,6,8.0,7,8.0,8,8.0,9,8.0,10,8.0,11,8.0,12,8.0,13,8.0,14,8.0,15,8.0,16,8.0,17,8.0,18,8.0,19,8.0,20,8.0,21,8.0,22,8.0,23,8.0,24,8.0,25,8.0,26,8.0,27,8.0,28,8.0,29,8.0,30,8.0,31,8.0,32,8.0,33,8.0,34,8.0,35,8.0,36,8.0,37,8.0,38,8.0,39,8.0,40,8.0,41,8.0,42,8.0,43,8.0,44,8.0,45,8.0,46,8.0,47,8.0,48,8.0,49,8.0,50,8.0,51,8.0,52,8.0,53,8.0,54,8.0,55,8.0,56,8.0,57,8.0,58,8.0,59,8.0,60,8.0,61,8.0,62,8.0,63,8.0,64,8.0,65,8.0,66,8.0,67,8.0,68,8.0,69,8.0,70,8.0,71,8.0,72,8.0,73,8.0,74,8.0,75,8.0,76,8.0,77,8.0,78,8.0,79,8.0,80,8.0,81,8.0,82,8.0,83,8.0,84,8.0,85,8.0,86,8.0,87,8.0,88,8.0,89,8.0,90,8.0,91,8.0,92,8.0,93,8.0,94,8.0,95,8.0,96,8.0,97,8.0,98,8.0,99,8.0,100,8.0,1,10.0,2,10.0,3,10.0,4,10.0,5,10.0,6,10.0,7,10.0,8,10.0,9,10.0,10,10.0,11,10.0,12,10.0,13,10.0,14,10.0,15,10.0,16,10.0,17,10.0,18,10.0,19,10.0,20,10.0,21,10.0,22,10.0,23,10.0,24,10.0,25,10.0,26,10.0,27,10.0,28,10.0,29,10.0,30,10.0,31,10.0,32,10.0,33,10.0,34,10.0,35,10.0,36,10.0,37,10.0,38,10.0,39,10.0,40,10.0,41,10.0,42,10.0,43,10.0,44,10.0,45,10.0,46,10.0,47,10.0,48,10.0,49,10.0,50,10.0,51,10.0,52,10.0,53,10.0,54,10.0,55,10.0,56,10.0,57,10.0,58,10.0,59,10.0,60,10.0,61,10.0,62,10.0,63,10.0,64,10.0,65,10.0,66,10.0,67,10.0,68,10.0,69,10.0,70,10.0,71,10.0,72,10.0,73,10.0,74,10.0,75,10.0,76,10.0,77,10.0,78,10.0,79,10.0,80,10.0,81,10.0,82,10.0,83,10.0,84,10.0,85,10.0,86,10.0,87,10.0,88,10.0,89,10.0,90,10.0,91,10.0,92,10.0,93,10.0,94,10.0,95,10.0,96,10.0,97,10.0,98,10.0,99,10.0,100,10.0,1,12.0,2,12.0,3,12.0,4,12.0,5,12.0,6,12.0,7,12.0,8,12.0,9,12.0,10,12.0,11,12.0,12,12.0,13,12.0,14,12.0,15,12.0,16,12.0,17,12.0,18,12.0,19,12.0,20,12.0,21,12.0,22,12.0,23,12.0,24,12.0,25,12.0,26,12.0,27,12.0,28,12.0,29,12.0,30,12.0,31,12.0,32,12.0,33,12.0,34,12.0,35,12.0,36,12.0,37,12.0,38,12.0,39,12.0,40,12.0,41,12.0,42,12.0,43,12.0,44,12.0,45,12.0,46,12.0,47,12.0,48,12.0,49,12.0,50,12.0,51,12.0,52,12.0,53,12.0,54,12.0,55,12.0,56,12.0,57,12.0,58,12.0,59,12.0,60,12.0,61,12.0,62,12.0,63,12.0,64,12.0,65,12.0,66,12.0,67,12.0,68,12.0,69,12.0,70,12.0,71,12.0,72,12.0,73,12.0,74,12.0,75,12.0,76,12.0,77,12.0,78,12.0,79,12.0,80,12.0,81,12.0,82,12.0,83,12.0,84,12.0,85,12.0,86,12.0,87,12.0,88,12.0,89,12.0,90,12.0,91,12.0,92,12.0,93,12.0,94,12.0,95,12.0,96,12.0,97,12.0,98,12.0,99,12.0,100,12.0,1,14.0,2,14.0,3,14.0,4,14.0,5,14.0,6,14.0,7,14.0,8,14.0,9,14.0,10,14.0,11,14.0,12,14.0,13,14.0,14,14.0,15,14.0,16,14.0,17,14.0,18,14.0,19,14.0,20,14.0,21,14.0,22,14.0,23,14.0,24,14.0,25,14.0,26,14.0,27,14.0,28,14.0,29,14.0,30,14.0,31,14.0,32,14.0,33,14.0,34,14.0,35,14.0,36,14.0,37,14.0,38,14.0,39,14.0,40,14.0,41,14.0,42,14.0,43,14.0,44,14.0,45,14.0,46,14.0,47,14.0,48,14.0,49,14.0,50,14.0,51,14.0,52,14.0,53,14.0,54,14.0,55,14.0,56,14.0,57,14.0,58,14.0,59,14.0,60,14.0,61,14.0,62,14.0,63,14.0,64,14.0,65,14.0,66,14.0,67,14.0,68,14.0,69,14.0,70,14.0,71,14.0,72,14.0,73,14.0,74,14.0,75,14.0,76,14.0,77,14.0,78,14.0,79,14.0,80,14.0,81,14.0,82,14.0,83,14.0,84,14.0,85,14.0,86,14.0,87,14.0,88,14.0,89,14.0,90,14.0,91,14.0,92,14.0,93,14.0,94,14.0,95,14.0,96,14.0,97,14.0,98,14.0,99,14.0,100,14.0,1,16.0,2,16.0,3,16.0,4,16.0,5,16.0,6,16.0,7,16.0,8,16.0,9,16.0,10,16.0,11,16.0,12,16.0,13,16.0,14,16.0,15,16.0,16,16.0,17,16.0,18,16.0,19,16.0,20,16.0,21,16.0,22,16.0,23,16.0,24,16.0,25,16.0,26,16.0,27,16.0,28,16.0,29,16.0,30,16.0,31,16.0,32,16.0,33,16.0,34,16.0,35,16.0,36,16.0,37,16.0,38,16.0,39,16.0,40,16.0,41,16.0,42,16.0,43,16.0,44,16.0,45,16.0,46,16.0,47,16.0,48,16.0,49,16.0,50,16.0,51,16.0,52,16.0,53,16.0,54,16.0,55,16.0,56,16.0,57,16.0,58,16.0,59,16.0,60,16.0,61,16.0,62,16.0,63,16.0,64,16.0,65,16.0,66,16.0,67,16.0,68,16.0,69,16.0,70,16.0,71,16.0,72,16.0,73,16.0,74,16.0,75,16.0,76,16.0,77,16.0,78,16.0,79,16.0,80,16.0,81,16.0,82,16.0,83,16.0,84,16.0,85,16.0,86,16.0,87,16.0,88,16.0,89,16.0,90,16.0,91,16.0,92,16.0,93,16.0,94,16.0,95,16.0,96,16.0,97,16.0,98,16.0,99,16.0,100,16.0,1,18.0,2,18.0,3,18.0,4,18.0,5,18.0,6,18.0,7,18.0,8,18.0,9,18.0,10,18.0,11,18.0,12,18.0,13,18.0,14,18.0,15,18.0,16,18.0,17,18.0,18,18.0,19,18.0,20,18.0,21,18.0,22,18.0,23,18.0,24,18.0,25,18.0,26,18.0,27,18.0,28,18.0,29,18.0,30,18.0,31,18.0,32,18.0,33,18.0,34,18.0,35,18.0,36,18.0,37,18.0,38,18.0,39,18.0,40,18.0,41,18.0,42,18.0,43,18.0,44,18.0,45,18.0,46,18.0,47,18.0,48,18.0,49,18.0,50,18.0,51,18.0,52,18.0,53,18.0,54,18.0,55,18.0,56,18.0,57,18.0,58,18.0,59,18.0,60,18.0,61,18.0,62,18.0,63,18.0,64,18.0,65,18.0,66,18.0,67,18.0,68,18.0,69,18.0,70,18.0,71,18.0,72,18.0,73,18.0,74,18.0,75,18.0,76,18.0,77,18.0,78,18.0,79,18.0,80,18.0,81,18.0,82,18.0,83,18.0,84,18.0,85,18.0,86,18.0,87,18.0,88,18.0,89,18.0,90,18.0,91,18.0,92,18.0,93,18.0,94,18.0,95,18.0,96,18.0,97,18.0,98,18.0,99,18.0,100,18.0,1,20.0,2,20.0,3,20.0,4,20.0,5,20.0,6,20.0,7,20.0,8,20.0,9,20.0,10,20.0,11,20.0,12,20.0,13,20.0,14,20.0,15,20.0,16,20.0,17,20.0,18,20.0,19,20.0,20,20.0,21,20.0,22,20.0,23,20.0,24,20.0,25,20.0,26,20.0,27,20.0,28,20.0,29,20.0,30,20.0,31,20.0,32,20.0,33,20.0,34,20.0,35,20.0,36,20.0,37,20.0,38,20.0,39,20.0,40,20.0,41,20.0,42,20.0,43,20.0,44,20.0,45,20.0,46,20.0,47,20.0,48,20.0,49,20.0,50,20.0,51,20.0,52,20.0,53,20.0,54,20.0,55,20.0,56,20.0,57,20.0,58,20.0,59,20.0,60,20.0,61,20.0,62,20.0,63,20.0,64,20.0,65,20.0,66,20.0,67,20.0,68,20.0,69,20.0,70,20.0,71,20.0,72,20.0,73,20.0,74,20.0,75,20.0,76,20.0,77,20.0,78,20.0,79,20.0,80,20.0,81,20.0,82,20.0,83,20.0,84,20.0,85,20.0,86,20.0,87,20.0,88,20.0,89,20.0,90,20.0,91,20.0,92,20.0,93,20.0,94,20.0,95,20.0,96,20.0,97,20.0,98,20.0,99,20.0,100,20.0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000) - @test got == expected -end - # issue #17255, take `deferred_alloc` into account # when calculating total allocation size. @noinline function f17255(n) From 4ae4348e27e1030ac6cf4850d34ab92f8158092e Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Wed, 1 May 2019 12:43:57 -0400 Subject: [PATCH 05/34] inference: improve sizeof tfunc Primitive types also always have a sizeof. This is particularly relevant for `Ptr`, since `elsize` uses `sizeof(Ptr)` to compute the stride. --- base/compiler/tfuncs.jl | 24 ++++++++++++++---------- test/compiler/codegen.jl | 3 +++ test/compiler/inference.jl | 14 ++++++++++---- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/base/compiler/tfuncs.jl b/base/compiler/tfuncs.jl index 00dce1b6a3ddd..d1cd76eea779b 100644 --- a/base/compiler/tfuncs.jl +++ b/base/compiler/tfuncs.jl @@ -302,25 +302,25 @@ function sizeof_nothrow(@nospecialize(x)) else x = widenconst(x) end - isconstType(x) && (x = x.parameters[1]) if isa(x, Union) return sizeof_nothrow(x.a) && sizeof_nothrow(x.b) end + isconstType(x) && (x = x.parameters[1]) # since sizeof(typeof(x)) == sizeof(x) x === DataType && return false - return isconcretetype(x) + return isconcretetype(x) || isprimitivetype(x) end function _const_sizeof(@nospecialize(x)) # Constant Vector does not have constant size isa(x, Vector) && return Int size = try - Core.sizeof(x) - catch ex - # Might return - # "argument is an abstract type; size is indeterminate" or - # "type does not have a fixed size" - isa(ex, ErrorException) || rethrow() - return Int - end + Core.sizeof(x) + catch ex + # Might return + # "argument is an abstract type; size is indeterminate" or + # "type does not have a fixed size" + isa(ex, ErrorException) || rethrow() + return Int + end return Const(size) end function sizeof_tfunc(@nospecialize(x),) @@ -328,7 +328,11 @@ function sizeof_tfunc(@nospecialize(x),) isa(x, Conditional) && return _const_sizeof(Bool) isconstType(x) && return _const_sizeof(x.parameters[1]) x = widenconst(x) + if isa(x, Union) + return tmerge(sizeof_tfunc(x.a), sizeof_tfunc(x.b)) + end x !== DataType && isconcretetype(x) && return _const_sizeof(x) + isprimitivetype(x) && return _const_sizeof(x) return Int end add_tfunc(Core.sizeof, 1, 1, sizeof_tfunc, 0) diff --git a/test/compiler/codegen.jl b/test/compiler/codegen.jl index ffbdc4814f218..da25fac0da10f 100644 --- a/test/compiler/codegen.jl +++ b/test/compiler/codegen.jl @@ -93,6 +93,7 @@ end if opt_level > 0 # Make sure `jl_string_ptr` is inlined @test !occursin(" call ", get_llvm(jl_string_ptr, Tuple{String})) + # Make sure `Core.sizeof` call is inlined s = "aaa" @test jl_string_ptr(s) == pointer_from_objref(s) + sizeof(Int) # String @@ -105,6 +106,8 @@ if opt_level > 0 test_loads_no_call(get_llvm(core_sizeof, Tuple{Array{Any}}), [Iptr]) # Check that we load the elsize test_loads_no_call(get_llvm(core_sizeof, Tuple{Vector}), [Iptr, "i16"]) + # Primitive Type size should be folded to a constant + test_loads_no_call(get_llvm(core_sizeof, Tuple{Ptr}), String[]) test_jl_dump_compiles() test_jl_dump_compiles_toplevel_thunks() diff --git a/test/compiler/inference.jl b/test/compiler/inference.jl index b215a65eefacc..21e80639ab657 100644 --- a/test/compiler/inference.jl +++ b/test/compiler/inference.jl @@ -1360,12 +1360,18 @@ let egal_tfunc end using Core.Compiler: PartialStruct, nfields_tfunc, sizeof_tfunc, sizeof_nothrow +@test sizeof_tfunc(Const(Ptr)) === sizeof_tfunc(Union{Ptr, Int, Type{Ptr{Int8}}, Type{Int}}) === Const(Sys.WORD_SIZE ÷ 8) +@test sizeof_tfunc(Type{Ptr}) === Int +@test sizeof_nothrow(Union{Ptr, Int, Type{Ptr{Int8}}, Type{Int}}) +@test sizeof_nothrow(Const(Ptr)) +@test !sizeof_nothrow(Type{Ptr}) +@test !sizeof_nothrow(Type{Union{Ptr{Int}, Int}}) +@test !sizeof_nothrow(Const(Tuple)) let PT = PartialStruct(Tuple{Int64,UInt64}, Any[Const(10, false), UInt64]) - @test sizeof_tfunc(PT) === Const(16, false) - @test nfields_tfunc(PT) === Const(2, false) - @test sizeof_nothrow(PT) === true + @test sizeof_tfunc(PT) === Const(16) + @test nfields_tfunc(PT) === Const(2) + @test sizeof_nothrow(PT) end -@test sizeof_nothrow(Const(Tuple)) === false using Core.Compiler: typeof_tfunc @test typeof_tfunc(Tuple{Vararg{Int}}) == Type{Tuple{Vararg{Int,N}}} where N From 1b2d3cab7603fcdc62afa1a4a19faae085183fad Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Wed, 1 May 2019 12:57:30 -0400 Subject: [PATCH 06/34] apply: unify append_any implementations Rather than optimize two copies of the same function, we can just have one version of the function that handles everything. --- base/compiler/abstractinterpretation.jl | 2 +- base/essentials.jl | 77 ------------ src/builtins.c | 161 ++++++++++++++++-------- src/module.c | 2 - test/core.jl | 8 ++ 5 files changed, 121 insertions(+), 129 deletions(-) diff --git a/base/compiler/abstractinterpretation.jl b/base/compiler/abstractinterpretation.jl index 9895a0c59138f..a6d28c14762a3 100644 --- a/base/compiler/abstractinterpretation.jl +++ b/base/compiler/abstractinterpretation.jl @@ -547,7 +547,7 @@ function abstract_apply(@nospecialize(aft), aargtypes::Vector{Any}, vtypes::VarT tail = tuple_tail_elem(unwrapva(ct[end]), cti) push!(ctypes´, push!(ct[1:(end - 1)], tail)) else - push!(ctypes´, append_any(ct, cti)) + push!(ctypes´, append!(ct[:], cti)) end end end diff --git a/base/essentials.jl b/base/essentials.jl index 34f993d22642f..37c4361a47403 100644 --- a/base/essentials.jl +++ b/base/essentials.jl @@ -659,83 +659,6 @@ function isassigned(v::SimpleVector, i::Int) end -# used by ... syntax to access the `iterate` function from inside the Core._apply implementation -# must be a separate function from append(), since Core._apply needs this exact function -function append_any(xs...) - @nospecialize - lx = length(xs) - l = 4 - i = 1 - out = Vector{Any}(undef, l) - for xi in 1:lx - x = @inbounds xs[xi] - # handle some common cases, where we know the length - # and can inline the iterator because the runtime - # has an optimized version of the iterator - if x isa SimpleVector - lx = length(x) - if i + lx - 1 > l - ladd = lx > 16 ? lx : 16 - _growend!(out, ladd) - l += ladd - end - for j in 1:lx - y = @inbounds x[j] - arrayset(false, out, y, i) - i += 1 - end - elseif x isa Tuple - lx = nfields(x) - if i + lx - 1 > l - ladd = lx > 16 ? lx : 16 - _growend!(out, ladd) - l += ladd - end - for j in 1:lx - y = getfield(x, j, false) - arrayset(false, out, y, i) - i += 1 - end - elseif x isa NamedTuple - lx = nfields(x) - if i + lx - 1 > l - ladd = lx > 16 ? lx : 16 - _growend!(out, ladd) - l += ladd - end - for j in 1:lx - y = getfield(x, j, false) - arrayset(false, out, y, i) - i += 1 - end - elseif x isa Array - lx = length(x) - if i + lx - 1 > l - ladd = lx > 16 ? lx : 16 - _growend!(out, ladd) - l += ladd - end - for j in 1:lx - y = arrayref(false, x, j) - arrayset(false, out, y, i) - i += 1 - end - else - for y in x - if i > l - _growend!(out, 16) - l += 16 - end - arrayset(false, out, y, i) - i += 1 - end - end - end - _deleteend!(out, l - i + 1) - return out -end - - """ Colon() diff --git a/src/builtins.c b/src/builtins.c index ba8eee130288e..9425dfb538ff4 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -445,13 +445,41 @@ JL_CALLABLE(jl_f_ifelse) // apply ---------------------------------------------------------------------- -jl_function_t *jl_append_any_func; +static NOINLINE jl_svec_t *_copy_to(size_t newalloc, jl_value_t **oldargs, size_t oldalloc) +{ + size_t j; + jl_svec_t *newheap = jl_alloc_svec_uninit(newalloc); + jl_value_t **newargs = jl_svec_data(newheap); + for (j = 0; j < oldalloc; j++) + newargs[j] = oldargs[j]; + for (; j < newalloc; j++) + newargs[j] = NULL; + return newheap; +} + +void STATIC_INLINE _grow_to(jl_value_t **root, jl_value_t ***oldargs, jl_svec_t **arg_heap, size_t *n_alloc, size_t newalloc, size_t extra) +{ + size_t oldalloc = *n_alloc; + if (oldalloc >= newalloc) + return; + if (extra) + // grow by an extra 50% if newalloc is still only a guess + newalloc += oldalloc / 2 + 16; + jl_svec_t *newheap = _copy_to(newalloc, *oldargs, oldalloc); + *root = (jl_value_t*)newheap; + *arg_heap = newheap; + *oldargs = jl_svec_data(newheap); + *n_alloc = newalloc; +} + +static jl_function_t *jl_iterate_func; JL_CALLABLE(jl_f__apply) { JL_NARGSV(apply, 1); jl_function_t *f = args[0]; if (nargs == 2) { + // some common simple cases if (f == jl_builtin_svec) { if (jl_is_svec(args[1])) return args[1]; @@ -459,7 +487,7 @@ JL_CALLABLE(jl_f__apply) size_t n = jl_array_len(args[1]); jl_svec_t *t = jl_alloc_svec(n); JL_GC_PUSH1(&t); - for(size_t i=0; i < n; i++) { + for (size_t i = 0; i < n; i++) { jl_svecset(t, i, jl_arrayref((jl_array_t*)args[1], i)); } JL_GC_POP(); @@ -470,85 +498,93 @@ JL_CALLABLE(jl_f__apply) return args[1]; } } - size_t n=0, i, j; - for(i=1; i < nargs; i++) { + // estimate how many real arguments we appear to have + size_t precount = 1; + size_t extra = 0; + size_t i; + for (i = 1; i < nargs; i++) { if (jl_is_svec(args[i])) { - n += jl_svec_len(args[i]); + precount += jl_svec_len(args[i]); } else if (jl_is_tuple(args[i]) || jl_is_namedtuple(args[i])) { - n += jl_nfields(args[i]); + precount += jl_nfields(args[i]); } else if (jl_is_array(args[i])) { - n += jl_array_len(args[i]); + precount += jl_array_len(args[i]); } else { - if (jl_append_any_func == NULL) { - jl_append_any_func = - (jl_function_t*)jl_get_global(jl_top_module, jl_symbol("append_any")); - if (jl_append_any_func == NULL) { - // error if append_any not available - JL_TYPECHK(apply, tuple, jl_typeof(args[i])); - } - } - jl_array_t *argarr = NULL; - JL_GC_PUSH2(&argarr, &f); - args[0] = jl_append_any_func; - argarr = (jl_array_t*)jl_apply(args, nargs); - assert(jl_typeis(argarr, jl_array_any_type)); - jl_array_grow_beg(argarr, 1); - jl_array_ptr_set(argarr, 0, f); - args[0] = f; - jl_value_t *result = jl_apply(jl_array_ptr_data(argarr), jl_array_len(argarr)); - JL_GC_POP(); - return result; + extra += 1; } } - jl_value_t **newargs; - n++; - int onstack = (n < jl_page_size/sizeof(jl_value_t*)); - JL_GC_PUSHARGS(newargs, onstack ? n : 1); + if (extra && jl_iterate_func == NULL) { + jl_iterate_func = jl_get_function(jl_top_module, "iterate"); + if (jl_iterate_func == NULL) + jl_undefined_var_error(jl_symbol("iterate")); + } + // allocate space for the argument array and gc roots for it + // based on our previous estimates + // use the stack if we have a good estimate that it is small + // otherwise, use the heap and grow it incrementally + // and if there are any extra elements, we'll also need a couple extra roots + int onstack = (precount + 32 * extra < jl_page_size / sizeof(jl_value_t*)); + size_t stackalloc = onstack ? (precount + 4 * extra + (extra ? 16 : 0)) : 1; + size_t n_alloc; + jl_value_t **roots; + JL_GC_PUSHARGS(roots, stackalloc + (extra ? 2 : 0)); + jl_value_t **newargs = NULL; jl_svec_t *arg_heap = NULL; - if (!onstack) { + if (onstack) { + newargs = roots; + n_alloc = stackalloc; + } + else { // put arguments on the heap if there are too many - arg_heap = jl_alloc_svec(n); - newargs[0] = (jl_value_t*)arg_heap; - newargs = jl_svec_data(arg_heap); + n_alloc = 0; + _grow_to(&roots[0], &newargs, &arg_heap, &n_alloc, precount, extra); } - // GC Note: here we assume that the return value of `jl_svecref`, - // `jl_array_ptr_ref` will not be young if `arg_heap` becomes old - // since they are allocated before `arg_heap`. Otherwise, - // we need to add write barrier for !onstack newargs[0] = f; - n = 1; - for(i=1; i < nargs; i++) { + precount -= 1; + size_t n = 1; + for (i = 1; i < nargs; i++) { jl_value_t *ai = args[i]; if (jl_is_svec(ai)) { jl_svec_t *t = (jl_svec_t*)ai; - size_t al = jl_svec_len(t); - for(j=0; j < al; j++) + size_t j, al = jl_svec_len(t); + precount = (precount > al) ? precount - al : 0; + _grow_to(&roots[0], &newargs, &arg_heap, &n_alloc, n + precount + al, extra); + for (j = 0; j < al; j++) { newargs[n++] = jl_svecref(t, j); + // GC Note: here we assume that the return value of `jl_svecref` + // will not be young if `arg_heap` becomes old + // since they are allocated before `arg_heap`. Otherwise, + // we need to add write barrier for !onstack + } } else if (jl_is_tuple(ai) || jl_is_namedtuple(ai)) { - size_t al = jl_nfields(ai); - for(j=0; j < al; j++) { + size_t j, al = jl_nfields(ai); + precount = (precount > al) ? precount - al : 0; + _grow_to(&roots[0], &newargs, &arg_heap, &n_alloc, n + precount + al, extra); + for (j = 0; j < al; j++) { // jl_fieldref may allocate. newargs[n++] = jl_fieldref(ai, j); if (arg_heap) jl_gc_wb(arg_heap, newargs[n - 1]); } } - else { - assert(jl_is_array(ai)); + else if (jl_is_array(ai)) { jl_array_t *aai = (jl_array_t*)ai; - size_t al = jl_array_len(aai); + size_t j, al = jl_array_len(aai); + precount = (precount > al) ? precount - al : 0; + _grow_to(&roots[0], &newargs, &arg_heap, &n_alloc, n + precount + al, extra); if (aai->flags.ptrarray) { for (j = 0; j < al; j++) { jl_value_t *arg = jl_array_ptr_ref(aai, j); - // apply with array splatting may have embedded NULL value - // #11772 + // apply with array splatting may have embedded NULL value (#11772) if (__unlikely(arg == NULL)) jl_throw(jl_undefref_exception); newargs[n++] = arg; + if (arg_heap) + jl_gc_wb(arg_heap, arg); } } else { @@ -559,6 +595,33 @@ JL_CALLABLE(jl_f__apply) } } } + else { + assert(extra > 0); + jl_value_t *args[3]; + args[0] = jl_iterate_func; + args[1] = ai; + jl_value_t *next = jl_apply(args, 2); + while (next != jl_nothing) { + roots[stackalloc] = next; + jl_value_t *value = jl_fieldref(next, 0); + roots[stackalloc + 1] = next; + jl_value_t *state = jl_fieldref(next, 1); + roots[stackalloc] = state; + _grow_to(&roots[0], &newargs, &arg_heap, &n_alloc, n + precount + 1, extra); + newargs[n++] = value; + if (arg_heap) + jl_gc_wb(arg_heap, value); + roots[stackalloc + 1] = NULL; + args[2] = state; + next = jl_apply(args, 3); + } + roots[stackalloc] = NULL; + extra -= 1; + } + } + if (arg_heap) { + // optimization: keep only the first root, free the others + ((void**)roots)[-2] = (void*)(((size_t)1) << 1); } jl_value_t *result = jl_apply(newargs, n); JL_GC_POP(); diff --git a/src/module.c b/src/module.c index 5651a069491ac..ae7520e09830f 100644 --- a/src/module.c +++ b/src/module.c @@ -15,7 +15,6 @@ jl_module_t *jl_main_module = NULL; jl_module_t *jl_core_module = NULL; jl_module_t *jl_base_module = NULL; jl_module_t *jl_top_module = NULL; -extern jl_function_t *jl_append_any_func; JL_DLLEXPORT jl_module_t *jl_new_module(jl_sym_t *name) { @@ -77,7 +76,6 @@ JL_DLLEXPORT void jl_set_istopmod(jl_module_t *self, uint8_t isprimary) self->istopmod = 1; if (isprimary) { jl_top_module = self; - jl_append_any_func = NULL; } } diff --git a/test/core.jl b/test/core.jl index d25568f8adf53..6e965dbb1870d 100644 --- a/test/core.jl +++ b/test/core.jl @@ -4957,6 +4957,14 @@ let a = fill(["sdf"], 2*10^6), temp_vcat(x...) = vcat(x...) @test b[1] == b[end] == "sdf" end +# test for splatting of something fairly large and unusual (not builtin or pre-countable) +@noinline splat10981(a...) = a +for trail in ((), ntuple(_ -> (), 4 * 10^7)) # 150 / 300 MB of pointers + got = splat10981((1, 2, "3")..., (trail...)..., Core.svec("4",)..., (5 => 6)..., (trail...)..., ([i => j for i in 1:100, j=2.0:2:20]...)..., ntuple(identity, 1000)..., (trail...)...) + expected = (1,2,"3","4",5,6,1,2.0,2,2.0,3,2.0,4,2.0,5,2.0,6,2.0,7,2.0,8,2.0,9,2.0,10,2.0,11,2.0,12,2.0,13,2.0,14,2.0,15,2.0,16,2.0,17,2.0,18,2.0,19,2.0,20,2.0,21,2.0,22,2.0,23,2.0,24,2.0,25,2.0,26,2.0,27,2.0,28,2.0,29,2.0,30,2.0,31,2.0,32,2.0,33,2.0,34,2.0,35,2.0,36,2.0,37,2.0,38,2.0,39,2.0,40,2.0,41,2.0,42,2.0,43,2.0,44,2.0,45,2.0,46,2.0,47,2.0,48,2.0,49,2.0,50,2.0,51,2.0,52,2.0,53,2.0,54,2.0,55,2.0,56,2.0,57,2.0,58,2.0,59,2.0,60,2.0,61,2.0,62,2.0,63,2.0,64,2.0,65,2.0,66,2.0,67,2.0,68,2.0,69,2.0,70,2.0,71,2.0,72,2.0,73,2.0,74,2.0,75,2.0,76,2.0,77,2.0,78,2.0,79,2.0,80,2.0,81,2.0,82,2.0,83,2.0,84,2.0,85,2.0,86,2.0,87,2.0,88,2.0,89,2.0,90,2.0,91,2.0,92,2.0,93,2.0,94,2.0,95,2.0,96,2.0,97,2.0,98,2.0,99,2.0,100,2.0,1,4.0,2,4.0,3,4.0,4,4.0,5,4.0,6,4.0,7,4.0,8,4.0,9,4.0,10,4.0,11,4.0,12,4.0,13,4.0,14,4.0,15,4.0,16,4.0,17,4.0,18,4.0,19,4.0,20,4.0,21,4.0,22,4.0,23,4.0,24,4.0,25,4.0,26,4.0,27,4.0,28,4.0,29,4.0,30,4.0,31,4.0,32,4.0,33,4.0,34,4.0,35,4.0,36,4.0,37,4.0,38,4.0,39,4.0,40,4.0,41,4.0,42,4.0,43,4.0,44,4.0,45,4.0,46,4.0,47,4.0,48,4.0,49,4.0,50,4.0,51,4.0,52,4.0,53,4.0,54,4.0,55,4.0,56,4.0,57,4.0,58,4.0,59,4.0,60,4.0,61,4.0,62,4.0,63,4.0,64,4.0,65,4.0,66,4.0,67,4.0,68,4.0,69,4.0,70,4.0,71,4.0,72,4.0,73,4.0,74,4.0,75,4.0,76,4.0,77,4.0,78,4.0,79,4.0,80,4.0,81,4.0,82,4.0,83,4.0,84,4.0,85,4.0,86,4.0,87,4.0,88,4.0,89,4.0,90,4.0,91,4.0,92,4.0,93,4.0,94,4.0,95,4.0,96,4.0,97,4.0,98,4.0,99,4.0,100,4.0,1,6.0,2,6.0,3,6.0,4,6.0,5,6.0,6,6.0,7,6.0,8,6.0,9,6.0,10,6.0,11,6.0,12,6.0,13,6.0,14,6.0,15,6.0,16,6.0,17,6.0,18,6.0,19,6.0,20,6.0,21,6.0,22,6.0,23,6.0,24,6.0,25,6.0,26,6.0,27,6.0,28,6.0,29,6.0,30,6.0,31,6.0,32,6.0,33,6.0,34,6.0,35,6.0,36,6.0,37,6.0,38,6.0,39,6.0,40,6.0,41,6.0,42,6.0,43,6.0,44,6.0,45,6.0,46,6.0,47,6.0,48,6.0,49,6.0,50,6.0,51,6.0,52,6.0,53,6.0,54,6.0,55,6.0,56,6.0,57,6.0,58,6.0,59,6.0,60,6.0,61,6.0,62,6.0,63,6.0,64,6.0,65,6.0,66,6.0,67,6.0,68,6.0,69,6.0,70,6.0,71,6.0,72,6.0,73,6.0,74,6.0,75,6.0,76,6.0,77,6.0,78,6.0,79,6.0,80,6.0,81,6.0,82,6.0,83,6.0,84,6.0,85,6.0,86,6.0,87,6.0,88,6.0,89,6.0,90,6.0,91,6.0,92,6.0,93,6.0,94,6.0,95,6.0,96,6.0,97,6.0,98,6.0,99,6.0,100,6.0,1,8.0,2,8.0,3,8.0,4,8.0,5,8.0,6,8.0,7,8.0,8,8.0,9,8.0,10,8.0,11,8.0,12,8.0,13,8.0,14,8.0,15,8.0,16,8.0,17,8.0,18,8.0,19,8.0,20,8.0,21,8.0,22,8.0,23,8.0,24,8.0,25,8.0,26,8.0,27,8.0,28,8.0,29,8.0,30,8.0,31,8.0,32,8.0,33,8.0,34,8.0,35,8.0,36,8.0,37,8.0,38,8.0,39,8.0,40,8.0,41,8.0,42,8.0,43,8.0,44,8.0,45,8.0,46,8.0,47,8.0,48,8.0,49,8.0,50,8.0,51,8.0,52,8.0,53,8.0,54,8.0,55,8.0,56,8.0,57,8.0,58,8.0,59,8.0,60,8.0,61,8.0,62,8.0,63,8.0,64,8.0,65,8.0,66,8.0,67,8.0,68,8.0,69,8.0,70,8.0,71,8.0,72,8.0,73,8.0,74,8.0,75,8.0,76,8.0,77,8.0,78,8.0,79,8.0,80,8.0,81,8.0,82,8.0,83,8.0,84,8.0,85,8.0,86,8.0,87,8.0,88,8.0,89,8.0,90,8.0,91,8.0,92,8.0,93,8.0,94,8.0,95,8.0,96,8.0,97,8.0,98,8.0,99,8.0,100,8.0,1,10.0,2,10.0,3,10.0,4,10.0,5,10.0,6,10.0,7,10.0,8,10.0,9,10.0,10,10.0,11,10.0,12,10.0,13,10.0,14,10.0,15,10.0,16,10.0,17,10.0,18,10.0,19,10.0,20,10.0,21,10.0,22,10.0,23,10.0,24,10.0,25,10.0,26,10.0,27,10.0,28,10.0,29,10.0,30,10.0,31,10.0,32,10.0,33,10.0,34,10.0,35,10.0,36,10.0,37,10.0,38,10.0,39,10.0,40,10.0,41,10.0,42,10.0,43,10.0,44,10.0,45,10.0,46,10.0,47,10.0,48,10.0,49,10.0,50,10.0,51,10.0,52,10.0,53,10.0,54,10.0,55,10.0,56,10.0,57,10.0,58,10.0,59,10.0,60,10.0,61,10.0,62,10.0,63,10.0,64,10.0,65,10.0,66,10.0,67,10.0,68,10.0,69,10.0,70,10.0,71,10.0,72,10.0,73,10.0,74,10.0,75,10.0,76,10.0,77,10.0,78,10.0,79,10.0,80,10.0,81,10.0,82,10.0,83,10.0,84,10.0,85,10.0,86,10.0,87,10.0,88,10.0,89,10.0,90,10.0,91,10.0,92,10.0,93,10.0,94,10.0,95,10.0,96,10.0,97,10.0,98,10.0,99,10.0,100,10.0,1,12.0,2,12.0,3,12.0,4,12.0,5,12.0,6,12.0,7,12.0,8,12.0,9,12.0,10,12.0,11,12.0,12,12.0,13,12.0,14,12.0,15,12.0,16,12.0,17,12.0,18,12.0,19,12.0,20,12.0,21,12.0,22,12.0,23,12.0,24,12.0,25,12.0,26,12.0,27,12.0,28,12.0,29,12.0,30,12.0,31,12.0,32,12.0,33,12.0,34,12.0,35,12.0,36,12.0,37,12.0,38,12.0,39,12.0,40,12.0,41,12.0,42,12.0,43,12.0,44,12.0,45,12.0,46,12.0,47,12.0,48,12.0,49,12.0,50,12.0,51,12.0,52,12.0,53,12.0,54,12.0,55,12.0,56,12.0,57,12.0,58,12.0,59,12.0,60,12.0,61,12.0,62,12.0,63,12.0,64,12.0,65,12.0,66,12.0,67,12.0,68,12.0,69,12.0,70,12.0,71,12.0,72,12.0,73,12.0,74,12.0,75,12.0,76,12.0,77,12.0,78,12.0,79,12.0,80,12.0,81,12.0,82,12.0,83,12.0,84,12.0,85,12.0,86,12.0,87,12.0,88,12.0,89,12.0,90,12.0,91,12.0,92,12.0,93,12.0,94,12.0,95,12.0,96,12.0,97,12.0,98,12.0,99,12.0,100,12.0,1,14.0,2,14.0,3,14.0,4,14.0,5,14.0,6,14.0,7,14.0,8,14.0,9,14.0,10,14.0,11,14.0,12,14.0,13,14.0,14,14.0,15,14.0,16,14.0,17,14.0,18,14.0,19,14.0,20,14.0,21,14.0,22,14.0,23,14.0,24,14.0,25,14.0,26,14.0,27,14.0,28,14.0,29,14.0,30,14.0,31,14.0,32,14.0,33,14.0,34,14.0,35,14.0,36,14.0,37,14.0,38,14.0,39,14.0,40,14.0,41,14.0,42,14.0,43,14.0,44,14.0,45,14.0,46,14.0,47,14.0,48,14.0,49,14.0,50,14.0,51,14.0,52,14.0,53,14.0,54,14.0,55,14.0,56,14.0,57,14.0,58,14.0,59,14.0,60,14.0,61,14.0,62,14.0,63,14.0,64,14.0,65,14.0,66,14.0,67,14.0,68,14.0,69,14.0,70,14.0,71,14.0,72,14.0,73,14.0,74,14.0,75,14.0,76,14.0,77,14.0,78,14.0,79,14.0,80,14.0,81,14.0,82,14.0,83,14.0,84,14.0,85,14.0,86,14.0,87,14.0,88,14.0,89,14.0,90,14.0,91,14.0,92,14.0,93,14.0,94,14.0,95,14.0,96,14.0,97,14.0,98,14.0,99,14.0,100,14.0,1,16.0,2,16.0,3,16.0,4,16.0,5,16.0,6,16.0,7,16.0,8,16.0,9,16.0,10,16.0,11,16.0,12,16.0,13,16.0,14,16.0,15,16.0,16,16.0,17,16.0,18,16.0,19,16.0,20,16.0,21,16.0,22,16.0,23,16.0,24,16.0,25,16.0,26,16.0,27,16.0,28,16.0,29,16.0,30,16.0,31,16.0,32,16.0,33,16.0,34,16.0,35,16.0,36,16.0,37,16.0,38,16.0,39,16.0,40,16.0,41,16.0,42,16.0,43,16.0,44,16.0,45,16.0,46,16.0,47,16.0,48,16.0,49,16.0,50,16.0,51,16.0,52,16.0,53,16.0,54,16.0,55,16.0,56,16.0,57,16.0,58,16.0,59,16.0,60,16.0,61,16.0,62,16.0,63,16.0,64,16.0,65,16.0,66,16.0,67,16.0,68,16.0,69,16.0,70,16.0,71,16.0,72,16.0,73,16.0,74,16.0,75,16.0,76,16.0,77,16.0,78,16.0,79,16.0,80,16.0,81,16.0,82,16.0,83,16.0,84,16.0,85,16.0,86,16.0,87,16.0,88,16.0,89,16.0,90,16.0,91,16.0,92,16.0,93,16.0,94,16.0,95,16.0,96,16.0,97,16.0,98,16.0,99,16.0,100,16.0,1,18.0,2,18.0,3,18.0,4,18.0,5,18.0,6,18.0,7,18.0,8,18.0,9,18.0,10,18.0,11,18.0,12,18.0,13,18.0,14,18.0,15,18.0,16,18.0,17,18.0,18,18.0,19,18.0,20,18.0,21,18.0,22,18.0,23,18.0,24,18.0,25,18.0,26,18.0,27,18.0,28,18.0,29,18.0,30,18.0,31,18.0,32,18.0,33,18.0,34,18.0,35,18.0,36,18.0,37,18.0,38,18.0,39,18.0,40,18.0,41,18.0,42,18.0,43,18.0,44,18.0,45,18.0,46,18.0,47,18.0,48,18.0,49,18.0,50,18.0,51,18.0,52,18.0,53,18.0,54,18.0,55,18.0,56,18.0,57,18.0,58,18.0,59,18.0,60,18.0,61,18.0,62,18.0,63,18.0,64,18.0,65,18.0,66,18.0,67,18.0,68,18.0,69,18.0,70,18.0,71,18.0,72,18.0,73,18.0,74,18.0,75,18.0,76,18.0,77,18.0,78,18.0,79,18.0,80,18.0,81,18.0,82,18.0,83,18.0,84,18.0,85,18.0,86,18.0,87,18.0,88,18.0,89,18.0,90,18.0,91,18.0,92,18.0,93,18.0,94,18.0,95,18.0,96,18.0,97,18.0,98,18.0,99,18.0,100,18.0,1,20.0,2,20.0,3,20.0,4,20.0,5,20.0,6,20.0,7,20.0,8,20.0,9,20.0,10,20.0,11,20.0,12,20.0,13,20.0,14,20.0,15,20.0,16,20.0,17,20.0,18,20.0,19,20.0,20,20.0,21,20.0,22,20.0,23,20.0,24,20.0,25,20.0,26,20.0,27,20.0,28,20.0,29,20.0,30,20.0,31,20.0,32,20.0,33,20.0,34,20.0,35,20.0,36,20.0,37,20.0,38,20.0,39,20.0,40,20.0,41,20.0,42,20.0,43,20.0,44,20.0,45,20.0,46,20.0,47,20.0,48,20.0,49,20.0,50,20.0,51,20.0,52,20.0,53,20.0,54,20.0,55,20.0,56,20.0,57,20.0,58,20.0,59,20.0,60,20.0,61,20.0,62,20.0,63,20.0,64,20.0,65,20.0,66,20.0,67,20.0,68,20.0,69,20.0,70,20.0,71,20.0,72,20.0,73,20.0,74,20.0,75,20.0,76,20.0,77,20.0,78,20.0,79,20.0,80,20.0,81,20.0,82,20.0,83,20.0,84,20.0,85,20.0,86,20.0,87,20.0,88,20.0,89,20.0,90,20.0,91,20.0,92,20.0,93,20.0,94,20.0,95,20.0,96,20.0,97,20.0,98,20.0,99,20.0,100,20.0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000) + @test got == expected +end + # issue #17255, take `deferred_alloc` into account # when calculating total allocation size. @noinline function f17255(n) From 4770b7e2b048482165823800951b3d07095b26bd Mon Sep 17 00:00:00 2001 From: Mustafa M Date: Mon, 6 May 2019 16:14:20 -0400 Subject: [PATCH 07/34] Simplify Appveyor build script (#31917) --- .appveyor.yml | 46 +++--- contrib/windows/appveyor_build.sh | 215 +++-------------------------- contrib/windows/install-cygwin.ps1 | 9 -- 3 files changed, 40 insertions(+), 230 deletions(-) delete mode 100644 contrib/windows/install-cygwin.ps1 diff --git a/.appveyor.yml b/.appveyor.yml index 6f0ca2d04c40a..46db3cc8cd6bd 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -1,9 +1,19 @@ environment: -# USEMSVC: "1" + global: + CCACHE_DIR: C:\ccache + CYG_MIRROR: http://cygwin.mirror.constant.com + CYG_CACHE: '%CYG_ROOT%\var\cache\setup' + CYG_BASH: '%CYG_ROOT%\bin\bash' + matrix: - - ARCH: "i686" + - MINGW_ARCH: "i686" + CYG_ROOT: C:\cygwin + CYG_SETUP: setup-x86.exe JULIA_TEST_MAXRSS_MB: 500 - - ARCH: "x86_64" + + - MINGW_ARCH: "x86_64" + CYG_ROOT: C:\cygwin64 + CYG_SETUP: setup-x86_64.exe JULIA_TEST_MAXRSS_MB: 450 # Only build on master and PR's for now, not personal branches @@ -30,35 +40,23 @@ notifications: on_build_failure: false on_build_status_changed: false -clone_depth: 50 +cache: + - '%CYG_CACHE%' + - '%CCACHE_DIR%' init: -# Carriage returns are bad - git config --global core.autocrlf input -cache: -# Cache large downloads to avoid network unreliability - - C:\cygdownloads - - llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z - - llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z - - C:\ccache +install: + - '%CYG_ROOT%\%CYG_SETUP% -gnq -R "%CYG_ROOT%" -s "%CYG_MIRROR%" -l "%CYG_CACHE%" -P make,python2,libiconv,curl,time,p7zip,ccache,mingw64-%MINGW_ARCH%-gcc-g++,mingw64-%MINGW_ARCH%-gcc-fortran > NULL 2>&1' + - '%CYG_ROOT%\bin\cygcheck -dc cygwin' build_script: -# If there's a newer build queued for the same PR, cancel this one - - ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod ` - https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | ` - Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { ` - throw "There are newer queued builds for this pull request, failing early." } -# Remove C:\MinGW\bin from the path, the version of MinGW installed on -# AppVeyor is not compatible with the cross-compiled Julia Windows binaries - - set PATH=%PATH:C:\MinGW\bin;=% -# Remove git's msys2 from path, since it conflicts with cygwin1.dll - - set PATH=%PATH:C:\Program Files\Git\usr\bin;=% - - ps: contrib/windows/install-cygwin.ps1 -# - '"%VS120COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64' - - C:\cygwin-%ARCH%\bin\sh.exe --login /cygdrive/c/projects/julia/contrib/windows/appveyor_build.sh + - 'echo Building Julia' + - '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER && ./contrib/windows/appveyor_build.sh"' test_script: + - 'echo Testing Julia' - usr\bin\julia -e "Base.require(Main, :InteractiveUtils).versioninfo()" - usr\bin\julia --sysimage-native-code=no -e "true" - cd julia-* && .\bin\julia.exe --check-bounds=yes share\julia\test\runtests.jl all && diff --git a/contrib/windows/appveyor_build.sh b/contrib/windows/appveyor_build.sh index f9cc6a06ec9bd..f4a00ad56a9f2 100755 --- a/contrib/windows/appveyor_build.sh +++ b/contrib/windows/appveyor_build.sh @@ -1,216 +1,37 @@ #!/bin/sh # This file is a part of Julia. License is MIT: https://julialang.org/license -# Script to compile Windows Julia, using binary dependencies from nightlies. -# Should work in MSYS assuming 7zip is installed and on the path, -# or Cygwin or Linux assuming make, curl, p7zip, and mingw64-$ARCH-gcc-g++ -# are installed +# Script to compile Windows Julia on Appveyor using a Cygwin host +# make sure you cd to the main julia directory beforing running +# uses environment variables defined in .appveyor.yml: MINGW_ARCH -# Run in top-level Julia directory -cd `dirname "$0"`/../.. # Stop on error set -e -# Make sure stdin exists (not true on appveyor msys2) -exec < /dev/null -curlflags="curl --retry 10 -k -L -y 5" -checksum_download() { - # checksum_download filename url - f=$1 - url=$2 - if [ -e "$f" ]; then - deps/tools/jlchecksum "$f" 2> /dev/null && return - echo "Checksum for '$f' changed, download again." >&2 - fi - echo "Downloading '$f'" - $curlflags -O "$url" - deps/tools/jlchecksum "$f" -} +# Make sure stdin exists (apparently sometimes needed for mysys2?) +exec < /dev/null -# If ARCH environment variable not set, choose based on uname -m -if [ -z "$ARCH" -a -z "$XC_HOST" ]; then - export ARCH=`uname -m` -elif [ -z "$ARCH" ]; then - ARCH=`echo $XC_HOST | sed 's/-w64-mingw32//'` -fi +export TERM=ansi # make sure escape sequences print out properly on appveyor? -echo "" > Make.user -echo "" > get-deps.log # set MARCH for consistency with how binaries get built -if [ "$ARCH" = x86_64 ]; then - bits=64 - archsuffix=64 - exc=seh +if [ "$MINGW_ARCH" = x86_64 ]; then echo "override MARCH = x86-64" >> Make.user - echo 'USE_BLAS64 = 1' >> Make.user - echo 'LIBBLAS = -L$(JULIAHOME)/usr/bin -lopenblas64_' >> Make.user - echo 'LIBBLASNAME = libopenblas64_' >> Make.user -else - bits=32 - archsuffix=86 - exc=sjlj +elif [ "$MINGW_ARCH" = i686 ]; then echo "override MARCH = pentium4" >> Make.user - echo 'LIBBLAS = -L$(JULIAHOME)/usr/bin -lopenblas' >> Make.user - echo 'LIBBLASNAME = libopenblas' >> Make.user -fi -echo "override JULIA_CPU_TARGET=generic;native" >> Make.user - -# Set XC_HOST if in Cygwin or Linux -case $(uname) in - CYGWIN*) - if [ -z "$XC_HOST" ]; then - XC_HOST="$ARCH-w64-mingw32" - echo "XC_HOST = $XC_HOST" >> Make.user - fi - CROSS_COMPILE="$XC_HOST-" - # Set BUILD_MACHINE and HOSTCC in case we don't have Cygwin gcc installed - echo "override BUILD_MACHINE = $ARCH-pc-cygwin" >> Make.user - if [ -z "`which gcc 2>/dev/null`" ]; then - echo 'override HOSTCC = $(CROSS_COMPILE)gcc' >> Make.user - fi - SEVENZIP="7z" - ;; - Linux) - if [ -z "$XC_HOST" ]; then - XC_HOST="$ARCH-w64-mingw32" - echo "XC_HOST = $XC_HOST" >> Make.user - fi - CROSS_COMPILE="$XC_HOST-" - make win-extras >> get-deps.log - SEVENZIP="wine dist-extras/7z.exe" - ;; - *) - CROSS_COMPILE="" - SEVENZIP="7z" - ;; -esac - -# Download most recent Julia binary for dependencies -if ! [ -e julia-installer.exe ]; then - f=julia-latest-win$bits.exe - echo "Downloading $f" - $curlflags -O https://julialangnightlies-s3.julialang.org/bin/winnt/x$archsuffix/$f - echo "Extracting $f" - $SEVENZIP x -y $f >> get-deps.log -fi -mkdir -p usr -for i in bin/*.dll; do - $SEVENZIP e -y julia-installer.exe "$i" \ - -ousr\\`dirname $i | sed -e 's|/julia||' -e 's|/|\\\\|g'` >> get-deps.log -done -for i in share/julia/base/pcre_h.jl; do - $SEVENZIP e -y julia-installer.exe "$i" -obase >> get-deps.log - # Touch the file to adjust the modification time, thereby (hopefully) avoiding - # issues with clock skew during the build - touch "base/$(basename $i)" -done -echo "override PCRE_INCL_PATH =" >> Make.user -# Remove libjulia.dll if it was copied from downloaded binary -rm -f usr/bin/libjulia.dll -rm -f usr/bin/libjulia-debug.dll -rm -f usr/bin/libgcc_s_s*-1.dll -rm -f usr/bin/libgfortran-3.dll -rm -f usr/bin/libquadmath-0.dll -rm -f usr/bin/libssp-0.dll -rm -f usr/bin/libstdc++-6.dll -rm -f usr/bin/libccalltest.dll -rm -f usr/bin/libpthread.dll - -if [ -z "$USEMSVC" ]; then - if [ -z "`which ${CROSS_COMPILE}gcc 2>/dev/null`" ]; then - f=$ARCH-4.9.2-release-win32-$exc-rt_v4-rev3.7z - checksum_download \ - "$f" "https://bintray.com/artifact/download/tkelman/generic/$f" - echo "Extracting $f" - $SEVENZIP x -y $f >> get-deps.log - export PATH=$PWD/mingw$bits/bin:$PATH - # If there is a version of make.exe here, it is mingw32-make which won't work - rm -f mingw$bits/bin/make.exe - fi - export AR=${CROSS_COMPILE}ar - mkdir -p usr/tools -else - echo "override USEMSVC = 1" >> Make.user - echo "override ARCH = $ARCH" >> Make.user - echo "override XC_HOST = " >> Make.user - export CC="$PWD/deps/srccache/libuv/compile cl -nologo -MD -Z7" - export AR="$PWD/deps/srccache/libuv/ar-lib lib" - export LD="$PWD/linkld link" - echo "override CC = $CC" >> Make.user - echo 'override CXX = $(CC) -EHsc' >> Make.user - echo "override AR = $AR" >> Make.user - echo "override LD = $LD -DEBUG" >> Make.user - - f=llvm-3.3-$ARCH-msvc12-juliadeps.7z - checksum_download \ - "$f" "https://bintray.com/artifact/download/tkelman/generic/$f" - echo "Extracting $f" - $SEVENZIP x -y $f >> get-deps.log fi +echo "override XC_HOST = $MINGW_ARCH-w64-mingw32" >> Make.user +echo "override JULIA_CPU_TARGET = generic;native" >> Make.user -if [ -z "`which make 2>/dev/null`" ]; then - if [ -n "`uname | grep CYGWIN`" ]; then - echo "Install the Cygwin package for 'make' and try again." - exit 1 - fi - f="/make/make-3.81-2/make-3.81-2-msys-1.0.11-bin.tar" - if ! [ -e `basename $f.lzma` ]; then - echo "Downloading `basename $f`" - $curlflags -O http://sourceforge.net/projects/mingw/files/MSYS/Base$f.lzma - fi - $SEVENZIP x -y `basename $f.lzma` >> get-deps.log - tar -xf `basename $f` - export PATH=$PWD/bin:$PATH -fi - - -for lib in SUITESPARSE ARPACK BLAS LAPACK \ - GMP MPFR PCRE LIBUNWIND; do - echo "USE_SYSTEM_$lib = 1" >> Make.user -done -echo 'override LIBLAPACK = $(LIBBLAS)' >> Make.user -echo 'override LIBLAPACKNAME = $(LIBBLASNAME)' >> Make.user - -# Remaining dependencies: -# libuv since its static lib is no longer included in the binaries -# openlibm since we need it as a static library to work properly -# utf8proc since its headers are not in the binary download -echo 'override DEP_LIBS = libuv utf8proc' >> Make.user - -if [ -n "$USEMSVC" ]; then - # Openlibm doesn't build well with MSVC right now - echo 'USE_SYSTEM_OPENLIBM = 1' >> Make.user - # Since we don't have a static library for openlibm - echo 'override UNTRUSTED_SYSTEM_LIBM = 0' >> Make.user - - # Compile libuv and utf8proc without -TP first, then add -TP - make -C deps install-libuv install-utf8proc - cp usr/lib/uv.lib usr/lib/libuv.a - echo 'override CC += -TP' >> Make.user - echo 'override DEP_LIBS += dsfmt' >> Make.user - - # Create a modified version of compile for wrapping link - sed -e 's/-link//' -e 's/cl/link/g' -e 's/ -Fe/ -OUT:/' \ - -e 's|$dir/$lib|$dir/lib$lib|g' deps/srccache/libuv/compile > linkld - chmod +x linkld -else - # Use BinaryBuilder - echo 'USE_BINARYBUILDER_LLVM = 1' >> Make.user - echo 'USE_BINARYBUILDER_OPENBLAS = 1' >> Make.user - echo 'USE_BINARYBUILDER_SUITESPARSE = 1' >> Make.user - echo 'BINARYBUILDER_LLVM_ASSERTS = 1' >> Make.user - echo 'override DEP_LIBS += llvm openlibm openblas suitesparse' >> Make.user - export CCACHE_DIR=/cygdrive/c/ccache - echo 'USECCACHE=1' >> Make.user - make check-whitespace - make VERBOSE=1 -C base version_git.jl.phony - echo 'NO_GIT = 1' >> Make.user -fi +echo 'USE_BINARYBUILDER = 1' >> Make.user +echo 'BINARYBUILDER_LLVM_ASSERTS = 1' >> Make.user echo 'FORCE_ASSERTIONS = 1' >> Make.user +echo 'USECCACHE = 1' >> Make.user +echo 'VERBOSE = 1' >> Make.user cat Make.user -make -j3 VERBOSE=1 release -make -j3 VERBOSE=1 install -make VERBOSE=1 JULIA=../../usr/bin/julia.exe BIN=. "$(make print-CC)" -C test/embedding release +make check-whitespace +make -j3 release +make -j3 install +make JULIA=../../usr/bin/julia.exe BIN=. "$(make print-CC)" -C test/embedding release make build-stats ccache -s diff --git a/contrib/windows/install-cygwin.ps1 b/contrib/windows/install-cygwin.ps1 deleted file mode 100644 index 480ecd19fb8fd..0000000000000 --- a/contrib/windows/install-cygwin.ps1 +++ /dev/null @@ -1,9 +0,0 @@ -$setup = "setup-$env:ARCH.exe".Replace("i686", "x86") - -mkdir -Force C:\cygdownloads | Out-Null -(new-object net.webclient).DownloadFile( - "https://cache.julialang.org/https://cygwin.com/$setup", "C:\cygdownloads\$setup") -& "C:\cygdownloads\$setup" -q -n -R C:\cygwin-$env:ARCH ` - -l C:\cygdownloads -s http://mirrors.kernel.org/sourceware/cygwin -g -I ` - -P "make,python2,libiconv,curl,time,p7zip,ccache,mingw64-$env:ARCH-gcc-g++,mingw64-$env:ARCH-gcc-fortran" | Where-Object ` - -FilterScript {$_ -notlike "Installing file *"} | Write-Output From 11ce4d1936c913449d074cf352bd79a2737e0392 Mon Sep 17 00:00:00 2001 From: Fredrik Ekre Date: Mon, 6 May 2019 22:43:15 +0200 Subject: [PATCH 08/34] Fix failing doctests from PR #31246. (#31934) --- base/meta.jl | 22 +++++++++++----------- doc/src/manual/metaprogramming.md | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/base/meta.jl b/base/meta.jl index 4798d37cf9d28..fb4513b639251 100644 --- a/base/meta.jl +++ b/base/meta.jl @@ -13,7 +13,7 @@ export quot, @dump """ - quot(ex)::Expr + Meta.quot(ex)::Expr Quote expression `ex` to produce an expression with head `quote`. This can for instance be used to represent objects of type `Expr` in the AST. See also the manual section about [QuoteNode](@ref man-quote-node). @@ -23,20 +23,20 @@ See also the manual section about [QuoteNode](@ref man-quote-node). julia> eval(quot(:x)) :x -julia> dump(quot(:x)) +julia> dump(Meta.quot(:x)) Expr head: Symbol quote args: Array{Any}((1,)) 1: Symbol x -julia> eval(quot(:(1+2))) +julia> eval(Meta.quot(:(1+2))) :(1 + 2) ``` """ quot(ex) = Expr(:quote, ex) """ - isexpr(ex, head[, n])::Bool + Meta.isexpr(ex, head[, n])::Bool Check if `ex` is an expression with head `head` and `n` arguments. @@ -45,19 +45,19 @@ Check if `ex` is an expression with head `head` and `n` arguments. julia> ex = :(f(x)) :(f(x)) -julia> isexpr(ex, :block) +julia> Meta.isexpr(ex, :block) false -julia> isexpr(ex, :call) +julia> Meta.isexpr(ex, :call) true -julia> isexpr(ex, [:block, :call]) # multiple possible heads +julia> Meta.isexpr(ex, [:block, :call]) # multiple possible heads true -julia> isexpr(ex, :call, 1) +julia> Meta.isexpr(ex, :call, 1) false -julia> isexpr(ex, :call, 2) +julia> Meta.isexpr(ex, :call, 2) true ``` """ @@ -66,13 +66,13 @@ isexpr(@nospecialize(ex), heads::Union{Set,Vector,Tuple}) = isa(ex, Expr) && in( isexpr(@nospecialize(ex), heads, n::Int) = isexpr(ex, heads) && length(ex.args) == n """ - show_sexpr([io::IO,], ex) + Meta.show_sexpr([io::IO,], ex) Show expression `ex` as a lisp style S-expression. # Examples ```jldoctest -julia> show_sexpr(:(f(x, g(y,z)))) +julia> Meta.show_sexpr(:(f(x, g(y,z)))) (:call, :f, :x, (:call, :g, :y, :z)) ``` """ diff --git a/doc/src/manual/metaprogramming.md b/doc/src/manual/metaprogramming.md index 8fdad8147c042..ae11362fafe2d 100644 --- a/doc/src/manual/metaprogramming.md +++ b/doc/src/manual/metaprogramming.md @@ -330,7 +330,7 @@ However, in some situations it is necessary to quote code *without* performing i This kind of quoting does not yet have syntax, but is represented internally as an object of type `QuoteNode`: ```jldoctest interp1 -julia> eval(quot(Expr(:$, :(1+2)))) +julia> eval(Meta.quot(Expr(:$, :(1+2)))) 3 julia> eval(QuoteNode(Expr(:$, :(1+2)))) From 9de07ce5694897ba2e5d61979800600d5dbd72e7 Mon Sep 17 00:00:00 2001 From: Fredrik Ekre Date: Mon, 6 May 2019 15:55:32 +0200 Subject: [PATCH 09/34] Fix optind in getopt on musl libc. On exit optind points to the last non-opt argument of argv, but in the case where there are only options optind does not go beyond argc, except on musl libc, where it becomes argc + 1. --- src/jloptions.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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) From c9777b0ab4db219f0721506d9cca2412e41408fa Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Wed, 8 May 2019 10:34:40 -0400 Subject: [PATCH 10/34] generate_precompile script: try to improve reliability (#30040) TTY objects are inherently unreliable input channels (documented, per posix design), so try to slow down the rate of input and speed up the rate of output by watching the output stream more closely, and detecting intermediate errors. And also just general cleanup some of our IO handling. --- base/filesystem.jl | 18 +++-- base/iostream.jl | 15 ++-- contrib/generate_precompile.jl | 139 ++++++++++++++++----------------- stdlib/LibGit2/test/libgit2.jl | 19 +++-- stdlib/REPL/test/repl.jl | 41 ++++++---- test/testhelpers/FakePTYs.jl | 68 +++++++++++----- 6 files changed, 171 insertions(+), 129 deletions(-) diff --git a/base/filesystem.jl b/base/filesystem.jl index 7c252099afa02..6b61272cc893b 100644 --- a/base/filesystem.jl +++ b/base/filesystem.jl @@ -63,7 +63,7 @@ mutable struct File <: AbstractFile File(fd::OS_HANDLE) = new(true, fd) end if OS_HANDLE !== RawFD - File(fd::RawFD) = File(Libc._get_osfhandle(fd)) + File(fd::RawFD) = File(Libc._get_osfhandle(fd)) # TODO: calling close would now destroy the wrong handle end rawhandle(file::File) = file.handle @@ -94,12 +94,13 @@ function check_open(f::File) end function close(f::File) - check_open(f) - err = ccall(:jl_fs_close, Int32, (OS_HANDLE,), f.handle) - uv_error("close", err) - f.handle = INVALID_OS_HANDLE - f.open = false - return nothing + if isopen(f) + f.open = false + err = ccall(:jl_fs_close, Int32, (OS_HANDLE,), f.handle) + f.handle = INVALID_OS_HANDLE + uv_error("close", err) + end + nothing end # sendfile is the most efficient way to copy from a file descriptor @@ -159,7 +160,7 @@ end function read(f::File, ::Type{Char}) b0 = read(f, UInt8) - l = 8(4-leading_ones(b0)) + l = 8 * (4 - leading_ones(b0)) c = UInt32(b0) << 24 if l < 24 s = 16 @@ -176,6 +177,7 @@ function read(f::File, ::Type{Char}) end return reinterpret(Char, c) end + read(f::File, ::Type{T}) where {T<:AbstractChar} = T(read(f, Char)) # fallback function unsafe_read(f::File, p::Ptr{UInt8}, nel::UInt) diff --git a/base/iostream.jl b/base/iostream.jl index f518f1e9fac65..981bd83813bfe 100644 --- a/base/iostream.jl +++ b/base/iostream.jl @@ -488,18 +488,22 @@ function readbytes!(s::IOStream, b::Array{UInt8}, nb=length(b); all::Bool=true) end function read(s::IOStream) - sz = 0 - try # filesize is just a hint, so ignore if it fails - sz = filesize(s) + sz = try # filesize is just a hint, so ignore if `fstat` fails + filesize(s) + catch ex + ex isa IOError || rethrow() + Int64(0) + end + if sz > 0 pos = ccall(:ios_pos, Int64, (Ptr{Cvoid},), s.ios) if pos > 0 sz -= pos end - catch end - b = StringVector(sz<=0 ? 1024 : sz) + b = StringVector(sz <= 0 ? 1024 : sz) nr = readbytes_all!(s, b, typemax(Int)) resize!(b, nr) + return b end """ @@ -518,6 +522,7 @@ function read(s::IOStream, nb::Integer; all::Bool=true) b = Vector{UInt8}(undef, all && nb == typemax(Int) ? 1024 : nb) nr = readbytes!(s, b, nb, all=all) resize!(b, nr) + return b end ## peek ## diff --git a/contrib/generate_precompile.jl b/contrib/generate_precompile.jl index e3d9345563725..c66ef3cdad954 100644 --- a/contrib/generate_precompile.jl +++ b/contrib/generate_precompile.jl @@ -5,9 +5,7 @@ if !isempty(ARGS) end # Prevent this from being put into the Main namespace -let -M = Module() -@eval M begin +@eval Module() begin if !isdefined(Base, :uv_eventloop) Base.reinit_stdio() end @@ -36,7 +34,8 @@ f(1,2) cd("complet_path\t\t$CTRL_C """ -julia_cmd() = (julia = joinpath(Sys.BINDIR, Base.julia_exename()); `$julia`) +julia_exepath() = joinpath(Sys.BINDIR, Base.julia_exename()) + have_repl = haskey(Base.loaded_modules, Base.PkgId(Base.UUID("3fa0cd96-eef1-5676-8a61-b3b8758bbffb"), "REPL")) Pkg = get(Base.loaded_modules, @@ -47,14 +46,9 @@ if Pkg !== nothing precompile_script *= Pkg.precompile_script end -push!(LOAD_PATH, Sys.STDLIB) -using Sockets -Sockets.__init__() -using Libdl -empty!(LOAD_PATH) - function generate_precompile_statements() start_time = time() + debug_output = devnull # or stdout # Precompile a package mktempdir() do prec_path @@ -73,76 +67,76 @@ function generate_precompile_statements() end print("Generating precompile statements...") - sysimg = Base.unsafe_string(Base.JLOptions().image_file) - mktemp() do precompile_file, _ + mktemp() do precompile_file, precompile_file_h # Run a repl process and replay our script - repl_output_buffer = IOBuffer() - @static if Sys.iswindows() - # Fake being cygwin - pipename = """\\\\?\\pipe\\cygwin-$("0"^16)-pty10-abcdef""" - server = listen(pipename) - pty_slave = connect(pipename) - @assert ccall(:jl_ispty, Cint, (Ptr{Cvoid},), pty_slave.handle) == 1 - pty_master = accept(server) + pty_slave, pty_master = open_fake_pty() + blackhole = Sys.isunix() ? "/dev/null" : "nul" + if have_repl + cmdargs = ```--color=yes + -e 'import REPL; REPL.Terminals.is_precompiling[] = true' + ``` else - pty_slave, pty_master = open_fake_pty() + cmdargs = `-e nothing` end - done = false - blackhole = Sys.isunix() ? "/dev/null" : "nul" - withenv("JULIA_HISTORY" => blackhole, "JULIA_PROJECT" => nothing, - "TERM" => "", "JULIA_LOAD_PATH" => Sys.iswindows() ? "@;@stdlib" : "@:@stdlib") do - if have_repl - p = run(`$(julia_cmd()) -O0 --trace-compile=$precompile_file --sysimage $sysimg - --compile=all --startup-file=no --color=yes - -e 'import REPL; REPL.Terminals.is_precompiling[] = true' - -i`, - pty_slave, pty_slave, pty_slave; wait=false) - readuntil(pty_master, "julia>", keep=true) - t = @async begin - s = "" - while true - sleep(0.5) - news = String(readavailable(pty_master)) - write(repl_output_buffer, news) - s *= news - if occursin("__PRECOMPILE_END__", s) - break - end - end - end - if have_repl - for l in split(precompile_script, '\n'; keepempty=false) - write(pty_master, l, '\n') - end - end - write(pty_master, "print(\"__PRECOMPILE\", \"_END__\")", '\n') - wait(t) - - # TODO Figure out why exit() on Windows doesn't exit the process - if Sys.iswindows() - print(pty_master, "ccall(:_exit, Cvoid, (Cint,), 0)\n") - else - write(pty_master, "exit()\n") - readuntil(pty_master, "exit()\r\e[13C\r\n") - # @assert bytesavailable(master) == 0 - end - wait(p) - else - # Is this even needed or is this already recorded just from starting this process? - p = run(`$(julia_cmd()) -O0 --trace-compile=$precompile_file --sysimage $sysimg - --compile=all --startup-file=no - -e0`) + p = withenv("JULIA_HISTORY" => blackhole, + "JULIA_PROJECT" => nothing, # remove from environment + "JULIA_LOAD_PATH" => Sys.iswindows() ? "@;@stdlib" : "@:@stdlib", + "TERM" => "") do + sysimg = Base.unsafe_string(Base.JLOptions().image_file) + run(```$(julia_exepath()) -O0 --trace-compile=$precompile_file --sysimage $sysimg + --cpu-target=native --startup-file=no --color=yes + -e 'import REPL; REPL.Terminals.is_precompiling[] = true' + -i $cmdargs```, + pty_slave, pty_slave, pty_slave; wait=false) + end + Base.close_stdio(pty_slave) + # Prepare a background process to copy output from process until `pty_slave` is closed + output_copy = Base.BufferStream() + tee = @async try + while !eof(pty_master) + l = readavailable(pty_master) + write(debug_output, l) + Sys.iswindows() && (sleep(0.1); yield(); yield()) # workaround hang - probably a libuv issue? + write(output_copy, l) + end + close(output_copy) + close(pty_master) + catch ex + close(output_copy) + close(pty_master) + if !(ex isa Base.IOError && ex.code == Base.UV_EIO) + rethrow() # ignore EIO on pty_master after pty_slave dies end end + # wait for the definitive prompt before start writing to the TTY + readuntil(output_copy, "julia>") + sleep(0.1) + readavailable(output_copy) + # Input our script + if have_repl + for l in split(precompile_script, '\n'; keepempty=false) + sleep(0.1) + # consume any other output + bytesavailable(output_copy) > 0 && readavailable(output_copy) + # push our input + write(debug_output, "\n#### inputting statement: ####\n$(repr(l))\n####\n") + write(pty_master, l, "\n") + readuntil(output_copy, "\n") + # wait for the next prompt-like to appear + # NOTE: this is rather innaccurate because the Pkg REPL mode is a special flower + readuntil(output_copy, "\n") + readuntil(output_copy, "> ") + end + end + write(pty_master, "exit()\n") + wait(tee) + success(p) || Base.pipeline_error(p) close(pty_master) - - # Check what the REPL displayed - # repl_output = String(take!(repl_output_buffer)) - # println(repl_output) + write(debug_output, "\n#### FINISHED ####\n") # Extract the precompile statements from stderr statements = Set{String}() - for statement in split(read(precompile_file, String), '\n') + for statement in eachline(precompile_file_h) occursin("Main.", statement) && continue push!(statements, statement) end @@ -157,7 +151,7 @@ function generate_precompile_statements() PrecompileStagingArea = Module() for (_pkgid, _mod) in Base.loaded_modules if !(_pkgid.name in ("Main", "Core", "Base")) - eval(PrecompileStagingArea, :($(Symbol(_mod)) = $_mod)) + eval(PrecompileStagingArea, :(const $(Symbol(_mod)) = $_mod)) end end @@ -186,4 +180,3 @@ end generate_precompile_statements() end # @eval -end # let diff --git a/stdlib/LibGit2/test/libgit2.jl b/stdlib/LibGit2/test/libgit2.jl index 90e68211c4582..31e4450edf761 100644 --- a/stdlib/LibGit2/test/libgit2.jl +++ b/stdlib/LibGit2/test/libgit2.jl @@ -44,16 +44,17 @@ function challenge_prompt(cmd::Cmd, challenges; timeout::Integer=60, debug::Bool !debug && return "" str = read(seekstart(output), String) isempty(str) && return "" - "Process output found:\n\"\"\"\n$str\n\"\"\"" + return "Process output found:\n\"\"\"\n$str\n\"\"\"" end out = IOBuffer() with_fake_pty() do pty_slave, pty_master p = run(detach(cmd), pty_slave, pty_slave, pty_slave, wait=false) + Base.close_stdio(pty_slave) # Kill the process if it takes too long. Typically occurs when process is waiting # for input. timer = Channel{Symbol}(1) - @async begin + watcher = @async begin waited = 0 while waited < timeout && process_running(p) sleep(1) @@ -74,8 +75,6 @@ function challenge_prompt(cmd::Cmd, challenges; timeout::Integer=60, debug::Bool sleep(3) process_running(p) && kill(p, Base.SIGKILL) end - - close(pty_master) end for (challenge, response) in challenges @@ -87,12 +86,17 @@ function challenge_prompt(cmd::Cmd, challenges; timeout::Integer=60, debug::Bool write(pty_master, response) end - # Capture output from process until `master` is closed - while !eof(pty_master) - write(out, readavailable(pty_master)) + # Capture output from process until `pty_slave` is closed + try + write(out, pty_master) + catch ex + if !(ex isa Base.IOError && ex.code == Base.UV_EIO) + rethrow() # ignore EIO from master after slave dies + end end status = fetch(timer) + close(pty_master) if status != :success if status == :timeout error("Process timed out possibly waiting for a response. ", @@ -101,6 +105,7 @@ function challenge_prompt(cmd::Cmd, challenges; timeout::Integer=60, debug::Bool error("Failed process. ", format_output(out), "\n", p) end end + wait(watcher) end nothing end diff --git a/stdlib/REPL/test/repl.jl b/stdlib/REPL/test/repl.jl index c8e22202a2f67..1d2a29d3057c5 100644 --- a/stdlib/REPL/test/repl.jl +++ b/stdlib/REPL/test/repl.jl @@ -729,24 +729,35 @@ ccall(:jl_exit_on_sigint, Cvoid, (Cint,), 1) let exename = Base.julia_cmd() # Test REPL in dumb mode - if !Sys.iswindows() - with_fake_pty() do pty_slave, pty_master - nENV = copy(ENV) - nENV["TERM"] = "dumb" - p = run(setenv(`$exename --startup-file=no -q`,nENV),pty_slave,pty_slave,pty_slave,wait=false) - output = readuntil(pty_master,"julia> ",keep=true) - if ccall(:jl_running_on_valgrind,Cint,()) == 0 - # If --trace-children=yes is passed to valgrind, we will get a - # valgrind banner here, not just the prompt. - @test output == "julia> " - end - write(pty_master,"1\nexit()\n") + with_fake_pty() do pty_slave, pty_master + nENV = copy(ENV) + nENV["TERM"] = "dumb" + p = run(detach(setenv(`$exename --startup-file=no -q`, nENV)), pty_slave, pty_slave, pty_slave, wait=false) + Base.close_stdio(pty_slave) + output = readuntil(pty_master, "julia> ", keep=true) + if ccall(:jl_running_on_valgrind, Cint,()) == 0 + # If --trace-children=yes is passed to valgrind, we will get a + # valgrind banner here, not just the prompt. + @test output == "julia> " + end + write(pty_master, "1\nexit()\n") - wait(p) - output = readuntil(pty_master,' ',keep=true) + output = readuntil(pty_master, ' ', keep=true) + if Sys.iswindows() + # Our fake pty is actually a pipe, and thus lacks the input echo feature of posix + @test output == "1\n\njulia> " + else @test output == "1\r\nexit()\r\n1\r\n\r\njulia> " - @test bytesavailable(pty_master) == 0 end + @test bytesavailable(pty_master) == 0 + @test try # possibly consume child-exited notification + eof(pty_master) + catch ex + (ex isa Base.IOError && ex.code == Base.UV_EIO) || rethrow() + eof(pty_master) + end + @test read(pty_master, String) == "" + wait(p) end # Test stream mode diff --git a/test/testhelpers/FakePTYs.jl b/test/testhelpers/FakePTYs.jl index 4004d427be074..a79f64d25c2bc 100644 --- a/test/testhelpers/FakePTYs.jl +++ b/test/testhelpers/FakePTYs.jl @@ -2,38 +2,64 @@ module FakePTYs +if Sys.iswindows() + pushfirst!(LOAD_PATH, Sys.STDLIB) + using Sockets + Sockets.__init__() + popfirst!(LOAD_PATH) +end + + function open_fake_pty() @static if Sys.iswindows() - error("Unable to create a fake PTY in Windows") - end - - O_RDWR = Base.Filesystem.JL_O_RDWR - O_NOCTTY = Base.Filesystem.JL_O_NOCTTY + # Fake being cygwin + pid = string(getpid(), base=16, pad=16) + pipename = """\\\\?\\pipe\\cygwin-$pid-pty10-abcdefg""" + server = listen(pipename) + pty_slave = connect(pipename) + @assert ccall(:jl_ispty, Cint, (Ptr{Cvoid},), pty_slave.handle) == 1 + pty_master = accept(server) + close(server) + # extract just the file descriptor + fds = Libc.dup(Base._fd(pty_slave)) + close(pty_slave) + pty_slave = fds + # convert pty_slave handle to a TTY + #fds = pty_slave.handle + #pty_slave.status = Base.StatusClosed + #pty_slave.handle = C_NULL + #pty_slave = Base.TTY(fds, Base.StatusOpen) + else + O_RDWR = Base.Filesystem.JL_O_RDWR + O_NOCTTY = Base.Filesystem.JL_O_NOCTTY - fdm = ccall(:posix_openpt, Cint, (Cint,), O_RDWR|O_NOCTTY) - fdm == -1 && error("Failed to open PTY master") - rc = ccall(:grantpt, Cint, (Cint,), fdm) - rc != 0 && error("grantpt failed") - rc = ccall(:unlockpt, Cint, (Cint,), fdm) - rc != 0 && error("unlockpt") + fdm = ccall(:posix_openpt, Cint, (Cint,), O_RDWR | O_NOCTTY) + fdm == -1 && error("Failed to open pty_master") + rc = ccall(:grantpt, Cint, (Cint,), fdm) + rc != 0 && error("grantpt failed") + rc = ccall(:unlockpt, Cint, (Cint,), fdm) + rc != 0 && error("unlockpt") - fds = ccall(:open, Cint, (Ptr{UInt8}, Cint), - ccall(:ptsname, Ptr{UInt8}, (Cint,), fdm), O_RDWR|O_NOCTTY) + fds = ccall(:open, Cint, (Ptr{UInt8}, Cint), + ccall(:ptsname, Ptr{UInt8}, (Cint,), fdm), O_RDWR | O_NOCTTY) - # slave - slave = RawFD(fds) - master = Base.TTY(RawFD(fdm)) - slave, master + pty_slave = RawFD(fds) + # pty_slave = fdio(fds, true) + # pty_slave = Base.Filesystem.File(RawFD(fds)) + # pty_slave = Base.TTY(RawFD(fds); readable = false) + pty_master = Base.TTY(RawFD(fdm)) + end + return pty_slave, pty_master end function with_fake_pty(f) - slave, master = open_fake_pty() + pty_slave, pty_master = open_fake_pty() try - f(slave, master) + f(pty_slave, pty_master) finally - ccall(:close,Cint,(Cint,),slave) # XXX: this causes the kernel to throw away all unread data on the pty - close(master) + close(pty_master) end + nothing end end From 4c28b3685c88eefef029e66b7b48fd1a880c6103 Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Wed, 8 May 2019 14:38:34 -0400 Subject: [PATCH 11/34] fix #31899, type intersection involving Int in upper bound (#31960) --- src/subtype.c | 7 ++++++- test/subtype.jl | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/subtype.c b/src/subtype.c index c257bcae89393..84868a302022a 100644 --- a/src/subtype.c +++ b/src/subtype.c @@ -980,6 +980,8 @@ static int subtype(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int param) return var_gt((jl_tvar_t*)y, x, e, param); if (y == (jl_value_t*)jl_any_type && !jl_has_free_typevars(x)) return 1; + if (x == jl_bottom_type && !jl_has_free_typevars(y)) + return 1; jl_value_t *ux = jl_unwrap_unionall(x); jl_value_t *uy = jl_unwrap_unionall(y); if ((x != ux || y != uy) && y != (jl_value_t*)jl_any_type && jl_is_datatype(ux) && jl_is_datatype(uy) && @@ -1779,7 +1781,10 @@ static jl_value_t *finish_unionall(jl_value_t *res JL_MAYBE_UNROOTED, jl_varbind jl_tvar_t *newvar = vb->var; JL_GC_PUSH2(&res, &newvar); // try to reduce var to a single value - if (obviously_egal(vb->lb, vb->ub)) { + if (jl_is_long(vb->ub) && jl_is_typevar(vb->lb)) { + varval = vb->ub; + } + else if (obviously_egal(vb->lb, vb->ub)) { // given x<:T<:x, substitute x for T varval = vb->ub; } diff --git a/test/subtype.jl b/test/subtype.jl index d766c49079e1e..acd253fa035f0 100644 --- a/test/subtype.jl +++ b/test/subtype.jl @@ -1509,3 +1509,23 @@ end # issue #26083 @testintersect(Base.RefValue{<:Tuple}, Ref{Tuple{M}} where M, Base.RefValue{Tuple{M}} where M) + +# issue #31899 +struct SA{N,L} +end +@testintersect(Tuple{Type{SA{Int, L} where L}, Type{SA{Int, Int8}}}, + Tuple{Type{<:SA{N, L}}, Type{<:SA{N, L}}} where {N,L}, + Union{}) +@testintersect(Tuple{Type{SA{2, L} where L}, Type{SA{2, 16}}}, + Tuple{Type{<:SA{N, L}}, Type{<:SA{N, L}}} where {L,N}, + Union{}) +@testintersect(Tuple{Type{SA{2, L} where L}, Type{SA{2, 16}}}, + Tuple{Type{<:SA{N, L}}, Type{<:SA{N, L}}} where {N,L}, + Union{}) +@testintersect(Tuple{Type{SA{2, L}}, Type{SA{2, L}}} where L, + Tuple{Type{<:SA{N, L}}, Type{<:SA{N, L}}} where {N,L}, + Tuple{Type{SA{2, L}}, Type{SA{2, L}}} where L) +@testintersect(Tuple{Type{SA{2, L}}, Type{SA{2, 16}}} where L, + Tuple{Type{<:SA{N, L}}, Type{<:SA{N, L}}} where {N,L}, + # TODO: this could be narrower + Tuple{Type{SA{2, L}}, Type{SA{2, 16}}} where L) From a526662d443e91aa126ada4b81353c4fd69a8738 Mon Sep 17 00:00:00 2001 From: Chris Foster Date: Thu, 9 May 2019 05:58:04 +1000 Subject: [PATCH 12/34] Revert "Don't use jl_rethrow_other for LoadError/InitError" (#31963) This reverts commit d3dbe86f49da6779c2f3af8354c6a3933f48fcad. + fixup new tests in backtrace.jl --- base/errorshow.jl | 11 +++++++++-- src/ast.c | 8 ++++---- src/toplevel.c | 4 ++-- test/backtrace.jl | 4 ++-- test/errorshow.jl | 14 ++------------ test/precompile.jl | 2 +- 6 files changed, 20 insertions(+), 23 deletions(-) diff --git a/base/errorshow.jl b/base/errorshow.jl index 8453de56d31be..149ae703d03f0 100644 --- a/base/errorshow.jl +++ b/base/errorshow.jl @@ -85,11 +85,18 @@ function showerror(io::IO, ex, bt; backtrace=true) end function showerror(io::IO, ex::LoadError, bt; backtrace=true) - print(io, "Error while loading expression starting at ", ex.file, ":", ex.line) + print(io, "LoadError: ") + showerror(io, ex.error, bt, backtrace=backtrace) + print(io, "\nin expression starting at $(ex.file):$(ex.line)") end showerror(io::IO, ex::LoadError) = showerror(io, ex, []) -showerror(io::IO, ex::InitError) = print(io, "InitError during initialization of module ", ex.mod) +function showerror(io::IO, ex::InitError, bt; backtrace=true) + print(io, "InitError: ") + showerror(io, ex.error, bt, backtrace=backtrace) + print(io, "\nduring initialization of module ", ex.mod) +end +showerror(io::IO, ex::InitError) = showerror(io, ex, []) function showerror(io::IO, ex::DomainError) if isa(ex.val, AbstractArray) diff --git a/src/ast.c b/src/ast.c index a2a4857a11466..6c4589618169e 100644 --- a/src/ast.c +++ b/src/ast.c @@ -892,8 +892,8 @@ jl_value_t *jl_parse_eval_all(const char *fname, if (jl_loaderror_type == NULL) jl_rethrow(); else - jl_throw(jl_new_struct(jl_loaderror_type, form, result, - jl_current_exception())); + jl_rethrow_other(jl_new_struct(jl_loaderror_type, form, result, + jl_current_exception())); } JL_GC_POP(); return result; @@ -1050,8 +1050,8 @@ static jl_value_t *jl_invoke_julia_macro(jl_array_t *args, jl_module_t *inmodule else margs[0] = jl_cstr_to_string(""); margs[1] = jl_fieldref(lno, 0); // extract and allocate line number - jl_throw(jl_new_struct(jl_loaderror_type, margs[0], margs[1], - jl_current_exception())); + jl_rethrow_other(jl_new_struct(jl_loaderror_type, margs[0], margs[1], + jl_current_exception())); } } ptls->world_age = last_age; diff --git a/src/toplevel.c b/src/toplevel.c index 922db13908027..ce69c8304b36c 100644 --- a/src/toplevel.c +++ b/src/toplevel.c @@ -79,8 +79,8 @@ void jl_module_run_initializer(jl_module_t *m) jl_rethrow(); } else { - jl_throw(jl_new_struct(jl_initerror_type, m->name, - jl_current_exception())); + jl_rethrow_other(jl_new_struct(jl_initerror_type, m->name, + jl_current_exception())); } } } diff --git a/test/backtrace.jl b/test/backtrace.jl index e63ae84c56181..5fab345183fd4 100644 --- a/test/backtrace.jl +++ b/test/backtrace.jl @@ -199,7 +199,7 @@ let trace = try """, "a_filename") catch - stacktrace(Base.catch_stack()[end-1][2]) # Ignore LoadError + stacktrace(catch_backtrace()) end @test trace[1].func == Symbol("top-level scope") @test trace[1].file == :a_filename @@ -213,7 +213,7 @@ let trace = try """, "a_filename") catch - stacktrace(Base.catch_stack()[end-1][2]) # Ignore LoadError + stacktrace(catch_backtrace()) end @test trace[1].func == Symbol("top-level scope") @test trace[1].file == :a_filename diff --git a/test/errorshow.jl b/test/errorshow.jl index eebecb826b57a..5a85430516ffb 100644 --- a/test/errorshow.jl +++ b/test/errorshow.jl @@ -156,16 +156,15 @@ end macro except_strbt(expr, err_type) errmsg = "expected failure, but no exception thrown for $expr" return quote - let err = nothing, bt = nothing + let err = nothing try $(esc(expr)) catch err - bt = catch_backtrace() end err === nothing && error($errmsg) @test typeof(err) === $(esc(err_type)) buf = IOBuffer() - showerror(buf, err, bt) + showerror(buf, err, catch_backtrace()) String(take!(buf)) end end @@ -555,12 +554,3 @@ let buf = IOBuffer() Base.show_method_candidates(buf, Base.MethodError(sin, Tuple{NoMethodsDefinedHere})) @test length(take!(buf)) !== 0 end - -@testset "Nested errors" begin - # LoadError and InitError used to print the nested exception. - # This is now dealt with via the exception stack so these print very simply: - @test sprint(Base.showerror, LoadError("somefile.jl", 10, ErrorException("retained for backward compat"))) == - "Error while loading expression starting at somefile.jl:10" - @test sprint(Base.showerror, InitError(:some_module, ErrorException("retained for backward compat"))) == - "InitError during initialization of module some_module" -end diff --git a/test/precompile.jl b/test/precompile.jl index 836d73e9393ae..a5c6ada8dfae9 100644 --- a/test/precompile.jl +++ b/test/precompile.jl @@ -372,7 +372,7 @@ try error("break me") end """) - @test_warn r"ERROR: Error while loading expression starting at.*FooBar2.*caused by.*break me"s try + @test_warn "ERROR: LoadError: break me\nStacktrace:\n [1] error" try Base.require(Main, :FooBar2) error("\"LoadError: break me\" test failed") catch exc From 48634f9f8669e1dc1be0a1589cd5be880c04055a Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Wed, 8 May 2019 19:19:20 -0400 Subject: [PATCH 13/34] always run on original process stack in ALWAYS_COPY_STACKS mode (#31697) this makes it possible to work around #31104 --- src/task.c | 50 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/src/task.c b/src/task.c index 9196f26998f22..b5b04d38c6cbe 100644 --- a/src/task.c +++ b/src/task.c @@ -74,6 +74,15 @@ static void jl_swap_fiber(jl_ucontext_t *lastt, jl_ucontext_t *t); static JL_THREAD unw_cursor_t jl_basecursor; #endif +#ifdef ALWAYS_COPY_STACKS +# ifndef COPY_STACKS +# error "ALWAYS_COPY_STACKS requires COPY_STACKS" +# endif +static int always_copy_stacks = 1; +#else +static int always_copy_stacks = 0; +#endif + #ifdef COPY_STACKS static void memcpy_a16(uint64_t *to, uint64_t *from, size_t nb) @@ -323,7 +332,10 @@ static void ctx_switch(jl_ptls_t ptls, jl_task_t **pt) jl_swap_fiber(lastt_ctx, &t->ctx); } else { - jl_start_fiber(lastt_ctx, &t->ctx); + if (always_copy_stacks) + jl_longjmp(ptls->base_ctx.uc_mcontext, 1); + else + jl_start_fiber(lastt_ctx, &t->ctx); } // TODO: mutex unlock the thread we just switched from #ifdef ENABLE_TIMINGS @@ -459,12 +471,13 @@ JL_DLLEXPORT jl_task_t *jl_new_task(jl_function_t *start, jl_value_t *completion t->copy_stack = 0; if (ssize == 0) { // stack size unspecified; use default -#if defined(COPY_STACKS) && defined(ALWAYS_COPY_STACKS) - t->copy_stack = 1; - t->bufsz = 0; -#else - t->bufsz = JL_STACK_SIZE; -#endif + if (always_copy_stacks) { + t->copy_stack = 1; + t->bufsz = 0; + } + else { + t->bufsz = JL_STACK_SIZE; + } } else { // user requested dedicated stack of a certain size @@ -922,7 +935,6 @@ void jl_init_root_task(void *stack_lo, void *stack_hi) jl_ptls_t ptls = jl_get_ptls_states(); ptls->current_task = (jl_task_t*)jl_gc_alloc(ptls, sizeof(jl_task_t), jl_task_type); - ptls->current_task->copy_stack = 0; void *stack = stack_lo; size_t ssize = (char*)stack_hi - (char*)stack_lo; #ifndef _OS_WINDOWS_ @@ -931,8 +943,16 @@ void jl_init_root_task(void *stack_lo, void *stack_hi) ssize += ROOT_TASK_STACK_ADJUSTMENT; // sizeof stack is known exactly, but not where we are in that stack } #endif - ptls->current_task->stkbuf = stack; - ptls->current_task->bufsz = ssize; + if (always_copy_stacks) { + ptls->current_task->copy_stack = 1; + ptls->current_task->stkbuf = NULL; + ptls->current_task->bufsz = 0; + } + else { + ptls->current_task->copy_stack = 0; + ptls->current_task->stkbuf = stack; + ptls->current_task->bufsz = ssize; + } ptls->current_task->started = 1; ptls->current_task->next = jl_nothing; ptls->current_task->queue = jl_nothing; @@ -955,7 +975,15 @@ void jl_init_root_task(void *stack_lo, void *stack_hi) ptls->root_task = ptls->current_task; - jl_init_basefiber(JL_STACK_SIZE); + if (always_copy_stacks) { + ptls->stackbase = stack_hi; + ptls->stacksize = ssize; + if (jl_setjmp(ptls->base_ctx.uc_mcontext, 0)) + start_task(); + } + else { + jl_init_basefiber(JL_STACK_SIZE); + } } JL_DLLEXPORT int jl_is_task_started(jl_task_t *t) From e813f0d5c05fcc2864c621154cd66bd959667b6c Mon Sep 17 00:00:00 2001 From: "Tamas K. Papp" Date: Thu, 9 May 2019 13:01:27 +0200 Subject: [PATCH 14/34] Expand documentation of custom random samplers. (#31787) --- stdlib/Random/docs/src/index.md | 114 +++++++++++++++++++++----------- stdlib/Random/src/Random.jl | 54 ++++++++++----- 2 files changed, 110 insertions(+), 58 deletions(-) diff --git a/stdlib/Random/docs/src/index.md b/stdlib/Random/docs/src/index.md index f3219014883c5..c81946fc2a2de 100644 --- a/stdlib/Random/docs/src/index.md +++ b/stdlib/Random/docs/src/index.md @@ -80,18 +80,45 @@ in order to support usual types of generated values. ### Generating random values of custom types -There are two categories: generating values from a type (e.g. `rand(Int)`), or from a collection (e.g. `rand(1:3)`). -The simple cases are explained first, and more advanced usage is presented later. -We assume here that the choice of algorithm is independent of the RNG, so we use `AbstractRNG` in our signatures. +Generating random values for some distributions may involve various trade-offs. *Pre-computed* values, such as an [alias table](https://en.wikipedia.org/wiki/Alias_method) for discrete distributions, or [“squeezing” functions](https://en.wikipedia.org/wiki/Rejection_sampling) for univariate distributions, can speed up sampling considerably. How much information should be pre-computed can depend on the number of values we plan to draw from a distribution. Also, some random number generators can have certain properties that various algorithms may want to exploit. + +The `Random` module defines a customizable framework for obtaining random values that can address these issues. Each invocation of `rand` generates a *sampler* which can be customized with the above trade-offs in mind, by adding methods to `Sampler`, which in turn can dispatch on the random number generator, the object that characterizes the distribution, and a suggestion for the number of repetitions. Currently, for the latter, `Val{1}` (for a single sample) and `Val{Inf}` (for an arbitrary number) are used, with `Random.Repetition` an alias for both. + +The object returned by `Sampler` is then used to generate the random values, by a method of `rand` defined for this purpose. Samplers can be arbitrary values, but for most applications the following predefined samplers may be sufficient: + +1. `SamplerType{T}()` can be used for implementing samplers that draw from type `T` (e.g. `rand(Int)`). + +2. `SamplerTrivial(self)` is a simple wrapper for `self`, which can be accessed with `[]`. This is the recommended sampler when no pre-computed information is needed (e.g. `rand(1:3)`). + +3. `SamplerSimple(self, data)` also contains the additional `data` field, which can be used to store arbitrary pre-computed values. + +We provide examples for each of these. We assume here that the choice of algorithm is independent of the RNG, so we use `AbstractRNG` in our signatures. + +```@docs +Random.Sampler +Random.SamplerType +Random.SamplerTrivial +Random.SamplerSimple +``` + +Decoupling pre-computation from actually generating the values is part of the API, and is also available to the user. As an example, assume that `rand(rng, 1:20)` has to be called repeatedly in a loop: the way to take advantage of this decoupling is as follows: + +```julia +rng = MersenneTwister() +sp = Random.Sampler(rng, 1:20) # or Random.Sampler(MersenneTwister, 1:20) +for x in X + n = rand(rng, sp) # similar to n = rand(rng, 1:20) + # use n +end +``` + +This is the mechanism that is also used in the standard library, e.g. by the default implementation of random array generation (like in `rand(1:20, 10)`). #### Generating values from a type -Given a type `T`, it's currently assumed that if `rand(T)` is defined, an object of type `T` will be produced. -In order to define random generation of values of type `T`, the following method can be defined: -`rand(rng::AbstractRNG, ::Random.SamplerType{T})` (this should return what `rand(rng, T)` is expected to return). +Given a type `T`, it's currently assumed that if `rand(T)` is defined, an object of type `T` will be produced. `SamplerType` is the *default sampler for types*. In order to define random generation of values of type `T`, the `rand(rng::AbstractRNG, ::Random.SamplerType{T})` method should be defined, and should return values what `rand(rng, T)` is expected to return. -Let's take the following example: we implement a `Die` type, with a variable number `n` of sides, numbered from `1` to `n`. -We want `rand(Die)` to produce a die with a random number of up to 20 sides (and at least 4): +Let's take the following example: we implement a `Die` type, with a variable number `n` of sides, numbered from `1` to `n`. We want `rand(Die)` to produce a `Die` with a random number of up to 20 sides (and at least 4): ```jldoctest Die struct Die @@ -126,12 +153,11 @@ julia> a = Vector{Die}(undef, 3); rand!(a) Die(8) ``` -#### Generating values from a collection +#### A simple sampler without pre-computed data + +Here we define a sampler for a collection. If no pre-computed data is required, it can be implemented with a `SamplerTrivial` sampler, which is in fact the *default fallback for values*. -Given a collection type `S`, it's currently assumed that if `rand(::S)` is defined, an object of type `eltype(S)` will be produced. -In order to define random generation out of objects of type `S`, the following method can be defined: -`rand(rng::AbstractRNG, sp::Random.SamplerTrivial{S})`. Here, `sp` simply wraps an object of type `S`, which can be accessed via `sp[]`. -Continuing the `Die` example, we want now to define `rand(d::Die)` to produce an `Int` corresponding to one of `d`'s sides: +In order to define random generation out of objects of type `S`, the following method should be defined: `rand(rng::AbstractRNG, sp::Random.SamplerTrivial{S})`. Here, `sp` simply wraps an object of type `S`, which can be accessed via `sp[]`. Continuing the `Die` example, we want now to define `rand(d::Die)` to produce an `Int` corresponding to one of `d`'s sides: ```jldoctest Die; setup = :(Random.seed!(1)) julia> Random.rand(rng::AbstractRNG, d::Random.SamplerTrivial{Die}) = rand(rng, 1:d[].nsides); @@ -146,38 +172,48 @@ julia> rand(Die(4), 3) 2 ``` -In the last example, a `Vector{Any}` is produced; the reason is that `eltype(Die) == Any`. The remedy is to define -`Base.eltype(::Type{Die}) = Int`. - +Given a collection type `S`, it's currently assumed that if `rand(::S)` is defined, an object of type `eltype(S)` will be produced. In the last example, a `Vector{Any}` is produced; the reason is that `eltype(Die) == Any`. The remedy is to define `Base.eltype(::Type{Die}) = Int`. -#### Generating values for an `AbstractFloat` type +A `SamplerTrivial` does not have to wrap the original object. For example, in `Random`, `AbstractFloat` types are special-cased, because by default random values are not produced in the whole type domain, but rather in `[0,1)`. -`AbstractFloat` types are special-cased, because by default random values are not produced in the whole type domain, but rather -in `[0,1)`. The following method should be implemented for `T <: AbstractFloat`: -`Random.rand(::AbstractRNG, ::Random.SamplerTrivial{Random.CloseOpen01{T}})` +Consequently, a method +```julia +Sampler(::Type{RNG}, ::Type{T}, n::Repetition) where {RNG<:AbstractRNG,T<:AbstractFloat} = + Sampler(RNG, CloseOpen01(T), n) +``` +is defined to return `SamplerTrivial` with a `Random.CloseOpen01{T}}` type defined for this purpose, which has an appropriate `rand` method defined for it. +#### An optimized sampler with pre-computed data -#### Optimizing generation with cached computation between calls +Consider a discrete distribution, where numbers `1:n` are drawn with given probabilities that some to one. When many values are needed from this distribution, the fastest method if using an [alias table](https://en.wikipedia.org/wiki/Alias_method). We don't provide the algorithm for building such a table here, but suppose it is available in `make_alias_table(probabilities)` instead, and `draw_number(rng, alias_table)` can be used to draw a random number from it. -When repeatedly generating random values (with the same `rand` parameters), it happens for some types -that the result of a computation is used for each call. In this case, the computation can be decoupled -from actually generating the values. This is the case for example with the default implementation for -`AbstractArray`. Assume that `rand(rng, 1:20)` has to be called repeatedly in a loop: the way to take advantage -of this decoupling is as follows: +Suppose that the distribution is described by +```julia +struct DiscreteDistribution{V <: AbstractVector} + probabilities::V +end +``` +and that we *always* want to build an a alias table, regardless of the number of values needed (we learn how to customize this below). The methods +```julia +Random.eltype(::Type{<:DiscreteDistribution}) = Int +function Random.Sampler(::AbstractRng, distribution::DiscreteDistribution, ::Repetition) + SamplerSimple(disribution, make_alias_table(distribution.probabilities)) +end +``` +should be defined to return a sampler with pre-computed data, then ```julia -rng = MersenneTwister() -sp = Random.Sampler(rng, 1:20) # or Random.Sampler(MersenneTwister,1:20) -for x in X - n = rand(rng, sp) # similar to n = rand(rng, 1:20) - # use n +function rand(rng::AbstractRNG, sp::SamplerSimple{<:DiscreteDistribution}) + draw_number(rng, sp.data) end ``` +will be used to draw the values. + +#### Custom sampler types + +The `SamplerSimple` type is sufficient for most use cases with precomputed data. However, in order to demonstrate how to use custom sampler types, here we implement something similar to `SamplerSimple`. -This mechanism is of course used by the default implementation of random array generation (like in `rand(1:20, 10)`). -In order to implement this decoupling for a custom type, a helper type can be used. -Going back to our `Die` example: `rand(::Die)` uses random generation from a range, so -there is an opportunity for this optimization: +Going back to our `Die` example: `rand(::Die)` uses random generation from a range, so there is an opportunity for this optimization. We call our custom sampler `SamplerDie`. ```julia import Random: Sampler, rand @@ -194,10 +230,9 @@ Sampler(RNG::Type{<:AbstractRNG}, die::Die, r::Random.Repetition) = rand(rng::AbstractRNG, sp::SamplerDie) = rand(rng, sp.sp) ``` -It's now possible to get a sampler with `sp = Sampler(rng, die)`, and use `sp` instead of `die` in any `rand` call involving `rng`. -In the simplistic example above, `die` doesn't need to be stored in `SamplerDie` but this is often the case in practice. +It's now possible to get a sampler with `sp = Sampler(rng, die)`, and use `sp` instead of `die` in any `rand` call involving `rng`. In the simplistic example above, `die` doesn't need to be stored in `SamplerDie` but this is often the case in practice. -This pattern is so frequent that a helper type named `Random.SamplerSimple` is available, +Of course, this pattern is so frequent that the helper type used above, namely `Random.SamplerSimple`, is available, saving us the definition of `SamplerDie`: we could have implemented our decoupling with: ```julia @@ -228,8 +263,7 @@ Sampler(RNG::Type{<:AbstractRNG}, die::Die, ::Val{1}) = SamplerDie1(...) Sampler(RNG::Type{<:AbstractRNG}, die::Die, ::Val{Inf}) = SamplerDieMany(...) ``` -Of course, `rand` must also be defined on those types (i.e. `rand(::AbstractRNG, ::SamplerDie1)` -and `rand(::AbstractRNG, ::SamplerDieMany)`). +Of course, `rand` must also be defined on those types (i.e. `rand(::AbstractRNG, ::SamplerDie1)` and `rand(::AbstractRNG, ::SamplerDieMany)`). Note that, as usual, `SamplerTrivial` and `SamplerSimple` can be used if custom types are not necessary. Note: `Sampler(rng, x)` is simply a shorthand for `Sampler(rng, x, Val(Inf))`, and `Random.Repetition` is an alias for `Union{Val{1}, Val{Inf}}`. diff --git a/stdlib/Random/src/Random.jl b/stdlib/Random/src/Random.jl index 49b8235a7ef64..baa82df0bf114 100644 --- a/stdlib/Random/src/Random.jl +++ b/stdlib/Random/src/Random.jl @@ -40,22 +40,6 @@ Supertype for random number generators such as [`MersenneTwister`](@ref) and [`R """ abstract type AbstractRNG end -""" - Random.gentype(T) - -Determine the type of the elements generated by calling `rand([rng], x)`, -where `x::T`, and `x` is not a type. -The definition `gentype(x) = gentype(typeof(x))` is provided for convenience, -and `gentype(T)` defaults to `eltype(T)`. -NOTE: `rand([rng], X)`, where `X` is a type, is always assumed to produce -an object of type `X`. - -# Examples -```jldoctest -julia> gentype(1:10) -Int64 -``` -""" gentype(::Type{X}) where {X} = eltype(X) gentype(x) = gentype(typeof(x)) @@ -137,6 +121,21 @@ const Repetition = Union{Val{1},Val{Inf}} # Sampler(::AbstractRNG, X, ::Val{Inf}) = Sampler(X) # Sampler(::AbstractRNG, ::Type{X}, ::Val{Inf}) where {X} = Sampler(X) +""" + Sampler(rng, x, repetition = Val(Inf)) + +Return a sampler object that can be used to generate random values from `rng` for `x`. + +When `sp = Sampler(rng, x, repetition)`, `rand(rng, sp)` will be used to draw random values, +and should be defined accordingly. + +`repetition` can be `Val(1)` or `Val(Inf)`, and should be used as a suggestion for deciding +the amount of precomputation, if applicable. + +[`Random.SamplerType`](@ref) and [`Random.SamplerTrivial`](@ref) are default fallbacks for +*types* and *values*, respectively. [`Random.SamplerSimple`](@ref) can be used to store +pre-computed values without defining extra types for only this purpose. +""" Sampler(rng::AbstractRNG, x, r::Repetition=Val(Inf)) = Sampler(typeof(rng), x, r) Sampler(rng::AbstractRNG, ::Type{X}, r::Repetition=Val(Inf)) where {X} = Sampler(typeof(rng), X, r) @@ -149,18 +148,30 @@ Sampler(::Type{RNG}, ::Type{X}) where {RNG<:AbstractRNG,X} = Sampler(RNG, X, Val #### pre-defined useful Sampler types -# default fall-back for types +""" + SamplerType{T}() + +A sampler for types, containing no other information. The default fallback for `Sampler` +when called with types. +""" struct SamplerType{T} <: Sampler{T} end Sampler(::Type{<:AbstractRNG}, ::Type{T}, ::Repetition) where {T} = SamplerType{T}() Base.getindex(::SamplerType{T}) where {T} = T -# default fall-back for values struct SamplerTrivial{T,E} <: Sampler{E} self::T end +""" + SamplerTrivial(x) + +Create a sampler that just wraps the given value `x`. This is the default fall-back for +values. + +The recommended use case is sampling from values without precomputed data. +""" SamplerTrivial(x::T) where {T} = SamplerTrivial{T,gentype(T)}(x) Sampler(::Type{<:AbstractRNG}, x, ::Repetition) = SamplerTrivial(x) @@ -173,6 +184,13 @@ struct SamplerSimple{T,S,E} <: Sampler{E} data::S end +""" + SamplerSimple(x, data) + +Create a sampler that wraps the given value `x` and the `data`. + +The recommended use case is sampling from values with precomputed data. +""" SamplerSimple(x::T, data::S) where {T,S} = SamplerSimple{T,S,gentype(T)}(x, data) Base.getindex(sp::SamplerSimple) = sp.self From 14b74bcbc4d180fb27885926fbdfeb244b5b1344 Mon Sep 17 00:00:00 2001 From: Keno Fischer Date: Thu, 9 May 2019 18:24:41 +0200 Subject: [PATCH 15/34] Fix world age issues in Serialization test if run in Main (#31973) Fixes #31966 --- stdlib/Serialization/test/runtests.jl | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/stdlib/Serialization/test/runtests.jl b/stdlib/Serialization/test/runtests.jl index a88cfd4cf5f20..f542bf8205a6f 100644 --- a/stdlib/Serialization/test/runtests.jl +++ b/stdlib/Serialization/test/runtests.jl @@ -289,8 +289,12 @@ let A = rand(3,4) end # Function -serialize_test_function() = 1 -serialize_test_function2 = ()->1 +module DefinitelyNotMain + serialize_test_function() = 1 + serialize_test_function2 = ()->1 +end +serialize_test_function = DefinitelyNotMain.serialize_test_function +serialize_test_function2 = DefinitelyNotMain.serialize_test_function2 create_serialization_stream() do s # Base generic function serialize(s, sin) serialize(s, typeof) @@ -300,8 +304,12 @@ create_serialization_stream() do s # Base generic function seek(s, 0) @test deserialize(s) === sin @test deserialize(s) === typeof - @test deserialize(s)() === 1 - @test deserialize(s)() === 1 + f1 = deserialize(s) + f2 = deserialize(s) + @test first(methods(f1)).module === DefinitelyNotMain + @test first(methods(f2)).module === DefinitelyNotMain + @test f1() === 1 + @test f2() === 1 end # Anonymous Functions @@ -379,11 +387,11 @@ end # cycles module CycleFoo echo(x)=x + afunc = (x)->x end +echo(x) = x create_serialization_stream() do s - echo(x) = x - afunc = (x)->x - A = Any[1,2,3,abs,abs,afunc,afunc,echo,echo,CycleFoo.echo,CycleFoo.echo,4,5] + A = Any[1,2,3,abs,abs,CycleFoo.afunc,CycleFoo.afunc,echo,echo,CycleFoo.echo,CycleFoo.echo,4,5] A[3] = A serialize(s, A) seekstart(s) From e3afef0dc3505eea570dfb35a3a6ed1ecbbdcbe1 Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Thu, 9 May 2019 15:00:25 -0400 Subject: [PATCH 16/34] fix #31965, bug in interpreter stacktraces and `jl_code_requires_compiler` (#31967) --- base/stacktraces.jl | 2 +- src/toplevel.c | 2 +- test/choosetests.jl | 2 +- test/core.jl | 16 ---------------- test/interpreter.jl | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 35 insertions(+), 19 deletions(-) create mode 100644 test/interpreter.jl diff --git a/base/stacktraces.jl b/base/stacktraces.jl index 3cf9926156017..0fca8a8d4fbcf 100644 --- a/base/stacktraces.jl +++ b/base/stacktraces.jl @@ -124,7 +124,7 @@ using Base.Meta is_loc_meta(expr, kind) = isexpr(expr, :meta) && length(expr.args) >= 1 && expr.args[1] === kind function lookup(ip::Base.InterpreterIP) if ip.code isa Core.MethodInstance && ip.code.def isa Method - codeinfo = ip.code.inferred + codeinfo = ip.code.uninferred func = ip.code.def.name file = ip.code.def.file line = ip.code.def.line diff --git a/src/toplevel.c b/src/toplevel.c index ce69c8304b36c..b96162b207559 100644 --- a/src/toplevel.c +++ b/src/toplevel.c @@ -322,7 +322,7 @@ static void expr_attributes(jl_value_t *v, int *has_intrinsics, int *has_defs) J jl_module_t *mod = jl_globalref_mod(f); jl_sym_t *name = jl_globalref_name(f); if (jl_binding_resolved_p(mod, name)) { - jl_binding_t *b = jl_get_module_binding(mod, name); + jl_binding_t *b = jl_get_binding(mod, name); if (b && b->value && b->constp) called = b->value; } diff --git a/test/choosetests.jl b/test/choosetests.jl index aa7d2209dc25a..7e641426d340d 100644 --- a/test/choosetests.jl +++ b/test/choosetests.jl @@ -50,7 +50,7 @@ function choosetests(choices = []) "errorshow", "sets", "goto", "llvmcall", "llvmcall2", "grisu", "some", "meta", "stacktraces", "docs", "misc", "threads", "stress", - "enums", "cmdlineargs", "int", + "enums", "cmdlineargs", "int", "interpreter", "checked", "bitset", "floatfuncs", "precompile", "boundscheck", "error", "ambiguous", "cartesian", "osutils", "channels", "iostream", "secretbuffer", "specificity", diff --git a/test/core.jl b/test/core.jl index 4c5cd5f633ddd..40faf822b897f 100644 --- a/test/core.jl +++ b/test/core.jl @@ -6835,22 +6835,6 @@ struct T29145{A,B} end @test_throws TypeError T29145() -# interpreted but inferred/optimized top-level expressions with vars -let code = """ - while true - try - this_is_undefined_29213 - ed = 0 - break - finally - break - end - end - print(42) - """ - @test read(`$(Base.julia_cmd()) --startup-file=no --compile=min -e $code`, String) == "42" -end - # issue #29175 function f29175(tuple::T) where {T<:Tuple} prefix::Tuple{T.parameters[1:end-1]...} = tuple[1:length(T.parameters)-1] diff --git a/test/interpreter.jl b/test/interpreter.jl new file mode 100644 index 0000000000000..0fea42e0aecdb --- /dev/null +++ b/test/interpreter.jl @@ -0,0 +1,32 @@ +# This file is a part of Julia. License is MIT: https://julialang.org/license + +using Test + +# interpreted but inferred/optimized top-level expressions with vars +let code = """ + while true + try + this_is_undefined_29213 + ed = 0 + break + finally + break + end + end + print(42) + """ + @test read(`$(Base.julia_cmd()) --startup-file=no --compile=min -e $code`, String) == "42" +end + +let code = "Threads.atomic_add!(Threads.Atomic{Int}(40), 2)" + @test read(`$(Base.julia_cmd()) --startup-file=no --compile=min -E $code`, String) == "40\n" +end + +let p = Pipe(), + c = pipeline(`$(Base.julia_cmd()) --startup-file=no --compile=min -E 'error()'`, stderr=p) + proc = run(c, wait=false) + readline(p) + @test readline(p) == "Stacktrace:" + wait(proc) + close(p) +end From decb802b9d44a09fb981f380774fbc1234883eca Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Thu, 9 May 2019 16:05:19 -0400 Subject: [PATCH 17/34] sysimg: reduce the number of special cases (#31948) Put the entire image(*) into our pre-constructed data image, instead of attempting to leave out a couple of items. This saves us a couple lines of code, and should makes it simpler to keep the list of builtin objects (gc.c "tags") up-to-date. (*) The remaining special objects are ptls->root_task, since I was unsure the best way to handle it as no other Task object is allowed to be referenced, and the small integer caches. --- src/builtins.c | 61 +++-- src/codegen.cpp | 8 +- src/datatype.c | 9 +- src/dump.c | 4 - src/gc.c | 1 - src/gf.c | 5 +- src/init.c | 121 ++++----- src/jltypes.c | 107 ++++---- src/julia.h | 5 +- src/julia_internal.h | 2 +- src/rtutils.c | 4 +- src/staticdata.c | 585 ++++++++++++++++++------------------------- src/symbol.c | 3 +- src/task.c | 44 +--- src/toplevel.c | 6 +- 15 files changed, 412 insertions(+), 553 deletions(-) diff --git a/src/builtins.c b/src/builtins.c index 9a9e7fbf0645f..4369663ffe063 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -279,7 +279,7 @@ static uintptr_t type_object_id_(jl_value_t *v, jl_varidx_t *env) JL_NOTSAFEPOIN JL_DLLEXPORT uintptr_t jl_object_id_(jl_value_t *tv, jl_value_t *v) JL_NOTSAFEPOINT { - if (tv == (jl_value_t*)jl_sym_type) + if (tv == (jl_value_t*)jl_symbol_type) return ((jl_sym_t*)v)->hash; if (tv == (jl_value_t*)jl_simplevector_type) return hash_svec((jl_svec_t*)v); @@ -899,7 +899,7 @@ static int valid_type_param(jl_value_t *v) size_t i, l = jl_nparams(tt); for(i=0; i < l; i++) { jl_value_t *pi = jl_tparam(tt,i); - if (!(pi == (jl_value_t*)jl_sym_type || jl_isbits(pi))) + if (!(pi == (jl_value_t*)jl_symbol_type || jl_isbits(pi))) return 0; } return 1; @@ -1253,54 +1253,53 @@ jl_fptr_args_t jl_get_builtin_fptr(jl_value_t *b) return ((jl_typemap_entry_t*)jl_gf_mtable(b)->cache)->func.linfo->cache->specptr.fptr1; } -static void add_builtin_func(const char *name, jl_fptr_args_t fptr) +static jl_value_t *add_builtin_func(const char *name, jl_fptr_args_t fptr) { - jl_mk_builtin_func(NULL, name, fptr); + return jl_mk_builtin_func(NULL, name, fptr)->instance; } void jl_init_primitives(void) JL_GC_DISABLED { - add_builtin_func("===", jl_f_is); - add_builtin_func("typeof", jl_f_typeof); - add_builtin_func("sizeof", jl_f_sizeof); - add_builtin_func("<:", jl_f_issubtype); - add_builtin_func("isa", jl_f_isa); - add_builtin_func("typeassert", jl_f_typeassert); - add_builtin_func("throw", jl_f_throw); - add_builtin_func("tuple", jl_f_tuple); - add_builtin_func("ifelse", jl_f_ifelse); + jl_builtin_is = add_builtin_func("===", jl_f_is); + jl_builtin_typeof = add_builtin_func("typeof", jl_f_typeof); + jl_builtin_sizeof = add_builtin_func("sizeof", jl_f_sizeof); + jl_builtin_issubtype = add_builtin_func("<:", jl_f_issubtype); + jl_builtin_isa = add_builtin_func("isa", jl_f_isa); + jl_builtin_typeassert = add_builtin_func("typeassert", jl_f_typeassert); + jl_builtin_throw = add_builtin_func("throw", jl_f_throw); + jl_builtin_tuple = add_builtin_func("tuple", jl_f_tuple); + jl_builtin_ifelse = add_builtin_func("ifelse", jl_f_ifelse); // field access - add_builtin_func("getfield", jl_f_getfield); - add_builtin_func("setfield!", jl_f_setfield); - add_builtin_func("fieldtype", jl_f_fieldtype); - add_builtin_func("nfields", jl_f_nfields); - add_builtin_func("isdefined", jl_f_isdefined); + jl_builtin_getfield = add_builtin_func("getfield", jl_f_getfield); + jl_builtin_setfield = add_builtin_func("setfield!", jl_f_setfield); + jl_builtin_fieldtype = add_builtin_func("fieldtype", jl_f_fieldtype); + jl_builtin_nfields = add_builtin_func("nfields", jl_f_nfields); + jl_builtin_isdefined = add_builtin_func("isdefined", jl_f_isdefined); // array primitives - add_builtin_func("arrayref", jl_f_arrayref); - add_builtin_func("const_arrayref", jl_f_arrayref); - add_builtin_func("arrayset", jl_f_arrayset); - add_builtin_func("arraysize", jl_f_arraysize); + jl_builtin_arrayref = add_builtin_func("arrayref", jl_f_arrayref); + jl_builtin_const_arrayref = add_builtin_func("const_arrayref", jl_f_arrayref); + jl_builtin_arrayset = add_builtin_func("arrayset", jl_f_arrayset); + jl_builtin_arraysize = add_builtin_func("arraysize", jl_f_arraysize); // method table utils - add_builtin_func("applicable", jl_f_applicable); - add_builtin_func("invoke", jl_f_invoke); - jl_value_t *invokef = jl_get_global(jl_core_module, jl_symbol("invoke")); - jl_typename_t *itn = ((jl_datatype_t*)jl_typeof(invokef))->name; + jl_builtin_applicable = add_builtin_func("applicable", jl_f_applicable); + jl_builtin_invoke = add_builtin_func("invoke", jl_f_invoke); + jl_typename_t *itn = ((jl_datatype_t*)jl_typeof(jl_builtin_invoke))->name; jl_value_t *ikws = jl_new_generic_function_with_supertype(itn->name, jl_core_module, jl_builtin_type, 1); itn->mt->kwsorter = ikws; jl_gc_wb(itn->mt, ikws); jl_mk_builtin_func((jl_datatype_t*)jl_typeof(ikws), jl_symbol_name(jl_gf_name(ikws)), jl_f_invoke_kwsorter); // internal functions - add_builtin_func("apply_type", jl_f_apply_type); - add_builtin_func("_apply", jl_f__apply); + jl_builtin_apply_type = add_builtin_func("apply_type", jl_f_apply_type); + jl_builtin__apply = add_builtin_func("_apply", jl_f__apply); + jl_builtin__expr = add_builtin_func("_expr", jl_f__expr); + jl_builtin_svec = add_builtin_func("svec", jl_f_svec); add_builtin_func("_apply_pure", jl_f__apply_pure); add_builtin_func("_apply_latest", jl_f__apply_latest); - add_builtin_func("_expr", jl_f__expr); add_builtin_func("_typevar", jl_f__typevar); - add_builtin_func("svec", jl_f_svec); // builtin types add_builtin("Any", (jl_value_t*)jl_any_type); @@ -1323,7 +1322,7 @@ void jl_init_primitives(void) JL_GC_DISABLED add_builtin("CodeInstance", (jl_value_t*)jl_code_instance_type); add_builtin("TypeMapEntry", (jl_value_t*)jl_typemap_entry_type); add_builtin("TypeMapLevel", (jl_value_t*)jl_typemap_level_type); - add_builtin("Symbol", (jl_value_t*)jl_sym_type); + add_builtin("Symbol", (jl_value_t*)jl_symbol_type); add_builtin("SSAValue", (jl_value_t*)jl_ssavalue_type); add_builtin("Slot", (jl_value_t*)jl_abstractslot_type); add_builtin("SlotNumber", (jl_value_t*)jl_slotnumber_type); diff --git a/src/codegen.cpp b/src/codegen.cpp index b927dda80d565..03d7bf07a8b67 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -345,6 +345,7 @@ static std::map builtin_func_map; // --- code generation --- extern "C" { int globalUnique = 0; + jl_cgparams_t jl_default_cgparams = {1, 1, 1, 1, 0, NULL, NULL, NULL, NULL, NULL}; } template @@ -2383,7 +2384,7 @@ static Value *emit_f_is(jl_codectx_t &ctx, const jl_cgval_t &arg1, const jl_cgva // TODO: handle with emit_bitsunion_compare int ptr_comparable = 0; // whether this type is unique'd by pointer - if (rt1 == (jl_value_t*)jl_sym_type || rt2 == (jl_value_t*)jl_sym_type) + if (rt1 == (jl_value_t*)jl_symbol_type || rt2 == (jl_value_t*)jl_symbol_type) ptr_comparable = 1; if (jl_is_mutable_datatype(rt1) && // excludes abstract types rt1 != (jl_value_t*)jl_string_type && // technically mutable, but compared by contents @@ -7637,6 +7638,11 @@ extern "C" void *jl_init_llvm(void) jl_page_size = jl_getpagesize(); imaging_mode = jl_generating_output() && !jl_options.incremental; + jl_default_cgparams.module_setup = jl_nothing; + jl_default_cgparams.module_activation = jl_nothing; + jl_default_cgparams.raise_exception = jl_nothing; + jl_default_cgparams.emit_function = jl_nothing; + jl_default_cgparams.emitted_function = jl_nothing; jl_init_debuginfo(); #ifdef USE_POLLY diff --git a/src/datatype.c b/src/datatype.c index dd2f60769a6de..b420974022d8e 100644 --- a/src/datatype.c +++ b/src/datatype.c @@ -223,7 +223,7 @@ unsigned jl_special_vector_alignment(size_t nfields, jl_value_t *t) STATIC_INLINE int jl_is_datatype_make_singleton(jl_datatype_t *d) { - return (!d->abstract && jl_datatype_size(d) == 0 && d != jl_sym_type && d->name != jl_array_typename && + return (!d->abstract && jl_datatype_size(d) == 0 && d != jl_symbol_type && d->name != jl_array_typename && d->uid != 0 && !d->mutabl); } @@ -337,7 +337,7 @@ void jl_compute_field_offsets(jl_datatype_t *st) return; uint32_t nfields = jl_svec_len(st->types); if (nfields == 0) { - if (st == jl_sym_type || st == jl_string_type) { + if (st == jl_symbol_type || st == jl_string_type) { // opaque layout - heap-allocated blob static const jl_datatype_layout_t opaque_byte_layout = {0, 1, 0, 1, 0}; st->layout = &opaque_byte_layout; @@ -371,7 +371,7 @@ void jl_compute_field_offsets(jl_datatype_t *st) desc = (jl_fielddesc32_t*)alloca(descsz); int haspadding = 0; assert(st->name == jl_tuple_typename || - st == jl_sym_type || + st == jl_symbol_type || st == jl_simplevector_type || nfields != 0); @@ -623,8 +623,7 @@ void jl_assign_bits(void *dest, jl_value_t *bits) #define PERMBOXN_FUNC(nb,nw) \ jl_value_t *jl_permbox##nb(jl_datatype_t *t, int##nb##_t x) \ - { \ - assert(jl_isbits(t)); \ + { /* NOTE: t must be a concrete isbits datatype */ \ assert(jl_datatype_size(t) == sizeof(x)); \ jl_value_t *v = jl_gc_permobj(nw * sizeof(void*), t); \ *(int##nb##_t*)jl_data_ptr(v) = x; \ diff --git a/src/dump.c b/src/dump.c index 3702f29c16613..b0165607ab491 100644 --- a/src/dump.c +++ b/src/dump.c @@ -68,10 +68,6 @@ static jl_array_t *serializer_worklist JL_GLOBALLY_ROOTED; // (only used by the incremental serializer in MODE_MODULE) htable_t edges_map; -// list of modules being deserialized with __init__ methods -// (not used in MODE_IR) -extern jl_array_t *jl_module_init_order; - #define TAG_SYMBOL 2 #define TAG_SSAVALUE 3 #define TAG_DATATYPE 4 diff --git a/src/gc.c b/src/gc.c index 3706acffc5e3f..08a8771143536 100644 --- a/src/gc.c +++ b/src/gc.c @@ -2477,7 +2477,6 @@ mark: { } } -extern jl_array_t *jl_module_init_order; extern jl_typemap_entry_t *call_cache[N_CALL_CACHE]; extern jl_array_t *jl_all_methods; diff --git a/src/gf.c b/src/gf.c index 1620b5c7a455e..79d2b99a61da6 100644 --- a/src/gf.c +++ b/src/gf.c @@ -133,7 +133,7 @@ JL_DLLEXPORT jl_code_instance_t* jl_set_method_inferred( jl_value_t *inferred_const, jl_value_t *inferred, int32_t const_flags, size_t min_world, size_t max_world); -void jl_mk_builtin_func(jl_datatype_t *dt, const char *name, jl_fptr_args_t fptr) JL_GC_DISABLED +jl_datatype_t *jl_mk_builtin_func(jl_datatype_t *dt, const char *name, jl_fptr_args_t fptr) JL_GC_DISABLED { jl_sym_t *sname = jl_symbol(name); if (dt == NULL) { @@ -164,6 +164,7 @@ void jl_mk_builtin_func(jl_datatype_t *dt, const char *name, jl_fptr_args_t fptr jl_typemap_insert(&mt->cache, (jl_value_t*)mt, jl_anytuple_type, NULL, jl_emptysvec, (jl_value_t*)mi, 0, &lambda_cache, 1, ~(size_t)0, NULL); JL_GC_POP(); + return dt; } // run type inference on lambda "mi" for given argument types. @@ -1695,7 +1696,7 @@ JL_DLLEXPORT jl_value_t *jl_matching_methods(jl_tupletype_t *types, int lim, int return jl_false; // indeterminate - ml_matches can't deal with this case jl_methtable_t *mt = dt->name->mt; if (mt == NULL) - return (jl_value_t*)jl_alloc_vec_any(0); + return (jl_value_t*)jl_an_empty_vec_any; return ml_matches(mt->defs, 0, types, lim, include_ambiguous, world, min_valid, max_valid); } diff --git a/src/init.c b/src/init.c index 5f97d46a0b8e3..0c5a52ef32768 100644 --- a/src/init.c +++ b/src/init.c @@ -50,6 +50,9 @@ extern BOOL (WINAPI *hSymRefreshModuleList)(HANDLE); #include #endif +// list of modules being deserialized with __init__ methods +jl_array_t *jl_module_init_order; + #ifdef JL_ASAN_ENABLED JL_DLLEXPORT const char* __asan_default_options() { return "allow_user_segv_handler=1:detect_leaks=0"; @@ -305,8 +308,7 @@ JL_DLLEXPORT void jl_atexit_hook(int exitcode) #endif } -void jl_get_builtin_hooks(void); -void jl_get_builtins(void); +static void post_boot_hooks(void); JL_DLLEXPORT void *jl_dl_handle; void *jl_RTLD_DEFAULT_handle; @@ -666,6 +668,7 @@ void _julia_init(JL_IMAGE_SEARCH rel) jl_io_loop = uv_default_loop(); // this loop will internal events (spawning process etc.), // best to call this first, since it also initializes libuv jl_init_uv(); + init_stdio(); restore_signals(); jl_page_size = jl_getpagesize(); @@ -738,7 +741,16 @@ void _julia_init(JL_IMAGE_SEARCH rel) } #endif + if ((jl_options.outputo || jl_options.outputbc) && + (jl_options.code_coverage || jl_options.malloc_log)) { + jl_error("cannot generate code-coverage or track allocation information while generating a .o or .bc output file"); + } + jl_init_threading(); + jl_init_intrinsic_properties(); + + jl_gc_init(); + jl_gc_enable(0); jl_resolve_sysimg_location(rel); // loads sysimg if available, and conditionally sets jl_options.cpu_target @@ -747,30 +759,24 @@ void _julia_init(JL_IMAGE_SEARCH rel) if (jl_options.cpu_target == NULL) jl_options.cpu_target = "native"; - jl_gc_init(); - jl_gc_enable(0); - jl_init_types(); - jl_init_frontend(); + arraylist_new(&partial_inst, 0); + if (jl_options.image_file) { + jl_restore_system_image(jl_options.image_file); + } + else { + jl_init_types(); + jl_init_codegen(); + } + jl_init_tasks(); jl_init_root_task(stack_lo, stack_hi); - #ifdef ENABLE_TIMINGS jl_root_task->timing_stack = jl_root_timing; #endif + jl_init_frontend(); - init_stdio(); - // libuv stdio cleanup depends on jl_init_tasks() because JL_TRY is used in jl_atexit_hook() - - if ((jl_options.outputo || jl_options.outputbc) && - (jl_options.code_coverage || jl_options.malloc_log)) { - jl_error("cannot generate code-coverage or track allocation information while generating a .o or .bc output file"); - } - - jl_init_codegen(); - - jl_an_empty_vec_any = (jl_value_t*)jl_alloc_vec_any(0); + jl_an_empty_vec_any = (jl_value_t*)jl_alloc_vec_any(0); // used by ml_matches jl_init_serializer(); - jl_init_intrinsic_properties(); if (!jl_options.image_file) { jl_core_module = jl_new_module(jl_symbol("Core")); @@ -778,44 +784,9 @@ void _julia_init(JL_IMAGE_SEARCH rel) jl_top_module = jl_core_module; jl_init_intrinsic_functions(); jl_init_primitives(); - jl_get_builtins(); jl_init_main_module(); - jl_load(jl_core_module, "boot.jl"); - jl_get_builtin_hooks(); - jl_init_box_caches(); - } - - if (jl_options.image_file) { - JL_TRY { - jl_restore_system_image(jl_options.image_file); - } - JL_CATCH { - jl_printf(JL_STDERR, "error during init:\n"); - jl_static_show(JL_STDERR, jl_current_exception()); - jl_printf(JL_STDERR, "\n"); - jl_exit(1); - } - } - - // set module field of primitive types - int i; - void **table = jl_core_module->bindings.table; - for(i=1; i < jl_core_module->bindings.size; i+=2) { - if (table[i] != HT_NOTFOUND) { - jl_binding_t *b = (jl_binding_t*)table[i]; - jl_value_t *v = b->value; - if (v) { - if (jl_is_unionall(v)) - v = jl_unwrap_unionall(v); - if (jl_is_datatype(v)) { - jl_datatype_t *tt = (jl_datatype_t*)v; - tt->name->module = jl_core_module; - if (tt->name->mt) - tt->name->mt->module = jl_core_module; - } - } - } + post_boot_hooks(); } // the Main module is the one which is always open, and set as the @@ -866,7 +837,7 @@ static jl_value_t *core(const char *name) } // fetch references to things defined in boot.jl -void jl_get_builtin_hooks(void) +static void post_boot_hooks(void) { jl_char_type = (jl_datatype_t*)core("Char"); jl_int8_type = (jl_datatype_t*)core("Int8"); @@ -880,6 +851,7 @@ void jl_get_builtin_hooks(void) jl_signed_type = (jl_datatype_t*)core("Signed"); jl_datatype_t *jl_unsigned_type = (jl_datatype_t*)core("Unsigned"); jl_datatype_t *jl_integer_type = (jl_datatype_t*)core("Integer"); + jl_bool_type->super = jl_integer_type; jl_uint8_type->super = jl_unsigned_type; jl_int32_type->super = jl_signed_type; @@ -907,23 +879,28 @@ void jl_get_builtin_hooks(void) jl_weakref_type = (jl_datatype_t*)core("WeakRef"); jl_vecelement_typename = ((jl_datatype_t*)jl_unwrap_unionall(core("VecElement")))->name; -} -void jl_get_builtins(void) -{ - jl_builtin_throw = core("throw"); jl_builtin_is = core("==="); - jl_builtin_typeof = core("typeof"); jl_builtin_sizeof = core("sizeof"); - jl_builtin_issubtype = core("<:"); jl_builtin_isa = core("isa"); - jl_builtin_typeassert = core("typeassert"); jl_builtin__apply = core("_apply"); - jl_builtin_isdefined = core("isdefined"); jl_builtin_nfields = core("nfields"); - jl_builtin_tuple = core("tuple"); jl_builtin_svec = core("svec"); - jl_builtin_getfield = core("getfield"); jl_builtin_setfield = core("setfield!"); - jl_builtin_fieldtype = core("fieldtype"); jl_builtin_arrayref = core("arrayref"); - jl_builtin_const_arrayref = core("const_arrayref"); - jl_builtin_arrayset = core("arrayset"); jl_builtin_arraysize = core("arraysize"); - jl_builtin_apply_type = core("apply_type"); jl_builtin_applicable = core("applicable"); - jl_builtin_invoke = core("invoke"); jl_builtin__expr = core("_expr"); - jl_builtin_ifelse = core("ifelse"); + jl_init_box_caches(); + + // set module field of primitive types + int i; + void **table = jl_core_module->bindings.table; + for (i = 1; i < jl_core_module->bindings.size; i += 2) { + if (table[i] != HT_NOTFOUND) { + jl_binding_t *b = (jl_binding_t*)table[i]; + jl_value_t *v = b->value; + if (v) { + if (jl_is_unionall(v)) + v = jl_unwrap_unionall(v); + if (jl_is_datatype(v)) { + jl_datatype_t *tt = (jl_datatype_t*)v; + tt->name->module = jl_core_module; + if (tt->name->mt) + tt->name->mt->module = jl_core_module; + } + } + } + } } #ifdef __cplusplus diff --git a/src/jltypes.c b/src/jltypes.c index 2e6e193480626..89b3291bc7f15 100644 --- a/src/jltypes.c +++ b/src/jltypes.c @@ -24,7 +24,6 @@ jl_unionall_t *jl_type_type; jl_typename_t *jl_type_typename; jl_methtable_t *jl_type_type_mt; jl_datatype_t *jl_typename_type; -jl_datatype_t *jl_sym_type; jl_datatype_t *jl_symbol_type; jl_datatype_t *jl_ssavalue_type; jl_datatype_t *jl_abstractslot_type; @@ -119,6 +118,7 @@ jl_datatype_t *jl_void_type; jl_datatype_t *jl_voidpointer_type; jl_typename_t *jl_namedtuple_typename; jl_unionall_t *jl_namedtuple_type; +jl_datatype_t *jl_task_type; jl_value_t *jl_an_empty_vec_any; jl_value_t *jl_an_empty_string; jl_value_t *jl_stackovf_exception; @@ -126,16 +126,12 @@ jl_value_t *jl_stackovf_exception; jl_value_t *jl_segv_exception; #endif JL_DLLEXPORT jl_value_t *jl_diverror_exception; -JL_DLLEXPORT jl_value_t *jl_domain_exception; -JL_DLLEXPORT jl_value_t *jl_overflow_exception; JL_DLLEXPORT jl_value_t *jl_undefref_exception; jl_value_t *jl_interrupt_exception; jl_datatype_t *jl_boundserror_type; jl_value_t *jl_memory_exception; jl_value_t *jl_readonlymemory_exception; -jl_cgparams_t jl_default_cgparams = {1, 1, 1, 1, 0, NULL, NULL, NULL, NULL, NULL}; - // --- type properties and predicates --- static int typeenv_has(jl_typeenv_t *env, jl_tvar_t *v) @@ -1656,35 +1652,27 @@ void jl_reset_instantiate_inner_types(jl_datatype_t *t) // initialization ------------------------------------------------------------- +extern void jl_init_int32_int64_cache(void); + static jl_tvar_t *tvar(const char *name) { return jl_new_typevar(jl_symbol(name), (jl_value_t*)jl_bottom_type, (jl_value_t*)jl_any_type); } -extern void jl_init_int32_int64_cache(void); - void jl_init_types(void) JL_GC_DISABLED { jl_module_t *core = NULL; // will need to be assigned later - arraylist_new(&partial_inst, 0); // create base objects jl_datatype_type = jl_new_uninitialized_datatype(); jl_set_typeof(jl_datatype_type, jl_datatype_type); jl_typename_type = jl_new_uninitialized_datatype(); - jl_sym_type = jl_new_uninitialized_datatype(); - jl_symbol_type = jl_sym_type; + jl_symbol_type = jl_new_uninitialized_datatype(); jl_simplevector_type = jl_new_uninitialized_datatype(); jl_methtable_type = jl_new_uninitialized_datatype(); jl_nothing = jl_gc_permobj(0, NULL); - jl_default_cgparams.module_setup = jl_nothing; - jl_default_cgparams.module_activation = jl_nothing; - jl_default_cgparams.raise_exception = jl_nothing; - jl_default_cgparams.emit_function = jl_nothing; - jl_default_cgparams.emitted_function = jl_nothing; - jl_emptysvec = (jl_svec_t*)jl_gc_permobj(sizeof(void*), jl_simplevector_type); jl_svec_set_len_unsafe(jl_emptysvec, 0); @@ -1751,7 +1739,7 @@ void jl_init_types(void) JL_GC_DISABLED "names", "wrapper", "cache", "linearcache", "hash", "mt"); - jl_typename_type->types = jl_svec(8, jl_sym_type, jl_any_type, jl_simplevector_type, + jl_typename_type->types = jl_svec(8, jl_symbol_type, jl_any_type, jl_simplevector_type, jl_type_type, jl_simplevector_type, jl_simplevector_type, jl_any_type, jl_any_type); jl_typename_type->uid = jl_assign_type_uid(); @@ -1772,7 +1760,7 @@ void jl_init_types(void) JL_GC_DISABLED "cache", "max_args", "kwsorter", "module", "backedges", "", "", "offs"); - jl_methtable_type->types = jl_svec(10, jl_sym_type, jl_any_type, jl_any_type, jl_any_type/*jl_long*/, + jl_methtable_type->types = jl_svec(10, jl_symbol_type, jl_any_type, jl_any_type, jl_any_type/*jl_long*/, jl_any_type, jl_any_type/*module*/, jl_any_type/*any vector*/, jl_any_type/*long*/, jl_any_type/*int32*/, jl_any_type/*uint8*/); @@ -1785,22 +1773,22 @@ void jl_init_types(void) JL_GC_DISABLED jl_methtable_type->ninitialized = 4; jl_precompute_memoized_dt(jl_methtable_type); - jl_sym_type->name = jl_new_typename_in(jl_symbol("Symbol"), core); - jl_sym_type->name->wrapper = (jl_value_t*)jl_sym_type; - jl_sym_type->name->mt = jl_new_method_table(jl_sym_type->name->name, core); - jl_sym_type->super = jl_any_type; - jl_sym_type->parameters = jl_emptysvec; - jl_sym_type->name->names = jl_emptysvec; - jl_sym_type->types = jl_emptysvec; - jl_sym_type->instance = NULL; - jl_sym_type->uid = jl_assign_type_uid(); - jl_sym_type->struct_decl = NULL; - jl_sym_type->ditype = NULL; - jl_sym_type->size = 0; - jl_sym_type->abstract = 0; - jl_sym_type->mutabl = 1; - jl_sym_type->ninitialized = 0; - jl_precompute_memoized_dt(jl_sym_type); + jl_symbol_type->name = jl_new_typename_in(jl_symbol("Symbol"), core); + jl_symbol_type->name->wrapper = (jl_value_t*)jl_symbol_type; + jl_symbol_type->name->mt = jl_new_method_table(jl_symbol_type->name->name, core); + jl_symbol_type->super = jl_any_type; + jl_symbol_type->parameters = jl_emptysvec; + jl_symbol_type->name->names = jl_emptysvec; + jl_symbol_type->types = jl_emptysvec; + jl_symbol_type->instance = NULL; + jl_symbol_type->uid = jl_assign_type_uid(); + jl_symbol_type->struct_decl = NULL; + jl_symbol_type->ditype = NULL; + jl_symbol_type->size = 0; + jl_symbol_type->abstract = 0; + jl_symbol_type->mutabl = 1; + jl_symbol_type->ninitialized = 0; + jl_precompute_memoized_dt(jl_symbol_type); jl_simplevector_type->name = jl_new_typename_in(jl_symbol("SimpleVector"), core); jl_simplevector_type->name->wrapper = (jl_value_t*)jl_simplevector_type; @@ -1837,7 +1825,7 @@ void jl_init_types(void) JL_GC_DISABLED jl_tvar_type = jl_new_datatype(jl_symbol("TypeVar"), core, jl_any_type, jl_emptysvec, jl_perm_symsvec(3, "name", "lb", "ub"), - jl_svec(3, jl_sym_type, jl_any_type, jl_any_type), + jl_svec(3, jl_symbol_type, jl_any_type, jl_any_type), 0, 1, 3); jl_unionall_type = jl_new_datatype(jl_symbol("UnionAll"), core, type_type, jl_emptysvec, @@ -1991,7 +1979,7 @@ void jl_init_types(void) JL_GC_DISABLED jl_compute_field_offsets((jl_datatype_t*)jl_unwrap_unionall((jl_value_t*)jl_array_type)); jl_array_any_type = jl_apply_type2((jl_value_t*)jl_array_type, (jl_value_t*)jl_any_type, jl_box_long(1)); - jl_array_symbol_type = jl_apply_type2((jl_value_t*)jl_array_type, (jl_value_t*)jl_sym_type, jl_box_long(1)); + jl_array_symbol_type = jl_apply_type2((jl_value_t*)jl_array_type, (jl_value_t*)jl_symbol_type, jl_box_long(1)); jl_array_uint8_type = jl_apply_type2((jl_value_t*)jl_array_type, (jl_value_t*)jl_uint8_type, jl_box_long(1)); jl_array_int32_type = jl_apply_type2((jl_value_t*)jl_array_type, (jl_value_t*)jl_int32_type, jl_box_long(1)); @@ -1999,13 +1987,13 @@ void jl_init_types(void) JL_GC_DISABLED jl_new_datatype(jl_symbol("Expr"), core, jl_any_type, jl_emptysvec, jl_perm_symsvec(2, "head", "args"), - jl_svec(2, jl_sym_type, jl_array_any_type), + jl_svec(2, jl_symbol_type, jl_array_any_type), 0, 1, 2); jl_module_type = jl_new_datatype(jl_symbol("Module"), core, jl_any_type, jl_emptysvec, jl_perm_symsvec(2, "name", "parent"), - jl_svec(2, jl_sym_type, jl_any_type), 0, 1, 2); + jl_svec(2, jl_symbol_type, jl_any_type), 0, 1, 2); jl_linenumbernode_type = jl_new_datatype(jl_symbol("LineNumberNode"), core, jl_any_type, jl_emptysvec, @@ -2015,7 +2003,7 @@ void jl_init_types(void) JL_GC_DISABLED jl_lineinfonode_type = jl_new_datatype(jl_symbol("LineInfoNode"), core, jl_any_type, jl_emptysvec, jl_perm_symsvec(4, "method", "file", "line", "inlined_at"), - jl_svec(4, jl_any_type, jl_sym_type, jl_long_type, jl_long_type), 0, 0, 4); + jl_svec(4, jl_any_type, jl_symbol_type, jl_long_type, jl_long_type), 0, 0, 4); jl_gotonode_type = jl_new_datatype(jl_symbol("GotoNode"), core, jl_any_type, jl_emptysvec, @@ -2055,7 +2043,7 @@ void jl_init_types(void) JL_GC_DISABLED jl_globalref_type = jl_new_datatype(jl_symbol("GlobalRef"), core, jl_any_type, jl_emptysvec, jl_perm_symsvec(2, "mod", "name"), - jl_svec(2, jl_module_type, jl_sym_type), 0, 0, 2); + jl_svec(2, jl_module_type, jl_symbol_type), 0, 0, 2); jl_code_info_type = jl_new_datatype(jl_symbol("CodeInfo"), core, @@ -2123,9 +2111,9 @@ void jl_init_types(void) JL_GC_DISABLED "isva", "pure"), jl_svec(20, - jl_sym_type, + jl_symbol_type, jl_module_type, - jl_sym_type, + jl_symbol_type, jl_int32_type, jl_long_type, jl_long_type, @@ -2236,6 +2224,39 @@ void jl_init_types(void) JL_GC_DISABLED ((jl_datatype_t*)jl_unwrap_unionall((jl_value_t*)jl_namedtuple_type))->layout = NULL; jl_namedtuple_typename = ntt->name; + jl_task_type = (jl_datatype_t*) + jl_new_datatype(jl_symbol("Task"), + NULL, + jl_any_type, + jl_emptysvec, + jl_perm_symsvec(11, + "next", + "queue", + "storage", + "state", + "donenotify", + "result", + "exception", + "backtrace", + "logstate", + "code", + "sticky"), + jl_svec(11, + jl_any_type, + jl_any_type, + jl_any_type, + jl_symbol_type, + jl_any_type, + jl_any_type, + jl_any_type, + jl_any_type, + jl_any_type, + jl_any_type, + jl_bool_type), + 0, 1, 9); + jl_value_t *listt = jl_new_struct(jl_uniontype_type, jl_task_type, jl_void_type); + jl_svecset(jl_task_type->types, 0, listt); + // complete builtin type metadata jl_value_t *pointer_void = jl_apply_type1((jl_value_t*)jl_pointer_type, (jl_value_t*)jl_void_type); jl_voidpointer_type = (jl_datatype_t*)pointer_void; @@ -2291,7 +2312,7 @@ void jl_init_types(void) JL_GC_DISABLED jl_compute_field_offsets(jl_code_instance_type); jl_compute_field_offsets(jl_unionall_type); jl_compute_field_offsets(jl_simplevector_type); - jl_compute_field_offsets(jl_sym_type); + jl_compute_field_offsets(jl_symbol_type); } #ifdef __cplusplus diff --git a/src/julia.h b/src/julia.h index c8115f8b1252b..82d8aed5c60f5 100644 --- a/src/julia.h +++ b/src/julia.h @@ -552,7 +552,6 @@ extern JL_DLLEXPORT jl_unionall_t *jl_type_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_unionall_t *jl_typetype_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_datatype_t *jl_typename_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_typename_t *jl_type_typename JL_GLOBALLY_ROOTED; -extern JL_DLLEXPORT jl_datatype_t *jl_sym_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_datatype_t *jl_symbol_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_datatype_t *jl_ssavalue_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_datatype_t *jl_abstractslot_type JL_GLOBALLY_ROOTED; @@ -567,7 +566,6 @@ extern JL_DLLEXPORT jl_datatype_t *jl_emptytuple_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_unionall_t *jl_anytuple_type_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_unionall_t *jl_vararg_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_typename_t *jl_vararg_typename JL_GLOBALLY_ROOTED; -extern JL_DLLEXPORT jl_datatype_t *jl_task_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_datatype_t *jl_function_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_datatype_t *jl_builtin_type JL_GLOBALLY_ROOTED; @@ -625,6 +623,7 @@ extern JL_DLLEXPORT jl_unionall_t *jl_ref_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_typename_t *jl_pointer_typename JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_typename_t *jl_namedtuple_typename JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_unionall_t *jl_namedtuple_type JL_GLOBALLY_ROOTED; +extern JL_DLLEXPORT jl_datatype_t *jl_task_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_value_t *jl_array_uint8_type JL_GLOBALLY_ROOTED; extern JL_DLLEXPORT jl_value_t *jl_array_any_type JL_GLOBALLY_ROOTED; @@ -997,7 +996,7 @@ static inline int jl_is_layout_opaque(const jl_datatype_layout_t *l) JL_NOTSAFEP #define jl_is_uint32(v) jl_typeis(v,jl_uint32_type) #define jl_is_uint64(v) jl_typeis(v,jl_uint64_type) #define jl_is_bool(v) jl_typeis(v,jl_bool_type) -#define jl_is_symbol(v) jl_typeis(v,jl_sym_type) +#define jl_is_symbol(v) jl_typeis(v,jl_symbol_type) #define jl_is_ssavalue(v) jl_typeis(v,jl_ssavalue_type) #define jl_is_slot(v) (jl_typeis(v,jl_slotnumber_type) || jl_typeis(v,jl_typedslot_type)) #define jl_is_expr(v) jl_typeis(v,jl_expr_type) diff --git a/src/julia_internal.h b/src/julia_internal.h index 7c690254316d7..47dfc8ceed711 100644 --- a/src/julia_internal.h +++ b/src/julia_internal.h @@ -422,7 +422,7 @@ int jl_has_concrete_subtype(jl_value_t *typ) JL_NOTSAFEPOINT; jl_datatype_t *jl_inst_concrete_tupletype_v(jl_value_t **p, size_t np) JL_ALWAYS_LEAFTYPE; jl_datatype_t *jl_inst_concrete_tupletype(jl_svec_t *p) JL_ALWAYS_LEAFTYPE; JL_DLLEXPORT void jl_method_table_insert(jl_methtable_t *mt, jl_method_t *method, jl_tupletype_t *simpletype); -void jl_mk_builtin_func(jl_datatype_t *dt, const char *name, jl_fptr_args_t fptr) JL_GC_DISABLED; +jl_datatype_t *jl_mk_builtin_func(jl_datatype_t *dt, const char *name, jl_fptr_args_t fptr) JL_GC_DISABLED; jl_value_t *jl_type_intersection_env_s(jl_value_t *a, jl_value_t *b, jl_svec_t **penv, int *issubty); jl_value_t *jl_type_intersection_env(jl_value_t *a, jl_value_t *b, jl_svec_t **penv); int jl_subtype_matching(jl_value_t *a, jl_value_t *b, jl_svec_t **penv); diff --git a/src/rtutils.c b/src/rtutils.c index 2275dbb7bf71b..17389bfa91714 100644 --- a/src/rtutils.c +++ b/src/rtutils.c @@ -600,7 +600,7 @@ static size_t jl_static_show_x_(JL_STREAM *out, jl_value_t *v, jl_datatype_t *vt else if (v == (jl_value_t*)jl_typename_type) { n += jl_printf(out, "Core.TypeName"); } - else if (v == (jl_value_t*)jl_sym_type) { + else if (v == (jl_value_t*)jl_symbol_type) { n += jl_printf(out, "Symbol"); } else if (v == (jl_value_t*)jl_methtable_type) { @@ -820,7 +820,7 @@ static size_t jl_static_show_x_(JL_STREAM *out, jl_value_t *v, jl_datatype_t *vt } n += jl_printf(out, "%s", jl_symbol_name(m->name)); } - else if (vt == jl_sym_type) { + else if (vt == jl_symbol_type) { char *sn = jl_symbol_name((jl_sym_t*)v); int quoted = !jl_is_identifier(sn) && jl_operator_precedence(sn) == 0; if (quoted) diff --git a/src/staticdata.c b/src/staticdata.c index e41d377cdc231..bf5f9aae20654 100644 --- a/src/staticdata.c +++ b/src/staticdata.c @@ -30,53 +30,93 @@ extern "C" { // TODO: put WeakRefs on the weak_refs list during deserialization // TODO: handle finalizers +// An array of references that need to be restored from the sysimg +// This is a manually constructed dual of the gvars array, which would be produced by codegen for Julia code, for C. +static void *const _tags[] = { + // builtin types + &jl_any_type, &jl_symbol_type, &jl_ssavalue_type, &jl_datatype_type, &jl_slotnumber_type, + &jl_simplevector_type, &jl_array_type, &jl_typedslot_type, + &jl_expr_type, &jl_globalref_type, &jl_string_type, + &jl_module_type, &jl_tvar_type, &jl_method_instance_type, &jl_method_type, &jl_code_instance_type, + &jl_linenumbernode_type, &jl_lineinfonode_type, + &jl_gotonode_type, &jl_quotenode_type, + &jl_pinode_type, &jl_phinode_type, &jl_phicnode_type, &jl_upsilonnode_type, + &jl_type_type, &jl_bottom_type, &jl_ref_type, &jl_pointer_type, + &jl_vararg_type, &jl_abstractarray_type, + &jl_densearray_type, &jl_void_type, &jl_function_type, &jl_typeofbottom_type, + &jl_unionall_type, &jl_typename_type, &jl_builtin_type, &jl_code_info_type, + &jl_task_type, &jl_uniontype_type, &jl_typetype_type, &jl_abstractstring_type, + &jl_array_any_type, &jl_intrinsic_type, &jl_abstractslot_type, + &jl_methtable_type, &jl_typemap_level_type, &jl_typemap_entry_type, + &jl_voidpointer_type, &jl_newvarnode_type, + &jl_anytuple_type_type, &jl_anytuple_type, &jl_namedtuple_type, &jl_emptytuple_type, + &jl_array_symbol_type, &jl_array_uint8_type, &jl_array_int32_type, + &jl_int32_type, &jl_int64_type, &jl_bool_type, &jl_uint8_type, + &jl_uint32_type, &jl_uint64_type, &jl_char_type, &jl_weakref_type, + &jl_int8_type, &jl_int16_type, &jl_uint16_type, + &jl_float16_type, &jl_float32_type, &jl_float64_type, &jl_floatingpoint_type, + &jl_number_type, &jl_signed_type, + // special typenames + &jl_tuple_typename, &jl_pointer_typename, &jl_array_typename, &jl_type_typename, + &jl_vararg_typename, &jl_namedtuple_typename, + &jl_vecelement_typename, + // special exceptions + &jl_errorexception_type, &jl_argumenterror_type, &jl_typeerror_type, + &jl_methoderror_type, &jl_loaderror_type, &jl_initerror_type, + &jl_undefvarerror_type, &jl_stackovf_exception, &jl_diverror_exception, + &jl_interrupt_exception, &jl_boundserror_type, &jl_memory_exception, + &jl_undefref_exception, &jl_readonlymemory_exception, +#ifdef SEGV_EXCEPTION + &jl_segv_exception, +#endif + // other special values + &jl_emptysvec, &jl_emptytuple, &jl_false, &jl_true, &jl_nothing, &jl_an_empty_string, + &jl_module_init_order, &jl_core_module, &jl_base_module, &jl_main_module, &jl_top_module, + &jl_typeinf_func, &jl_type_type_mt, + // some Core.Builtin Functions that we want to be able to reference: + &jl_builtin_throw, &jl_builtin_is, &jl_builtin_typeof, &jl_builtin_sizeof, + &jl_builtin_issubtype, &jl_builtin_isa, &jl_builtin_typeassert, &jl_builtin__apply, + &jl_builtin_isdefined, &jl_builtin_nfields, &jl_builtin_tuple, &jl_builtin_svec, + &jl_builtin_getfield, &jl_builtin_setfield, &jl_builtin_fieldtype, &jl_builtin_arrayref, + &jl_builtin_const_arrayref, &jl_builtin_arrayset, &jl_builtin_arraysize, + &jl_builtin_apply_type, &jl_builtin_applicable, &jl_builtin_invoke, + &jl_builtin__expr, &jl_builtin_ifelse, + NULL }; +static jl_value_t **const*const tags = (jl_value_t**const*const)_tags; + // hash of definitions for predefined tagged object -static htable_t sertag_table; static htable_t symbol_table; static uintptr_t nsym_tag; // array of definitions for the predefined tagged object types -// (reverse of sertag_table and symbol_table) -static arraylist_t deser_tag; +// (reverse of symbol_table) static arraylist_t deser_sym; // table of all objects that are serialized static htable_t backref_table; static int backref_table_numel; static arraylist_t layout_table; +static arraylist_t builtin_typenames; // list of (size_t pos, (void *f)(jl_value_t*)) entries // for the serializer to mark values in need of rework by function f // during deserialization later static arraylist_t reinit_list; -// list of modules being deserialized with __init__ methods -// (not used in MODE_AST) -jl_array_t *jl_module_init_order; - // hash of definitions for predefined function pointers static htable_t fptr_to_id; // array of definitions for the predefined function pointers // (reverse of fptr_to_id) +// This is a manually constructed dual of the fvars array, which would be produced by codegen for Julia code, for C. static const jl_fptr_args_t id_to_fptrs[] = { - jl_f_throw, jl_f_is, jl_f_typeof, jl_f_issubtype, jl_f_isa, - jl_f_typeassert, jl_f__apply, jl_f__apply_pure, jl_f__apply_latest, jl_f_isdefined, - jl_f_tuple, jl_f_svec, jl_f_intrinsic_call, jl_f_invoke_kwsorter, - jl_f_getfield, jl_f_setfield, jl_f_fieldtype, jl_f_nfields, - jl_f_arrayref, jl_f_const_arrayref, jl_f_arrayset, jl_f_arraysize, jl_f_apply_type, - jl_f_applicable, jl_f_invoke, jl_f_sizeof, jl_f__expr, jl_f__typevar, - jl_f_ifelse, + &jl_f_throw, &jl_f_is, &jl_f_typeof, &jl_f_issubtype, &jl_f_isa, + &jl_f_typeassert, &jl_f__apply, &jl_f__apply_pure, &jl_f__apply_latest, &jl_f_isdefined, + &jl_f_tuple, &jl_f_svec, &jl_f_intrinsic_call, &jl_f_invoke_kwsorter, + &jl_f_getfield, &jl_f_setfield, &jl_f_fieldtype, &jl_f_nfields, + &jl_f_arrayref, &jl_f_const_arrayref, &jl_f_arrayset, &jl_f_arraysize, &jl_f_apply_type, + &jl_f_applicable, &jl_f_invoke, &jl_f_sizeof, &jl_f__expr, &jl_f__typevar, + &jl_f_ifelse, NULL }; -typedef enum _DUMP_MODES { - // not in the serializer at all, or - // something is seriously wrong - MODE_INVALID = 0, - - // jl_restore_system_image - // restoring an entire system image from disk - MODE_SYSTEM_IMAGE, -} DUMP_MODES; - typedef struct { ios_t *s; ios_t *const_data; @@ -86,7 +126,6 @@ typedef struct { ios_t *fptr_record; arraylist_t relocs_list; arraylist_t gctags_list; - DUMP_MODES mode; jl_ptls_t ptls; } jl_serializer_state; @@ -94,7 +133,6 @@ static jl_value_t *jl_idtable_type = NULL; static jl_typename_t *jl_idtable_typename = NULL; static jl_value_t *jl_bigint_type = NULL; static int gmp_limb_size = 0; -static arraylist_t builtin_typenames; enum RefTags { DataRef, @@ -242,14 +280,31 @@ static void jl_serialize_module(jl_serializer_state *s, jl_module_t *m) } +#define NBOX_C 1024 + static void jl_serialize_value_(jl_serializer_state *s, jl_value_t *v) { + // ignore items that are given a special representation if (v == NULL || jl_is_symbol(v)) { return; } - - void *builtin = ptrhash_get(&sertag_table, v); - if (builtin != HT_NOTFOUND) { + else if (jl_typeis(v, jl_task_type)) { + if (v == (jl_value_t*)s->ptls->root_task) { + jl_serialize_value(s, ((jl_task_t*)v)->tls); + return; + } + } + else if (jl_typeis(v, jl_int64_type)) { + int64_t i64 = *(int64_t*)v + NBOX_C / 2; + if ((uint64_t)i64 < NBOX_C) + return; + } + else if (jl_typeis(v, jl_int32_type)) { + int32_t i32 = *(int32_t*)v + NBOX_C / 2; + if ((uint32_t)i32 < NBOX_C) + return; + } + else if (jl_typeis(v, jl_uint8_type)) { return; } @@ -290,9 +345,6 @@ static void jl_serialize_value_(jl_serializer_state *s, jl_value_t *v) else if (jl_typeis(v, jl_module_type)) { jl_serialize_module(s, (jl_module_t*)v); } - else if (jl_typeis(v, jl_task_type)) { - jl_error("Task cannot be serialized"); - } else { char *data = (char*)jl_data_ptr(v); size_t i, nf = jl_datatype_nfields(t); @@ -364,8 +416,22 @@ static uintptr_t _backref_id(jl_serializer_state *s, jl_value_t *v) JL_NOTSAFEPO *pidx = idx; } } - else { - idx = ptrhash_get(&sertag_table, v); + else if (v == (jl_value_t*)s->ptls->root_task) { + return (uintptr_t)TagRef << RELOC_TAG_OFFSET; + } + else if (jl_typeis(v, jl_int64_type)) { + int64_t i64 = *(int64_t*)v + NBOX_C / 2; + if ((uint64_t)i64 < NBOX_C) + return ((uintptr_t)TagRef << RELOC_TAG_OFFSET) + i64 + 1; + } + else if (jl_typeis(v, jl_int32_type)) { + int32_t i32 = *(int32_t*)v + NBOX_C / 2; + if ((uint32_t)i32 < NBOX_C) + return ((uintptr_t)TagRef << RELOC_TAG_OFFSET) + i32 + 1 + NBOX_C; + } + else if (jl_typeis(v, jl_uint8_type)) { + uint8_t u8 = *(uint8_t*)v; + return ((uintptr_t)TagRef << RELOC_TAG_OFFSET) + u8 + 1 + NBOX_C + NBOX_C; } if (idx == HT_NOTFOUND) { idx = ptrhash_get(&backref_table, v); @@ -609,7 +675,7 @@ static void jl_write_values(jl_serializer_state *s) jl_write_module(s, item, (jl_module_t*)v); // will need to recreate the binding table for this arraylist_push(&reinit_list, (void*)item); - arraylist_push(&reinit_list, (void*)5); + arraylist_push(&reinit_list, (void*)2); } else if (jl_typeis(v, jl_task_type)) { jl_error("Task cannot be serialized"); @@ -617,7 +683,7 @@ static void jl_write_values(jl_serializer_state *s) else if (jl_is_svec(v)) { ios_write(s->s, (char*)v, sizeof(void*)); size_t i, l = jl_svec_len(v); - assert(l > 0); + assert(l > 0 || (jl_svec_t*)v == jl_emptysvec); for (i = 0; i < l; i++) { write_pointerfield(s, jl_svecref(v, i)); } @@ -797,6 +863,31 @@ static void jl_write_gv_syms(jl_serializer_state *s, jl_sym_t *v) jl_write_gv_syms(s, v->right); } +static void jl_write_gv_int(jl_serializer_state *s, jl_value_t *v) +{ + int32_t gv = jl_get_llvm_gv((jl_value_t*)v); + if (gv != 0) { + uintptr_t item = backref_id(s, v); + assert(item >> RELOC_TAG_OFFSET == TagRef); + record_gvar(s, gv, item); + } +} +static void jl_write_gv_ints(jl_serializer_state *s) +{ + // this also ensures all objects referenced in the code have + // references in the system image to their global variable + // since codegen knows that some integer boxes are static, + // they might not have had a reference anywhere in the code + // image other than here + size_t i; + for (i = 0; i < NBOX_C; i++) { + jl_write_gv_int(s, jl_box_int32((int32_t)i - NBOX_C / 2)); + jl_write_gv_int(s, jl_box_int64((int64_t)i - NBOX_C / 2)); + } + for (i = 0; i < 256; i++) { + jl_write_gv_int(s, jl_box_uint8(i)); + } +} static inline uint32_t load_uint32(uintptr_t *base) { @@ -841,12 +932,12 @@ static uintptr_t get_reloc_for_item(uintptr_t reloc_item, size_t reloc_offset) switch (tag) { case ConstDataRef: break; - case TagRef: - assert(offset >= 2 && offset < deser_tag.len && deser_tag.items[offset] && "corrupt relocation item id"); - break; case SymbolRef: assert(offset < nsym_tag && "corrupt relocation item id"); break; + case TagRef: + assert(offset < 2 * NBOX_C + 257 && "corrupt relocation item id"); + break; case BindingRef: assert(offset == 0 && "corrupt relocation offset"); break; @@ -858,7 +949,7 @@ static uintptr_t get_reloc_for_item(uintptr_t reloc_item, size_t reloc_offset) break; case DataRef: default: - assert("corrupt relocation item id"); + assert(0 && "corrupt relocation item id"); abort(); } #endif @@ -873,18 +964,29 @@ static inline uintptr_t get_item_for_reloc(jl_serializer_state *s, uintptr_t bas size_t offset = (reloc_id & (((uintptr_t)1 << RELOC_TAG_OFFSET) - 1)); switch (tag) { case DataRef: - assert(offset < size); + assert(offset <= size); return base + offset; case ConstDataRef: - return (uintptr_t)deser_tag.items[0] + (offset * sizeof(void*)); - case TagRef: - assert(offset < deser_tag.len && deser_tag.items[offset] && "corrupt relocation item id"); - return (uintptr_t)deser_tag.items[offset]; + return (uintptr_t)s->const_data->buf + (offset * sizeof(void*)); case SymbolRef: assert(offset < deser_sym.len && deser_sym.items[offset] && "corrupt relocation item id"); return (uintptr_t)deser_sym.items[offset]; case BindingRef: return jl_buff_tag | GC_OLD_MARKED; + case TagRef: + if (offset == 0) + return (uintptr_t)s->ptls->root_task; + offset -= 1; + if (offset < NBOX_C) + return (uintptr_t)jl_box_int64((int64_t)offset - NBOX_C / 2); + offset -= NBOX_C; + if (offset < NBOX_C) + return (uintptr_t)jl_box_int32((int32_t)offset - NBOX_C / 2); + offset -= NBOX_C; + if (offset < 256) + return (uintptr_t)jl_box_uint8(offset); + offset -= 256; + assert(0 && "corrupt relocation item id"); case BuiltinFunctionRef: assert(offset < sizeof(id_to_fptrs) / sizeof(*id_to_fptrs) && "unknown function pointer ID"); return (uintptr_t)id_to_fptrs[offset]; @@ -1074,15 +1176,6 @@ static void jl_update_all_gvars(jl_serializer_state *s) static void jl_finalize_serializer(jl_serializer_state *s) { size_t i, l; - // save module initialization order - if (jl_module_init_order != NULL) { - l = jl_array_len(jl_module_init_order); - for (i = 0; i < l; i++) { - // verify that all these modules were saved - assert(ptrhash_get(&backref_table, jl_array_ptr_ref(jl_module_init_order, i)) != HT_NOTFOUND); - } - } - jl_write_value(s, jl_module_init_order); // record list of reinitialization functions l = reinit_list.len; @@ -1097,91 +1190,43 @@ static void jl_finalize_serializer(jl_serializer_state *s) } -void jl_typemap_rehash(jl_typemap_t *ml, int8_t offs); -static void jl_reinit_item(jl_value_t *v, int how, arraylist_t *tracee_list) +static void jl_reinit_item(jl_value_t *v, int how) { - JL_TRY { - switch (how) { - case 1: { // rehash IdDict - jl_array_t **a = (jl_array_t**)v; - assert(jl_is_array(*a)); - // Assume *a don't need a write barrier - *a = jl_idtable_rehash(*a, jl_array_len(*a)); - jl_gc_wb(v, *a); - break; - } - case 2: { // reinsert module v into parent (const) - jl_module_t *mod = (jl_module_t*)v; - assert(jl_is_module(mod)); - jl_binding_t *b = jl_get_binding_wr(mod->parent, mod->name, 1); - jl_declare_constant(b); // this can throw - if (b->value != NULL) { - if (!jl_is_module(b->value)) { - jl_errorf("Invalid redefinition of constant %s.", - jl_symbol_name(mod->name)); // this also throws - } - if (jl_generating_output() && jl_options.incremental) { - jl_errorf("Cannot replace module %s during incremental precompile.", jl_symbol_name(mod->name)); - } - jl_printf(JL_STDERR, "WARNING: replacing module %s.\n", - jl_symbol_name(mod->name)); - } - b->value = v; - jl_gc_wb_binding(b, v); - break; - } - case 3: { // rehash MethodTable - jl_methtable_t *mt = (jl_methtable_t*)v; - assert(jl_is_mtable(mt)); - jl_typemap_rehash(mt->defs, 0); - // TODO: consider reverting this when we can split on Type{...} better - jl_typemap_rehash(mt->cache, 1); //(mt == jl_type_typename->mt) ? 0 : 1); - if (tracee_list) - arraylist_push(tracee_list, mt); - break; - } - case 4: { // rehash specializations tfunc - jl_method_t *m = (jl_method_t*)v; - assert(jl_is_method(m)); - jl_typemap_rehash(m->specializations, 0); - break; - } - case 5: { // rebuild the binding table for module v - jl_module_t *mod = (jl_module_t*)v; - assert(jl_is_module(mod)); - size_t nbindings = mod->bindings.size; - htable_new(&mod->bindings, nbindings); - struct binding { - uintptr_t tag; - jl_binding_t b; - } *b; - b = (struct binding*)&mod[1]; - while (nbindings > 0) { - ptrhash_put(&mod->bindings, (char*)b->b.name, &b->b); - b += 1; - nbindings -= 1; - } - break; + switch (how) { + case 1: { // rehash IdDict + jl_array_t **a = (jl_array_t**)v; + assert(jl_is_array(*a)); + // Assume *a don't need a write barrier + *a = jl_idtable_rehash(*a, jl_array_len(*a)); + jl_gc_wb(v, *a); + break; + } + case 2: { // rebuild the binding table for module v + jl_module_t *mod = (jl_module_t*)v; + assert(jl_is_module(mod)); + size_t nbindings = mod->bindings.size; + htable_new(&mod->bindings, nbindings); + struct binding { + uintptr_t tag; + jl_binding_t b; + } *b; + b = (struct binding*)&mod[1]; + while (nbindings > 0) { + ptrhash_put(&mod->bindings, (char*)b->b.name, &b->b); + b += 1; + nbindings -= 1; } - default: - assert(0 && "corrupt deserialization state"); - abort(); + break; } - } - JL_CATCH { - jl_printf(JL_STDERR, "WARNING: error while reinitializing value "); - jl_static_show(JL_STDERR, v); - jl_printf(JL_STDERR, ":\n"); - jl_static_show(JL_STDERR, jl_current_exception()); - jl_printf(JL_STDERR, "\n"); + default: + assert(0 && "corrupt deserialization state"); + abort(); } } -static jl_array_t *jl_finalize_deserializer(jl_serializer_state *s, arraylist_t *tracee_list) +static void jl_finalize_deserializer(jl_serializer_state *s) { - jl_array_t *init_order = (jl_array_t*)jl_read_value(s); - // run reinitialization functions uintptr_t base = (uintptr_t)&s->s->buf[0]; while (1) { @@ -1189,9 +1234,8 @@ static jl_array_t *jl_finalize_deserializer(jl_serializer_state *s, arraylist_t if (offset == 0) break; jl_value_t *v = (jl_value_t*)(base + offset); - jl_reinit_item(v, read_uint32(s->s), tracee_list); + jl_reinit_item(v, read_uint32(s->s)); } - return init_order; } @@ -1249,7 +1293,6 @@ static void jl_save_system_image_to_stream(ios_t *f) s.relocs = &relocs; s.gvar_record = &gvar_record; s.fptr_record = &fptr_record; - s.mode = MODE_SYSTEM_IMAGE; s.ptls = jl_get_ptls_states(); arraylist_new(&s.relocs_list, 0); arraylist_new(&s.gctags_list, 0); @@ -1271,27 +1314,20 @@ static void jl_save_system_image_to_stream(ios_t *f) } { // step 1: record values (recursively) that need to go in the image - jl_serialize_value(&s, jl_core_module); - jl_serialize_value(&s, jl_main_module); - jl_serialize_value(&s, jl_top_module); - jl_serialize_value(&s, jl_typeinf_func); - jl_serialize_value(&s, jl_module_init_order); - - // serialize method tables of builtin types - jl_serialize_value(&s, jl_type_typename->mt); - jl_serialize_value(&s, jl_intrinsic_type->name->mt); - jl_serialize_value(&s, jl_sym_type->name->mt); - jl_serialize_value(&s, jl_array_typename->mt); - jl_serialize_value(&s, jl_module_type->name->mt); - - jl_prune_type_cache(jl_tuple_typename->cache); - jl_prune_type_cache(jl_tuple_typename->linearcache); - jl_prune_type_cache(jl_type_typename->cache); - - uintptr_t i; + size_t i; + for (i = 0; tags[i] != NULL; i++) { + jl_value_t *tag = *tags[i]; + jl_serialize_value(&s, tag); + } for (i = 0; i < builtin_typenames.len; i++) { - jl_serialize_value(&s, ((jl_typename_t*)builtin_typenames.items[i])->cache); - jl_serialize_value(&s, ((jl_typename_t*)builtin_typenames.items[i])->linearcache); + jl_typename_t *tn = (jl_typename_t*)builtin_typenames.items[i]; + jl_prune_type_cache(tn->cache); + jl_prune_type_cache(tn->linearcache); + } + for (i = 0; i < builtin_typenames.len; i++) { + jl_typename_t *tn = (jl_typename_t*)builtin_typenames.items[i]; + jl_serialize_value(&s, tn->cache); + jl_serialize_value(&s, tn->linearcache); } } @@ -1300,12 +1336,7 @@ static void jl_save_system_image_to_stream(ios_t *f) jl_write_values(&s); jl_write_relocations(&s); jl_write_gv_syms(&s, jl_get_root_symbol()); - // ensure everything in deser_tag are reassociated with their GlobalValue - uintptr_t i; - for (i = 0; i < deser_tag.len; i++) { - jl_value_t *v = (jl_value_t*)deser_tag.items[i]; - record_gvar(&s, jl_get_llvm_gv(v), ((uintptr_t)TagRef << RELOC_TAG_OFFSET) + i); - } + jl_write_gv_ints(&s); } // step 3: combine all of the sections into one file @@ -1343,24 +1374,17 @@ static void jl_save_system_image_to_stream(ios_t *f) { // step 4: record locations of special roots s.s = f; - jl_finalize_serializer(&s); - jl_write_value(&s, jl_main_module); - jl_write_value(&s, jl_top_module); - jl_write_value(&s, jl_typeinf_func); - write_uint32(f, jl_typeinf_world); - jl_write_value(&s, jl_type_typename->mt); - jl_write_value(&s, jl_intrinsic_type->name->mt); - jl_write_value(&s, jl_sym_type->name->mt); - jl_write_value(&s, jl_array_typename->mt); - jl_write_value(&s, jl_module_type->name->mt); - uintptr_t i; - for (i = 0; i < builtin_typenames.len; i++) { - jl_write_value(&s, ((jl_typename_t*)builtin_typenames.items[i])->cache); - jl_write_value(&s, ((jl_typename_t*)builtin_typenames.items[i])->linearcache); + size_t i; + for (i = 0; tags[i] != NULL; i++) { + jl_value_t *tag = *tags[i]; + jl_write_value(&s, tag); } + jl_write_value(&s, s.ptls->root_task->tls); write_uint32(f, jl_get_t_uid_ctr()); write_uint32(f, jl_get_gs_ctr()); write_uint32(f, jl_world_counter); + write_uint32(f, jl_typeinf_world); + jl_finalize_serializer(&s); } arraylist_free(&layout_table); @@ -1393,8 +1417,7 @@ JL_DLLEXPORT void jl_save_system_image(const char *fname) JL_SIGATOMIC_END(); } -extern void jl_get_builtins(void); -extern void jl_get_builtin_hooks(void); +extern void jl_init_int32_int64_cache(void); extern void jl_gc_set_permalloc_region(void *start, void *end); // Takes in a path of the form "usr/lib/julia/sys.so" (jl_restore_system_image should be passed the same string) @@ -1431,23 +1454,17 @@ static void jl_restore_system_image_from_stream(ios_t *f) jl_init_serializer2(0); ios_t sysimg, const_data, symbols, relocs, gvar_record, fptr_record; jl_serializer_state s; - s.s = &sysimg; + s.s = NULL; s.const_data = &const_data; s.symbols = &symbols; s.relocs = &relocs; s.gvar_record = &gvar_record; s.fptr_record = &fptr_record; - s.mode = MODE_SYSTEM_IMAGE; s.ptls = jl_get_ptls_states(); arraylist_new(&s.relocs_list, 0); arraylist_new(&s.gctags_list, 0); - jl_bigint_type = jl_base_module ? jl_get_global(jl_base_module, jl_symbol("BigInt")) : NULL; - if (jl_bigint_type) { - gmp_limb_size = jl_unbox_long(jl_get_global((jl_module_t*)jl_get_global(jl_base_module, jl_symbol("GMP")), - jl_symbol("BITS_PER_LIMB"))) / 8; - } - // step 1: read section map and apply relocations + // step 1: read section map assert(ios_pos(f) == 0 && f->bm == bm_mem); size_t sizeof_sysimg = read_uint32(f); ios_static_buffer(&sysimg, f->buf, sizeof_sysimg + sizeof(uint32_t)); @@ -1478,6 +1495,28 @@ static void jl_restore_system_image_from_stream(ios_t *f) ios_static_buffer(&fptr_record, f->buf + f->bpos, sizeof_fptr_record); ios_skip(f, sizeof_fptr_record); + // step 2: get references to special values + s.s = f; + size_t i; + for (i = 0; tags[i] != NULL; i++) { + jl_value_t **tag = tags[i]; + *tag = jl_read_value(&s); + } + s.ptls->root_task = (jl_task_t*)jl_gc_alloc(s.ptls, sizeof(jl_task_t), jl_task_type); + memset(s.ptls->root_task, 0, sizeof(jl_task_t)); + s.ptls->root_task->tls = jl_read_value(&s); + jl_init_int32_int64_cache(); + jl_init_box_caches(); + + uint32_t uid_ctr = read_uint32(f); + uint32_t gs_ctr = read_uint32(f); + jl_world_counter = read_uint32(f); + jl_typeinf_world = read_uint32(f); + jl_set_t_uid_ctr(uid_ctr); + jl_set_gs_ctr(gs_ctr); + s.s = NULL; + + // step 3: apply relocations assert(!ios_eof(f)); jl_read_symbols(&s); ios_close(&symbols); @@ -1486,14 +1525,20 @@ static void jl_restore_system_image_from_stream(ios_t *f) sysimg_relocs = &relocs.buf[0]; jl_gc_set_permalloc_region((void*)sysimg_base, (void*)(sysimg_base + sysimg.size)); - deser_tag.items[0] = (void*)const_data.buf; + s.s = &sysimg; jl_read_relocations(&s, GC_OLD_MARKED); // gctags size_t sizeof_tags = ios_pos(&relocs); (void)sizeof_tags; jl_read_relocations(&s, 0); // general relocs ios_close(&relocs); ios_close(&const_data); - ios_close(&sysimg); + jl_update_all_gvars(&s); // gvars relocs + ios_close(&gvar_record); + s.s = NULL; + + s.s = f; + jl_finalize_deserializer(&s); + s.s = NULL; if (0) { printf("sysimg size breakdown:\n" @@ -1513,52 +1558,12 @@ static void jl_restore_system_image_from_stream(ios_t *f) (unsigned)sizeof_fptr_record); } - // step 2: get special values - s.s = f; - jl_module_init_order = jl_finalize_deserializer(&s, NULL); - jl_main_module = (jl_module_t*)jl_read_value(&s); - jl_top_module = (jl_module_t*)jl_read_value(&s); - - jl_typeinf_func = (jl_function_t*)jl_read_value(&s); - jl_typeinf_world = read_uint32(f); - jl_type_type_mt = (jl_methtable_t*)jl_read_value(&s); - jl_type_typename->mt = jl_type_type_mt; - jl_unionall_type->name->mt = jl_type_type_mt; - jl_uniontype_type->name->mt = jl_type_type_mt; - jl_datatype_type->name->mt = jl_type_type_mt; - jl_intrinsic_type->name->mt = (jl_methtable_t*)jl_read_value(&s); - jl_sym_type->name->mt = (jl_methtable_t*)jl_read_value(&s); - jl_array_typename->mt = (jl_methtable_t*)jl_read_value(&s); - jl_module_type->name->mt = (jl_methtable_t*)jl_read_value(&s); - - uintptr_t i; - for (i = 0; i < builtin_typenames.len; i++) { - jl_typename_t *tn = (jl_typename_t*)builtin_typenames.items[i]; - tn->cache = (jl_svec_t*)jl_read_value(&s); - jl_gc_wb(tn, tn->cache); - tn->linearcache = (jl_svec_t*)jl_read_value(&s); - jl_gc_wb(tn, tn->linearcache); - jl_sort_types(jl_svec_data(tn->cache), jl_svec_len(tn->cache)); - } - - jl_core_module = (jl_module_t*)jl_get_global(jl_main_module, jl_symbol("Core")); - jl_base_module = (jl_module_t*)jl_get_global(jl_main_module, jl_symbol("Base")); - - uint32_t uid_ctr = read_uint32(f); - uint32_t gs_ctr = read_uint32(f); - jl_world_counter = read_uint32(f); - - jl_set_t_uid_ctr(uid_ctr); - jl_set_gs_ctr(gs_ctr); - - jl_get_builtins(); - jl_get_builtin_hooks(); - jl_init_box_caches(); - - jl_update_all_gvars(&s); - ios_close(&gvar_record); - jl_update_all_fptrs(&s); + s.s = &sysimg; + jl_init_codegen(); + jl_update_all_fptrs(&s); // fptr relocs and registration ios_close(&fptr_record); + ios_close(&sysimg); + s.s = NULL; jl_gc_reset_alloc_count(); jl_gc_enable(en); @@ -1612,144 +1617,32 @@ JL_DLLEXPORT void jl_restore_system_image_data(const char *buf, size_t len) static void jl_init_serializer2(int for_serialize) { - jl_ptls_t ptls = jl_get_ptls_states(); - arraylist_new(&builtin_typenames, 0); if (for_serialize) { - htable_new(&sertag_table, 0); htable_new(&symbol_table, 0); htable_new(&fptr_to_id, sizeof(id_to_fptrs) / sizeof(*id_to_fptrs)); htable_new(&backref_table, 0); + arraylist_new(&builtin_typenames, 0); } else { - arraylist_new(&deser_tag, 0); arraylist_new(&deser_sym, 0); } - uintptr_t i; - - void *tags[] = { ptls->root_task, - jl_symbol_type, jl_ssavalue_type, jl_datatype_type, jl_slotnumber_type, - jl_simplevector_type, jl_array_type, jl_typedslot_type, - jl_expr_type, jl_globalref_type, jl_string_type, - jl_module_type, jl_tvar_type, jl_method_instance_type, jl_method_type, jl_code_instance_type, - jl_emptysvec, jl_emptytuple, jl_false, jl_true, jl_nothing, jl_any_type, - call_sym, invoke_sym, goto_ifnot_sym, return_sym, jl_symbol("tuple"), - unreachable_sym, jl_an_empty_string, - jl_linenumbernode_type, jl_lineinfonode_type, - jl_gotonode_type, jl_quotenode_type, - jl_pinode_type, jl_phinode_type, jl_phicnode_type, jl_upsilonnode_type, - jl_type_type, jl_bottom_type, jl_ref_type, jl_pointer_type, - jl_vararg_type, jl_abstractarray_type, - jl_densearray_type, jl_void_type, jl_function_type, jl_typeofbottom_type, - jl_unionall_type, jl_typename_type, jl_builtin_type, jl_code_info_type, - jl_task_type, jl_uniontype_type, jl_typetype_type, jl_abstractstring_type, - jl_array_any_type, jl_intrinsic_type, jl_abstractslot_type, - jl_methtable_type, jl_typemap_level_type, jl_typemap_entry_type, - jl_voidpointer_type, jl_newvarnode_type, - jl_array_symbol_type, jl_anytuple_type, jl_tparam0(jl_anytuple_type), - jl_emptytuple_type, jl_array_uint8_type, jl_array_int32_type, - jl_symbol_type->name, jl_ssavalue_type->name, jl_tuple_typename, - ((jl_datatype_t*)jl_unwrap_unionall((jl_value_t*)jl_ref_type))->name, - jl_pointer_typename, jl_simplevector_type->name, - jl_datatype_type->name, jl_uniontype_type->name, jl_array_typename, - jl_expr_type->name, jl_typename_type->name, jl_type_typename, - jl_methtable_type->name, jl_typemap_level_type->name, jl_typemap_entry_type->name, jl_tvar_type->name, - ((jl_datatype_t*)jl_unwrap_unionall((jl_value_t*)jl_abstractarray_type))->name, - ((jl_datatype_t*)jl_unwrap_unionall((jl_value_t*)jl_densearray_type))->name, - jl_vararg_typename, jl_void_type->name, jl_method_instance_type->name, jl_method_type->name, jl_code_instance_type->name, - jl_module_type->name, jl_function_type->name, jl_typedslot_type->name, - jl_abstractslot_type->name, jl_slotnumber_type->name, - jl_unionall_type->name, jl_intrinsic_type->name, jl_task_type->name, - jl_linenumbernode_type->name, jl_builtin_type->name, - jl_gotonode_type->name, jl_quotenode_type->name, jl_lineinfonode_type->name, - jl_pinode_type->name, jl_phinode_type->name, - jl_phicnode_type->name, jl_upsilonnode_type->name, - jl_globalref_type->name, jl_typeofbottom_type->name, - jl_string_type->name, jl_abstractstring_type->name, - jl_namedtuple_type, jl_namedtuple_typename, - - jl_int32_type, jl_int64_type, jl_bool_type, jl_uint8_type, - jl_uint32_type, jl_uint64_type, - - // empirical list of very common symbols - #include "common_symbols1.inc" - - NULL }; - - arraylist_push(&deser_tag, NULL); - arraylist_push(&deser_tag, NULL); - for (i = 0; tags[i] != NULL; i++) { - void *v = tags[i]; - if (!for_serialize) { - // some builtins are only rooted through a type cache or Main.Core binding, - // but were allocated young, so we force the gc to change their tag here - jl_gc_force_mark_old(ptls, (jl_value_t*)v); - } - if (jl_is_symbol(v)) { - arraylist_push(&deser_sym, v); - if (for_serialize) - ptrhash_put(&symbol_table, v, (void*)((char*)HT_NOTFOUND + ((uintptr_t)SymbolRef << RELOC_TAG_OFFSET) + deser_sym.len)); - } - else { - arraylist_push(&deser_tag, v); - if (for_serialize) - ptrhash_put(&sertag_table, v, (void*)((char*)HT_NOTFOUND + ((uintptr_t)TagRef << RELOC_TAG_OFFSET) + deser_tag.len)); - } - } - assert(i + 1 == sizeof(tags) / sizeof(tags[0])); - assert(!for_serialize || ptrhash_get(&sertag_table, ptls->root_task) == (char*)HT_NOTFOUND + ((uintptr_t)TagRef << RELOC_TAG_OFFSET) + 3); - nsym_tag = deser_sym.len; - - // this also ensures all objects referenced in the code have - // references in the system image to their global variable - // since codegen knows that some integer boxes are static, - // they might not have had a reference anywhere in the code - // image other than here -#define NBOX_C 1024 - for (i = 0; i < NBOX_C; i++) { - jl_value_t *v32 = jl_box_int32(i - NBOX_C / 2); - arraylist_push(&deser_tag, v32); - if (for_serialize) - ptrhash_put(&sertag_table, v32, (void*)((char*)HT_NOTFOUND + ((uintptr_t)TagRef << RELOC_TAG_OFFSET) + deser_tag.len)); - - jl_value_t *v64 = jl_box_int64(i - NBOX_C / 2); - arraylist_push(&deser_tag, v64); - if (for_serialize) - ptrhash_put(&sertag_table, v64, (void*)((char*)HT_NOTFOUND + ((uintptr_t)TagRef << RELOC_TAG_OFFSET) + deser_tag.len)); - } - for (i = 0; i < 256; i++) { - jl_value_t *vu = jl_box_uint8(i); - arraylist_push(&deser_tag, vu); - if (for_serialize) - ptrhash_put(&sertag_table, vu, (void*)((char*)HT_NOTFOUND + ((uintptr_t)TagRef << RELOC_TAG_OFFSET) + deser_tag.len)); - } + nsym_tag = 0; if (for_serialize) { + uintptr_t i; for (i = 0; id_to_fptrs[i] != NULL; i++) { ptrhash_put(&fptr_to_id, (void*)(uintptr_t)id_to_fptrs[i], (void*)(i + 2)); } } - - arraylist_push(&builtin_typenames, jl_array_typename); - arraylist_push(&builtin_typenames, ((jl_datatype_t*)jl_ref_type->body)->name); - arraylist_push(&builtin_typenames, jl_pointer_typename); - arraylist_push(&builtin_typenames, jl_type_typename); - arraylist_push(&builtin_typenames, ((jl_datatype_t*)jl_unwrap_unionall((jl_value_t*)jl_abstractarray_type))->name); - arraylist_push(&builtin_typenames, ((jl_datatype_t*)jl_unwrap_unionall((jl_value_t*)jl_densearray_type))->name); - arraylist_push(&builtin_typenames, jl_tuple_typename); - arraylist_push(&builtin_typenames, jl_vararg_typename); - arraylist_push(&builtin_typenames, jl_namedtuple_typename); } static void jl_cleanup_serializer2(void) { - htable_reset(&sertag_table, 0); htable_reset(&symbol_table, 0); htable_reset(&fptr_to_id, 0); htable_reset(&backref_table, 0); - arraylist_free(&deser_tag); arraylist_free(&deser_sym); arraylist_free(&builtin_typenames); - nsym_tag = 0; } #ifdef __cplusplus diff --git a/src/symbol.c b/src/symbol.c index da17a426dbc82..240b35db8c9d9 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -31,11 +31,12 @@ static jl_sym_t *mk_symbol(const char *str, size_t len) { jl_sym_t *sym; size_t nb = symbol_nbytes(len); + assert(jl_symbol_type && "not initialized"); jl_taggedvalue_t *tag = (jl_taggedvalue_t*)jl_gc_perm_alloc_nolock(nb, 0, sizeof(void*), 0); sym = (jl_sym_t*)jl_valueof(tag); // set to old marked so that we won't look at it in the GC or write barrier. - tag->header = ((uintptr_t)jl_sym_type) | GC_OLD_MARKED; + tag->header = ((uintptr_t)jl_symbol_type) | GC_OLD_MARKED; sym->left = sym->right = NULL; sym->hash = hash_symbol(str, len); memcpy(jl_symbol_name(sym), str, len); diff --git a/src/task.c b/src/task.c index b5b04d38c6cbe..ba3a0617a808f 100644 --- a/src/task.c +++ b/src/task.c @@ -64,7 +64,6 @@ jl_sym_t *failed_sym; jl_sym_t *runnable_sym; extern size_t jl_page_size; -jl_datatype_t *jl_task_type; static char *jl_alloc_fiber(jl_ucontext_t *t, size_t *ssize, jl_task_t *owner); static void jl_set_fiber(jl_ucontext_t *t); static void jl_start_fiber(jl_ucontext_t *lastt, jl_ucontext_t *t); @@ -535,38 +534,6 @@ JL_DLLEXPORT jl_value_t *jl_get_current_task(void) // Do one-time initializations for task system void jl_init_tasks(void) JL_GC_DISABLED { - jl_task_type = (jl_datatype_t*) - jl_new_datatype(jl_symbol("Task"), - NULL, - jl_any_type, - jl_emptysvec, - jl_perm_symsvec(11, - "next", - "queue", - "storage", - "state", - "donenotify", - "result", - "exception", - "backtrace", - "logstate", - "code", - "sticky"), - jl_svec(11, - jl_any_type, - jl_any_type, - jl_any_type, - jl_sym_type, - jl_any_type, - jl_any_type, - jl_any_type, - jl_any_type, - jl_any_type, - jl_any_type, - jl_bool_type), - 0, 1, 9); - jl_value_t *listt = jl_new_struct(jl_uniontype_type, jl_task_type, jl_void_type); - jl_svecset(jl_task_type->types, 0, listt); done_sym = jl_symbol("done"); failed_sym = jl_symbol("failed"); runnable_sym = jl_symbol("runnable"); @@ -933,8 +900,12 @@ static void jl_init_basefiber(size_t ssize) void jl_init_root_task(void *stack_lo, void *stack_hi) { jl_ptls_t ptls = jl_get_ptls_states(); - ptls->current_task = (jl_task_t*)jl_gc_alloc(ptls, sizeof(jl_task_t), - jl_task_type); + if (ptls->root_task == NULL) { + ptls->root_task = (jl_task_t*)jl_gc_alloc(ptls, sizeof(jl_task_t), jl_task_type); + memset(ptls->root_task, 0, sizeof(jl_task_t)); + ptls->root_task->tls = jl_nothing; + } + ptls->current_task = ptls->root_task; void *stack = stack_lo; size_t ssize = (char*)stack_hi - (char*)stack_lo; #ifndef _OS_WINDOWS_ @@ -956,7 +927,6 @@ void jl_init_root_task(void *stack_lo, void *stack_hi) ptls->current_task->started = 1; ptls->current_task->next = jl_nothing; ptls->current_task->queue = jl_nothing; - ptls->current_task->tls = jl_nothing; ptls->current_task->state = runnable_sym; ptls->current_task->start = NULL; ptls->current_task->result = jl_nothing; @@ -973,8 +943,6 @@ void jl_init_root_task(void *stack_lo, void *stack_hi) arraylist_new(&ptls->current_task->locks, 0); #endif - ptls->root_task = ptls->current_task; - if (always_copy_stacks) { ptls->stackbase = stack_hi; ptls->stacksize = ssize; diff --git a/src/toplevel.c b/src/toplevel.c index b96162b207559..756bfdcfc853e 100644 --- a/src/toplevel.c +++ b/src/toplevel.c @@ -119,7 +119,7 @@ jl_value_t *jl_eval_module_expr(jl_module_t *parent_module, jl_expr_t *ex) int std_imports = (jl_exprarg(ex, 0) == jl_true); jl_sym_t *name = (jl_sym_t*)jl_exprarg(ex, 1); if (!jl_is_symbol(name)) { - jl_type_error("module", (jl_value_t*)jl_sym_type, (jl_value_t*)name); + jl_type_error("module", (jl_value_t*)jl_symbol_type, (jl_value_t*)name); } jl_module_t *newm = jl_new_module(name); @@ -418,7 +418,7 @@ static jl_module_t *eval_import_path(jl_module_t *where, jl_module_t *from JL_PR jl_module_t *m = NULL; *name = NULL; if (!jl_is_symbol(var)) - jl_type_error(keyword, (jl_value_t*)jl_sym_type, (jl_value_t*)var); + jl_type_error(keyword, (jl_value_t*)jl_symbol_type, (jl_value_t*)var); if (from != NULL) { m = from; @@ -456,7 +456,7 @@ static jl_module_t *eval_import_path(jl_module_t *where, jl_module_t *from JL_PR while (1) { var = (jl_sym_t*)jl_array_ptr_ref(args, i); if (!jl_is_symbol(var)) - jl_type_error(keyword, (jl_value_t*)jl_sym_type, (jl_value_t*)var); + jl_type_error(keyword, (jl_value_t*)jl_symbol_type, (jl_value_t*)var); if (var == dot_sym) jl_errorf("invalid %s path: \".\" in identifier path", keyword); if (i == jl_array_len(args)-1) From 829a4a665a749efd109ac5dd857b979ec7dd944d Mon Sep 17 00:00:00 2001 From: Chris Foster Date: Fri, 10 May 2019 08:10:18 +1000 Subject: [PATCH 18/34] Fix pop_exception lowering for try-break-finally (#31766) (#31931) In the case where a finally handler was active, pop_exception was incorrectly omitted when lowering `break` inside a catch block. This leads to stale exceptions on the stack. --- src/julia-syntax.scm | 6 +++--- test/exceptions.jl | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/julia-syntax.scm b/src/julia-syntax.scm index 9984a6bcb80b6..cde0ad9bc845a 100644 --- a/src/julia-syntax.scm +++ b/src/julia-syntax.scm @@ -3479,7 +3479,7 @@ f(x) = yt(x) (label-map (table)) ;; maps label names to generated addresses (label-nesting (table)) ;; exception handler and catch block nesting of each label (finally-handler #f) ;; `(var label map level)` where `map` is a list of `(tag . action)`. - ;; to exit the current finally block, set `var` to integer `tag`, + ;; To exit the current finally block, set `var` to integer `tag`, ;; jump to `label`, and put `(tag . action)` in the map, where `action` ;; is `(return x)`, `(break x)`, or a call to rethrow. (handler-goto-fixups '()) ;; `goto`s that might need `leave` exprs added @@ -3542,11 +3542,11 @@ f(x) = yt(x) (define (emit-break labl) (let ((lvl (caddr labl)) (dest-tokens (cadddr labl))) + (let ((pexc (pop-exc-expr catch-token-stack dest-tokens))) + (if pexc (emit pexc))) (if (and finally-handler (> (cadddr finally-handler) lvl)) (leave-finally-block `(break ,labl)) (begin - (let ((pexc (pop-exc-expr catch-token-stack dest-tokens))) - (if pexc (emit pexc))) (if (> handler-level lvl) (emit `(leave ,(- handler-level lvl)))) (emit `(goto ,(cadr labl))))))) diff --git a/test/exceptions.jl b/test/exceptions.jl index 608c0d5485315..ee7f7e1b8849a 100644 --- a/test/exceptions.jl +++ b/test/exceptions.jl @@ -83,6 +83,7 @@ end end end test_exc_stack_catch_return() + for i=1:1 try error("A") @@ -91,14 +92,39 @@ end break end end + # Also test try-break-finally forms here. See #31766 + for i=1:1 + try + error("A") + catch + @test length(catch_stack()) == 1 + break + finally + @test length(catch_stack()) == 0 + end + end + @test length(catch_stack()) == 0 + + for i=1:1 + try + error("A") + catch + @test length(catch_stack()) == 1 + continue + end + end for i=1:1 try error("A") catch @test length(catch_stack()) == 1 continue + finally + @test length(catch_stack()) == 0 end end + @test length(catch_stack()) == 0 + try error("A") catch @@ -106,6 +132,15 @@ end @goto outofcatch end @label outofcatch + try + error("A") + catch + @test length(catch_stack()) == 1 + @goto outofcatch2 + finally + @test length(catch_stack()) == 0 + end + @label outofcatch2 @test length(catch_stack()) == 0 # Exiting from a try block in various ways should not affect the exception From 9e1b3683f754bbda54ff628375a9eb96485abed5 Mon Sep 17 00:00:00 2001 From: Katharine Hyatt Date: Fri, 10 May 2019 09:33:52 -0400 Subject: [PATCH 19/34] Some missing bidiag tests (#31888) --- stdlib/LinearAlgebra/test/bidiag.jl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/stdlib/LinearAlgebra/test/bidiag.jl b/stdlib/LinearAlgebra/test/bidiag.jl index 1a1dcd4fa0ba7..a5c0c9ea50e40 100644 --- a/stdlib/LinearAlgebra/test/bidiag.jl +++ b/stdlib/LinearAlgebra/test/bidiag.jl @@ -218,6 +218,9 @@ Random.seed!(1) tx = Tfull \ b @test_throws DimensionMismatch LinearAlgebra.naivesub!(T,Vector{elty}(undef,n+1)) @test norm(x-tx,Inf) <= 4*condT*max(eps()*norm(tx,Inf), eps(promty)*norm(x,Inf)) + x = transpose(T) \ b + tx = transpose(Tfull) \ b + @test norm(x-tx,Inf) <= 4*condT*max(eps()*norm(tx,Inf), eps(promty)*norm(x,Inf)) @testset "Generic Mat-vec ops" begin @test T*b ≈ Tfull*b @test T'*b ≈ Tfull'*b @@ -297,9 +300,14 @@ Random.seed!(1) # test pass-through of mul! for AbstractTriangular*Bidiagonal Tri = UpperTriangular(diagm(1 => T.ev)) @test Array(Tri*T) ≈ Array(Tri)*Array(T) + # test mul! for Diagonal*Bidiagonal + C = Matrix{elty}(undef, n, n) + Dia = Diagonal(T.dv) + @test mul!(C, Dia, T) ≈ Array(Dia)*Array(T) end @test inv(T)*Tfull ≈ Matrix(I, n, n) + @test factorize(T) === T end BD = Bidiagonal(dv, ev, :U) @test Matrix{Complex{Float64}}(BD) == BD From 8d2727ba5d1208db663b43216362356e4f96a160 Mon Sep 17 00:00:00 2001 From: Keno Fischer Date: Fri, 10 May 2019 15:41:59 +0200 Subject: [PATCH 20/34] Accept both Cvoid and Ptr{Void} return type in ccall(:memcpy) (#31464) POSIX specifies that memcpy returns its first argument, which is a bit of a useless feature (e.g. the llvm intrinsic just returns `void`. Nevertheless, since we're intercepting the ccall here, we should allow it. For convenience, still allow the Cvoid return though. Fixes #31073 --- src/ccall.cpp | 12 ++++++------ test/ccall.jl | 13 +++++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/ccall.cpp b/src/ccall.cpp index 0e696ec647342..707aead0d9f7d 100644 --- a/src/ccall.cpp +++ b/src/ccall.cpp @@ -1691,15 +1691,15 @@ static jl_cgval_t emit_ccall(jl_codectx_t &ctx, jl_value_t **args, size_t nargs) JL_GC_POP(); return mark_or_box_ccall_result(ctx, strp, retboxed, rt, unionall, static_rt); } - else if (is_libjulia_func(memcpy)) { + else if (is_libjulia_func(memcpy) && (rt == (jl_value_t*)jl_void_type || jl_is_cpointer_type(rt))) { const jl_cgval_t &dst = argv[0]; const jl_cgval_t &src = argv[1]; const jl_cgval_t &n = argv[2]; + Value *destp = emit_unbox(ctx, T_size, dst, (jl_value_t*)jl_voidpointer_type); #if JL_LLVM_VERSION >= 70000 ctx.builder.CreateMemCpy( - ctx.builder.CreateIntToPtr( - emit_unbox(ctx, T_size, dst, (jl_value_t*)jl_voidpointer_type), T_pint8), + ctx.builder.CreateIntToPtr(destp, T_pint8), 1, ctx.builder.CreateIntToPtr( emit_unbox(ctx, T_size, src, (jl_value_t*)jl_voidpointer_type), T_pint8), @@ -1708,15 +1708,15 @@ static jl_cgval_t emit_ccall(jl_codectx_t &ctx, jl_value_t **args, size_t nargs) false); #else ctx.builder.CreateMemCpy( - ctx.builder.CreateIntToPtr( - emit_unbox(ctx, T_size, dst, (jl_value_t*)jl_voidpointer_type), T_pint8), + ctx.builder.CreateIntToPtr(destp, T_pint8), ctx.builder.CreateIntToPtr( emit_unbox(ctx, T_size, src, (jl_value_t*)jl_voidpointer_type), T_pint8), emit_unbox(ctx, T_size, n, (jl_value_t*)jl_ulong_type), 1, false); #endif JL_GC_POP(); - return ghostValue(jl_void_type); + return rt == (jl_value_t*)jl_void_type ? ghostValue(jl_void_type) : + mark_or_box_ccall_result(ctx, destp, retboxed, rt, unionall, static_rt); } else if (is_libjulia_func(jl_object_id) && nargt == 1 && rt == (jl_value_t*)jl_ulong_type) { diff --git a/test/ccall.jl b/test/ccall.jl index 54a6ebe4d497d..28b072f351edf 100644 --- a/test/ccall.jl +++ b/test/ccall.jl @@ -1477,3 +1477,16 @@ test27477() = ccall((:ctest, Pkg27477.libccalltest), Complex{Int}, (Complex{Int} end @test Test27477.test27477() == 2 + 0im + +# issue #31073 +let + a = ['0'] + arr = Vector{Char}(undef, 2) + ptr = pointer(arr) + elsz = sizeof(Char) + na = length(a) + nba = na * elsz + ptr = eval(:(ccall(:memcpy, Ptr{Cvoid}, (Ptr{Cvoid}, Ptr{Cvoid}, UInt), $(arr), $(a), $(nba)))) + @test isa(ptr, Ptr{Cvoid}) + @test arr[1] == '0' +end From 5486cc223c2b92b45d7d5e8e9cdbca9ffa49ab07 Mon Sep 17 00:00:00 2001 From: Rafael Fourquet Date: Fri, 10 May 2019 16:17:56 +0200 Subject: [PATCH 21/34] fix updated show test in #31087 (#31991) --- test/show.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/show.jl b/test/show.jl index a6b069efa4fdd..338f8c81c5af1 100644 --- a/test/show.jl +++ b/test/show.jl @@ -1071,8 +1071,8 @@ end @testset "arrays printing follows the :compact property when specified" begin x = 3.141592653589793 @test showstr(x) == "3.141592653589793" - @test showstr([x, x], :compact => true) == showstr([x, x], :compact => true) == "[3.14159, 3.14159]" - @test showstr([x, x], :compact => false) == "[3.141592653589793, 3.141592653589793]" + @test showstr([x, x], :compact => true) == "[3.14159, 3.14159]" + @test showstr([x, x]) == showstr([x, x], :compact => false) == "[3.141592653589793, 3.141592653589793]" @test showstr([x x; x x], :compact => true) == "[3.14159 3.14159; 3.14159 3.14159]" @test showstr([x x; x x]) == showstr([x x; x x], :compact => false) == From 6f463dad3edf730b60529a591b6a666e8fda35f8 Mon Sep 17 00:00:00 2001 From: Elliot Saba Date: Fri, 10 May 2019 08:55:43 -0700 Subject: [PATCH 22/34] Add GCC 9 support to `normalize_triplet.py` (#31976) --- contrib/normalize_triplet.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/normalize_triplet.py b/contrib/normalize_triplet.py index d3b168e71ebb5..ce23ea065b893 100755 --- a/contrib/normalize_triplet.py +++ b/contrib/normalize_triplet.py @@ -36,6 +36,7 @@ 'gcc4': "-gcc4", 'gcc7': "-gcc7", 'gcc8': "-gcc8", + 'gcc9': "-gcc8", } cxx_abi_mapping = { 'blank_cxx_abi': "", @@ -115,6 +116,7 @@ def p(x): "6": "gcc4", "7": "gcc7", "8": "gcc8", + "9": "gcc8", }[list(filter(lambda x: re.match("\d+\.\d+\.\d+", x), sys.argv[2].split()))[-1][0]] if cxx_abi == "blank_cxx_abi": From 25fc3a9daeb4b7602cf389cbbf78180f1e7e7a4d Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Fri, 10 May 2019 16:05:01 -0400 Subject: [PATCH 23/34] fix synchronization to ensure a task can only run on one thread at a time (#31619) * fix synchronization to ensure a task can only run on one thread at a time * fix hang in I/O blocking with non-sticky tasks If a thread's scheduler is running on a certain task, only add that task to its sticky queue and not the shared queue, since only that thread can run it anyway. --- base/task.jl | 4 +-- src/julia_threads.h | 3 +- src/partr.c | 15 ++++++-- src/task.c | 83 ++++++++++++++++++++++++++++----------------- 4 files changed, 68 insertions(+), 37 deletions(-) diff --git a/base/task.jl b/base/task.jl index 1985fc03b9611..5f75b97249127 100644 --- a/base/task.jl +++ b/base/task.jl @@ -409,8 +409,8 @@ end function enq_work(t::Task) (t.state == :runnable && t.queue === nothing) || error("schedule: Task not runnable") - if t.sticky - tid = Threads.threadid(t) + tid = Threads.threadid(t) + if t.sticky || tid != 0 if tid == 0 tid = Threads.threadid() end diff --git a/src/julia_threads.h b/src/julia_threads.h index 1da831bafe4de..bc6ca7a395408 100644 --- a/src/julia_threads.h +++ b/src/julia_threads.h @@ -155,7 +155,8 @@ struct _jl_tls_states_t { volatile int8_t in_finalizer; int8_t disable_gc; volatile sig_atomic_t defer_signal; - struct _jl_task_t *volatile current_task; + struct _jl_task_t *current_task; + struct _jl_task_t *previous_task; struct _jl_task_t *root_task; void *stackbase; size_t stacksize; diff --git a/src/partr.c b/src/partr.c index 90dcc08436de6..c3bc397652bda 100644 --- a/src/partr.c +++ b/src/partr.c @@ -140,7 +140,7 @@ static inline jl_task_t *multiq_deletemin(void) uint64_t rn1 = 0, rn2; int16_t i, prio1, prio2; jl_task_t *task; - + retry: for (i = 0; i < heap_p; ++i) { rn1 = cong(heap_p, cong_unbias, &ptls->rngseed); rn2 = cong(heap_p, cong_unbias, &ptls->rngseed); @@ -162,6 +162,12 @@ static inline jl_task_t *multiq_deletemin(void) return NULL; task = heaps[rn1].tasks[0]; + if (jl_atomic_load_acquire(&task->tid) != ptls->tid) { + if (jl_atomic_compare_exchange(&task->tid, -1, ptls->tid) != -1) { + jl_mutex_unlock_nogc(&heaps[rn1].lock); + goto retry; + } + } heaps[rn1].tasks[0] = heaps[rn1].tasks[--heaps[rn1].ntasks]; heaps[rn1].tasks[heaps[rn1].ntasks] = NULL; prio1 = INT16_MAX; @@ -244,8 +250,13 @@ JL_DLLEXPORT void jl_enqueue_task(jl_task_t *task) static jl_task_t *get_next_task(jl_value_t *getsticky) { jl_task_t *task = (jl_task_t*)jl_apply(&getsticky, 1); - if (jl_typeis(task, jl_task_type)) + if (jl_typeis(task, jl_task_type)) { + int self = jl_get_ptls_states()->tid; + if (jl_atomic_load_acquire(&task->tid) != self) { + jl_atomic_compare_exchange(&task->tid, -1, self); + } return task; + } return multiq_deletemin(); } diff --git a/src/task.c b/src/task.c index ba3a0617a808f..fb31438d646a7 100644 --- a/src/task.c +++ b/src/task.c @@ -117,9 +117,8 @@ static void NOINLINE save_stack(jl_ptls_t ptls, jl_task_t *lastt, jl_task_t **pt jl_gc_wb_back(lastt); } -static void NOINLINE JL_NORETURN restore_stack(jl_ptls_t ptls, char *p) +static void NOINLINE JL_NORETURN restore_stack(jl_task_t *t, jl_ptls_t ptls, char *p) { - jl_task_t *t = ptls->current_task; size_t nb = t->copy_stack; char *_x = (char*)ptls->stackbase - nb; if (!p) { @@ -128,16 +127,15 @@ static void NOINLINE JL_NORETURN restore_stack(jl_ptls_t ptls, char *p) if ((char*)&_x > _x) { p = (char*)alloca((char*)&_x - _x); } - restore_stack(ptls, p); // pass p to ensure the compiler can't tailcall this or avoid the alloca + restore_stack(t, ptls, p); // pass p to ensure the compiler can't tailcall this or avoid the alloca } assert(t->stkbuf != NULL); memcpy_a16((uint64_t*)_x, (uint64_t*)t->stkbuf, nb); // destroys all but the current stackframe jl_set_fiber(&t->ctx); abort(); // unreachable } -static void restore_stack2(jl_ptls_t ptls, jl_task_t *lastt) +static void restore_stack2(jl_task_t *t, jl_ptls_t ptls, jl_task_t *lastt) { - jl_task_t *t = ptls->current_task; size_t nb = t->copy_stack; char *_x = (char*)ptls->stackbase - nb; assert(t->stkbuf != NULL); @@ -230,11 +228,6 @@ static void ctx_switch(jl_ptls_t ptls, jl_task_t **pt) jl_task_t *t = *pt; assert(t != ptls->current_task); jl_task_t *lastt = ptls->current_task; -#ifdef ENABLE_TIMINGS - jl_timing_block_t *blk = lastt->timing_stack; - if (blk) - jl_timing_block_stop(blk); -#endif #ifdef JULIA_ENABLE_THREADING // If the current task is not holding any locks, free the locks list // so that it can be GC'd without leaking memory @@ -279,11 +272,6 @@ static void ctx_switch(jl_ptls_t ptls, jl_task_t **pt) save_stack(ptls, lastt, pt); // allocates (gc-safepoint, and can also fail) if (jl_setjmp(lastt->ctx.uc_mcontext, 0)) { // TODO: mutex unlock the thread we just switched from -#ifdef ENABLE_TIMINGS - assert(blk == ptls->current_task->timing_stack); - if (blk) - jl_timing_block_start(blk); -#endif return; } } @@ -298,11 +286,8 @@ static void ctx_switch(jl_ptls_t ptls, jl_task_t **pt) ptls->pgcstack = t->gcstack; ptls->world_age = t->world_age; t->gcstack = NULL; + ptls->previous_task = lastt; ptls->current_task = t; - if (!lastt->sticky) - // release lastt to run on any tid - lastt->tid = -1; - t->tid = ptls->tid; jl_ucontext_t *lastt_ctx = (killed ? NULL : &lastt->ctx); #ifdef COPY_STACKS @@ -317,11 +302,11 @@ static void ctx_switch(jl_ptls_t ptls, jl_task_t **pt) #ifdef COPY_STACKS if (t->copy_stack) { if (lastt_ctx) - restore_stack2(ptls, lastt); + restore_stack2(t, ptls, lastt); else if (lastt->copy_stack) - restore_stack(ptls, NULL); // (doesn't return) + restore_stack(t, ptls, NULL); // (doesn't return) else - restore_stack(ptls, (char*)1); // (doesn't return) + restore_stack(t, ptls, (char*)1); // (doesn't return) } else #endif @@ -336,34 +321,63 @@ static void ctx_switch(jl_ptls_t ptls, jl_task_t **pt) else jl_start_fiber(lastt_ctx, &t->ctx); } - // TODO: mutex unlock the thread we just switched from -#ifdef ENABLE_TIMINGS - assert(blk == ptls->current_task->timing_stack); - if (blk) - jl_timing_block_start(blk); -#endif +} + +static jl_ptls_t NOINLINE refetch_ptls(void) +{ + return jl_get_ptls_states(); } JL_DLLEXPORT void jl_switchto(jl_task_t **pt) { jl_ptls_t ptls = jl_get_ptls_states(); jl_task_t *t = *pt; - if (t == ptls->current_task) { + jl_task_t *ct = ptls->current_task; + if (t == ct) { return; } if (t->state == done_sym || t->state == failed_sym || (t->started && t->stkbuf == NULL)) { - ptls->current_task->exception = t->exception; - ptls->current_task->result = t->result; + ct->exception = t->exception; + ct->result = t->result; return; } if (ptls->in_finalizer) jl_error("task switch not allowed from inside gc finalizer"); if (ptls->in_pure_callback) jl_error("task switch not allowed from inside staged nor pure functions"); + if (t->sticky && jl_atomic_load_acquire(&t->tid) == -1) { + // manually yielding to a task + if (jl_atomic_compare_exchange(&t->tid, -1, ptls->tid) != -1) + jl_error("cannot switch to task running on another thread"); + } + else if (t->tid != ptls->tid) { + jl_error("cannot switch to task running on another thread"); + } sig_atomic_t defer_signal = ptls->defer_signal; int8_t gc_state = jl_gc_unsafe_enter(ptls); + +#ifdef ENABLE_TIMINGS + jl_timing_block_t *blk = ct->timing_stack; + if (blk) + jl_timing_block_stop(blk); +#endif + ctx_switch(ptls, pt); + + ptls = refetch_ptls(); + t = ptls->previous_task; + assert(t->tid == ptls->tid); + if (!t->sticky && !t->copy_stack) + t->tid = -1; + ct = ptls->current_task; + +#ifdef ENABLE_TIMINGS + assert(blk == ct->timing_stack); + if (blk) + jl_timing_block_start(blk); +#endif + jl_gc_unsafe_leave(ptls, gc_state); sig_atomic_t other_defer_signal = ptls->defer_signal; ptls->defer_signal = defer_signal; @@ -506,7 +520,7 @@ JL_DLLEXPORT jl_task_t *jl_new_task(jl_function_t *start, jl_value_t *completion t->stkbuf = NULL; t->started = 0; t->prio = -1; - t->tid = 0; + t->tid = -1; #ifdef ENABLE_TIMINGS t->timing_stack = NULL; #endif @@ -545,6 +559,11 @@ static void NOINLINE JL_NORETURN start_task(void) jl_ptls_t ptls = jl_get_ptls_states(); jl_task_t *t = ptls->current_task; jl_value_t *res; + + jl_task_t *pt = ptls->previous_task; + if (!pt->sticky && !pt->copy_stack) + pt->tid = -1; + t->started = 1; if (t->exception != jl_nothing) { record_backtrace(ptls); From f0ffb29feb0499ce49d621acfa8a2ce192e8dba0 Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Fri, 10 May 2019 16:06:05 -0400 Subject: [PATCH 24/34] synchronize FileWatching (#31981) --- stdlib/FileWatching/src/FileWatching.jl | 172 ++++++++++++++++-------- 1 file changed, 114 insertions(+), 58 deletions(-) diff --git a/stdlib/FileWatching/src/FileWatching.jl b/stdlib/FileWatching/src/FileWatching.jl index 86aec8c997c84..5df7f4ceb6b34 100644 --- a/stdlib/FileWatching/src/FileWatching.jl +++ b/stdlib/FileWatching/src/FileWatching.jl @@ -72,13 +72,13 @@ FDEvent(flags::Integer) = FDEvent((flags & UV_READABLE) != 0, mutable struct FileMonitor handle::Ptr{Cvoid} file::String - notify::Condition + notify::Base.ThreadSynchronizer events::Int32 active::Bool FileMonitor(file::AbstractString) = FileMonitor(String(file)) function FileMonitor(file::String) handle = Libc.malloc(_sizeof_uv_fs_event) - this = new(handle, file, Condition(), 0, false) + this = new(handle, file, Base.ThreadSynchronizer(), 0, false) associate_julia_struct(handle, this) err = ccall(:uv_fs_event_init, Cint, (Ptr{Cvoid}, Ptr{Cvoid}), eventloop(), handle) if err != 0 @@ -118,14 +118,14 @@ mutable struct PollingFileWatcher handle::Ptr{Cvoid} file::String interval::UInt32 - notify::Condition + notify::Base.ThreadSynchronizer active::Bool curr_error::Int32 curr_stat::StatStruct PollingFileWatcher(file::AbstractString, interval::Float64=5.007) = PollingFileWatcher(String(file), interval) function PollingFileWatcher(file::String, interval::Float64=5.007) # same default as nodejs handle = Libc.malloc(_sizeof_uv_fs_poll) - this = new(handle, file, round(UInt32, interval * 1000), Condition(), false, 0, StatStruct()) + this = new(handle, file, round(UInt32, interval * 1000), Base.ThreadSynchronizer(), false, 0, StatStruct()) associate_julia_struct(handle, this) err = ccall(:uv_fs_poll_init, Int32, (Ptr{Cvoid}, Ptr{Cvoid}), eventloop(), handle) if err != 0 @@ -141,7 +141,7 @@ mutable struct _FDWatcher handle::Ptr{Cvoid} fdnum::Int # this is NOT the file descriptor refcount::Tuple{Int, Int} - notify::Condition + notify::Base.ThreadSynchronizer events::Int32 active::Tuple{Bool, Bool} @@ -171,7 +171,7 @@ mutable struct _FDWatcher handle, fdnum, (Int(readable), Int(writable)), - Condition(), + Base.ThreadSynchronizer(), 0, (false, false)) associate_julia_struct(handle, this) @@ -187,19 +187,24 @@ mutable struct _FDWatcher end function uvfinalize(t::_FDWatcher) - if t.handle != C_NULL - disassociate_julia_struct(t) - ccall(:jl_close_uv, Cvoid, (Ptr{Cvoid},), t.handle) - t.handle = C_NULL - end - t.refcount = (0, 0) - t.active = (false, false) - @static if Sys.isunix() - if FDWatchers[t.fdnum] == t - FDWatchers[t.fdnum] = nothing + lock(t.notify) + try + if t.handle != C_NULL + disassociate_julia_struct(t) + ccall(:jl_close_uv, Cvoid, (Ptr{Cvoid},), t.handle) + t.handle = C_NULL + end + t.refcount = (0, 0) + t.active = (false, false) + @static if Sys.isunix() + if FDWatchers[t.fdnum] == t + FDWatchers[t.fdnum] = nothing + end end + notify(t.notify, FDEvent()) + finally + unlock(t.notify) end - notify(t.notify, FDEvent()) nothing end end @@ -219,7 +224,7 @@ mutable struct _FDWatcher handle, 0, (Int(readable), Int(writable)), - Condition(), + Base.ThreadSynchronizer(), 0, (false, false)) associate_julia_struct(handle, this) @@ -289,16 +294,26 @@ function _uv_hook_close(uv::_FDWatcher) end function _uv_hook_close(uv::PollingFileWatcher) - uv.handle = C_NULL - uv.active = false - notify(uv.notify, StatStruct()) + lock(uv.notify) + try + uv.handle = C_NULL + uv.active = false + notify(uv.notify, StatStruct()) + finally + unlock(uv.notify) + end nothing end function _uv_hook_close(uv::FileMonitor) - uv.handle = C_NULL - uv.active = false - notify(uv.notify, FileEvent()) + lock(uv.notify) + try + uv.handle = C_NULL + uv.active = false + notify(uv.notify, FileEvent()) + finally + unlock(uv.notify) + end nothing end @@ -311,11 +326,16 @@ end function uv_fseventscb_file(handle::Ptr{Cvoid}, filename::Ptr, events::Int32, status::Int32) t = @handle_as handle FileMonitor - if status != 0 - notify_error(t.notify, _UVError("FileMonitor", status)) - else - t.events |= events - notify(t.notify, FileEvent(events)) + lock(t.notify) + try + if status != 0 + notify_error(t.notify, _UVError("FileMonitor", status)) + else + t.events |= events + notify(t.notify, FileEvent(events)) + end + finally + unlock(t.notify) end nothing end @@ -333,19 +353,24 @@ end function uv_pollcb(handle::Ptr{Cvoid}, status::Int32, events::Int32) t = @handle_as handle _FDWatcher - if status != 0 - notify_error(t.notify, _UVError("FDWatcher", status)) - else - t.events |= events - if t.active[1] || t.active[2] - if isempty(t.notify) - # if we keep hearing about events when nobody appears to be listening, - # stop the poll to save cycles - t.active = (false, false) - ccall(:uv_poll_stop, Int32, (Ptr{Cvoid},), t.handle) + lock(t.notify) + try + if status != 0 + notify_error(t.notify, _UVError("FDWatcher", status)) + else + t.events |= events + if t.active[1] || t.active[2] + if isempty(t.notify) + # if we keep hearing about events when nobody appears to be listening, + # stop the poll to save cycles + t.active = (false, false) + ccall(:uv_poll_stop, Int32, (Ptr{Cvoid},), t.handle) + end end + notify(t.notify, FDEvent(events)) end - notify(t.notify, FDEvent(events)) + finally + unlock(t.notify) end nothing end @@ -359,7 +384,12 @@ function uv_fspollcb(handle::Ptr{Cvoid}, status::Int32, prev::Ptr, curr::Ptr) end if status == 0 || status != old_status prev_stat = StatStruct(convert(Ptr{UInt8}, prev)) - notify(t.notify, prev_stat) + lock(t.notify) + try + notify(t.notify, prev_stat) + finally + unlock(t.notify) + end end nothing end @@ -400,10 +430,15 @@ function start_watching(t::PollingFileWatcher) end function stop_watching(t::PollingFileWatcher) - if t.active && isempty(t.notify) - t.active = false - uv_error("PollingFileWatcher (stop)", - ccall(:uv_fs_poll_stop, Int32, (Ptr{Cvoid},), t.handle)) + lock(t.notify) + try + if t.active && isempty(t.notify) + t.active = false + uv_error("PollingFileWatcher (stop)", + ccall(:uv_fs_poll_stop, Int32, (Ptr{Cvoid},), t.handle)) + end + finally + unlock(t.notify) end nothing end @@ -420,10 +455,15 @@ function start_watching(t::FileMonitor) end function stop_watching(t::FileMonitor) - if t.active && isempty(t.notify) - t.active = false - uv_error("FileMonitor (stop)", - ccall(:uv_fs_event_stop, Int32, (Ptr{Cvoid},), t.handle)) + lock(t.notify) + try + if t.active && isempty(t.notify) + t.active = false + uv_error("FileMonitor (stop)", + ccall(:uv_fs_event_stop, Int32, (Ptr{Cvoid},), t.handle)) + end + finally + unlock(t.notify) end nothing end @@ -456,8 +496,13 @@ function wait(fdw::_FDWatcher; readable=true, writable=true) if fdw.refcount == (0, 0) # !open events = EOFError() else - start_watching(fdw) # make sure the poll is active - events = stream_wait(fdw, fdw.notify)::FDEvent + lock(fdw.notify) + try + start_watching(fdw) # make sure the poll is active + events = stream_wait(fdw, fdw.notify)::FDEvent + finally + unlock(fdw.notify) + end end end end @@ -483,8 +528,14 @@ if Sys.iswindows() end function wait(pfw::PollingFileWatcher) - start_watching(pfw) - prevstat = stream_wait(pfw, pfw.notify)::StatStruct + lock(pfw.notify) + local prevstat + try + start_watching(pfw) + prevstat = stream_wait(pfw, pfw.notify)::StatStruct + finally + unlock(pfw.notify) + end stop_watching(pfw) if pfw.handle == C_NULL return prevstat, EOFError() @@ -496,10 +547,16 @@ function wait(pfw::PollingFileWatcher) end function wait(m::FileMonitor) - start_watching(m) - events = stream_wait(m, m.notify)::FileEvent - events |= FileEvent(m.events) - m.events = 0 + lock(m.notify) + local events + try + start_watching(m) + events = stream_wait(m, m.notify)::FileEvent + events |= FileEvent(m.events) + m.events = 0 + finally + unlock(m.notify) + end stop_watching(m) return events end @@ -608,7 +665,6 @@ This behavior of this function varies slightly across platforms. See """ watch_folder(s::AbstractString, timeout_s::Real=-1) = watch_folder(String(s), timeout_s) function watch_folder(s::String, timeout_s::Real=-1) - wt = Condition() fm = get!(watched_folders, s) do return FolderMonitor(s) end From 7f2fa84e492af31cff31a6e46f676116a5c48dcc Mon Sep 17 00:00:00 2001 From: Daniel Karrasch Date: Fri, 10 May 2019 23:35:04 +0200 Subject: [PATCH 25/34] doc: clarify docstring of lmul!/rmul! (#31282) --- stdlib/LinearAlgebra/src/matmul.jl | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/stdlib/LinearAlgebra/src/matmul.jl b/stdlib/LinearAlgebra/src/matmul.jl index 376f41797ec8a..c9cf328eeb294 100644 --- a/stdlib/LinearAlgebra/src/matmul.jl +++ b/stdlib/LinearAlgebra/src/matmul.jl @@ -178,6 +178,9 @@ mul!(C::AbstractMatrix, A::AbstractVecOrMat, B::AbstractVecOrMat) = generic_matm rmul!(A, B) Calculate the matrix-matrix product ``AB``, overwriting `A`, and return the result. +Here, `B` must be of special matrix type, like, e.g., [`Diagonal`](@ref), +[`UpperTriangular`](@ref) or [`LowerTriangular`](@ref), or of some orthogonal type, +see [`QR`](@ref). # Examples ```jldoctest @@ -191,6 +194,15 @@ julia> A 2×2 Array{Int64,2}: 0 3 1 2 + +julia> A = [1.0 2.0; 3.0 4.0]; + +julia> F = qr([0 1; -1 0]); + +julia> rmul!(A, F.Q) +2×2 Array{Float64,2}: + 2.0 1.0 + 4.0 3.0 ``` """ rmul!(A, B) @@ -199,6 +211,9 @@ rmul!(A, B) lmul!(A, B) Calculate the matrix-matrix product ``AB``, overwriting `B`, and return the result. +Here, `A` must be of special matrix type, like, e.g., [`Diagonal`](@ref), +[`UpperTriangular`](@ref) or [`LowerTriangular`](@ref), or of some orthogonal type, +see [`QR`](@ref). # Examples ```jldoctest @@ -212,6 +227,15 @@ julia> B 2×2 Array{Int64,2}: 2 1 3 0 + +julia> B = [1.0 2.0; 3.0 4.0]; + +julia> F = qr([0 1; -1 0]); + +julia> lmul!(F.Q, B) +2×2 Array{Float64,2}: + 3.0 4.0 + 1.0 2.0 ``` """ lmul!(A, B) From 40296fb3c78984771a51b653588faa5212f5f655 Mon Sep 17 00:00:00 2001 From: Keno Fischer Date: Sat, 11 May 2019 17:44:25 +0200 Subject: [PATCH 26/34] Don't attempt to const prop call cycles (#31996) Even if the result is unused. Fixes #31974. --- base/compiler/abstractinterpretation.jl | 4 ++-- test/compiler/inference.jl | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/base/compiler/abstractinterpretation.jl b/base/compiler/abstractinterpretation.jl index a6d28c14762a3..f4e888e39750a 100644 --- a/base/compiler/abstractinterpretation.jl +++ b/base/compiler/abstractinterpretation.jl @@ -258,7 +258,7 @@ function abstract_call_method(method::Method, @nospecialize(sig), sparams::Simpl # we have a self-cycle in the call-graph, but not in the inference graph (typically): # break this edge now (before we record it) by returning early # (non-typically, this means that we lose the ability to detect a guaranteed StackOverflow in some cases) - return Any, false, nothing + return Any, true, nothing end topmost = nothing edgecycle = true @@ -339,7 +339,7 @@ function abstract_call_method(method::Method, @nospecialize(sig), sparams::Simpl # since it's very unlikely that we'll try to inline this, # or want make an invoke edge to its calling convention return type. # (non-typically, this means that we lose the ability to detect a guaranteed StackOverflow in some cases) - return Any, false, nothing + return Any, true, nothing end poison_callstack(sv, topmost::InferenceState, true) sig = newsig diff --git a/test/compiler/inference.jl b/test/compiler/inference.jl index 21e80639ab657..5f1e0a7bb282e 100644 --- a/test/compiler/inference.jl +++ b/test/compiler/inference.jl @@ -2414,3 +2414,10 @@ let f = MixedKeyDict((Dict(2 => 7), Dict(5. => 11))) @test merge(+, d, e, f).dicts == (Dict(1 => 10, 2 => 7), Dict(4.0 => 2, 5.0 => 20)) end + +# Issue #31974 +f31974(a::UnitRange) = (if first(a) <= last(a); f31974((first(a)+1):last(a)); end; a) +f31974(n::Int) = f31974(1:n) +# This query hangs if type inference improperly attempts to const prop +# call cycles. +@test code_typed(f31974, Tuple{Int}) !== nothing From bfcf1720a54379fe69806058431e9ebc99376b23 Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Sat, 11 May 2019 11:50:04 -0400 Subject: [PATCH 27/34] fix #31993, intersection of `Type{Vec}` and `Type{<:Vec{T}}` (#31997) --- src/subtype.c | 10 +++++++++- test/subtype.jl | 13 +++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/subtype.c b/src/subtype.c index 84868a302022a..eefcb4caf1e72 100644 --- a/src/subtype.c +++ b/src/subtype.c @@ -573,6 +573,11 @@ static int var_gt(jl_tvar_t *b, jl_value_t *a, jl_stenv_t *e, int param) return 0; bb->lb = simple_join(bb->lb, a); assert(bb->lb != (jl_value_t*)b); + if (jl_is_typevar(a)) { + jl_varbinding_t *aa = lookup(e, (jl_tvar_t*)a); + if (aa && !aa->right && bb->depth0 != aa->depth0 && param == 2 && var_outside(e, b, (jl_tvar_t*)a)) + return subtype_left_var(aa->ub, aa->lb, e); + } return 1; } @@ -960,7 +965,7 @@ static int subtype(jl_value_t *x, jl_value_t *y, jl_stenv_t *e, int param) if (xr) { if (yy) record_var_occurrence(yy, e, param); if (yr) { - if (xx) record_var_occurrence(xx, e, param); + record_var_occurrence(xx, e, param); return subtype(xx->lb, yy->ub, e, 0); } return var_lt((jl_tvar_t*)x, y, e, param); @@ -1410,6 +1415,7 @@ static int subtype_in_env(jl_value_t *x, jl_value_t *y, jl_stenv_t *e) e2.vars = e->vars; e2.intersection = e->intersection; e2.ignore_free = e->ignore_free; + e2.invdepth = e->invdepth; e2.envsz = e->envsz; e2.envout = e->envout; e2.envidx = e->envidx; @@ -1624,6 +1630,8 @@ static int subtype_in_env_existential(jl_value_t *x, jl_value_t *y, jl_stenv_t * { jl_varbinding_t *v = e->vars; int len = 0; + if (x == jl_bottom_type || y == (jl_value_t*)jl_any_type) + return 1; while (v != NULL) { len++; v = v->prev; diff --git a/test/subtype.jl b/test/subtype.jl index acd253fa035f0..76885a06bd8ed 100644 --- a/test/subtype.jl +++ b/test/subtype.jl @@ -1529,3 +1529,16 @@ end Tuple{Type{<:SA{N, L}}, Type{<:SA{N, L}}} where {N,L}, # TODO: this could be narrower Tuple{Type{SA{2, L}}, Type{SA{2, 16}}} where L) + +# issue #31993 +@testintersect(Tuple{Type{<:AbstractVector{T}}, Int} where T, + Tuple{Type{Vector}, Any}, + Union{}) +@testintersect(Tuple{Type{<:AbstractVector{T}}, Int} where T, + Tuple{Type{Vector{T} where Int<:T<:Int}, Any}, + Tuple{Type{Vector{Int}}, Int}) +let X = LinearAlgebra.Symmetric{T, S} where S<:(AbstractArray{U, 2} where U<:T) where T, + Y = Union{LinearAlgebra.Hermitian{T, S} where S<:(AbstractArray{U, 2} where U<:T) where T, + LinearAlgebra.Symmetric{T, S} where S<:(AbstractArray{U, 2} where U<:T) where T} + @test X <: Y +end From 8932ccdf8f65b7eb7fb32b4c0e25b64759e80f8e Mon Sep 17 00:00:00 2001 From: "Tamas K. Papp" Date: Sun, 12 May 2019 13:21:32 +0200 Subject: [PATCH 28/34] document Random samplers: continuation of #31787 (#31990) --- stdlib/Random/docs/src/index.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/stdlib/Random/docs/src/index.md b/stdlib/Random/docs/src/index.md index c81946fc2a2de..6f23ea2686645 100644 --- a/stdlib/Random/docs/src/index.md +++ b/stdlib/Random/docs/src/index.md @@ -84,13 +84,20 @@ Generating random values for some distributions may involve various trade-offs. The `Random` module defines a customizable framework for obtaining random values that can address these issues. Each invocation of `rand` generates a *sampler* which can be customized with the above trade-offs in mind, by adding methods to `Sampler`, which in turn can dispatch on the random number generator, the object that characterizes the distribution, and a suggestion for the number of repetitions. Currently, for the latter, `Val{1}` (for a single sample) and `Val{Inf}` (for an arbitrary number) are used, with `Random.Repetition` an alias for both. -The object returned by `Sampler` is then used to generate the random values, by a method of `rand` defined for this purpose. Samplers can be arbitrary values, but for most applications the following predefined samplers may be sufficient: +The object returned by `Sampler` is then used to generate the random values. When implementing the random generation interface for a value `X` that can be sampled from, the implementor should define the method -1. `SamplerType{T}()` can be used for implementing samplers that draw from type `T` (e.g. `rand(Int)`). +```julia +rand(rng, sampler) +``` +for the particular `sampler` returned by `Sampler(rng, X, repetition)`. + +Samplers can be arbitrary values that implement `rand(rng, sampler)`, but for most applications the following predefined samplers may be sufficient: -2. `SamplerTrivial(self)` is a simple wrapper for `self`, which can be accessed with `[]`. This is the recommended sampler when no pre-computed information is needed (e.g. `rand(1:3)`). +1. `SamplerType{T}()` can be used for implementing samplers that draw from type `T` (e.g. `rand(Int)`). This is the default returned by `Sampler` for *types*. -3. `SamplerSimple(self, data)` also contains the additional `data` field, which can be used to store arbitrary pre-computed values. +2. `SamplerTrivial(self)` is a simple wrapper for `self`, which can be accessed with `[]`. This is the recommended sampler when no pre-computed information is needed (e.g. `rand(1:3)`), and is the default returned by `Sampler` for *values*. + +3. `SamplerSimple(self, data)` also contains the additional `data` field, which can be used to store arbitrary pre-computed values, which should be computed in a *custom method* of `Sampler`. We provide examples for each of these. We assume here that the choice of algorithm is independent of the RNG, so we use `AbstractRNG` in our signatures. @@ -174,18 +181,13 @@ julia> rand(Die(4), 3) Given a collection type `S`, it's currently assumed that if `rand(::S)` is defined, an object of type `eltype(S)` will be produced. In the last example, a `Vector{Any}` is produced; the reason is that `eltype(Die) == Any`. The remedy is to define `Base.eltype(::Type{Die}) = Int`. -A `SamplerTrivial` does not have to wrap the original object. For example, in `Random`, `AbstractFloat` types are special-cased, because by default random values are not produced in the whole type domain, but rather in `[0,1)`. +#### Generating values for an `AbstractFloat` type -Consequently, a method -```julia -Sampler(::Type{RNG}, ::Type{T}, n::Repetition) where {RNG<:AbstractRNG,T<:AbstractFloat} = - Sampler(RNG, CloseOpen01(T), n) -``` -is defined to return `SamplerTrivial` with a `Random.CloseOpen01{T}}` type defined for this purpose, which has an appropriate `rand` method defined for it. +`AbstractFloat` types are special-cased, because by default random values are not produced in the whole type domain, but rather in `[0,1)`. The following method should be implemented for `T <: AbstractFloat`: `Random.rand(::AbstractRNG, ::Random.SamplerTrivial{Random.CloseOpen01{T}})` #### An optimized sampler with pre-computed data -Consider a discrete distribution, where numbers `1:n` are drawn with given probabilities that some to one. When many values are needed from this distribution, the fastest method if using an [alias table](https://en.wikipedia.org/wiki/Alias_method). We don't provide the algorithm for building such a table here, but suppose it is available in `make_alias_table(probabilities)` instead, and `draw_number(rng, alias_table)` can be used to draw a random number from it. +Consider a discrete distribution, where numbers `1:n` are drawn with given probabilities that sum to one. When many values are needed from this distribution, the fastest method is using an [alias table](https://en.wikipedia.org/wiki/Alias_method). We don't provide the algorithm for building such a table here, but suppose it is available in `make_alias_table(probabilities)` instead, and `draw_number(rng, alias_table)` can be used to draw a random number from it. Suppose that the distribution is described by ```julia From 7fdd96fa7cb4ec68fe13b6be1d47c671f1d5f714 Mon Sep 17 00:00:00 2001 From: lbilli Date: Sun, 12 May 2019 13:05:33 -0400 Subject: [PATCH 29/34] Fix function name in docstring (#32009) --- stdlib/Sockets/src/addrinfo.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/Sockets/src/addrinfo.jl b/stdlib/Sockets/src/addrinfo.jl index 0ed5c8781915d..8e1e0f084db59 100644 --- a/stdlib/Sockets/src/addrinfo.jl +++ b/stdlib/Sockets/src/addrinfo.jl @@ -106,7 +106,7 @@ end getalladdrinfo(host::AbstractString) = getalladdrinfo(String(host)) """ - getalladdrinfo(host::AbstractString, IPAddr=IPv4) -> IPAddr + getaddrinfo(host::AbstractString, IPAddr=IPv4) -> IPAddr Gets the first IP address of the `host` of the specified `IPAddr` type. Uses the operating system's underlying getaddrinfo implementation, which may do a DNS lookup. From 9d6fffee937b3cbf44bcf53da1b69f1c7848c96f Mon Sep 17 00:00:00 2001 From: Mustafa M Date: Sun, 12 May 2019 13:20:46 -0400 Subject: [PATCH 30/34] Improve some aspects of the NSIS installer (#31959) --- Makefile | 10 ++-- contrib/windows/build-installer.nsi | 67 ++++++++++++++++------ contrib/windows/julia-banner.bmp | Bin 0 -> 154542 bytes deps/checksums/nsis-3.04-setup.exe/md5 | 1 + deps/checksums/nsis-3.04-setup.exe/sha512 | 1 + 5 files changed, 58 insertions(+), 21 deletions(-) create mode 100755 contrib/windows/julia-banner.bmp create mode 100644 deps/checksums/nsis-3.04-setup.exe/md5 create mode 100644 deps/checksums/nsis-3.04-setup.exe/sha512 diff --git a/Makefile b/Makefile index 899d4127da592..22da0734944d0 100644 --- a/Makefile +++ b/Makefile @@ -462,10 +462,10 @@ ifeq ($(OS), WINNT) cd $(BUILDROOT)/julia-$(JULIA_COMMIT) && find * | sed -e 's/\//\\/g' -e 's/$$/\r/g' > etc/uninstall.log # build nsis package - cd $(BUILDROOT) && $(call spawn,$(JULIAHOME)/dist-extras/nsis/makensis.exe) -NOCD -DVersion=$(JULIA_VERSION) -DArch=$(ARCH) -DCommit=$(JULIA_COMMIT) -DMUI_ICON="$(call cygpath_w,$(JULIAHOME)/contrib/windows/julia.ico)" $(call cygpath_w,$(JULIAHOME)/contrib/windows/build-installer.nsi) | iconv -f latin1 + cd $(BUILDROOT) && $(call spawn,$(JULIAHOME)/dist-extras/nsis/makensis.exe) -NOCD -DVersion=$(JULIA_VERSION) -DArch=$(ARCH) -DCommit=$(JULIA_COMMIT) -DJULIAHOME="$(call cygpath_w,$(JULIAHOME))" $(call cygpath_w,$(JULIAHOME)/contrib/windows/build-installer.nsi) | iconv -f latin1 # compress nsis installer and combine with 7zip self-extracting header - cd $(BUILDROOT) && $(JULIAHOME)/dist-extras/7z a -mx9 "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" julia-installer.exe + cd $(BUILDROOT) && $(JULIAHOME)/dist-extras/7z a -mx=9 "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" julia-installer.exe cd $(BUILDROOT) && cat $(JULIAHOME)/contrib/windows/7zS.sfx $(JULIAHOME)/contrib/windows/7zSFX-config.txt "julia-install-$(JULIA_COMMIT)-$(ARCH).7z" > "$(JULIA_BINARYDIST_FILENAME).exe" chmod a+x "$(BUILDROOT)/$(JULIA_BINARYDIST_FILENAME).exe" -rm -f $(BUILDROOT)/julia-install-$(JULIA_COMMIT)-$(ARCH).7z @@ -611,11 +611,11 @@ else $(error no win-extras target for ARCH=$(ARCH)) endif cd $(JULIAHOME)/dist-extras && \ - $(JLDOWNLOAD) https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/unsis/nsis-2.46.5-Unicode-setup.exe && \ - $(JLCHECKSUM) nsis-2.46.5-Unicode-setup.exe && \ + $(JLDOWNLOAD) https://sourceforge.net/projects/nsis/files/NSIS%203/3.04/nsis-3.04-setup.exe && \ + $(JLCHECKSUM) nsis-3.04-setup.exe && \ chmod a+x 7z.exe && \ chmod a+x 7z.dll && \ - $(call spawn,./7z.exe) x -y -onsis nsis-2.46.5-Unicode-setup.exe && \ + $(call spawn,./7z.exe) x -y -onsis nsis-3.04-setup.exe && \ chmod a+x ./nsis/makensis.exe # various statistics about the build that may interest the user diff --git a/contrib/windows/build-installer.nsi b/contrib/windows/build-installer.nsi index 8896b0a0b1552..7029250ac0a00 100644 --- a/contrib/windows/build-installer.nsi +++ b/contrib/windows/build-installer.nsi @@ -1,15 +1,34 @@ +Unicode true + !include "MUI2.nsh" !include "nsDialogs.nsh" !include "winmessages.nsh" -Name "The Julia Language" OutFile "julia-installer.exe" SetCompress off -CRCCheck on +CRCCheck off SetDataBlockOptimize on -ShowInstDetails show +ShowInstDetails nevershow RequestExecutionLevel user -BrandingText "Julia ${Version}" +BrandingText " " + +!define /date YEAR "%Y" + +Name "Julia" +VIProductVersion "10.20.0.0" # arbitrary value since it doesn't mater, but is required; format must be X.X.X.X +VIAddVersionKey "ProductName" "Julia" +VIAddVersionKey "CompanyName " "Julia Language" +VIAddVersionKey "ProductVersion" "${Version}" +VIAddVersionKey "FileDescription" "Julia Language Installer" +VIAddVersionKey "Comments" "https://julialang.org/" +VIAddVersionKey "LegalCopyright" "Copyright (c) 2009-${YEAR} Julia Language" +VIAddVersionKey "FileVersion" "" + +Caption "Julia Installer" # title bar + +!define MUI_ICON "${JULIAHOME}\contrib\windows\julia.ico" +!define MUI_UNICON "${JULIAHOME}\contrib\windows\julia.ico" +!define MUI_WELCOMEFINISHPAGE_BITMAP "${JULIAHOME}\contrib\windows\julia-banner.bmp" # Uninstall settings !define UninstLog "uninstall.log" @@ -38,25 +57,43 @@ InstallDir "$LOCALAPPDATA\Julia-${Version}" !define JuliaStartMenuFolder "Julia ${Version}" # Page settings -# Note that we repurpose the checkboxes on the FinishPage -# in order to keep it simple. -!define MUI_DIRECTORYPAGE_TEXT_TOP "Julia may be installed in any accessible directory, including a home folder or portable device. Please run as Administrator to install for system-wide use." +# Note that we repurpose the checkboxes on the FinishPage in order to keep it simple. +!define MUI_DIRECTORYPAGE_TEXT_TOP "Julia may be installed in any accessible directory.$\r$\n$\r$\nPlease run installer as Administrator to install Julia system-wide." !define MUI_FINISHPAGE_SHOWREADME !define MUI_FINISHPAGE_SHOWREADME_TEXT "Create Start Menu folder and shortcut" !define MUI_FINISHPAGE_SHOWREADME_FUNCTION AddToStartMenu + +!define MUI_WELCOMEPAGE_TITLE "Welcome to Julia ${Version}" +!define MUI_WELCOMEPAGE_TEXT "Setup will guide you through installation.$\r$\n$\r$\nClick Next to continue." +!define MUI_FINISHPAGE_TITLE "Julia installation complete" +!define MUI_FINISHPAGE_TEXT "Julia has been successfully installed.$\r$\n$\r$\nClick Finish to close the installer." + !define MUI_FINISHPAGE_RUN -!define MUI_FINISHPAGE_RUN_TEXT "Open Julia install folder" +!define MUI_FINISHPAGE_RUN_TEXT "Open the Julia install folder" !define MUI_FINISHPAGE_RUN_FUNCTION ShowInstallFolder -# Pages to show +!define MUI_UNCONFIRMPAGE_TEXT_TOP "Julia will be uninstalled from the following folder." +!define MUI_UNCONFIRMPAGE_TEXT_LOCATION "Uninstalling from" +# Pages to show +!define MUI_PAGE_HEADER_TEXT "Choose Installation Directory" +!define MUI_PAGE_HEADER_SUBTEXT "" +!insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES +Section +!insertmacro MUI_HEADER_TEXT "Installing" "" +SectionEnd !define MUI_PAGE_CUSTOMFUNCTION_SHOW desktopCheckbox !define MUI_PAGE_CUSTOMFUNCTION_LEAVE createDesktopLink !insertmacro MUI_PAGE_FINISH +!define MUI_PAGE_HEADER_TEXT "Uninstall Julia" +!define MUI_PAGE_HEADER_SUBTEXT "" +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + !insertmacro MUI_LANGUAGE "English" # Add/Remove Programs entry @@ -65,14 +102,14 @@ InstallDir "$LOCALAPPDATA\Julia-${Version}" Section "Dummy Section" SecDummy SetOutPath $INSTDIR File /a /r "julia-${Commit}\*" - WriteUninstaller "$INSTDIR\Uninstall.exe" + WriteUninstaller "$INSTDIR\uninstall.exe" CreateShortcut "$INSTDIR\julia.lnk" "$INSTDIR\bin\julia.exe" # ARP entries WriteRegStr HKCU "${ARP}" \ - "DisplayName" "Julia Language ${Version}" + "DisplayName" "Julia ${Version}" WriteRegStr HKCU "${ARP}" \ - "Publisher" "The Julia Project" + "Publisher" "Julia Language" WriteRegStr HKCU "${ARP}" \ "DisplayIcon" "$INSTDIR\bin\julia.exe" WriteRegStr HKCU "${ARP}" \ @@ -145,13 +182,11 @@ SectionEnd # Helper function to create Start Menu folder and shortcuts Function AddToStartMenu CreateDirectory "$SMPROGRAMS\${JuliaStartMenuFolder}" - CreateShortcut "$SMPROGRAMS\${JuliaStartMenuFolder}\julia-${Version}.lnk" "$INSTDIR\julia.lnk" "" "" "" "" "" "The Julia Language" - CreateShortcut "$SMPROGRAMS\${JuliaStartMenuFolder}\Uninstall-Julia-${Version}.lnk" "$instdir\Uninstall.exe" + CreateShortcut "$SMPROGRAMS\${JuliaStartMenuFolder}\julia-${Version}.lnk" "$INSTDIR\julia.lnk" "" "" "" "" "" "Julia" + CreateShortcut "$SMPROGRAMS\${JuliaStartMenuFolder}\Uninstall-Julia-${Version}.lnk" "$instdir\uninstall.exe" FunctionEnd # Opens the installation folder Function ShowInstallFolder ExecShell "open" $INSTDIR FunctionEnd - - diff --git a/contrib/windows/julia-banner.bmp b/contrib/windows/julia-banner.bmp new file mode 100755 index 0000000000000000000000000000000000000000..964dfec8653e5afccbbc1698207a293db67add6b GIT binary patch literal 154542 zcmeI5XLJ=unub05cYp35pEGCD?(B>wXU~jH&QSyb0z@_$k+TU-1ZNwM1ID%lA__1@ zfB*v~8iSEQ2%&(45CRb-vJlFW_km_xP4~U6MuB@7zxRMn-HuhyTlH1dS6}yS(RoAo ze>`#b^ECgT;{OW%Kl6hpp7_BNPm+4#i5cwwum61F-v4_W`174UA|L`HAOa#F0wN#+ zA|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`H zAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F z0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+ zA|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`H zAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F z0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+ zA|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`H zAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F z0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+ zA|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`H zAOa#F0wN#+A|L`HAOa#F0wUmzKz4R^Y;5eCZ@xKc(xf3nhV<&yt4o(IUGIH*_U!rG zbI-AT;lhQ{(b4<%?aRx{^LAAo6|N7V8{`R-O{N*oy{_~&z z_y2!LKlRj8Z2!w&{_^az&$epSs(bhDNWXRK*22QV;3|xA&P`qQ8O>}NkSw^$Q~;w@XY{QUFJ@7%fL zxQR9d1%cJ8SJU|-rByp?8Xf7lJ9X-`V8Md%s%9sa*w2n+L zqIS_5p?~pBJo(b4OOE?!L*NN8{AO^)Slik{ z%{1CE*hXk0qot*#8#ZikF#??U$3On@%P+qyD=Q0p*_49^2{2unJ9qBye)l_DUrgg= zONR~}HgDc+waLeh9b+VBRt9H+YBO`@%!?NFF=M^is2C&CvHJKluq` zF#ck?yLIcvSgWL@#G1?0)YL!!`Oi*?ty>y3YLu9mXgy2m;2}T{i*bJCl~=}%8%K{k zcI?>s^XKCkvk6UxsTj{Z^NdwlXBvaBY11Z|@!-+dnUkujs{H)?oSYn-pH{nVJ@VA4 zQ&<3}zSb?6@i*RhxM=UCPQhURmY^H*Vapp(rmeXXE9XKFkF;(wYsb z5VH*T^T>>C1&18gcox@0I9oogw`Q7ytazE2w;nuraQ*uA%aRYFjo|Mr zc1@o?9XGF;c}_>2i4!OKJH^uY^afQSHEi11>iOJJpqfgolT7Fm5`V%H~&g@gW#y z+O%m22?<6F3>KhIpFT|FjlDkqa)rPD{qIycv#pUp5gfwo@_7my*+qVEC7GG0g6-I` z19kkJVr=ICbcBz2qLJXH=g*&~{TlNZ;}&M=Yzg*q_ohvoe(=Eu)Kac6Z{9rWfJ=rs z1rEJ?_qN@)?q5A>?cT1Tck<*(wEOk1f9+m&D+-Rp`}*E{?_mn)ASj*9hi^TYH1MB( z`e~}1RclNEVN|vwtzQjIZCcaJ-B*0L0tYy?rb-hbK+|Ip;h{>3;>7#mYQ{97HMz28 z(w2rpSXfxy#kF0*qt=M%&xYeW-L-2M0TL9)mggG3f(vLPM~=jRQ@Y^Sn(@Z4VZ+>& z@>gp3w7K`e5V>C=Xtn<8tFMTB@K-=D+mZWEfBF;6)13f&1KX|{hSAk}DUrWpkeiRc zz2^47+Hl5H3^i>wfv-kCYi6=R69LznVfH`&`Og}SzX1W0);-p>2Ego&S zPpye;A&|+LRi9f7b4|a`^o=G=!h3&bTrjX&GgDw}fC@fKXWNLSVkklfjbw~M`D#1B z{c8|v9TykZym@mk^_&{sqD2daVGO*1cIM0(f>c>gM{)O3TlWT5>uuY%5$WMYYicsJ zg2^@WH5>vY-hTUS7LL8w?O@XyKLgVTFJ(tiMqdnHt*!~YOlQxYefi~=@yL0pEr=di zt(i2{IDRIRG+`VFOs^QR8zz^@I0eVUJZjV^Y#ODoR$!lLs1g%cM~m$|z1B9I5$T{o zg9v)@nOk!sWoM0yyO?FS=HdGF>x{rLcV6TUtkwj6)R;+fNY#yri7{t|W?|Vv00|Yw zCGyjR7HnGM{N#y)8jDX`z`m`7A^Y6KmJkUrE0A;JxJZ>*Ry8LB9zON z!(Re#AwDJ3vu765NKjZzT#ZBVV6)-4{xHt&7Kt8;KnS`me`Pla(5dn08N)yKs|8l; z7hinQefp330O{Yqze~lYyx507{NWGoB@MQA{mwh@)M&u*zziNd*vo@LI4zl^Q$~O7 zh3$dWn)24@0ie3_D4f%PTU+<*ufI+(r@PjeI9$!vv+5;X>;9VOe1G(#AGt`wF3LV( z!UQi`6V}f3#J%AJR%@27m~^<;M%s11e*N6Fe(kl_9y_gxHmp%=8Ul}vc+nc4OvCxZ z>!rWO;Xh!&fErC1{k3%^&eo9AyO)gYR!R%3Ca?b%WY)e7U9pq|w!G zO_LJ|jX=s8<>vWTUR~m|b$isB@w}Pg`bvCHYxLei)tA=DjjM$4Is6998eF_uoXa?{zM8Xn9kpwJ(?$kJ z&bSnV8}6@-8#giqW}@LTPvi=Gh{0I7a^>mMr;Q$5T0chZ+K?Ofeo|5r&NLc0wS{@N zzc$V;24naccu1D#q`br+sa->$cH?m7*Y#+_O_NB10AQYACBD%Jnx&1?ke!BtoU;ql zP55Y!9zAM|L6X)%sI{T{&6_t_38Li^bZ0ElqByy=iEb$Fvobi33}Aolj4iBRU&`Ub zhZ`=ou;JRZwT&|XPq<`krHxVE z?dI3!72FeqAg)@q3d7Dj;s{4EMR&Gzr^?0_X$^r|_t%e7YqKU0YPD?HGTv)J@DeSZ z5gJ}KFN$*vaUkY(>MNmk?XPiRe*Mk4fRAzD88IGO;jt!v?odM`_7ZJHzy={(49r;M z@)CH)T5x?yY+eVgiBI=eUUR!_xG5YG^NbGhT4S#`9b?T5@R}SgnbbLMdj)P9u!&Ot^R+ z)7FrkU%mLv)UE?QHj9di;z3cLO_GhcO7MyK441Vk?y+6-9D(($dP%FlHpe8kgl%lb z^Y3^|T)f}N-LYdw+e7_Mjc}`ai4qSgtqIcj@sEFO<74~EAjD%_N<;fn>OSYT%?plu?J=$k4 zU^Wx>QW>U9nNmk(ou^A{6S6H~v*8&T8AFE-bqP^GBNnWgg1L0rc+Ob~b*V7qf$Q+N zA5F9UE#p9wiFU%oc#Xazty}V7%`hu4_N^G7k zt(~eFTWnfGZ2$iKynWrJRT>Yk5y@cUwI=Ye@tP4Y3z{r^@T8md+iPM`EK-RTw>agYAci-h)f44KXb7h`5V1?9ndcA!89%@abcdggCXl{!aFJ|@1 zU+ZQFjl+kYotQN20Hb%_GeeLekL)owcRFFL(ql>J1?Z`rRi$3ECJu@ogq(9DdK~Mm zt!bw}{P7xxTjNrA28WmV@X)1EYHKmAX{QZ0fFn1rtz#8~Hpns7Q;aki(UkgtE0twU zCf$tBG4C#TIg!jDG;_m-`*jsM7lw{FeE7*lJU<2jN@2?wi?Fu$AfdIFXMBQWer?qn z$>2%5<8^lJ+qXv-M%PZ={b|kVEMd@Kd0PUf!^(*Z?Ks`o#b2LQ!mJp^>C_6|$I@^@ z8x@riCa+Q?rh<1!e*E#r%w)hOFja_Hqohi&JPsyi0^?!^FISOt+C+=U;Ro))4|crNWa(^gG7yhLAnm zdkgtW@H0Ow;_`to^~cL%AF&(+*1qt<3och<7caMDJ<)VlV2xQ|!aHYTbSB8TPpz$G z=N%XLyZCt{hF&~VPY@AHS5z&=!%VBKM>^9iVG~fwQy%C=EDAqu$$JB^*yw0{%-YLW zEFlt8V=)LUjsuWVqjE!xx}8~d*~05jdC3XygyFGza>XdldN4Bxa!6pj%ZG&_FO8bZ zA|JKdrz3vG_2N5kD-BFMs9O~0vKxcgD zi{F3$eX0}P{hmF0VC#G;#QheJW-pKt_tD(T`(5f?YwNA4rPTJi{GttWG%5hTGOokt z5u0dhS^f>u^{Dl&TjduomgJl(&d)C`FRy+Dw0BBX6_sT~B;6{iD0$$m*WR!2h>tA0 zo?o1kaVPUcQC3RHh3v}Wp#I_1x@%ohT6sLFV8a)e-~Ct4EAzAFypXx@wd}~K3p>BM zdf}ocJ62gjBnm1p+(z-X078JHH+^WnmBJ^)`5dJii+;Prp$J_@%7G?f-^f#9C~B(w$Y!( z_Wy9xppP~W{%F&{4>u24ym!vpwDsR!&%9h!SsN?i^LBOLSaJL2jf30IzB@H_OuN)E z?bF7Gq)+aiKCxTc*iI=UTW8GZeQC|Viq51~J@`WYy5G0%SMaDc<8YhSm6cUz&J?}+ zdUn&6@vYh?bnlhaci_nZ&!r3;mePO7$*}O`PF)ilH;)e=m>jz)|MqQPzxiJET|w@( z4`M|hrE2l9$ss$vCs2g zJ=3V!k&w{D0Yg)Uj7S|ky!szs`4`qNxn4QytvPniagzqzP&=(}7gnrUdx>V-rN?or#I`hY)7YE0P8dEa zB`N8FrK|GdvQrxqXwKWmF5NrZBC%EOd+D81S76l-zZqAUcdG$G)O_ixI~gZ3XAel9 z5OVtE5l)FMTOu-M_DdbnDsTPb@>})4)>d;){Txv{t<%#B`wdEN+wth2VbyKfCbaPt zxqI|J(YV=>$fdc3h1GVLaTiTEZupWtv({9%Wrxtlt{vl-Va(4RNUtajm{qJOxRJl{ zv(!;-GUg1n$m*kA8++3yg=WqQzny&85BLCVu7%d6rIm48^Pg?{ZI3=lKJ~S295gJY zb^C;|6Vg&r3-6b(sw!hs0`l#g7`=C{Tcb9#-ZLwPKK<}pad+|`Fbhmj2n?60HTjK7$_YGRn zm4ag*@1i5V+fDmv%eL*?#zbx#9eML?z@{^WsYlbsbjX!nwM z<#*3LYHgi!ojYGVYffgX_D6jx>)eRep(H1ns(t)wq@(R3KG9g8PPIxR)4Qr&yPqS*ZJIsbBc4btk(%(x)xfWJzF$o`l&V@ zA42P%eNH^v^vD+*^Nf;S%eZuK!N#p4KHX;(lc_r$%(h{cJ&L-gztV0H$l9 z_4Vszi5&`F=-+BTwf$1aIseUlD;bN@#Vi>}>fX8o}J_4bIUTR8#iuW^N) zo-^>&q)?Aq<5!_>oT8^+8sL7N0g|lynW(u`uLDjlY3;%AMGyp-9|m8 zU2f#U;4$D(BD8>C1>z@xcz~U^P7$Dj=y<=ax;wQlE2}#2^^JBNkG1P`)P3d^+WQ37 z{^faDR1d2tsFt}kam$d8w~vX$7iuL7Hs#H~#=H*^k_6BmNPYy*>d+VMz8fSRg*p3-9!fqbgQCa#x^|oFq z7}5l`5&J>l6M@i#PN6S9pTq;OSaPckC#x)I5}dGkOMXcAWAxqaJ0D}P&0i=i zp6J~Dc&l~^O(mQ&p9v`4<>*v4~0Eoj$2s#AnBXR zlIp=p0Q2kd)%x>KLNTcRQ?*46dq*dGa zaTC+xwq3b+sl>O?#`(0Ag5rzuS%=?_+cInkv#L!4S-iftem&@;y|ZJowkNS17Wfuz zMOIbC5_VzQvCA>NE*Ynk;!L*dRaI4f^J+H!Hne%!(%!%z6=}gPcG~Md|XSHK^PqvO|-|PHm%mbz0dkWM#kh z%X>GA3TYJCzVoWyuOD2Ldn;I02ZEeu&}Of^vV3tuWcw98P`T5Je!bQV>$`SzzjYD( z3tu-TEM`R4RfC#Eb!{Bg;e|a5C3n#3=p|$H%h+n#Z|LeFh-*kp!u-b;6mPXGv~gsI z*S=m ziaGg3%Vi-Qm-oSLJ0*T_O9aN8S}}FU98L`W(kX{l0!TJ?>vX#59&3g=P4|OB-!)g_J-RKU>`?OopWAE9oT`sF# zK}g_g(Y1~%d$nBJz4zLYPGy~2X!{{6`?rqnx-mU22#cdExe&NseB++h-FnB2a4PHE zVrbnay4$8x+gvWIT|r2otg<|8-H@h{oxR%dwWHca_o8}yo0|}X#Zi`A2;knFy?cI> z$d2w4E~A0dsC&iWSnJ$p{c~6DTy?pub_F2;#^Jlp>}$KcdzKNW%$fLivO&v;&ENv_lV;AaM-bnNfW=E)jGOclc;rT6EC^dSm?cia6}qhMJAT`Y^{KI! zZhL(l)+5ZXZdE4&%)*E`VnzE_Nx{wHo23<{6;-^1qdG#VPFL5-A|L`HAOa#F0wN#+ tA|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A`k=w{txA>)qDT| literal 0 HcmV?d00001 diff --git a/deps/checksums/nsis-3.04-setup.exe/md5 b/deps/checksums/nsis-3.04-setup.exe/md5 new file mode 100644 index 0000000000000..dd2ee5545ece6 --- /dev/null +++ b/deps/checksums/nsis-3.04-setup.exe/md5 @@ -0,0 +1 @@ +3c93427c56714478bb5a7a4bbaab934f diff --git a/deps/checksums/nsis-3.04-setup.exe/sha512 b/deps/checksums/nsis-3.04-setup.exe/sha512 new file mode 100644 index 0000000000000..4216a8ccb295e --- /dev/null +++ b/deps/checksums/nsis-3.04-setup.exe/sha512 @@ -0,0 +1 @@ +55142f5eeada65f18f6de950ead5342d78e1a4a01b7620d02dae2fbd3f0d963db482f5a63939131e81a78b458c5306f600578ab96891b0661cb0b74be1f7636d From 531c2d8d838fa0f60e85897c4887126667321382 Mon Sep 17 00:00:00 2001 From: "Viral B. Shah" Date: Mon, 13 May 2019 00:24:49 -0400 Subject: [PATCH 31/34] Remove old llvm 3.9 checksums --- deps/checksums/llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z/md5 | 1 - .../llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z/sha512 | 1 - .../checksums/llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z/md5 | 1 - .../llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z/sha512 | 1 - 4 files changed, 4 deletions(-) delete mode 100644 deps/checksums/llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z/md5 delete mode 100644 deps/checksums/llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z/sha512 delete mode 100644 deps/checksums/llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z/md5 delete mode 100644 deps/checksums/llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z/sha512 diff --git a/deps/checksums/llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z/md5 b/deps/checksums/llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z/md5 deleted file mode 100644 index 44f12c1d39dd8..0000000000000 --- a/deps/checksums/llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z/md5 +++ /dev/null @@ -1 +0,0 @@ -78a8751aab4333e636ab36d1bd56216a diff --git a/deps/checksums/llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z/sha512 b/deps/checksums/llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z/sha512 deleted file mode 100644 index 4678e46d529ad..0000000000000 --- a/deps/checksums/llvm-3.9.1-i686-w64-mingw32-juliadeps-r07.7z/sha512 +++ /dev/null @@ -1 +0,0 @@ -1a512d01f0751d184858de660cd69f1861af230f193522f6d94a61752caad32a5fa7af40f6abcfd153733107824eb3deaa6e6ef3d680eba3898af02d44a97d19 diff --git a/deps/checksums/llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z/md5 b/deps/checksums/llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z/md5 deleted file mode 100644 index 7b5e851e6f196..0000000000000 --- a/deps/checksums/llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z/md5 +++ /dev/null @@ -1 +0,0 @@ -96af87df3140a00df866eda5b5a99d37 diff --git a/deps/checksums/llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z/sha512 b/deps/checksums/llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z/sha512 deleted file mode 100644 index 41605bb4c698c..0000000000000 --- a/deps/checksums/llvm-3.9.1-x86_64-w64-mingw32-juliadeps-r07.7z/sha512 +++ /dev/null @@ -1 +0,0 @@ -24697b575688fea8f2ca5f9bf3f8f96353c09efbe32923cedc111bf976d5480a82a4c4dec52fc9343715887dee98605c80c3323e4d1b2f245e239cf5604ea02d From 5dc47ae1e139778a62334e73dc038b3c8dcbbd65 Mon Sep 17 00:00:00 2001 From: "Viral B. Shah" Date: Mon, 13 May 2019 00:26:20 -0400 Subject: [PATCH 32/34] Remove vagrant files in contrib that were left around. --- contrib/vagrant/.gitignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 contrib/vagrant/.gitignore diff --git a/contrib/vagrant/.gitignore b/contrib/vagrant/.gitignore deleted file mode 100644 index 0ae91c4f2b023..0000000000000 --- a/contrib/vagrant/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/.vagrant From 3efdda65d4046a4825353dddc090a6235764fa8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Mon, 13 May 2019 10:08:23 +0100 Subject: [PATCH 33/34] fast implementation of digits with base a power of 2 (#31722) --- base/intfuncs.jl | 19 ++++++++++++++++--- test/intfuncs.jl | 23 +++++++++++++++++++++-- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/base/intfuncs.jl b/base/intfuncs.jl index db1a1ae121251..e430603defb35 100644 --- a/base/intfuncs.jl +++ b/base/intfuncs.jl @@ -460,6 +460,10 @@ function ndigits0zpb(x::Integer, b::Integer) b == 8 && return (sizeof(x)<<3 - leading_zeros(x) + 2) ÷ 3 b == 16 && return sizeof(x)<<1 - leading_zeros(x)>>2 b == 10 && return bit_ndigits0z(x) + if ispow2(b) + dv, rm = divrem(sizeof(x)<<3 - leading_zeros(x), trailing_zeros(b)) + return iszero(rm) ? dv : dv + 1 + end end d = 0 @@ -755,9 +759,18 @@ function digits!(a::AbstractVector{T}, n::Integer; base::Integer = 10) where T<: isempty(a) && return a if base > 0 - for i in eachindex(a) - n, d = divrem(n, base) - a[i] = d + if ispow2(base) && n >= 0 && n isa Base.BitInteger && base <= typemax(Int) + base = Int(base) + k = trailing_zeros(base) + c = base - 1 + for i in eachindex(a) + a[i] = (n >> (k * (i - firstindex(a)))) & c + end + else + for i in eachindex(a) + n, d = divrem(n, base) + a[i] = d + end end else # manually peel one loop iteration for type stability diff --git a/test/intfuncs.jl b/test/intfuncs.jl index 4bf9d3b71b4bf..9065e85206511 100644 --- a/test/intfuncs.jl +++ b/test/intfuncs.jl @@ -117,6 +117,14 @@ end @test ndigits(146, base=-3) == 5 end + @testset "ndigits with base power of 2" begin + @test ndigits(17, base = 2) == 5 + @test ndigits(123, base = 4) == 4 + @test ndigits(64, base = 8) == 3 + @test ndigits(8436, base = 16) == 4 + @test ndigits(159753, base = 32) == 4 + @test ndigits(3578951, base = 64) == 4 + end let (n, b) = rand(Int, 2) -1 <= b <= 1 && (b = 2) # invalid bases @test ndigits(n) == ndigits(big(n)) == ndigits(n, base=10) @@ -181,11 +189,22 @@ end @test bitstring(Int128(3)) == "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011" end @testset "digits/base" begin - @test digits(4, base = 2) == [0, 0, 1] @test digits(5, base = 3) == [2, 1] - @test digits(5, base = Int32(2), pad=Int32(3)) == [1, 0, 1] @test digits(5, pad = 3) == [5, 0, 0] @test digits(5, pad = Int32(3)) == [5, 0, 0] + # The following have bases powers of 2, but don't enter the fast path + @test digits(-3, base = 2) == -[1, 1] + @test digits(-42, base = 4) == -[2, 2, 2] + + @testset "digits/base with bases powers of 2" begin + @test digits(4, base = 2) == [0, 0, 1] + @test digits(5, base = Int32(2), pad=Int32(3)) == [1, 0, 1] + @test digits(42, base = 4) == [2, 2, 2] + @test digits(321, base = 8) == [1, 0, 5] + @test digits(0x123456789abcdef, base = 16) == 15:-1:1 + @test digits(0x2b1a210a750, base = 64) == [16, 29, 10, 4, 34, 6, 43] + @test digits(0x02a01407, base = Int128(1024)) == [7, 5, 42] + end @testset "digits/base with negative bases" begin @testset "digits(n::$T, base = b)" for T in (Int, UInt, BigInt, Int32, UInt32) From 178d70318b24091ef4a73bff7d536ecaadc72b62 Mon Sep 17 00:00:00 2001 From: Lyndon White Date: Mon, 13 May 2019 21:54:59 +0100 Subject: [PATCH 34/34] Split rule in Generated function docs about calling functions from argument types (#32016) --- doc/src/manual/metaprogramming.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/src/manual/metaprogramming.md b/doc/src/manual/metaprogramming.md index ae11362fafe2d..7faa0e5f3c11b 100644 --- a/doc/src/manual/metaprogramming.md +++ b/doc/src/manual/metaprogramming.md @@ -1090,16 +1090,17 @@ To make this efficient, the result is usually cached. And to make this inferable subset of the language is usable. Thus, generated functions provide a flexible way to move work from run time to compile time, at the expense of greater restrictions on allowed constructs. -When defining generated functions, there are four main differences to ordinary functions: +When defining generated functions, there are five main differences to ordinary functions: 1. You annotate the function declaration with the `@generated` macro. This adds some information to the AST that lets the compiler know that this is a generated function. 2. In the body of the generated function you only have access to the *types* of the arguments – - not their values – and any function that was defined *before* the definition of the generated - function. + not their values. 3. Instead of calculating something or performing some action, you return a *quoted expression* which, when evaluated, does what you want. -4. Generated functions must not *mutate* or *observe* any non-constant global state (including, +4. Generated functions are only permitted to call functions that were defined *before* the definition of the generated + function. (Failure to follow this my result on getting `MethodErrors` referring to functions from a future world-age.) +5. Generated functions must not *mutate* or *observe* any non-constant global state (including, for example, IO, locks, non-local dictionaries, or using [`hasmethod`](@ref)). This means they can only read global constants, and cannot have any side effects. In other words, they must be completely pure.