This Week in Programming: Rust (Likely) Headed for Linux Kernel’s Development Branch
Rustaceans’ dreams of Rust’s inclusion in the Linux kernel are one tiny, ever so slight step closer to becoming a reality, with this week’s “intentionally bare-bones” inclusion in Linux-next, the development branch of the Linux kernel. When last we looked, Rust was yet a mere twinkle in the eyes of those hoping to use the language in Linux kernel development, with Linux creator Linus Torvalds signaling his approval, and now that twinkle has brightened up just a bit more.
Curb your enthusiasm, however, as this remains a rather tentative first step of many necessary steps before Rust fully lands in the Linux kernel.
A rather brief post on LWN.net summarizes where we are rather succinctly:
“Followers of the linux-next integration tree may have noticed a significant addition: initial support for writing device drivers in the Rust language. There is some documentation in Documentation/rust, while the code itself is in the rust top-level directory. Appearance in linux-next generally implies readiness for the upcoming merge window, but it is not clear if that is the case here; this code has not seen a lot of wider review yet. It is, regardless, an important step toward the ability to write drivers in a safer language.”
Rust modules in the Linux Kernel.
The future is now. pic.twitter.com/IaM2gwSdV2
— Karthik Kumar Viswanathan (@_vkaku) March 18, 2021
Indeed, Miguel Ojeda, a software developer and maintainer of the Rust for Linux project writes that the proposed inclusion “does not mean we will make it into mainline, of course, but it is a nice step to make things as smooth as possible,” with some changes expected before any decision as to Rust’s inclusion are made.
For those of you less familiar with Rust, part of the appeal here comes with Rust’s memory safety features, especially in comparison to C, which the Linux kernel is currently coded in. Part of the problem, however, is that Rust is compiled based on LLVM, as opposed to GCC, and subsequently supports fewer architectures. This is a problem we’ve seen play out recently, as the Python cryptography library has replaced some old C code with Rust, leading to a situation where certain architectures will not be supported. Presently, the proposal to include Rust in the Linux kernel limits this issue by saying that Rust would be used, at least initially, for writing drivers that, as noted in another LWN.net article on the topic, “would never be used on the more obscure architectures anyway.”
Meanwhile, if you’re looking for further evidence of Rust’s utility in Linux development, look no further than Amazon Web Services‘ efforts with Bottlerocket, a Linux distribution for containers that is largely written in Rust.
This Week in Programming
- Transform S3 Data With In-Line Lambdas: Amazon is pairing its popular Amazon Simple Storage Service (S3) data storage with AWS Lambda, its serverless functions service, to create the Amazon S3 Object Lambda, a new feature that will allow users to process data as it is being retrieved from S3. In case you don’t see the immediately and obvious utility of this new feature, they offer a number of potential use cases, from obscuring personally identifiable information (PII) to converting data formats, from XML to JSON for example, or even to augment data using information from other services. Previously, functionality such as this would require either a custom data set for each use case or a proxy layer to perform data transformation as it was moved. Not only that, but the Lambda function in this case is performed inline with your S3 GET request, meaning that your application code can remain the same.
- AWS Simulates Fault Injection: While we’re talking about AWS, the company has also introduced a Fault Injection Simulator (FIS) to further help users with reliability, citing the new tool as one to add to the many it already offers to this end, such as Amazon CloudWatch, Auto Scaling, Load Balancing, and more. Fault Injection belongs to the “relatively new field of Chaos Engineering,” they write, which “focuses on adding stress to an application by creating disruptive events, observing how the system responds, and implementing improvements.” With FIS, users will be able to perform controlled experiments on their AWS workloads by injecting faults and, well, waiting to see what happens. The idea is that you learn how your system reacts to various types of faults, in order to have a better understanding of failure modes. These “experiments” can be run in your development environment, but even in production, if you desire, with each targeting a specific set of AWS resources and performing a set of actions on them. Currently, those services include EC2, ECS, EKS, and RDS, and more are on the way.
- GitHub’s Dependabot Now Open to Private Repos: GitHub acquired Dependabot almost two years ago now, and has been steadily working to bring the technology to its users ever since. Now, the company has made Dependabot available to private dependencies, where the tool will work to keep dependencies free of vulnerabilities and up-to-date. This release will allow users to give Dependabot access to both private package registries (including GitHub Packages, Artifactory, Azure Artifacts, and others) and private GitHub repositories, either by storing that registry’s access token or by granting Dependabot access to the required private repositories. For the curious, GitHub notes that there “is a lot more happening in Dependabot, from ecosystem updates to less noisy notifications,” offering up the public roadmap for further insight to what’s next. This move to make its tools available to private repositories seems to be a trend, with the company also opening up its GitHub Discussions feature to private repositories just last week.
two computer engineers walk into a bar
one says, i’ll have a float
the other says, make mine a double
— tef (@tef_ebooks) March 14, 2021
- Google Wraps Up Season of Docs 2020, Opens Applications for 2021: Google’s Season of Docs, the program that pairs technical writers with open source projects to help create documentation, has wrapped up its long-running projects for 2020. The company writes that “15 technical writers successfully completed their long-running technical writing projects,” and notes that the effort spanned several months. Google also says that it is currently accepting organization applications for the 2021 program, and it’s looking like the Continuous Delivery Foundation (CDF) and some of its projects may be among those joining for the year ahead.
- Help Rust Envision Its Future Self: In its quest to become “one of the most popular choices for building distributed systems,” Rust’s Async Foundations Working Group is working to build a shared vision for Async Rust, and they’re looking for your help in creating a shared vision document for Async Rust. Their goal, they write, is to “engage the entire community in a collective act of the imagination: how can we make the end-to-end experience of using Async I/O not only a pragmatic choice, but a joyful one?” The document will tell the stories of a cast of characters, with each tied to a particular Rust value. Grace, for example, is a C++ programmer who likes the idea of Rust’s memory safety, and the document asks questions like what features does Grace most want, and what does she expect, given her story? If this sounds like something you’re into, check out the template for status quo stories, which has all the information you need to open a pull request, or head on over to the How To Vision page, which covers the whole vision document process in detail.
“Distinguished Engineers are just three raccoons in a trenchcoat like the rest of us” — @IanColdwater
— Stephen Augustus (he/him) (@stephenaugustus) March 18, 2021