The Scoop Emacs package was finally updated from 27.2 to 28.1, so I upgraded for native compilation and faster JSON parsing (the latter being very important for lsp-mode). I encountered a few small problems:

  1. C-x 4 b (consult-buffer-other-window) would show the current buffer in both windows. This was fixed.
  2. tree-sitter was trying to download an outdated grammar bundle (v0.10.x instead of v0.11.x) and kept failing because it was using the wrong tar executable (instead of the Git tar.exe I specified). I don’t really know how I fixed it. I just kept tinkering, uninstalling and reinstalling packages, restarting Emacs, deleting the cache, and so on. Maybe manually fetching and installing the bundle was what solved it.
  3. Magit Forge wanted to compile emacsql-sqlite but couldn’t. Neither could I get MSYS2 to build a statically linked binary. I thought it was a lost cause, but then when I restarted Emacs it successfully compiled the library on its own, maybe because now the MinGW64 dev packages were installed. I eventually used Zig to compile the library.

This build is missing --with-json in the build flags (available in the system-configuration-options variable), so I thought I’d wound up with a copy lacking native JSON support after all that, but the flag is apparently on by default, and I can see the relevant functions (json-serialize and json-parse-string) are defined.