In previous posts we talk about the interest they have shown lLinux kernel developers about Rust and especially its implementation within the Kernel (you can check the publication here).
But Rust is no longer just a Linux thing, since Apple seems to be increasingly interested in using Rust for low-level programming, since if we review the requirements to be able to enter the apple company the requirements are the following.
- - 3-5 years of experience with C.
- - Experience with Rust desirable and a great advantage.
- - Work experience with low level networking.
- - Experience with Unix-like operating systems.
- - Clear communication skills.
And it is that even that C has been imposed on the systems programming workers for several reasons. On the occasion of the 2019 edition of the Open Source Technology Summit, Josh Triplett mentioned some things such as:
“First, as an evolved language, C enables developers to gain usability and productivity; that's fewer lines of code to do the same tasks compared to assembler. It is also a level of performance close to that of the assembler. So switching to C does not induce losses in terms of the possibilities offered by the assembler. "
However, during the 2019 Linux Security Summit, security researchers identified one of the biggest flaws that drags the language C are the problems related to memory management: Buffer overflows, unreleased allocations, access to invalid or released memory areas, and so on.
According to figures from the Common Vulnerabilities and Exposure (CVE) dictionary, 15,9% of the 2288 vulnerabilities that have affected the Linux kernel in 20 years are related to buffer overflows. During its launch at the Open Source Technology Summit, the Intel engineer returned to this detail, adding that “developers need an evolved language that provides answers to problems that cannot be solved in C and that has some interesting features. »
It was in this context that Rust emerged and the engineer felt that “Rust is the future of systems programming and C the new assembler”, taking the time to explain how.
The Linux community is forced to think about how to integrate Rust support.
"We need to take the same support approach as compilers and check the availability of various compilation flags at the configuration stage," said Linus Torvalds.
The release of the creator of the famous open source kernel in principle marks his agreement with the principle of the growing support for the Rust language within Linux.
Meanwhile Microsoft is migrating to Rust to the detriment of C / C ++ that the company no longer considers acceptable to configure so-called system applications.
And the reason is simple, since Rust offers better guarantees in terms of security than the C / C ++ pair.
Therefore, initiatives aimed at making a more extensive use of language are multiplying among publishers. This year, for example, Microsoft announced the arrival of a new member in the family of language projection tools that includes C ++ / WinRT: Rust / WinRT.
It is a completely standard Rust language projection for Windows Runtime APIs, implemented as a header file based library and designed to give you first-class access to the modern Windows API.
Windows Runtime (WinRT) forms the foundation for Universal Windows Platform (UWP) applications. It is based on the Component Object Model (COM) APIs under the hood and is designed to be accessible through language projections.
WinRT can also be used for things like drivers, which lend themselves to high-performance native code. Microsoft mainly supports this use case with C ++ / WinRT. But since Thursday, Rust joined C ++ with Rust / WinRT. Good news for the Rust developers.
This is because these language projections take the metadata that describe the different API and provide natural bindings for the target programming language. As you can imagine, this makes it easy for developers to create Windows applications and components using the language of their choice.
You can then use these Windows APIs to create desktop applications, storage applications, or something more unique, such as a component, NT service, or device driver.