Correction: GitHub Actions already uses the latest version of Rtools43, so it should be no problem. I sincerely apologize to those who got confused and the maintainer of r-lib/actions for spreading the wrong information.
Best, Yutani 2023年6月8日(木) 18:06 Hiroaki Yutani <yutani....@gmail.com>: > Hi, > > This is a quick notice for developers of R packages using Rust. > > Rust 1.70 was released on June 1st, 2023 [1]. If you use Rust in your R > package, > you'll probably start to see an error and a warning on the final linking > step of > Windows builds. > > ## Error > > The first thing you'll notice is that linking fails with errors like this > one: > > ...snip...\std\src\sys\windows/handle.rs:290: undefined reference to > `NtWriteFile' > > This is because Rust 1.70 started to use several Windows APIs defined in > NTDLL.DLL [2]. So, this can be easily fixed by adding `-ltdll` to > `PKG_LIBS`. > > PKG_LIBS = ...snip... -lntdll > > > ## Warning > > This one is a bit tricky, After modifying `PKG_LIBS`, your build should > succeed, > but you might or might not see a lot of warnings like this one: > > Warning: corrupt .drectve at end of def file > > This is because Rust 1.70 upgraded LLVM to version 16, and LLVM generates a > binary containing directives that only the very latest version (2.40) of > GNU > linker can understand [3]. What's fortunate is that the latest Rtools43 > uses > binutils 2.40, so this warning won't happen if you target only R >= 4.3. > However, the following cases might be a problem: > > 1. On R < 4.3 > 2. On R >= 4.3 with outdated Rtools43 (currently, it's the case on > GitHub Actions [4]) > > Unfortunately, it seems there's no option to suppress this warning, so > there's > no way to save `R CMD check` from failing if you run it with `--as-cran`. > In > other words, if you are a maintainer of some R package on CRAN, you might > need > to consider giving up your package on oldrel when the CRAN Windows server > upgrades > Rust (I heard the current installed version is 1.69, but I'm not sure). > > For non-CRAN packages, I think you can ignore the warnings. The directive > is to > reduce the number of exported symbols in order to prevent overflow [5], so > it > should be fine if it doesn't overflow in actual. But, I'm not an expert > here, > so please decide at your own risk. > > Hope this helps. > > Best, > Yutani > > [1]: https://blog.rust-lang.org/2023/06/01/Rust-1.70.0.html > [2]: > https://en.wikipedia.org/wiki/Microsoft_Windows_library_files#NTDLL.DLL > [3]: > https://github.com/rust-lang/rust/issues/112368#issuecomment-1581917714 > [4]: https://github.com/r-lib/actions/issues/734 > [5]: > https://github.com/llvm/llvm-project/commit/c5b3de6745c37dd991430b9b88ff97c35b6fc455 > [[alternative HTML version deleted]] ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel