News for hackers. Stuff that matters.
Re:Supporting Linux kernel development in Rust by dijit on Monday August 31, 2020 @04:37PM (#24335676)
I'm generally in support of rust in the kernel, but in the interest of playing devils advocate: Would adding more and more dependence on rust mean that it ties the kernel to a single set of compilers?

I can see why people would be opposed to that.

I'm thinking about LLVM (and, obviously, rustc)

Re:Supporting Linux kernel development in Rust by danudey on Monday August 31, 2020 @04:47PM (#24335782)
The Linux kernel would only compile with GCC for... decades? I think? So it's not really a new thing. It would be really nice if the kernel did have first-class support for LLVM and Clang directly (rather than having to set a bunch of environment variables to set the compiler, the linker to use with that compiler, various variables, etc.

That said, it would certainly be uncomfortable to move from "it compiles with Clang, though it's a pain, or GCC, which works fine" to "it compiles with GCC, if you don't use any of this functionality, or LLVM only, if you want any of these features or anything that depends on them".

Re:Supporting Linux kernel development in Rust by JoshTriplett on Monday August 31, 2020 @04:54PM (#24335831)
Originally, we thought that Linux maintainers were asking us to only support kernels compiled with Clang, because they didn't want to support code built with two different compilers. However, in the session, Greg Kroah-Hartman specifically said that if it works to build Rust code with the LLVM-based rustc and C code with GCC and link the two together, and there aren't any problems in practice, then that's perfectly fine.

So, we're currently expecting that supporting Rust will not place any requirements on the C compiler you use, unless you want to use cross-language LTO (which we'll eventually want to do, but it won't be a hard requirement for a working kernel).

Re:Supporting Linux kernel development in Rust by robocat on Monday August 31, 2020 @07:45PM (#24337057)
Article discussing LTO (Link Time Optimizations, used by Google Pixel) and PGO (Profile Guided Optimizations): https://www.phoronix.com/scan.php?page=news_item&px=Microsof...
Re:Supporting Linux kernel development in Rust by jcranmer on Monday August 31, 2020 @05:01PM (#24335905)
> unless you want to use cross-language LTO (which we'll eventually want to do, but it won't be a hard requirement for a working kernel).

Does Linux even work with LTO right now? It seems to do a lot of weird-linking-magic things that I wouldn't expect to work well with LTO.

Re:Supporting Linux kernel development in Rust by geofft on Monday August 31, 2020 @09:22PM (#24337595)
There was a talk right after ours about LTO! I only half paid attention to it because I was catching up on the chat, but it sounds like Google is doing kernel LTO in prod for their internal systems (and maybe also for Android and CrOS?):

https://linuxplumbersconf.org/event/7/contributions/798/ (slide link at the bottom)

https://youtu.be/FFjV9f_Ub9o?t=3844

Re:Supporting Linux kernel development in Rust by JoshTriplett on Monday August 31, 2020 @05:05PM (#24335959)
At the moment, I believe the Linux kernel can do LTO with some additional patches, but there are still regular issues. It isn't nearly as well supported as Clang or LLD yet.
Re:Supporting Linux kernel development in Rust by danudey on Wednesday September 02, 2020 @02:51PM (#24356460)
ICYMI, Microsoft is putting a lot of eggs into the LTO/PGO basket to try to improve Linux performance: https://www.phoronix.com/scan.php?page=news_item&px=Microsof...
Re:Supporting Linux kernel development in Rust by JoshTriplett on Monday August 31, 2020 @04:47PM (#24335777)
Linux currently only compiles on GCC and Clang, and the latter is a recent development. rustc uses LLVM as a backend, just like Clang, and people are working on other backends. Linux maintainers didn't express any concerns about this being an issue.
Re:Supporting Linux kernel development in Rust by Silhouette on Monday August 31, 2020 @04:45PM (#24335753)
Would adding more and more dependence on rust mean that it ties the kernel to a single set of compilers?

Like GCC?

Your point is certainly valid, but I'm not sure it's a new problem.

Re:Supporting Linux kernel development in Rust by AquaLineSpirit on Monday August 31, 2020 @05:18PM (#24336066)
There is the mrustc compiler https://github.com/thepowersgang/mrustc

It's not fully complete. But there is no reason why it couldn't be.

Re:Supporting Linux kernel development in Rust by AquaLineSpirit on Monday August 31, 2020 @05:38PM (#24336199)
Also it would be kind of funny. Where the rust parts can only be compiled by the llvm based rust compiler, but clang(llvm) can't build the C parts. And gcc can only build the C parts but not the rust parts :)