julia
julia copied to clipboard
Support ucrt C library via MSYS2 UCRT64 on Windows
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.
There is currently a comment referencing ucrt here:
https://github.com/JuliaLang/julia/blob/8bdb04526d9ca78f0efaff871a5859bd66ed6c32/src/jlapi.c#L505-L516
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.
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/
We have not supported msys2 in a couple years, but that is probably a good starting point
Migrating MinGW to UCRT requires 5 steps on Arch linux (should be similar for Cygwin and other Linux):
- install
mingw-w64-gccandmingw-w64-binutilsto bootstrap - edit
mingw-w64-headerby adding the configure option--with-default-msvcrt=ucrt, build and install - edit
mingw-w64-crtby adding the configure option--with-default-msvcrt=ucrt, build and install - build
mingw-w64-winpthreadsand install - build
mingw-w64-gccand 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.
The near term objective is just to get Julia to build with UCRT.
How should we deal with prebuilt third-party dependency? They are built by BinaryBuilder and should switch to UCRT too.
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.
I agree with you. UCRT can be added as a new build configuration on Windows.
We need a new triplet for BinaryBuilder.
Maybe: x86_64-w64-ucrt64 which mean x86_64 on windows with gcc + ucrt
ref: Environments - MSYS2
We need a new triplet for
BinaryBuilder.Maybe:
x86_64-w64-ucrt64which meanx86_64onwindowswithgcc + ucrtref: Environments - MSYS2
Yes, it is incompatible with old binary artifacts depending on msvcrt.dll.
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.
Another thing is that we may have to fix the MinGW/MSYS2 compilation environment first. It looks like setting up a
cygwin+UCRTcompile 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.
Patch that enabled building under MSys2 UCRT64.
From 7031e5e84d5d7e0ba088f88a1a4d10a9527f4a30 Mon Sep 17 00:00:00 2001
From: Tim Stahlhut <[email protected]>
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.
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.
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 && \
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=0might 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.
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/
xref: https://github.com/conda-forge/conda-forge.github.io/issues/1654
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
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
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.
Cross reference https://github.com/JuliaLang/julia/issues/49867#issuecomment-1558908627
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
@vtjnashin https://github.com/JuliaLang/julia/issues/49699#issuecomment-1545785317
POC(Proof Of Concept) for compiling from source code using the UCRT64 environment.
Env
- MSYS2 + UCRT64
MINGW64_NT-10.0-22631 A309-Y9000P 3.4.10.x86_64 2023-11-30 06:09 UTC x86_64 Msys - gcc 13.2.0
- ld 2.41
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.
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
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
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...
Is is possible to increase the priority of this task?
Linking to msvcrt is becoming more and more problematic.
Now it's virtually impossible to interop with C code built with any reasonable modern Visual C and/or Clang (targeting ucrt).
It only works with "pure" mingw64 gcc/clang targeting msvcrt, which falls further and further down, comparing to ucrt, in feature correctness, floating-point support etc.
Is is possible to increase the priority of this task?
There don't seem to be many julia developers using Windows, so it's unlikely that this issue will get much push in the short term.
I'd like to help, but I don't have enough time recently. When we finally move to use UCRT, we may remove openlibm at all.
I've made some attempts to build julia from source using ucrt64, and it already works. The only problem is that ucrt32 doesn't exist, so 32-bit julia is stuck using msvcrt.
Possible UCRT adoption paths:
- Add UCRT-gcc toolchain support for
BinaryBuilder.jl - Rebuild all binary pkg in https://github.com/JuliaPackaging/Yggdrasil
- Add UCRT windows docker: https://github.com/JuliaCI/rootfs-images/blob/main/windows/package-x86_64/Dockerfile
- Update CI related things
- Fix all build issues in this repo when build from source
- Update devdoc
The problem is this is an ecosystem bifurcation event. It would require effort not just by Julia but also JLLs and other packages.
I would hope to do this by the next LTS release though. Also Windows ARM is providing new impetus.
The only problem is that ucrt32 doesn't exist, so 32-bit julia is stuck using msvcrt.
Strictly speaking, ucrt32 absolutely exists, but you are right in the sense that there doesn't exist mingw/ucrt32-targeting toolchain.