Re: Can the Kernel Concurrency Sanitizer Own Rust Code?
flat view
From: Paul E. McKenney <paulmck@kernel.org>
Date: 2021-10-11 19:01:06
On Mon, Oct 11, 2021 at 03:24:53AM +0200, Miguel Ojeda wrote:
On Sun, Oct 10, 2021 at 1:59 AM Paul E. McKenney [off-list ref] wrote:quoted
The advantage that GCC and Clang/LLVM have is that you can simply say "CentOS vx.yy" and define the full distro in an organized manner, for a reasonably old and trusted distro version. Perhaps Rust is already there, but some have led me to believe that the safety-critical project would need to take on some of the job of a Linux distribution. Which they most definitely can do, if they so choose and properly document with proper approvals. Which should not be that much of a problem to make happen.Exactly, it is doable, and the language is really just one more tool in the process. For instance, if I had to take on such a project right now, I might be more afraid (in terms of cost) of having to adapt internal testing-related tooling (so that it works with Rust) than about justifying the open-source compiler.
The main issue I was calling out was not justifying Rust, but rather making sure that the exact same build could be reproduced a decade later.
quoted
In the near term, you are constrained by the existing compiler backends, which contain a bunch of optimizations that are and will continue to limit what you can do. Longer term, you could write your own backend, or rework the existing backends, but are all of you really interested in doing that?I am not sure I understand what you mean, nor why you think we would need to rewrite any backend (I think your point here is the same as in the other email -- see the answer there). Regardless of what UB instances a backend defines, Rust is still a layer above. It is the responsibility of the lowering code to not give e.g. LLVM enough freedom in its own UB terms to do unsound optimizations in terms of Rust UB.
There are things that concurrent software would like to do that are made quite inconvenient due to large numbers of existing optimizations in the various compiler backends. Yes, we have workarounds. But I do not see how Rust is going to help with these inconveniences.
quoted
The current ownership model is also an interesting constraint, witness the comments on the sequence locking post. That said, I completely understand how the ownership model is a powerful tool that can do an extremely good job of keeping concurrency novices out of trouble.I think it also does a good job of keeping concurrency experts out of trouble ;)
You mean like how I am not coding while I am producing blog posts and responding to emails? ;-) Other than that, from some of the replies I am seeing to some of the posts in this series, it looks like there are some things that concurrency experts need to do that Rust makes quite hard. But maybe others in the Rust community know easy solutions to the issues raised in this series. If so, perhaps they should speak up. ;-) But to be fair, much again depends on exactly where Rust is to be applied in the kernel. If a given Linux-kernel feature is not used where Rust needs to be applied, then there is no need to solve the corresponding issues. Thanx, Paul