Eighth version of Linux core paths with support for Rust

Miguel Okhed ( miguel ojeda ), the author of the project rust-for To develop drivers of devices in Rust. This is the roar edition of patches, taking into account the first option published without the number of the version. RUST support is considered experimental, but is already included in the Linux-Next branch, claims to integrate into the autumn production 5.20/6.0 and is quite developed to start work to create layers of abstraction over the nucleus subsystems, as well as for writing drivers and modules. The development is financed by Google and the ISRG (Internet Security Research Group), which is the founder of the Let’s Encrypt project and helps to promote HTTPS and develop the Internet protection.

In the new version:

  • tools and variant of the ALLOC library, eliminated from possible generations of the state of “Panic” in case of errors, are updated before the release of Rust 1.62. Compared to the previously used version in RUST tools, support for Const_fn_Trait_Bound functionality used in patches to the core.
  • The binding code is allocated to a separate Bindings Crate package, which simplifies re-assuming in case of changes only in the main package “Kernel”.
  • Macro implementation “Concat_idents!” Ricked out in the form of a procedural macros, not tied to the functionality of Concat_idents and allowing the use of links to local variables.
  • Macro rewritten “Static_assert!”, which allowed us to use “Core :: Assert! ()” In any context instead of constant.
  • Macro “Build_error!” adapted for work when exhibiting for modules of the regime
    “Rust_build_assert_ {Warn, Allow}”.
  • A separate file with the “Kernel/Configs/Rust.config”.
  • settings have been added.

  • Files “*.i” processed in macro compenses are renamed “*.rsi”.
  • Continuing support for RUST-components with optimization levels, different from the Code in the SI language.
  • Added a FS module that provides strappings for working with file systems. An example of a simple file system written in the language is proposed.
  • The Workqueue module has been added to work with system bursts (provides strapping over the structures of the Work_struct and WorkQuee_struct nucleus).
  • The development of the Kasync module with the implementation of asynchronous programming methods (async) continued. An example of a tcp server, written on Rust.
  • is added an example of a nucleus.

  • Added the possibility of processing interruptions in Rust using the types of [Threaded] Handler and types of [Threaded] Registration ‘.
  • Added procedural macro “#[vtable]”, which simplifies the work with indicators on the function, such as the structure of FILE_OPERATIONS.
  • Added the implementation of double -destroyed connected lists “UNSAFE_LIST :: LIST”.
  • Added initial support for RCU (Read-Copy-Update) and the Guard type to check the locking of locking on the current flow.
/Media reports.