Congratulations on figuring out how to extend the build of the Rtools
installer to add more programs there - it is always good to have a
confirmation such things are clear enough from the available
documentation and sources. You can see that e.g. QPDF is added this way,
but adding a toolchain requires a different approach (more below).
What may not have been clear enough - please keep in mind that there are
two distinct parts of what you get when you install Rtools from the
installer: an (essentially vanilla) installation of Msys2 with the msys2
subsystem, and toolchain + libraries built via (customized) MXE. The
latter does not depend on the former. The latter can be (and is) built
on Linux, without any involvement of Msys2. It doesn't use the Cygwin
runtime in any way. In principle, one could use the latter only without
the former, provided one has an alternative set of build tools (so
perhaps the original Cygwin distribution, maybe WSL2 - even though, this
is not tested, some details surely would have to be figured out). The
latter is what includes the toolchains (and libraries), and can be also
downloaded as a tarball - this is convenient for people who have their
own installation of Msys2 they use. Also it is good for github actions
(with a smaller tarball for that, when it suffices).
Also please note that Rtools doesn't use any of mingw-w64 from Msys2. It
only uses programs using the Cygwin runtime (as build tools). Msys2 has
indeed toolchains based on mingw-w64, but Rtools doesn't use them (from
version 42).
To properly integrate Rust, one would have to make it part of the
toolchain+libraries, so add it to MXE. One would have to build it using
the compiler suite used within MXE. The upstream version of MXE uses
gcc, which doesn't yet have a stable version of Rust. Once it will have
it, it would make sense to extend MXE to also build Rust compilers using
the same gcc used also to build C, C++ and Fortran compilers, and indeed
make sure Rust will use the toolchains and libraries from the same build
of MXE. That way it will be assured that the compiler runtimes and all
libraries are compatible. Without that, they cannot be.
Rtools is also available for LLVM/aarch64, only a downstream version I
am maintaining. In theory, Rust could already be added there, because
LLVM already supports it. In theory, we could even use LLVM on x86_64
then to get Rust. But, not in practice, because the Fortran 90 compiler
(flang-new) in LLVM is not yet stable enough.
Best
Tomas
On 4/3/25 10:36, Sun Wenjie wrote:
Dear R-devel community,
I'm exploring (experimentally) the integration of the Rust toolchain into
Rtools, to enable smoother development and shipping of Rust-based R packages
on Windows.
I've written a detailed blog post documenting the process, technical rationale
and what’s next:
https://medium.com/@sunwjie/integrating-the-rust-toolchain-into-rtools-e4c7df40cb82.
Currently, Rust is not included in Rtools, and setting it up alongside R on
Windows can be confusing for some users, especially those unfamiliar with
computers. However, both Rust (via the -gnu toolchain) and
Rtools share the same MinGW-based toolchain, making integration technically
feasible.
What I’ve done so far
- Built a custom Rtools45 installer with Rust 1.85.0 integrated alongside GCC
and other tools.
- Successfully tested Rust-based R packages like {string2path} using the custom
Rtools.
I'd love to contribute this work upstream and collaborate with Rtools
maintainers to make Rust a supported part of the official Rtools release. Are
there existing plans or blockers around this?
Thank you for your time, and I look forward to your thoughts!
Best regards,
Wenjie
——
https://www.sun-wenjie.site
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel