On Sun, Jul 4, 2021 at 1:29 PM <ojeda@xxxxxxxxxx> wrote: > > From: Miguel Ojeda <ojeda@xxxxxxxxxx> > > Most of the documentation for Rust is written within the source code > itself, as it is idiomatic for Rust projects. This applies to both > the shared infrastructure at `rust/` as well as any other Rust module > (e.g. drivers) written across the kernel. > > These documents contain general information that does not fit > particularly well in the source code, like the Quick Start guide. > ... snip ... > +rust-analyzer > +************* > + > +The `rust-analyzer <https://rust-analyzer.github.io/>`_ language server can > +be used with many editors to enable syntax highlighting, completion, go to > +definition, and other features. > + > +``rust-analyzer`` will need to be > +`configured <https://rust-analyzer.github.io/manual.html#non-cargo-based-projects>`_ > +to work with the kernel by adding a ``rust-project.json`` file in the root folder. > +A ``rust-project.json`` can be generated by building the Make target ``rust-analyzer``, > +which will create a ``rust-project.json`` in the root of the output directory. Is rust-analyzer necessary to talk about? I think most kernel developers aren't using LSP clients, so it doesn't seem necessary to talk about for kernel development IMO. If a developer would like to use an LSP client, they should refer to the documentation of their LSP client. Should Documentation/process/changes.rst be updated to note which versions of all of these tools are currently supported? > + - ``armv6`` and compatible only, ``RUST_OPT_LEVEL >= 2`` For the compat table, for 32b ARM, why is v6 supported but not v7? Why only when optimizations are enabled? > +Currently, the Rust compiler (``rustc``) uses LLVM for code generation, > +which limits the supported architectures we can target. In addition, support > +for building the kernel with LLVM/Clang varies (see :ref:`kbuild_llvm`), > +which ``bindgen`` relies on through ``libclang``. Doesn't this also depend on rustc having support for a given target triple? Just because LLVM has a backend for a given architecture doesn't mean rustc can target it, right? -- Thanks, ~Nick Desaulniers