From: Adrian Bunk <bunk@kernel.org>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Josh Triplett <josh@joshtriplett.org>,
Nick Desaulniers <ndesaulniers@google.com>,
alex.gaynor@gmail.com, geofft@ldpreload.com,
jbaublitz@redhat.com, Masahiro Yamada <masahiroy@kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Greg KH <gregkh@linuxfoundation.org>,
Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>,
LKML <linux-kernel@vger.kernel.org>,
clang-built-linux <clang-built-linux@googlegroups.com>
Subject: Re: Linux kernel in-tree Rust support
Date: Sun, 19 Jul 2020 21:19:19 +0300 [thread overview]
Message-ID: <20200719181919.GA4179@localhost> (raw)
In-Reply-To: <CAK8P3a20UQvQO0U=p1kBEUvRdwm8VFBa31aCe7C70hwTzcu_yw@mail.gmail.com>
On Thu, Jul 16, 2020 at 03:06:01PM +0200, Arnd Bergmann wrote:
>
> I would expect we'd want a fairly tight coupling between kernel
> releases and minimum rust releases at first. Whatever is the latest
> stable rust version during the kernel's merge window might be
> assumed to be the minimum version for the life of that kernel, but
> an LTS release would not suddenly start relying on features
> from a newer compiler (thought it might warn about known bugs).
>
> This might mean that linux-next requires a beta version of rust, if
> the release is expected before the merge window and it contains
> an important change.
I would expect this is absolutely not wanted,
it would make testing recent kernels very hard.
If you want to keep a tool that tightly to the kernel,
please bundle it with the kernel and build it as part
of the kernel build.
I would suggest to start with a proper design/specification what the
kernel wants to use, so that you are confident that a compiler
implementing this will be sufficient for the next 5 years.
As a secondary benefit, starting with a proper design often brings
a better result than adding permanent features piece by piece.
As a tertiary benefit, it would avoid tying the kernel to one specific
compiler implementation. A compiler like mrustc or a hypothetical Rust
frontend for gcc could then implement a superset of what the kernel
needs.
> Staying with fairly recent versions of clang
> certainly helped in getting clang and the kernel to co-evolve and
> get to the point we are now in using it as an alternative to gcc.
The main difference is between an alternative to an existing tool,
and a mandatory new tool.
> While Linux used to build with 12 year old compilers (4.1 until
> 2018), we now require a 6 year old gcc (4.9) or 1 year old
> clang/llvm. I don't know whether these will fully converge over
> time but it seems sensible that the minimum rust frontend version
> we require for a new kernel release would eventually also fall
> in that range, requiring a compiler that is no more than a few
> years old, but not requiring the latest stable release.
The correct range for a mandatory tool are the 6 to 12 years for gcc.
Debian stable and Ubuntu LTS are providing (different) mechanisms
for installing the kernel from the next stable/LTS release 2 years
later[1] for supporting new hardware.
If kernel 5.12 LTS cannot be compiled on Ubuntu 20.04 LTS with
the 2019 gcc 9 there would be pain downstream.
In the embedded world spreads far wider than these 3 years are common.
I would currently have a real-life usecase for compiling a recent
kernel with a gcc 4.0 (sic) toolchain.
Properly supporting 15 year old toolchains would be painful upstream,
supporting 6 year old toolchains is a reasonable compromise between
not being too painful upstream while rarely causing pain downstream.
What applies to gcc does also apply to other external tools used
during the kernel build.
> Arnd
cu
Adrian
[1] following a new upstream kernel stable branch every 6 months (Ubuntu)
or the latest upstream stable kernels (Debian) until this is reached
next prev parent reply other threads:[~2020-07-19 18:25 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-09 18:41 Linux kernel in-tree Rust support Nick Desaulniers
2020-07-09 20:52 ` Miguel Ojeda
2020-07-10 5:36 ` Josh Triplett
2020-07-10 6:28 ` Greg KH
2020-07-10 12:50 ` Christian Brauner
2020-07-10 16:10 ` Kees Cook
[not found] ` <CAFRnB2WNo45J8h3-ncopLKENvcO0rf7J3xsy_eRKwFSpDD-5sQ@mail.gmail.com>
2020-07-10 23:05 ` Kees Cook
2020-07-10 22:59 ` Josh Triplett
2020-07-10 23:54 ` Linus Torvalds
2020-07-11 21:03 ` Josh Triplett
2020-07-28 20:40 ` Pavel Machek
2020-07-29 6:34 ` Josh Triplett
2020-12-17 21:45 ` Pavel Machek
2020-12-18 3:31 ` Miguel Ojeda
2020-07-11 17:13 ` Geoffrey Thomas
2020-07-12 12:31 ` Adrian Bunk
2020-07-12 19:39 ` Josh Triplett
2020-07-12 20:33 ` Linus Torvalds
2020-07-12 20:45 ` Adrian Bunk
2020-07-14 8:27 ` David Laight
2020-07-16 13:06 ` Arnd Bergmann
2020-07-16 23:12 ` Josh Triplett
2020-07-19 18:19 ` Adrian Bunk [this message]
2020-07-20 14:46 ` David Laight
2020-08-23 21:02 ` Adrian Bunk
2020-08-23 21:54 ` Geoffrey Thomas
2020-07-13 18:11 ` Eric W. Biederman
2020-07-13 21:33 ` Josh Triplett
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200719181919.GA4179@localhost \
--to=bunk@kernel.org \
--cc=alex.gaynor@gmail.com \
--cc=arnd@arndb.de \
--cc=clang-built-linux@googlegroups.com \
--cc=geofft@ldpreload.com \
--cc=gregkh@linuxfoundation.org \
--cc=jbaublitz@redhat.com \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=miguel.ojeda.sandonis@gmail.com \
--cc=ndesaulniers@google.com \
--cc=rostedt@goodmis.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.