惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threatpost
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
T
The Blog of Author Tim Ferriss
Recent Announcements
Recent Announcements
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
MongoDB | Blog
MongoDB | Blog
U
Unit 42
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
P
Privacy International News Feed
L
LINUX DO - 最新话题
博客园_首页
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Privacy & Cybersecurity Law Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
K
Kaspersky official blog
C
Cisco Blogs
博客园 - 【当耐特】
阮一峰的网络日志
阮一峰的网络日志
I
Intezer
罗磊的独立博客
MyScale Blog
MyScale Blog
Last Week in AI
Last Week in AI
A
About on SuperTechFans
G
GRAHAM CLULEY
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
D
DataBreaches.Net
The Hacker News
The Hacker News
Spread Privacy
Spread Privacy
AWS News Blog
AWS News Blog
I
InfoQ
T
The Exploit Database - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
博客园 - 叶小钗
Project Zero
Project Zero

Rust Blog

Security Advisory for Cargo (CVE-2026-5223) | Rust Blog Security Advisory for Cargo (CVE-2026-5222) | Rust Blog Project goals update — April 2026 (end of 2025H2) | Rust Blog Rust is participating in Outreachy | Rust Blog Raising the baseline for the `nvptx64-nvidia-cuda` target | Rust Blog Announcing Google Summer of Code 2026 selected projects | Rust Blog Announcing Rust 1.95.0 | Rust Blog docs.rs: building fewer targets by default | Rust Blog Changes to WebAssembly targets and handling undefined symbols | Rust Blog Announcing Rust 1.94.1 | Rust Blog Security advisory for Cargo | Rust Blog What we heard about Rust's challenges | Rust Blog Call for Testing: Build Dir Layout v2 | Rust Blog Announcing rustup 1.29.0 | Rust Blog Announcing Rust 1.94.0 | Rust Blog 2025 State of Rust Survey Results | Rust Blog Rust debugging survey 2026 | Rust Blog Update on the October 15, 2018 incident on crates.io Announcing Rust 1.29.2 Announcing Rust 1.29 Launching the 2018 State of Rust Survey Announcing Rust 1.28 What is Rust 2018? Announcing Rust 1.27.2 Announcing Rust 1.27.1 Security Advisory for rustdoc Announcing Rust 1.27 Announcing Rust 1.26.2 Announcing Rust 1.26.1 Rust turns three Announcing Rust 1.26 The Rust Team All Hands in Berlin: a Recap Increasing Rust’s Reach 2018 Announcing Rust 1.25 Rust's 2018 roadmap Announcing Rust 1.24.1 Announcing Rust 1.24 The 2018 Rust Event Lineup Announcing Rust 1.23 New Year's Rust: A Call for Community Blogposts Rust in 2017: what we achieved Announcing Rust 1.22 (and 1.22.1) Fearless Concurrency in Firefox Quantum Announcing Rust 1.21 impl Future for Rust Rust 2017 Survey Results Announcing Rust 1.20 Announcing Rust 1.19 The 2017 Rust Conference Lineup Increasing Rust’s Reach Announcing Rust 1.18 Two years of Rust The Rust Libz Blitz Launching the 2017 State of Rust Survey Announcing Rust 1.17 Announcing Rust 1.16 Rust's language ergonomics initiative Announcing Rust 1.15.1 Rust's 2017 roadmap Announcing Rust 1.15 Announcing Rust 1.14 Announcing the First Underhanded Rust Contest Announcing Rust 1.13 Announcing Rust 1.12.1 Announcing Rust 1.12 Incremental Compilation Announcing Rust 1.11 Shape of errors to come The 2016 Rust Conference Lineup Announcing Rust 1.10 State of Rust Survey 2016 Announcing Rust 1.9 One year of Rust Taking Rust everywhere with rustup Launching the 2016 State of Rust Survey Cargo: predictable dependency management Introducing MIR Announcing Rust 1.8 Announcing Rust 1.7 Announcing Rust 1.6 Announcing Rust 1.5 Announcing Rust 1.4 Announcing Rust 1.3 Rust in 2016 Announcing Rust 1.2 Rust 1.1 stable, the Community Subteam, and RustCamp Announcing Rust 1.0 Abstraction without overhead: traits in Rust Rust Once, Run Everywhere Mixing matching, mutation, and moves in Rust Fearless Concurrency with Rust Announcing Rust 1.0 Beta Announcing Rust 1.0.0.alpha.2 Rust 1.0: status report and final timeline Announcing Rust 1.0 Alpha Rust 1.0: Scheduling the trains Yehuda Katz and Steve Klabnik are joining the Rust Core Team Cargo: Rust's community crate host Stability as a Deliverable Road to Rust 1.0
Rust's 2017 roadmap, six months in
Nicholas Matsakis · 2017-07-05 · via Rust Blog

In January of this year, we adopted the 2017 Rust Roadmap, which laid out our plans for 2017. As part of the roadmap process, we plan to regularly release updates on the progress of each roadmap item. This post marks the halfway point through the year.

Tracking progress via roadmap issues

First, a meta note. If you'd like to follow along with the progress on a particular roadmap initiative, or to find out more about how you can get involved, the best place to go is the list of issues on the rust-roadmap repo. There you will find an issue dedicated to each of the major initiatives that we are pushing on. These issues contain links to ongoing work. You'll find a number of links to issues like this in the descriptions that follow.

Rust should have a lower learning curve

The most direct way to make Rust easier to learn is to improve the way that we teach it. To that end, we've been hard at work on a brand new edition of the official "Rust" book (roadmap issue), and we now have a complete draft available online. This new edition puts ownership front and center and it also has expanded coverage of a number of other areas in Rust, such as error handling, testing, matching, modules, and more. Even better, you can pre-order a printed version through No Starch Press. If you'd like to help out, there is still lots of editing work to be done!

We've also been working on a number of language changes aimed at improving language ergonomics. These range from long-standing proposals, like non-lexical lifetimes or impl Trait, to newer ideas, like the recently approved RFCs on trait aliases and match ergonomics. On the roadmap issue, you will find a large list of initiatives, organized by the part of the language that they target (e.g., ownership/borrowing, the trait system, etc). We are actively looking for people to help with writing RFCs but also implementing the accepted RFCs -- if you're interested in helping out with something, look for the "mentoring" contacts listed in the roadmap issue or on the tracking issue for a specific RFC. And, of course, if you think you've got a good idea that's not listed, open up a thread on internals and let's talk about it!

Rust should have a pleasant edit-compile-debug cycle

We've been targeting the problem of improving compiler performance in a number of different ways. One of the simplest is the cargo check command that we released in Rust 1.16 -- this command does a limited form of compilation which skips code-generation and simply looks for errors. Since code generation typically takes 50% or more of compilation time, this can be really useful in the early stages when you are writing new code and trying to get it to compile, particularly if you have a multi-crate project. This command is also used by the RLS.

Of course, eventually you want to run your code, and for that you need a full compilation. In order to make that faster, we've been hard at work retooling the compiler to work in an incremental fashion. Earlier this year, we advertised the "beta" release of incremental on nightly builds. While the beta version sometimes achieved quite large speedups, we also found that the dependency tracking was not as robust or effective as we would like. Therefore, we are now adopting a new and improved approach to incremental compilation that we expect be ready in the next month or so. If you're interested in helping with the transition to the new system, check out the incremental compilation roadmap issue or the tracking issue for the new algorithm itself; you can also follow this internals thread, where we regularly post links to bugs that include mentoring instructions.

Looking beyond incremental compilation, we've also been taking steps to optimize compilation time in other ways. Probably the most important step in that respect has been getting a new version of the perf.rust-lang.org website up and running. The "perf" website tracks the effect of each and every PR on compilation performance, so that we can detect and correct regressions. In fact, the new website immediately led to some major performance improvements. There is still lots of work that could be done to improve it, however, ranging from evaluating and improving our benchmark suite to improving the web interface; see the tracking issue on this topic for more.

Rust should provide a solid, but basic IDE experience

Since it first debuted at RustConf last year, the Rust Language Service (RLS) has been growing rapidly (roadmap issue). It now offers support for most basic IDE operations, such as "jump to definition" or "find all uses", as well as offering code completion (via the racer project). At this point, the focus is primarily on polish: making the RLS easier to install and fixing bugs. For example, we recently made it possible to install the RLS directly through rustup.

If you'd like to give the RLS a spin, the easiest way is to use the VSCode plugin; however, the RLS is a generic server (it speaks Microsoft's Language Server Protocol), and there are also clients available for a number of other editors. A word of warning: at this point, the RLS is still in an "alpha" period. While it is eminently usable, you may encounter bugs or other limitations.

If you'd like to get involved with the RLS, check out the roadmap issue or the RLS issue listing; in particular, those things tagged with "good first issue".

Rust should provide easy access to high quality crates

As the size of the crates.io ecosystem has grown, the simple search and sorting criteria used by the crates.io website are no longer that helpful for figuring out which crates you should use. To address this, we've added categories and a number of badges that crate authors can add to their crates. These help people find crates for a particular purpose and judge a crate’s quality at a glance. In addition, RFC 1824 laid out a plan for improving the default sort in crates.io and exposing additional information to help in selecting a crate. There is a tracking issue that lists the pieces of this RFC, and we’d love contributions towards those pieces! Once the RFC is completely implemented and people have had a chance to use the features for a while, we plan to ask the community for feedback and make adjustments.

In addition, the effort on the "cookbook" described below will also be a boon for discovering crates in a task-centric way.

Rust should be well-equipped for writing robust servers

We've made some excellent strides the first half of this year towards making Rust well equipped for writing robust servers. The futures crate and Tokio project continue to explore the asynchronous I/O ecosystem and have seen some heavy usage through crates like Hyper and production users like linkerd-tcp. Additionally we've seen projects like Rocket continue to tirelessly improve the ergonomics of Rust-on-the-server. A recent discussion of what the biggest blockers are today has highlighted that async/await notation, better Tokio/futures documentation, and a solid HTTP foundation for the ecosystem are some of the next highest priorities. We plan to enable async/await notation on the nightly Rust channel by the end of the year and position it for stabilization in early 2018. This in turn should help fuel a rewrite of Tokio's/future's documentation and continue to grow community support for crates such as HTTP.

Rust should have 1.0-level crates for essential tasks

The Libz Blitz proceeds apace! The Libz Blitz is a systematic effort to identify the most broadly used crates in the Rust ecosystem and to ensure that they all meet a consistent level of completeness and quality. This effort entails collaborating on the internals forum to review crates according to the API guidelines, filing and fixing the issues that arise, and writing examples for a new "cookbook" of Rust examples.

The effort is structured to be highly amenable to contribution, particularly from new Rust developers, and so far has resolved 99 crate issues across 10 crates, and created more than 30 examples for the cookbook, thanks to the efforts of 53 contributors.

If you're interested in participating, take a look at the introductory post on the internals thread.

Rust should integrate easily into large build systems

Most work on build system integration has focused on more clearly identifying what the challenges are and developing concrete proposals that target them. Some of the current avenues for exploration are:

We are hoping to pick up the pace on this work in the second half of the year, but could use help doing so. If either of the above Cargo improvements is of interest to you, or if you have insights on build system integration in general, please reach out on the tracking issue!

When it comes to mentoring, we've been pursuing a few different efforts. The first, RustBridge, is specifically aimed at bringing underrepresented folks into tech; it also serves as a great curriculum for people completely new to Rust. The materials have already been through several iterations and continue to evolve and improve, and we are going to be running a RustBridge workshop the day before RustConf. We would like to see more RustBridge events.

We also just launched Increasing Rust's Reach, an initiative for hearing more from groups currently underrepresented in Rust (or technology more generally), and working together to make Rust accessible to a wider audience. While this isn't a mentorship program per se (in many cases, it's the participants who are doing the teaching!), it is still geared toward lowering the on-ramp to Rust's community.

In addition, the various Rust teams have been pursuing a number of different initiatives trying to encourage people to get involved in the Rust project itself:

  • We've added three new teams -- infrastructure, cargo, and dev-tools -- and hence created new areas where people can get involved.
  • The lang team has adopted the new shepherd role. Shepherds are experienced members of the community who have demonstrated both excellent technical acumen and the ability to build consensus and understand alternative perspectives. Shepherds attend language meetings and help to steer discussion on RFCs and guide them towards a useful conclusion.
  • The lang team has also been working on "mentoring" RFCs. The roadmap issue for the ergonomics initiative, for example, lists a number of RFCs where we are actively recruiting.
  • A big part of the "Libz Blitz" is helping to direct community effort to pushing libraries over the finish line.
  • The compiler team has been actively pursuing "mentoring bugs" (bugs tagged as E-mentor), which include written instructions, as well as drawing up plans to improve the documentation of the code and workflows.

Areas of Exploration

In addition to the main roadmap items, the roadmap RFC called out two "areas of exploration". These are areas with strong potential for Rust that are still in a more exploratory phase.

Embedded Rust initiative

The embedded Rust ecosystem continues to grow. A bare metal concurrency framework for Cortex-M microcontrollers geared towards robotics and control systems has been recently developed. And Tock, an embedded OS that also targets Cortex-M microcontrollers, has been making progress towards pure Rust userland applications and continues growing its driver support.

On the compiler side support for the MSP430 architecture has been improving thanks to the community's effort, and support for the AVR architecture is also being worked on, out of tree, by the community.

On the community side efforts in standardizing the development workflow are on going with the creation and development of guides, project templates, core crates and tooling. Recently a survey to identify the current needs of embedded developers was performed and the corresponding roadmap issue was updated to reflect the results. In response to the survey results a community effort to create a Hardware Abstraction Layer, that will serve as a base for building the embedded crate ecosystem, has been started and the design discussion is currently on going. An "Are we embedded yet?" web site that will reflect the up to date state of the embedded ecosystem and track its progress is also being worked on.

(Thanks to Jorge Aparicio for this writeup.)

Integrating with Other Languages: bindgen Update

C and C++

bindgen is the frontier for automating integration of C and C++ libraries into Rust code bases. bindgen takes header files as input, and outputs the appropriate foreign function and type declarations so that the C/C++ library can be used with minimal effort from Rust.

bindgen has become a crucial infrastructure for the Stylo project, which brings Servo's style system to Firefox. As the Stylo project nears shipping, we've been hammering bindgen into shape for production. This has manifested itself as tons of reliability and correctness work. Our test suite is ever expanding, we've been focusing on correctness of struct layout, size, and alignment for ABI corner cases such as bitfields, as well as test coverage and support across different versions of libclang.

At the same time, we've been working to improve the contribution experience. We've been documenting workflows, adding visualizations of our internal representation for debugging, and mentoring new contributors. Since the creation of the Rust DevTools team, we've also been talking with other toolsmiths about fostering contribution to common tools. Expect to hear more on this soon.

Finally, we also introduced a bindgen Users Guide to help folks get up and running with bindgen in their project.

(Thanks to Nick Fitzgerald for this writeup.)

Other languages/environments

Higher level languages come with their own integration challenges, often involving cooperation with an external runtime system (which possibly includes a garbage collector). Here's a quick rundown of some of the major projects on this front:

  • Ruby: the Helix project is geared toward writing Ruby extensions in Rust, and publicly launched a couple of months ago.
  • Node.js: the Neon project is similarly geared toward writing Node.js modules in Rust, and continues to see active development.
  • The GNOME Object system: after a sprint pairing up Rust and GNOME core developers, we have the basics of an integration story for Rust and the GObject system.
  • The Rust FFI Omnibus gives guidance for the basics of calling into Rust from a variety of languages.

There are many less high-profile projects in this space as well; if you'd like yours to be tracked as part of the roadmap, please leave a comment on the tracking issue!

Conclusion

In conclusion, you can see that it's been a very busy six months in Rust land. I'd like to thank all the many people who have been involved in pushing these projects over the finish line!