JuliaLang / julia

The Julia Programming Language
https://julialang.org/
MIT License
44.98k stars 5.42k forks source link

Support ucrt C library via MSYS2 UCRT64 on Windows #44006

Open mkitti opened 2 years ago

mkitti commented 2 years ago

On Microsoft Windows, there is a new C runtime "libc" called "ucrt". Many of the changes support ISO C99 conformance.. https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/ https://docs.microsoft.com/en-us/cpp/porting/upgrade-your-code-to-the-universal-crt?view=msvc-170

UCRT deployment was backported to Windows XP, although Windows XP is no longer supported: https://docs.microsoft.com/en-us/cpp/windows/universal-crt-deployment?view=msvc-170

MSYS2 provides a UCRT64 build environment: https://www.msys2.org/docs/environments/

MSYS2 currently has a julia package, with many packages: https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-julia

For the near term, I propose that we develop build instructions and improve compatibility with the MSYS2 UCRT64 build environment. This may be beneficial by also making Julia buildable on other MSYS2 platforms such as aarch64.

mkitti commented 2 years ago

There is currently a comment referencing ucrt here: https://github.com/JuliaLang/julia/blob/8bdb04526d9ca78f0efaff871a5859bd66ed6c32/src/jlapi.c#L505-L516

vtjnash commented 2 years ago

It would be interesting to hear if someone can get --with-default-msvcrt=ucrt working. But it appears to require rebuilding gcc from scratch, so it may be rather a challenge.

mkitti commented 2 years ago

But it appears to require rebuilding gcc from scratch, so it may be rather a challenge.

It looks like the MSYS2 UCRT64 environment has a gcc, so perhaps they have already addressed that part? https://www.msys2.org/docs/environments/

vtjnash commented 2 years ago

We have not supported msys2 in a couple years, but that is probably a good starting point

metab0t commented 2 years ago

Migrating MinGW to UCRT requires 5 steps on Arch linux (should be similar for Cygwin and other Linux):

  1. install mingw-w64-gcc and mingw-w64-binutils to bootstrap
  2. edit mingw-w64-header by adding the configure option --with-default-msvcrt=ucrt, build and install
  3. edit mingw-w64-crt by adding the configure option --with-default-msvcrt=ucrt, build and install
  4. build mingw-w64-winpthreads and install
  5. build mingw-w64-gcc and install

Then we can use the new mingw-w64-gcc to cross compile and the produced executable links to UCRT.

UCRT is definitely better than old msvcrt because it supports more modern C features, so it can reduce a lot of cross-platform hacks especially for Windows.

However, I am afraid that the whole Windows toolchain and all Windows artifacts in BinaryBuilder ecosystem need to be rebuilt to use UCRT. It should be regarded as a MAJOR incompatible ABI change for Windows platform.

mkitti commented 2 years ago

The near term objective is just to get Julia to build with UCRT.

metab0t commented 2 years ago

How should we deal with prebuilt third-party dependency? They are built by BinaryBuilder and should switch to UCRT too.

mkitti commented 2 years ago

Yes, I understand. I'm not suggesting that we start distributing Julia linked to UCRT. I'm just suggesting that the first goal is to develop the ability to build Julia linked to UCRT.

On Linux, BinaryBuilder currently supports both glibc and musl, so perhaps we eventually develop a similar capability.

metab0t commented 2 years ago

I agree with you. UCRT can be added as a new build configuration on Windows.

inkydragon commented 2 years ago

We need a new triplet for BinaryBuilder.

Maybe: x86_64-w64-ucrt64 which mean x86_64 on windows with gcc + ucrt

ref: Environments - MSYS2

metab0t commented 2 years ago

We need a new triplet for BinaryBuilder.

Maybe: x86_64-w64-ucrt64 which mean x86_64 on windows with gcc + ucrt

ref: Environments - MSYS2

Yes, it is incompatible with old binary artifacts depending on msvcrt.dll.

inkydragon commented 2 years ago

Another thing is that we may have to fix the MinGW/MSYS2 compilation environment first. It looks like setting up a cygwin+UCRT compile environment is a bit more complicated.

metab0t commented 2 years ago

Another thing is that we may have to fix the MinGW/MSYS2 compilation environment first. It looks like setting up a cygwin+UCRT compile environment is a bit more complicated.

I think cygwin + ucrt is easier because once we obtain a ucrt-enabled cross gcc toolchain in cygwin and replace current toolchain like I mentioned above, we can compile Julia in cygwin as usual (maybe without any code change). I will give it a try when I have some spare time this month. I am struggling to build cygwin packages with cygport last week.

(You can also use a ucrt-enabled cross gcc toolchain on Linux to compile Julia.)

According to https://github.com/msys2/MSYS2-packages/issues/3040 Msys2 does not encourage the usage of cross gcc toolchain, which does not align with the build system of Julia designed around cross compilation. Therefore, supporting Msys2 would be great, but it may require more effort than cygwin + ucrt approach.

stahta01 commented 1 year ago

Patch that enabled building under MSys2 UCRT64.

From 7031e5e84d5d7e0ba088f88a1a4d10a9527f4a30 Mon Sep 17 00:00:00 2001
From: Tim Stahlhut <stahta01@gmail.com>
Date: Mon, 20 Feb 2023 19:01:18 -0500
Subject: ucrt: Replace "msvcrt" with "ucrtbase"

Replace "-lmsvcrt" with "-lucrtbase" in base/linking.jl
Set CRTDLL_BASENAME to "ucrtbase".
Replace libmsvcrt.a with libucrtbase.a
---
 Makefile        | 2 +-
 base/linking.jl | 2 +-
 src/dlload.c    | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 8010088bd1..2358fb405c 100644
--- a/Makefile
+++ b/Makefile
@@ -261,7 +261,7 @@ endif
    # These are files from mingw32 and required for creating shared libraries like our caches.
    -$(INSTALL_M) $(build_libdir)/libgcc_s.a $(DESTDIR)$(libdir)/
    -$(INSTALL_M) $(build_libdir)/libgcc.a $(DESTDIR)$(libdir)/
-   -$(INSTALL_M) $(build_libdir)/libmsvcrt.a $(DESTDIR)$(libdir)/
+   -$(INSTALL_M) $(build_libdir)/libucrtbase.a $(DESTDIR)$(libdir)/
 else

 # Copy over .dSYM directories directly for Darwin
diff --git a/base/linking.jl b/base/linking.jl
index 288279347f..957a7f8820 100644
--- a/base/linking.jl
+++ b/base/linking.jl
@@ -133,7 +133,7 @@ function link_image_cmd(path, out)
     SHLIBDIR = "-L$(shlibdir())"
     LIBS = is_debug() ? ("-ljulia-debug", "-ljulia-internal-debug") : ("-ljulia", "-ljulia-internal")
     @static if Sys.iswindows()
-        LIBS = (LIBS..., "-lopenlibm", "-lssp", "-lgcc_s", "-lgcc", "-lmsvcrt")
+        LIBS = (LIBS..., "-lopenlibm", "-lssp", "-lgcc_s", "-lgcc", "-lucrtbase")
     end

     V = VERBOSE[] ? "--verbose" : ""
diff --git a/src/dlload.c b/src/dlload.c
index dd5d75da31..5ab350f31c 100644
--- a/src/dlload.c
+++ b/src/dlload.c
@@ -60,7 +60,7 @@ static int endswith_extension(const char *path) JL_NOTSAFEPOINT
 }

 #ifdef _OS_WINDOWS_
-#define CRTDLL_BASENAME "msvcrt"
+#define CRTDLL_BASENAME "ucrtbase"

 JL_DLLEXPORT const char *jl_crtdll_basename = CRTDLL_BASENAME;
 const char *jl_crtdll_name = CRTDLL_BASENAME ".dll";
-- 

Needed a version of PR 48640

$ cat Make.user
DEPS_GIT = 1
USE_BINARYBUILDER_CSL = 0
USE_SYSTEM_CSL = 1
USE_BINARYBUILDER_LLVM = 0
USE_BINARYBUILDER_GMP = 0
USE_BINARYBUILDER_MPFR = 0

Edit: Had test failures in file, misc, Dates/io, and Mmap that looked like a common cause might exist. Also, had failures in SparseArrays/cholmod along with the normal REPL, InteractiveUtils, and FileWatching failures.

Tim S.

vtjnash commented 1 year ago

It seems that only msys2 currently has support for ucrt (why don't they upstream it?) so we can't support it in binary builder and change the ecosystem to it. USE_BINARYBUILDER=0 might help, if you are willing to work through all of the dependencies and make sure they get build correctly.

stahta01 commented 1 year ago

Currently trying USE_BINARYBUILDER=0 and USE_SYSTEM_CSL = 1 with the below because of build errors; most already know and reported by others. Edit in issue 45645 Edit2: LIBSUITESPARSE error is because it failed to find BLASTRAMPOLINE.

echo 'USE_BINARYBUILDER_BLASTRAMPOLINE = 1' >> Make.user && \
echo 'USE_BINARYBUILDER_LIBSUITESPARSE = 1' >> Make.user && \
echo 'USE_BINARYBUILDER_ZLIB = 1' >> Make.user && \
echo 'USE_BINARYBUILDER_P7ZIP = 1' >> Make.user && \
metab0t commented 1 year ago

It seems that only msys2 currently has support for ucrt (why don't they upstream it?) so we can't support it in binary builder and change the ecosystem to it. USE_BINARYBUILDER=0 might help, if you are willing to work through all of the dependencies and make sure they get build correctly.

The support for ucrt already exists in upstream mingw64, it is turned on by rebuilding the whole toolchain from scratch with --with-default-msvcrt=ucrt passed to mingw-w64-headers and mingw-w64-crt when configuring. (https://github.com/msys2/MINGW-packages/issues/6901) A viable solution is to create a new triplet for ucrt just like musl vs glibc on Linux.

mkitti commented 1 year ago

Apparently to add a new triplet we should send a pull request to modify this file: https://github.com/JuliaLang/julia/blob/e3d366f1966595ba737220df49e220610823b331/base/binaryplatforms.jl#L640-L644

Another question about this platform, are we sticking with gcc or is anyone thinking about clang?

My inclination would be to stick with gcc at the moment. Thus the UCRT64 msys2 environment looks like the target.

https://www.msys2.org/docs/environments/

mkitti commented 1 year ago

xref: https://github.com/conda-forge/conda-forge.github.io/issues/1654

stahta01 commented 1 year ago

Apparently to add a new triplet we should send a pull request to modify this file:

https://github.com/JuliaLang/julia/blob/e3d366f1966595ba737220df49e220610823b331/base/binaryplatforms.jl#L640-L644

Another question about this platform, are we sticking with gcc or is anyone thinking about clang?

My inclination would be to stick with gcc at the moment. Thus the UCRT64 msys2 environment looks like the target.

https://www.msys2.org/docs/environments/

CLANG64 gives the below output

$ clang -dumpmachine
x86_64-w64-windows-gnu
stahta01 commented 1 year ago

After building most deps from source tests fail below plus the normal three of InteractiveUtils, FileWatching, and REPL.

Error in testset file:
Error in testset misc:
Error in testset SparseArrays/cholmod:
Error in testset Dates/io:
Error in testset LibSSH2_jll:
Error in testset LibGit2_jll:
Error in testset Mmap:
Error in testset PCRE2_jll:
Error in testset LinearAlgebra/pinv
stahta01 commented 1 year ago

I am building Cygwin git master branch with llvm copy patch using USE_BINARYBUILDER=0. And, I thought I would look for UCRT import libs I found under UCRT64 and I found them

H:\cygwin64\usr\x86_64-w64-mingw32\sys-root\mingw\lib
  libucrt.a
  libucrtapp.a
  libucrtbase.a

I picked libucrtbase.a to build UCRT64 because google searches implied it might be more correct. One of the other two might be better.

Once, the current Cygwin build finishes could take a day or so. Esp. if I need to re-start it. I plan to see if the same ucrt patch results in a good build using Cygwin.

Edit: Turns out linking to ucrt with an Toolchain not designed to use UCRT results in linker errors most often and when it does not seems to have run-time errors.

Tim S.

mkitti commented 1 year ago

Cross reference https://github.com/JuliaLang/julia/issues/49867#issuecomment-1558908627

inkydragon commented 1 year ago

xref:

Background: We need high-quality implementations of strtof and strtod. The implementation in msvcrt is of poor quality, and the corresponding export functions are available in UCRT.

strtod directly from msvcrt

This one is significantly worse quality, and does not conform to the current C standards.

Originally posted by @vtjnash in https://github.com/JuliaLang/julia/issues/49699#issuecomment-1545785317

inkydragon commented 6 months ago

POC(Proof Of Concept) for compiling from source code using the UCRT64 environment.

Env

julia souce with patchs: based on master, https://github.com/inkydragon/julia/tree/cyhan/win-ucrt64

diff: https://github.com/JuliaLang/julia/compare/1b183b93...inkydragon:julia:cyhan/win-ucrt64

deps:

pacman -S cmake diffutils git m4 make patch tar p7zip curl python
pacman -S mingw-w64-ucrt-x86_64-gcc

pacman -S unzip mingw-w64-ucrt-x86_64-gcc-fortran mingw-w64-ucrt-x86_64-nasm
# pacman -S mingw-w64-ucrt-x86_64-cmake

Make.user

# https://github.com/JuliaLang/julia/issues/51740
override HAVE_SSP := 0

# new flag
USE_WIN_UCRT := 1

USE_BINARYBUILDER=0
# TODO: build p7zip from source 
USE_BINARYBUILDER_P7ZIP:=1

build steps

make -C deps/ extract

I get tar unpacking errors when building libgit2 and llvm. You need to repeat the unpacking operation manually and create the corresponding source-extracted file Then you can continue to build.

make -C deps/ -j
make -j

NOTE: build llvm takes a loooong time, for me, it's 30~40 min.

test

If you use ldd to check the shared libraries...

ldd bug in UCRT64 env `ldd` in the UCRT64 environment is an MSYS2 native program. Sometimes it shows that a program is linked to both msvcrt and ucrt, this is supposed to be a bug, checking with other tools in windows shows that it is only linked to ucrt. You may want to use `ntldd` Or [lucasg/Dependencies](https://github.com/lucasg/Dependencies).

EXCEPTION_ACCESS_VIOLATION when test threads. I can reproduce this error by: make -C test/ threads Need for further analysis.

threads                                           (1) |        started at 2023-12-31T22:41:17.415
Test Summary:                               |  Pass  Total   Time
threads_exec.jl with JULIA_NUM_THREADS == 1 | 40353  40353  26.1s
Test Summary:                               |  Pass  Total   Time
threads_exec.jl with JULIA_NUM_THREADS == 2 | 48759  48759  24.2s
Test Summary:                               |  Pass  Total   Time
threads_exec.jl with JULIA_NUM_THREADS == 4 | 47656  47656  22.8s
Test Summary:                               |  Pass  Total   Time
threads_exec.jl with JULIA_NUM_THREADS == 4 | 46870  46870  25.3s

Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0x7ffa13471120 -- ┌ Error: A "spawn and wait lots of tasks" test failed
│   n = 2000000
│   proc.exitcode = 1
│   proc.termsignal = 15
│   success(proc) = false
│   timeout = true
└ @ Main.Test61Main_threads D:\jl\julia\test\threads.jl:313
threads                                           (1) |   228.09 |   0.03 |  0.0 |     113.49 |   467.34
Test Summary Log ```log Test Summary: | Pass Fail Error Broken Total Time Overall | 67291722 2 14 2210 67293948 27m24.7s compiler/datastructures | 289 289 11.3s LinearAlgebra/ldlt | 8 8 15.2s ambiguous | 143 2 145 16.9s compiler/validation | 27 27 1.1s LinearAlgebra/factorization | 85 16 101 23.0s compiler/effects | 663 8 671 9.3s LinearAlgebra/abstractq | 122 122 35.8s compiler/ssair | 147 147 21.4s compiler/contextual | 11 11 6.3s compiler/irpasses | 252 9 261 24.5s compiler/codegen | 255 1 256 25.8s LinearAlgebra/symmetriceigen | 40 40 55.2s LinearAlgebra/givens | 1995 1995 1m08.8s LinearAlgebra/pinv | 500 500 1m16.1s strings/search | 876 876 14.4s compiler/invalidation | 44 44 48.4s compiler/EscapeAnalysis/EscapeAnalysis | 236 66 302 49.9s strings/basic | 93507 93507 31.5s strings/io | 12774 12774 9.0s unicode/utf8 | 19 19 0.5s compiler/inline | 320 2 322 1m09.0s strings/types | 2568567 2568567 7.2s strings/annotated | 328 328 11.8s worlds | 107 107 8.7s compiler/inference | 1598 10 1608 1m42.1s keywordargs | 155 155 4.4s strings/util | 1173 1173 29.8s triplequote | 29 29 0.1s intrinsics | 368 368 8.1s char | 10855 10855 19.8s subtype | 317398 47 317445 37.9s LinearAlgebra/adjtrans | 497 497 2m34.1s iobuffer | 210 210 5.7s staged | 70 1 71 8.2s hashing | 13527 13527 37.1s atomics | 3448 3448 1m09.8s LinearAlgebra/schur | 500 500 3m06.4s tuple | 690 690 20.9s dict | 144522 8 144530 1m15.1s LinearAlgebra/lapack | 855 855 3m23.8s simdloop | 240 240 6.6s LinearAlgebra/lq | 2898 2898 3m32.5s LinearAlgebra/generic | 755 1 756 3m32.6s vecelement | 678 678 17.9s intfuncs | 370108 370108 29.5s copy | 556 556 11.0s core | 7353867 2 7353869 2m20.4s LinearAlgebra/blas | 1894 1894 4m11.9s reduce | 8614 8614 1m20.5s LinearAlgebra/uniformscaling | 446 446 4m20.0s functional | 104 104 17.1s LinearAlgebra/svd | 606 606 4m24.4s path | 1055 12 1067 4.0s parse | 16101 16101 9.9s offsetarray | 514 3 517 1m58.5s numbers | 1150895 1 1150896 2m43.5s rational | 98711 2 98713 1m07.5s fastmath | 965 965 41.8s exceptions | 70 70 1.1s file | 5 1 6 3.1s backtrace | 40 1 41 7.0s gmp | 2630 2630 19.4s version | 2456 2456 2.2s operators | 13079 13079 39.7s namedtuple | 251 251 8.2s ordering | 252 252 46.3s compiler/AbstractInterpreter | 36 1 37 4m19.8s floatapprox | 49 49 6.8s LinearAlgebra/tridiag | 1661 1661 5m15.5s regex | 155 155 6.7s LinearAlgebra/structuredbroadcast | 672 672 5m19.9s spawn | 254 4 258 43.1s LinearAlgebra/eigen | 961 961 5m20.4s sysinfo | 8 8 0.7s env | 243 243 3.7s reflection | 496 496 20.5s mod2pi | 80 80 4.8s euler | 12 12 3.1s combinatorics | 188 188 13.7s complex | 8497 2 8499 31.0s client | 7 7 4.6s terminfo | 543 543 6.1s goto | 19 19 0.2s llvmcall | 21 21 1.4s llvmcall2 | 23 23 0.4s float16 | 762093 762093 27.7s ryu | 31221 31221 2.8s some | 72 72 3.3s mpfr | 1138 1 1139 49.6s meta | 73 73 5.5s stacktraces | 72 6 78 9.0s errorshow | 287 287 20.2s docs | 247 247 18.5s atexit | 68 68 17.7s binaryplatforms | 346 346 17.8s enums | 102 102 9.0s interpreter | 3 3 3.5s LinearAlgebra/qr | 4785 4785 6m36.6s int | 736488 40 736528 25.0s rounding | 28810467 28810467 1m19.2s checked | 1239 1239 22.0s relocatedepot | 11 11 4.6s misc | 1 1 54.7s bitset | 206 206 11.2s LinearAlgebra/hessenberg | 688 688 6m47.8s osutils | 59 59 0.7s error | 85 85 4.8s math | 1915615 1915615 2m57.9s secretbuffer | 38 38 1.7s specificity | 182 182 0.5s show | 129005 8 129013 1m25.9s iostream | 62 62 6.1s sets | 4107 4107 1m25.1s cartesian | 350 3 353 15.5s smallarrayshrink | 48 48 0.2s corelogging | 235 235 9.8s filesystem | 6 6 0.6s opaque_closure | 88 1 89 4.6s scopedvalues | 79 79 2.3s syntax | 1742 1 1743 17.4s boundscheck | None 33.2s SparseArrays/allowscalar | 9 9 2.3s channels | 260 260 26.7s floatfuncs | 1154 18 1172 42.1s asyncmap | 307 307 25.2s iterators | 86624 86624 3m15.6s download | None 25.2s SparseArrays/fixed | 77 77 29.4s ranges | 12438655 3 12438658 2m22.0s read | 6477 6477 3m13.9s reinterpretarray | 663 663 1m15.6s missing | 580 1 581 1m13.7s LinearAlgebra/cholesky | 2548 2548 8m22.1s Dates/accessors | 7723858 7723858 11.8s Dates/query | 1004 1004 3.5s abstractarray | 55629 91 55720 5m16.3s Dates/adjusters | 3149 3149 16.2s Dates/rounding | 315 315 4.8s Dates/types | 237 237 5.0s Dates/periods | 968 968 38.8s Dates/ranges | 350640 350640 37.1s Dates/conversions | 160 160 3.6s LinearAlgebra/addmul | 3564 1710 5274 9m14.6s Dates/io | 1 1 30.4s LibGit2/libgit2 | 597 597 1m09.7s reducedim | 1271 3 1274 6m13.4s CRC32c | 680 680 3.5s CompilerSupportLibraries_jll | 4 4 1.8s Base64 | 2031 2031 6.7s ArgTools | 180 180 14.9s Dates/arithmetic | 400 400 19.9s Future | None 0.1s GMP_jll | 1 1 0.0s LLD_jll | 2 2 5.8s LLVMLibUnwind_jll | None 0.1s DelimitedFiles | 89 89 14.1s LibCURL | 6 6 3.3s LibCURL_jll | 1 1 0.2s LibGit2_jll | 2 2 0.4s LibSSH2_jll | None 0.2s LibUV_jll | None 0.0s LibUnwind_jll | None 0.0s Artifacts | 1459 1459 30.0s Libdl | 180 1 181 4.5s MPFR_jll | 1 1 0.2s LazyArtifacts | 4 4 14.3s MbedTLS_jll | 1 1 1.6s Logging | 42 42 10.2s MozillaCACerts_jll | 1 1 0.1s Mmap | 1 1 6.8s NetworkOptions | 3518 3518 3.8s OpenBLAS_jll | 1 1 0.1s OpenLibm_jll | 1 1 0.2s SparseArrays/cholmod | 671 671 2m47.0s PCRE2_jll | 2 2 0.4s SparseArrays/spqr | 168 168 2m17.9s arrayops | 2170 5 2175 7m21.3s SparseArrays/linalg_solvers | 364 364 2m41.8s Markdown | 262 262 23.9s InteractiveUtils | 306 1 1 308 45.1s Serialization | 131 1 132 20.6s StyledStrings | 86 86 5.6s SuiteSparse | None 2.5s SuiteSparse_jll | 1 1 0.2s Downloads | 236 1 237 1m25.3s Profile | 126 126 1m02.6s REPL | 768 1 1 770 1m19.7s Printf | 1316 1316 1m25.2s UUIDs | 1029 1029 1.6s SparseArrays/sparsematrix_ops | 675 675 3m55.1s Zlib_jll | 1 1 2.1s LinearAlgebra/lu | 1433 1433 11m32.1s SparseArrays/issues | 350 350 4m16.6s libblastrampoline_jll | 1 1 0.0s libLLVM_jll | 1 1 0.2s nghttp2_jll | 1 1 0.2s p7zip_jll | 1 1 0.1s Tar | 540 6 11 557 42.3s TOML | 624 45 669 57.2s dSFMT_jll | 1 1 3.9s SparseArrays/umfpack | 349 349 3m36.9s Unicode | 1301 1301 12.4s LinearAlgebra/bunchkaufman | 41097 41097 11m50.2s Sockets | 170 1 171 1m38.3s FileWatching | 588 2 1 591 2m44.7s SHA | 160 160 2m12.1s broadcast | 538 538 7m28.6s Test | 496 18 514 1m25.0s SparseArrays/linalg | 3491 3491 5m10.4s subarray | 459063 459063 11m42.3s Random | 218403 218403 3m02.7s LinearAlgebra/special | 3999 3999 13m09.9s sorting | 41542 10 41552 8m45.4s SparseArrays/sparsematrix_constructors_indexing | 2172 2172 5m55.8s loading | 162541 162541 9m03.6s Statistics | 839 839 3m08.2s LinearAlgebra/symmetric | 3054 3054 13m39.9s LinearAlgebra/matmul | 1656 3 1659 13m56.9s cmdlineargs | 314 11 325 7m55.4s LinearAlgebra/diagonal | 3024 3024 14m34.6s LinearAlgebra/dense | 8591 8591 15m13.7s bitarray | 948315 8 948323 12m00.0s SparseArrays/higherorderfns | 7172 1 7173 8m24.8s SparseArrays/sparsevector | 11953 4 11957 9m04.2s LinearAlgebra/bidiag | 7616 7616 19m25.7s LinearAlgebra/triangular | 38553 38553 27m24.2s ccall | 5409 5409 38.0s precompile | 269 269 47.0s SharedArrays | 114 114 21.1s threads | 48 3 51 3m48.1s Distributed | 15 15 3m39.7s gc | 25 25 25.0s stress | None 0.0s FAILURE The global RNG seed was 0x185a24db6e7249765315b94947c3c5f1. Error in testset file: Error During Test at D:\jl\julia\test\testdefs.jl:24 Got exception outside of a @test LoadError: IOError: On Windows, creating symlinks requires Administrator privileges. symlink("..\\adir2", "D:\\env\\msys64\\tmp\\jl_T29Nfx\\adir\\rel_subdirlink"): operation not permitted (EPERM) Stacktrace: [1] uv_error @ Base .\libuv.jl:100 [inlined] [2] symlink(target::String, link::String; dir_target::Bool) @ Base.Filesystem .\file.jl:1147 [3] symlink(target::String, link::String) @ Base.Filesystem .\file.jl:1109 [4] top-level scope @ D:\jl\julia\test\file.jl:38 [5] include @ .\Base.jl:526 [inlined] [6] macro expansion @ D:\jl\julia\test\testdefs.jl:33 [inlined] [7] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [8] macro expansion @ D:\jl\julia\test\testdefs.jl:26 [inlined] [9] macro expansion @ .\timing.jl:513 [inlined] [10] runtests(name::String, path::String, isolate::Bool; seed::UInt128) @ Main D:\jl\julia\test\testdefs.jl:24 [11] runtests @ Main D:\jl\julia\test\testdefs.jl:5 [inlined] [12] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::@Kwargs{seed::UInt128}) @ Base .\essentials.jl:957 [13] (::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 [14] run_work_thunk(thunk::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}}, print_error::Bool) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:70 [15] (::Distributed.var"#109#111"{Distributed.CallMsg{:call_fetch}, Distributed.MsgHeader, Sockets.TCPSocket})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 in expression starting at D:\jl\julia\test\file.jl:29 Error in testset misc: Error During Test at none:1 Got exception outside of a @test ProcessExitedException(14) Stacktrace: [1] try_yieldto(undo::typeof(Base.ensure_rescheduled)) @ Base .\task.jl:944 [2] wait() @ Base .\task.jl:1008 [3] wait(c::Base.GenericCondition{ReentrantLock}; first::Bool) @ Base .\condition.jl:130 [4] wait @ Base .\condition.jl:125 [inlined] [5] take_buffered(c::Channel{Any}) @ Base .\channels.jl:477 [6] take!(c::Channel{Any}) @ Base .\channels.jl:471 [7] take!(::Distributed.RemoteValue) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\remotecall.jl:726 [8] remotecall_fetch(::Function, ::Distributed.Worker, ::String, ::Vararg{String}; kwargs::@Kwargs{seed::UInt128}) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\remotecall.jl:461 [9] remotecall_fetch(::Function, ::Int64, ::String, ::Vararg{String}; kwargs::@Kwargs{seed::UInt128}) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\remotecall.jl:492 [10] (::var"#37#47"{Vector{Task}, var"#print_testworker_errored#43"{ReentrantLock, Int64, Int64}, var"#print_testworker_stats#41"{ReentrantLock, Int64, Int64, Int64, Int64, Int64, Int64}, Vector{Any}, Dict{String, DateTime}})() @ Main D:\jl\julia\test\runtests.jl:261 Error in testset Dates/io: Error During Test at none:1 Got exception outside of a @test ProcessExitedException(11) Stacktrace: [1] try_yieldto(undo::typeof(Base.ensure_rescheduled)) @ Base .\task.jl:944 [2] wait() @ Base .\task.jl:1008 [3] wait(c::Base.GenericCondition{ReentrantLock}; first::Bool) @ Base .\condition.jl:130 [4] wait @ Base .\condition.jl:125 [inlined] [5] take_buffered(c::Channel{Any}) @ Base .\channels.jl:477 [6] take!(c::Channel{Any}) @ Base .\channels.jl:471 [7] take!(::Distributed.RemoteValue) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\remotecall.jl:726 [8] remotecall_fetch(::Function, ::Distributed.Worker, ::String, ::Vararg{String}; kwargs::@Kwargs{seed::UInt128}) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\remotecall.jl:461 [9] remotecall_fetch(::Function, ::Int64, ::String, ::Vararg{String}; kwargs::@Kwargs{seed::UInt128}) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\remotecall.jl:492 [10] (::var"#37#47"{Vector{Task}, var"#print_testworker_errored#43"{ReentrantLock, Int64, Int64}, var"#print_testworker_stats#41"{ReentrantLock, Int64, Int64, Int64, Int64, Int64, Int64}, Vector{Any}, Dict{String, DateTime}})() @ Main D:\jl\julia\test\runtests.jl:261 Error in testset Mmap: Error During Test at none:1 Got exception outside of a @test ProcessExitedException(36) Stacktrace: [1] try_yieldto(undo::typeof(Base.ensure_rescheduled)) @ Base .\task.jl:944 [2] wait() @ Base .\task.jl:1008 [3] wait(c::Base.GenericCondition{ReentrantLock}; first::Bool) @ Base .\condition.jl:130 [4] wait @ Base .\condition.jl:125 [inlined] [5] take_buffered(c::Channel{Any}) @ Base .\channels.jl:477 [6] take!(c::Channel{Any}) @ Base .\channels.jl:471 [7] take!(::Distributed.RemoteValue) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\remotecall.jl:726 [8] remotecall_fetch(::Function, ::Distributed.Worker, ::String, ::Vararg{String}; kwargs::@Kwargs{seed::UInt128}) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\remotecall.jl:461 [9] remotecall_fetch(::Function, ::Int64, ::String, ::Vararg{String}; kwargs::@Kwargs{seed::UInt128}) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\remotecall.jl:492 [10] (::var"#37#47"{Vector{Task}, var"#print_testworker_errored#43"{ReentrantLock, Int64, Int64}, var"#print_testworker_stats#41"{ReentrantLock, Int64, Int64, Int64, Int64, Int64, Int64}, Vector{Any}, Dict{String, DateTime}})() @ Main D:\jl\julia\test\runtests.jl:261 Error in testset InteractiveUtils: Error During Test at D:\jl\julia\usr\share\julia\stdlib\v1.11\InteractiveUtils\test\runtests.jl:586 Test threw exception Expression: clipboard() == "" SystemError: GetClipboardData: 找不到元素。 Stacktrace: [1] windowserror(p::Symbol, code::UInt32; extrainfo::Nothing) @ Base .\error.jl:191 [2] (::InteractiveUtils.var"#cleanup#58")(cause::Symbol) @ InteractiveUtils D:\jl\julia\usr\share\julia\stdlib\v1.11\InteractiveUtils\src\clipboard.jl:118 [inlined] [3] clipboard() @ InteractiveUtils D:\jl\julia\usr\share\julia\stdlib\v1.11\InteractiveUtils\src\clipboard.jl:125 [4] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:676 [inlined] [5] top-level scope @ D:\jl\julia\usr\share\julia\stdlib\v1.11\InteractiveUtils\test\runtests.jl:586 Error in testset REPL: Error During Test at D:\jl\julia\test\testdefs.jl:24 Got exception outside of a @test LoadError: IOError: On Windows, creating symlinks requires Administrator privileges. symlink("D:\\env\\msys64\\tmp\\jl_ZokcGD\\selfsymlink", "D:\\env\\msys64\\tmp\\jl_ZokcGD\\selfsymlink"): operation not permitted (EPERM) Stacktrace: [1] uv_error @ Base .\libuv.jl:100 [inlined] [2] symlink(target::String, link::String; dir_target::Bool) @ Base.Filesystem .\file.jl:1147 [3] symlink @ .\file.jl:1109 [inlined] [4] (::Main.Test70Main_REPL.REPLCompletionsTest.var"#105#106")(path::String) @ Main.Test70Main_REPL.REPLCompletionsTest D:\jl\julia\usr\share\julia\stdlib\v1.11\REPL\test\replcompletions.jl:1197 [5] mktempdir(fn::Main.Test70Main_REPL.REPLCompletionsTest.var"#105#106", parent::String; prefix::String) @ Base.Filesystem .\file.jl:800 [6] mktempdir(fn::Function, parent::String) @ Base.Filesystem .\file.jl:796 [7] top-level scope @ D:\jl\julia\usr\share\julia\stdlib\v1.11\REPL\test\replcompletions.jl:1195 [8] include(mod::Module, _path::String) @ Base .\Base.jl:526 [9] include(x::String) @ Main.Test70Main_REPL.REPLCompletionsTest D:\jl\julia\usr\share\julia\stdlib\v1.11\REPL\test\runtests.jl:9 [10] top-level scope @ D:\jl\julia\usr\share\julia\stdlib\v1.11\REPL\test\runtests.jl:10 [11] include @ .\Base.jl:526 [inlined] [12] macro expansion @ D:\jl\julia\test\testdefs.jl:33 [inlined] [13] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [14] macro expansion @ D:\jl\julia\test\testdefs.jl:26 [inlined] [15] macro expansion @ .\timing.jl:513 [inlined] [16] runtests(name::String, path::String, isolate::Bool; seed::UInt128) @ Main D:\jl\julia\test\testdefs.jl:24 [17] runtests @ Main D:\jl\julia\test\testdefs.jl:5 [inlined] [18] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::@Kwargs{seed::UInt128}) @ Base .\essentials.jl:957 [19] (::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 [20] run_work_thunk(thunk::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}}, print_error::Bool) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:70 [21] (::Distributed.var"#109#111"{Distributed.CallMsg{:call_fetch}, Distributed.MsgHeader, Sockets.TCPSocket})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 in expression starting at D:\jl\julia\usr\share\julia\stdlib\v1.11\REPL\test\replcompletions.jl:1192 in expression starting at D:\jl\julia\usr\share\julia\stdlib\v1.11\REPL\test\runtests.jl:9 Error in testset Zlib_jll: Error During Test at D:\jl\julia\test\testdefs.jl:24 Got exception outside of a @test LoadError: InitError: could not load library "libz.dll" The specified module could not be found. Stacktrace: [1] dlopen(s::String, flags::UInt32; throw_error::Bool) @ Base.Libc.Libdl .\libdl.jl:120 [2] dlopen @ Base.Libc.Libdl .\libdl.jl:119 [inlined] [3] dlopen(s::String) @ Base.Libc.Libdl .\libdl.jl:119 [4] __init__() @ Zlib_jll D:\jl\julia\usr\share\julia\stdlib\v1.11\Zlib_jll\src\Zlib_jll.jl:29 [5] run_module_init(mod::Module, i::Int64) @ Base .\loading.jl:1193 [6] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String) @ Base .\loading.jl:1181 [7] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any}, ignore_native::Nothing) @ Base .\loading.jl:1126 [8] _include_from_serialized @ Base .\loading.jl:1092 [inlined] [9] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128; reasons::Dict{String, Int64}) @ Base .\loading.jl:1681 [10] _require(pkg::Base.PkgId, env::String) @ Base .\loading.jl:2133 [11] __require_prelocked(uuidkey::Base.PkgId, env::String) @ Base .\loading.jl:1971 [12] #invoke_in_world#3 @ Base .\essentials.jl:989 [inlined] [13] invoke_in_world @ Base .\essentials.jl:986 [inlined] [14] _require_prelocked(uuidkey::Base.PkgId, env::String) @ Base .\loading.jl:1962 [15] macro expansion @ Base .\loading.jl:1900 [inlined] [16] macro expansion @ Base .\lock.jl:267 [inlined] [17] __require(into::Module, mod::Symbol) @ Base .\loading.jl:1861 [18] #invoke_in_world#3 @ Base .\essentials.jl:989 [inlined] [19] invoke_in_world @ Base .\essentials.jl:986 [inlined] [20] require(into::Module, mod::Symbol) @ Base .\loading.jl:1854 [21] include @ .\Base.jl:526 [inlined] [22] macro expansion @ D:\jl\julia\test\testdefs.jl:33 [inlined] [23] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [24] macro expansion @ D:\jl\julia\test\testdefs.jl:26 [inlined] [25] macro expansion @ .\timing.jl:513 [inlined] [26] runtests(name::String, path::String, isolate::Bool; seed::UInt128) @ Main D:\jl\julia\test\testdefs.jl:24 [27] runtests @ Main D:\jl\julia\test\testdefs.jl:5 [inlined] [28] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::@Kwargs{seed::UInt128}) @ Base .\essentials.jl:957 [29] (::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 [30] run_work_thunk(thunk::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}}, print_error::Bool) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:70 [31] (::Distributed.var"#109#111"{Distributed.CallMsg{:call_fetch}, Distributed.MsgHeader, Sockets.TCPSocket})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 during initialization of module Zlib_jll in expression starting at D:\jl\julia\usr\share\julia\stdlib\v1.11\Zlib_jll\test\runtests.jl:3 Error in testset Tar: Error During Test at D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:81 Got exception outside of a @test IOError: On Windows, creating symlinks requires Administrator privileges. symlink("..", "D:\\env\\msys64\\tmp\\jl_aPnJnl\\llllllllll"): operation not permitted (EPERM) Stacktrace: [1] uv_error @ Base .\libuv.jl:100 [inlined] [2] symlink(target::String, link::String; dir_target::Bool) @ Base.Filesystem .\file.jl:1147 [3] symlink @ .\file.jl:1109 [inlined] [4] make_test_tarball(tar_create::typeof(Tar.create)) @ Main.Test45Main_Tar D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\setup.jl:67 [5] make_test_tarball() @ Main.Test45Main_Tar D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\setup.jl:33 [6] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:82 [inlined] [7] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [8] top-level scope @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:82 [9] include @ .\Base.jl:526 [inlined] [10] macro expansion @ D:\jl\julia\test\testdefs.jl:33 [inlined] [11] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [12] macro expansion @ D:\jl\julia\test\testdefs.jl:26 [inlined] [13] macro expansion @ .\timing.jl:513 [inlined] [14] runtests(name::String, path::String, isolate::Bool; seed::UInt128) @ Main D:\jl\julia\test\testdefs.jl:24 [15] runtests @ Main D:\jl\julia\test\testdefs.jl:5 [inlined] [16] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::@Kwargs{seed::UInt128}) @ Base .\essentials.jl:957 [17] (::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 [18] run_work_thunk(thunk::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}}, print_error::Bool) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:70 [19] (::Distributed.var"#109#111"{Distributed.CallMsg{:call_fetch}, Distributed.MsgHeader, Sockets.TCPSocket})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 Error in testset Tar: Error During Test at D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:622 Got exception outside of a @test IOError: On Windows, creating symlinks requires Administrator privileges. symlink("67.1", "D:\\env\\msys64\\tmp\\jl_rL3zuO\\root\\lib\\icu\\current"): operation not permitted (EPERM) Stacktrace: [1] uv_error @ Base .\libuv.jl:100 [inlined] [2] symlink(target::String, link::String; dir_target::Bool) @ Base.Filesystem .\file.jl:1147 [3] symlink @ .\file.jl:1109 [inlined] [4] (::Main.Test45Main_Tar.var"#107#115")(dir::String) @ Main.Test45Main_Tar D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:634 [5] mktempdir(fn::Main.Test45Main_Tar.var"#107#115", parent::String; prefix::String) @ Base.Filesystem .\file.jl:800 [6] mktempdir(fn::Function, parent::String) @ Base.Filesystem .\file.jl:796 [7] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:623 [inlined] [8] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [9] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:623 [inlined] [10] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [11] top-level scope @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:573 [12] include @ .\Base.jl:526 [inlined] [13] macro expansion @ D:\jl\julia\test\testdefs.jl:33 [inlined] [14] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [15] macro expansion @ D:\jl\julia\test\testdefs.jl:26 [inlined] [16] macro expansion @ .\timing.jl:513 [inlined] [17] runtests(name::String, path::String, isolate::Bool; seed::UInt128) @ Main D:\jl\julia\test\testdefs.jl:24 [18] runtests @ Main D:\jl\julia\test\testdefs.jl:5 [inlined] [19] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::@Kwargs{seed::UInt128}) @ Base .\essentials.jl:957 [20] (::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 [21] run_work_thunk(thunk::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}}, print_error::Bool) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:70 [22] (::Distributed.var"#109#111"{Distributed.CallMsg{:call_fetch}, Distributed.MsgHeader, Sockets.TCPSocket})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 Error in testset Tar: Error During Test at D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:828 Got exception outside of a @test IOError: On Windows, creating symlinks requires Administrator privileges. symlink("..", "D:\\env\\msys64\\tmp\\jl_p3yisz\\llllllllll"): operation not permitted (EPERM) Stacktrace: [1] uv_error @ Base .\libuv.jl:100 [inlined] [2] symlink(target::String, link::String; dir_target::Bool) @ Base.Filesystem .\file.jl:1147 [3] symlink @ .\file.jl:1109 [inlined] [4] make_test_tarball(tar_create::typeof(Tar.create)) @ Main.Test45Main_Tar D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\setup.jl:67 [5] make_test_tarball() @ Main.Test45Main_Tar D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\setup.jl:33 [6] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:829 [inlined] [7] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [8] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:829 [inlined] [9] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [10] top-level scope @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:705 [11] include @ .\Base.jl:526 [inlined] [12] macro expansion @ D:\jl\julia\test\testdefs.jl:33 [inlined] [13] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [14] macro expansion @ D:\jl\julia\test\testdefs.jl:26 [inlined] [15] macro expansion @ .\timing.jl:513 [inlined] [16] runtests(name::String, path::String, isolate::Bool; seed::UInt128) @ Main D:\jl\julia\test\testdefs.jl:24 [17] runtests @ Main D:\jl\julia\test\testdefs.jl:5 [inlined] [18] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::@Kwargs{seed::UInt128}) @ Base .\essentials.jl:957 [19] (::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 [20] run_work_thunk(thunk::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}}, print_error::Bool) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:70 [21] (::Distributed.var"#109#111"{Distributed.CallMsg{:call_fetch}, Distributed.MsgHeader, Sockets.TCPSocket})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 Error in testset Tar: Error During Test at D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:845 Got exception outside of a @test IOError: On Windows, creating symlinks requires Administrator privileges. symlink("..", "D:\\env\\msys64\\tmp\\jl_k0IE0s\\llllllllll"): operation not permitted (EPERM) Stacktrace: [1] uv_error @ Base .\libuv.jl:100 [inlined] [2] symlink(target::String, link::String; dir_target::Bool) @ Base.Filesystem .\file.jl:1147 [3] symlink @ .\file.jl:1109 [inlined] [4] make_test_tarball(tar_create::typeof(Tar.create)) @ Main.Test45Main_Tar D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\setup.jl:67 [5] make_test_tarball() @ Main.Test45Main_Tar D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\setup.jl:33 [6] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:847 [inlined] [7] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [8] top-level scope @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:847 [9] include @ .\Base.jl:526 [inlined] [10] macro expansion @ D:\jl\julia\test\testdefs.jl:33 [inlined] [11] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [12] macro expansion @ D:\jl\julia\test\testdefs.jl:26 [inlined] [13] macro expansion @ .\timing.jl:513 [inlined] [14] runtests(name::String, path::String, isolate::Bool; seed::UInt128) @ Main D:\jl\julia\test\testdefs.jl:24 [15] runtests @ Main D:\jl\julia\test\testdefs.jl:5 [inlined] [16] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::@Kwargs{seed::UInt128}) @ Base .\essentials.jl:957 [17] (::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 [18] run_work_thunk(thunk::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}}, print_error::Bool) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:70 [19] (::Distributed.var"#109#111"{Distributed.CallMsg{:call_fetch}, Distributed.MsgHeader, Sockets.TCPSocket})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 Error in testset Tar: Error During Test at D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:918 Got exception outside of a @test IOError: On Windows, creating symlinks requires Administrator privileges. symlink("..", "D:\\env\\msys64\\tmp\\jl_3MDOWc\\llllllllll"): operation not permitted (EPERM) Stacktrace: [1] uv_error @ Base .\libuv.jl:100 [inlined] [2] symlink(target::String, link::String; dir_target::Bool) @ Base.Filesystem .\file.jl:1147 [3] symlink @ .\file.jl:1109 [inlined] [4] make_test_tarball(tar_create::typeof(Tar.create)) @ Main.Test45Main_Tar D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\setup.jl:67 [5] make_test_tarball() @ Main.Test45Main_Tar D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\setup.jl:33 [6] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:925 [inlined] [7] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [8] top-level scope @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:920 [9] include @ .\Base.jl:526 [inlined] [10] macro expansion @ D:\jl\julia\test\testdefs.jl:33 [inlined] [11] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [12] macro expansion @ D:\jl\julia\test\testdefs.jl:26 [inlined] [13] macro expansion @ .\timing.jl:513 [inlined] [14] runtests(name::String, path::String, isolate::Bool; seed::UInt128) @ Main D:\jl\julia\test\testdefs.jl:24 [15] runtests @ Main D:\jl\julia\test\testdefs.jl:5 [inlined] [16] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::@Kwargs{seed::UInt128}) @ Base .\essentials.jl:957 [17] (::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 [18] run_work_thunk(thunk::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}}, print_error::Bool) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:70 [19] (::Distributed.var"#109#111"{Distributed.CallMsg{:call_fetch}, Distributed.MsgHeader, Sockets.TCPSocket})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 Error in testset Tar: Error During Test at D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:991 Got exception outside of a @test IOError: On Windows, creating symlinks requires Administrator privileges. symlink("..", "D:\\env\\msys64\\tmp\\jl_R5MpOB\\llllllllll"): operation not permitted (EPERM) Stacktrace: [1] uv_error @ Base .\libuv.jl:100 [inlined] [2] symlink(target::String, link::String; dir_target::Bool) @ Base.Filesystem .\file.jl:1147 [3] symlink @ .\file.jl:1109 [inlined] [4] make_test_tarball(tar_create::typeof(Tar.create)) @ Main.Test45Main_Tar D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\setup.jl:67 [5] make_test_tarball() @ Main.Test45Main_Tar D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\setup.jl:33 [6] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:992 [inlined] [7] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [8] top-level scope @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Tar\test\runtests.jl:992 [9] include @ .\Base.jl:526 [inlined] [10] macro expansion @ D:\jl\julia\test\testdefs.jl:33 [inlined] [11] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [12] macro expansion @ D:\jl\julia\test\testdefs.jl:26 [inlined] [13] macro expansion @ .\timing.jl:513 [inlined] [14] runtests(name::String, path::String, isolate::Bool; seed::UInt128) @ Main D:\jl\julia\test\testdefs.jl:24 [15] runtests @ Main D:\jl\julia\test\testdefs.jl:5 [inlined] [16] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::@Kwargs{seed::UInt128}) @ Base .\essentials.jl:957 [17] (::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 [18] run_work_thunk(thunk::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}}, print_error::Bool) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:70 [19] (::Distributed.var"#109#111"{Distributed.CallMsg{:call_fetch}, Distributed.MsgHeader, Sockets.TCPSocket})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 Error in testset FileWatching: Test Failed at D:\jl\julia\usr\share\julia\stdlib\v1.11\FileWatching\test\runtests.jl:400 Expression: pop!(changes) == (F_PATH => FileWatching.FileEvent(FileWatching.UV_CHANGE)) Evaluated: "afile.txt" => FileWatching.FileEvent(true, false, false) == "afile.txt" => FileWatching.FileEvent(false, true, false) Error in testset FileWatching: Test Failed at D:\jl\julia\usr\share\julia\stdlib\v1.11\FileWatching\test\runtests.jl:403 Expression: p == (F_PATH => FileWatching.FileEvent(FileWatching.UV_RENAME)) Evaluated: "afile.txt~" => FileWatching.FileEvent(true, false, false) == "afile.txt" => FileWatching.FileEvent(true, false, false) Error in testset FileWatching: Error During Test at D:\jl\julia\test\testdefs.jl:24 Got exception outside of a @test The `FileWatching` test set mutated ENV and did not restore the original values Stacktrace: [1] error(s::String) @ Base .\error.jl:35 [2] macro expansion @ D:\jl\julia\test\testdefs.jl:67 [inlined] [3] macro expansion @ D:\jl\julia\usr\share\julia\stdlib\v1.11\Test\src\Test.jl:1598 [inlined] [4] macro expansion @ D:\jl\julia\test\testdefs.jl:26 [inlined] [5] macro expansion @ .\timing.jl:513 [inlined] [6] runtests(name::String, path::String, isolate::Bool; seed::UInt128) @ Main D:\jl\julia\test\testdefs.jl:24 [7] runtests @ Main D:\jl\julia\test\testdefs.jl:5 [inlined] [8] invokelatest(::Any, ::Any, ::Vararg{Any}; kwargs::@Kwargs{seed::UInt128}) @ Base .\essentials.jl:957 [9] (::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 [10] run_work_thunk(thunk::Distributed.var"#110#112"{Distributed.CallMsg{:call_fetch}}, print_error::Bool) @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:70 [11] (::Distributed.var"#109#111"{Distributed.CallMsg{:call_fetch}, Distributed.MsgHeader, Sockets.TCPSocket})() @ Distributed D:\jl\julia\usr\share\julia\stdlib\v1.11\Distributed\src\process_messages.jl:286 ERROR: LoadError: Test run finished with errors in expression starting at D:\jl\julia\test\runtests.jl:97 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_V8lkeR" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_V8lkeR\\\\jl_QsphFS\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_V8lkeR\\jl_QsphFS" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_V8lkeR\\\\jl_QsphFS\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_PGKtiz" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_PGKtiz\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_nHarbk" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_nHarbk\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_U67CF2" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_U67CF2\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_oIib1K" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_oIib1K\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_t3qP17" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_t3qP17\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_QEMdc6" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_QEMdc6\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_82RNdE" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_82RNdE\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_VwpnJc" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_VwpnJc\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_TfMscB" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_TfMscB\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_Xc6dPm" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_Xc6dPm\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_DZzPm9" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_DZzPm9\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_0d6Rcb" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_0d6Rcb\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_CZCSHt" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_CZCSHt\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_PqFR6I" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_PqFR6I\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_slGf5g" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_slGf5g\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_Bh16ux" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_Bh16ux\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_0KkgK9" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_0KkgK9\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_75jZyF" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_75jZyF\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_nEFzjx" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_nEFzjx\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_dW02aF" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_dW02aF\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_ddBY1R" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_ddBY1R\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_yzCwUV" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_yzCwUV\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_ZmFHc2" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_ZmFHc2\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_0atiqN" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_0atiqN\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_05PhTZ" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_05PhTZ\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ┌ Warning: Failed to clean up temporary path "D:\\env\\msys64\\tmp\\jl_kjNudn" │ Base.IOError("rm(\"D:\\\\env\\\\msys64\\\\tmp\\\\jl_kjNudn\\\\compiled\\\\v1.11\"): directory not empty (ENOTEMPTY)", -4051) └ @ Base.Filesystem file.jl:552 ``` ``` LoadError: InitError: could not load library "libz.dll" ``` TODO: fix libz install
PallHaraldsson commented 2 months ago

Please add "MSYS2" label.

This UCRT seem like good to support (not just the float parsing bug, that has a better/easier workaround), it's the future, for Windows10+, i.e. all supported Julia platforms, available for Vista+ (also latest version still available there?), though I see "Runtime library support for Windows XP is no longer available in the latest Visual C++ Redistributable for Visual Studio 2015, 2017, 2019 and 2022. The last redistributable to support Windows XP is version 16.7 (file version 14.27.29114.0)." that I think concerns no one...