Didn't know if this was appropriate for the internals list, so it is here.
This work was based on a snapshot download of Racket 9.0.0.4.
Racket builds on with MSVC (VS Build Tools 2022) with little problem. This is nice to know; it is too difficult to officially support that build. The MinGW tooling works fine.
The needed dynamic libraries (dlls, in this case) were built with vcpkg and cmake. Changes were made to the source files to use updated file names and to load additional new dependencies.
DrRacket runs. Has not crashed yet with basic use. Testing continues. There are (expected) roadblocks to testing in the Windows environment that I am working through.
Font rendering has a small but noticeable improvement. Fonts like Cascadia Code and Source Code Pro are more clear and crisp.
I think is reasonable to add an issue to update the dynamic libraries in Racket and DrRacket. This does not mean using vcpkg. The current pacman dev packages work well enough for Linux and MinGW builds. As for xcode, vcpkg could help grab and track the needed sources for the build, but it is not a requirement.
I will consider making an issue on GitHub, but I also want to give some time for people to chime in on ideas and so on.
What was updated was every lib in racket/lib save for myssink and longdouble.
All the GTK libraries used in Racket 8.18 were updated from libraries from a full GTK4 build, including new dynamic library dependencies. As part of this, turbo-jpeg was brought in and used for the jpeg libraries via the v8 compatibility build.
OpenSSL was moved from 1.1 ssleay32 and libeay32 to v3 libcrypto and libssl.
The ffi, gmp, mpft, pcre (updated to v2) and sqlite libraries were updated.
The main issue is naming differences. In mingw, many of the GTK4 libraries still have lib in front of the name. For native build, that convention is gone (as being a .dll file makes the lib part clear).
So, the patches I made would have to change to support the mingw version. The best solution is to allow a check if the environment is native or MinGW so I can load the appropriate libraries.
So, code like this that I patched:
(define-runtime-path libgmp-so
(case (system-type)
[(macosx) '(so "libgmp.10.dylib")]
[(windows) '(so "gmp-10.dll")] ; used to be libgmp...
[else '(so "libgmp")]))
You can make a PR and put in the title [WIP] (work in progress), and there is a button in the UI to send it as draft and make it more difficult to merge by mistake.
You will note the kerning and line spacing is a bit different, with the new version being a bit more compact, which I like. The font hinting and sub-pixel aliasing is better and that really is a help to readability. Note I am using Cascadia Code here.