The Rust project is currently working towards a slate of 4 project goals, with 0 of them designated as Roadmap Goals. This post provides selected updates on our progress towards these goals (or, in some cases, lack thereof). The full details for any particular goal are available in its associated tracking issue on the rust-project-goals repository.
Roadmap goals
Goals looking for help
Other goal updates
| Progress | |
| Point of contact | |
| Champions |
cargo (Eric Huss), compiler (David Wood), libs (Amanieu d'Antras) |
| Task owners |
3 detailed updates available.
Update this cycle is the same as last time - rust-lang/rfcs#3874 and rust-lang/rfcs#3875 are progressing, with feedback being addressed and checkboxes checked, and we're still working out what the implementation would look like.
No major updates this cycle - we're still working through feedback on rust-lang/rfcs#3874 and rust-lang/rfcs#3875 and prototyping the implementation to be prepared.
rust-lang/rfcs#3873 has been merged and an FCP has been started on rust-lang/rfcs#3874 and rust-lang/rfcs#3875 - those both have some feedback for me to respond to that I'll get to as soon as I can
| Progress | |
| Point of contact | |
| Champions |
compiler (Oliver Scherer), lang (Tyler Mandry), libs (David Tolnay) |
| Task owners |
4 detailed updates available.
Key developments: What has happened since the last time.
In the last month, I've:
- met with the lang team, Crubit team, and
cxxauthor, and Joel and Mara have met with the C++ standards working group - expanded the some draft high-level problem statement summaries, and added code examples
- added 6 new interop use cases
- added more relationships between problems/use cases and existing project goals & unstable compiler features
- prepared for the Rust All Hands, and started mentoring for Outreachy
Specifically, the last month we've identified and prioritised two high-priority use cases for more detailed work:
- calling an overloaded C++ function from Rust, with a Rust lang experiment - implementation discussion
- adding Rust to an existing C++ build system, this currently works for basic cases, but the tooling could be improved on the Rust side
And I analysed the problems / use cases we've collected so far, with priorities, responsible language, and a split into semantics or tooling changes.
Blockers: List any Rust teams you are waiting on and what you are waiting for.
Nothing at the moment, everyone has been extremely helpful, and I'm getting good feedback on use cases, problems, priorities, and Rust language experiments.
Help wanted: Are there places where you are looking for contribution or feedback from the broader community?
Suggestions for more interop use cases or problems would be very welcome, just open a discussion in t-lang/interop and I'll turn it into a ticket. Or go ahead and open a use case or problem ticket directly.
Next step is continuing to work on overloading and build systems in more detail. If you have specific Rust/C/C++ build system blockers, please open a chat or ticket.
I'll post an update here every few weeks, you can follow more detailed weekly updates on Zulip.
Hi, I'm the new contractor on the interop problem space mapping project goal.
Key developments: What has happened since the last time. It's perfectly ok to list "nothing" if that's the truth, we know people get busy.
In the last week and a half, I've:
- added some draft high-level problem statement summaries
- started mapping out interop use cases
- added relationships between problems/use cases and existing project goals & unstable compiler features
Blockers: List any Rust teams you are waiting on and what you are waiting for.
Nothing at the moment, still working through the high level mapping of the problem space.
Help wanted: Are there places where you are looking for contribution or feedback from the broader community?
Suggestions for more interop use cases would be very welcome, just open a discussion in t-lang/interop and I'll turn it into a ticket. Or go ahead and open a use case ticket directly.
Next step is prioritising a few of the use cases, then working on related problem statements in more detail.
I'll post an update here every few weeks, you can follow more detailed weekly updates on Zulip.
The effort to fill the contracting role to support this project goal is in the process winding down. The interview and discussion process is nearly complete. We expect to make a final decision for the role in early February.
The Rust Foundation is opening up a short-term, approximately 3-month, contracting role to assist in our Rust/C++ Interop initiative. The primary work and deliverables for the role will be to make substantial progress on the Problem Space Mapping Rust Project Goal by collecting discrete problem statements and offering up recommendations on the work that should follow based upon the problems that you found.
If you are interested in how programming languages interoperate, are curious in understanding the problems therein, and are have a passion to think about how those problems may be resolved for the betterment of interop, then this work may be for you.
An ideal candidate will have experience with Rust programming. Having experience in C++ is strongly preferred as well. If you have direct experience with actual engineering that required interoperating between Rust and C++ codebases, that's even better.
If you are interested, please email me (email address found in my GitHub profile) or contact me directly on Zulip by Tuesday, January 27 and we can take it from there to see if there may be a potential fit for further discussion.
Thank you.
| Progress | |
| Point of contact | |
| Champions |
compiler (Oliver Scherer), lang (Scott McMurray), libs (Josh Triplett) |
| Task owners |
oli-obk |
3 detailed updates available.
- I added support for getting reflection information of any type, not just
'staticones- https://github.com/rust-lang/rust/pull/152381
- @9SonSteroids added a function pointer MVP and trait object support
- https://github.com/rust-lang/rust/pull/152173
- https://github.com/rust-lang/rust/pull/152003
- Asuna added basic struct/enum/union support
- https://github.com/rust-lang/rust/pull/151142
- @BD103 added slices, arrays and raw pointer support
- https://github.com/rust-lang/rust/pull/151019
- https://github.com/rust-lang/rust/pull/151031
- https://github.com/rust-lang/rust/pull/151118
- https://github.com/rust-lang/rust/pull/151119
- Asuna added all of our primitives
- https://github.com/rust-lang/rust/pull/151123
- Jamie Hill-Daniel gave us references
- https://github.com/rust-lang/rust/pull/151222
- @izagawd made it possible to extract some info from dyn Trait
- https://github.com/rust-lang/rust/pull/151239
There is ongoing work for Adts and function pointers, both of which will land as MVPs and will need some work to make them respect semver or generally become useful in practice
Removing the 'static bound from try_as_dyn turned out to have many warts, so I'm limiting it to a much smaller subset and will have borrowck emit the 'static requirement if the other rules do not apply (instead of having an unconditional 'static requirement)
- https://github.com/rust-lang/rust/pull/146923 has landed, and we even got the first contribs adding array support to reflection.
- there are lots more types and type information that we could support, and it's rather easy to add more. Happy to review any work here.
- https://github.com/rust-lang/rust/pull/150033 has landed, and I'm working on removing the
'staticrequirement in https://github.com/rust-lang/rust/pull/150161
| Progress | |
| Point of contact | |
| Champions |
compiler (David Wood), lang (Niko Matsakis), libs (Amanieu d'Antras) |
| Task owners |
4 detailed updates available.
Per last comment, rust-lang/rfcs#3729 has been updated
On the scalable vector half of the goal, I've got a branch with rust-lang/stdarch#1509 rebased, though without the intrinsic-test tool having been updated - that ended up being tricky and we've agreed to do it as a follow-up. We've opened rust-lang/rust#153286 with the compiler fixes that the stdarch patch requires, which should land soon (rust-lang/rust#153653 was opened and landed in the interim).
On the sized hierarchy half of the goal, Rémy Rakic has been updating our RFC such that we can discuss it in design meetings with the language team on the 18th and 25th - we'll update rust-lang/rfcs#3729 later today. We've split out the const Sized parts as a future possibility (though one we are committed to pursuing) as that has more open design questions, and we've discussed the proposed syntax and approach to migration - which are what we intend to focus on in the design meetings. He's also been working out how we can start implementing our migration strategy and help resolve blockers in other areas.
Progress has been slow since the last update because I've been busy, but I've been working on a rebase of rust-lang/stdarch#1509, which has bitrot quite a bit. Rémy Rakic is joining me to work on the Sized Hierarchy parts of the goal.
rust-lang/rust#143924 has been merged, enabling scalable vector types to be defined on nightly, and I'm working on a patch to introduce unstable intrinsics/scalable vector types to std::arch