Need to update Windows compilers for Julia 1.11
The current one we use spits out a bunch of
2024-01-15T16:40:05.8024498Z Warning: .drectve `-exclude-symbols:jfptr_only_42205 ' unrecognized
2024-01-15T16:40:05.8052985Z Warning: .drectve `-exclude-symbols:julia_eval_41586 ' unrecognized
2024-01-15T16:40:05.8083804Z Warning: .drectve `-exclude-symbols:jfptr_eval_41587 ' unrecognized
2024-01-15T16:40:05.8114625Z Warning: .drectve `-exclude-symbols:jfptr_domath_65456 ' unrecognized
2024-01-15T16:40:05.8144650Z Warning: .drectve `-exclude-symbols:julia_peek_45894 ' unrecognized
on master CI when creating the sysimage. @gbaraldi suggested to try use https://github.com/mstorsjo/llvm-mingw/.
Just out of curiosity, are these warnings fatal and/or do they result in an un-usable sysimage?
(I think we should still do this task either way; I'm just trying to figure out how high of a priority it is.)
Am getting similar errors while trying to do an FMU Export from Julia
Warning: .drectve -exclude-symbols:julia_copy_26305 ' unrecognized │ Warning: .drectve -exclude-symbols:jfptr_copy_26306 ' unrecognized
│ Warning: .drectve -exclude-symbols:jfptr_ntuple_25526 ' unrecognized │ Warning: .drectve -exclude-symbols:jfptr__memory_offset_28906 ' unrecognized
│ Warning: .drectve -exclude-symbols:jfptr_throw_boundserror_23456 ' unrecognized │ Warning: .drectve -exclude-symbols:julia_throw_boundserror_23449 ' unrecognized
│ Warning: .drectve -exclude-symbols:jfptr_throw_boundserror_23441 ' unrecognized │ . . │ Warning: .drectve -exclude-symbols:jfptr_throw_boundserror_23279 ' unrecognized
│ Warning: .drectve -exclude-symbols:"jfptr_setindexNOT._24863" ' unrecognized │ Warning: .drectve -exclude-symbols:julia_has_safe_def_35574 ' unrecognized
update Windows compilers for Julia 1.11
If I understand correctly, “Windows compilers for Julia” refers to the compilers currently used to build julia.
Right now it's mingw-w64-x86_64-gcc in MSYS2.
https://github.com/JuliaCI/rootfs-images/blob/main/windows/package-x86_64/Dockerfile#L8-L9
Maybe we could try updating the version of MSYS2 first, which will also update the version of gcc, and see if that fixes the problem.
Then try migrating to llvm-mingw.
The rust community is also encountering this problem: https://github.com/rust-lang/rust/issues/112368 This is mainly a compatibility issue between LLVM and GUN LD, which has been fixed in GUN ld >= 2.40. So maybe upgrading the MSYS2 is enough.
PackageCompiler does not use the same compiler as the Julia repo does to build julia. PackageCompiler uses https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z (see https://github.com/JuliaLang/PackageCompiler.jl/blob/master/Artifacts.toml).
I don't see the error at https://github.com/Zentrik/llvm_julia_tester/actions/runs/12041711630/job/33580110343 which should be using the latest compiler from msys2 for 64bit. 32 bit will probably be more difficult as we don't use the default signal handing so harder to find up to date compilers.
Another choice is using: https://github.com/niXman/mingw-builds-binaries/releases
We could use gcc 14.1.0 or 14.2.0.
gcc.exe 12.2.0 x86_64-posix-seh-rev0
GNU ld 2.38
gcc.exe 13.1.0 x86_64-posix-seh-rev1
GNU ld 2.39
gcc.exe 13.2.0 x86_64-posix-seh-rev1
GNU ld 2.39
gcc.exe 14.1.0 x86_64-posix-seh-rev0
GNU ld 2.42
gcc.exe 14.2.0 x86_64-posix-seh-rev0
GNU ld 2.42
From a local test that seems to work well. Thanks for finding it. I'll try update the artifact file and see what happens.