Create a types team by jackh726 · Pull Request #3254 · rust-lang/rfcs · GitHub
source link: https://github.com/rust-lang/rfcs/pull/3254
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Conversation
This RFC introduces the "type system team" or "types team". This team formally is a subteam of both the lang and compiler team. It's primary tasks are to define and maintain the design and implementation of Rust's type checker, trait solver, and borrow checker.
This RFC was authored in large part by @nikomatsakis and other mentions of the current traits working group (and future types team).
I would like to avoid bikeshedding since it's clear you've already thought about the name, but one potential issue naming it the "types" team, my immediate first thought is that they're just a subset of the libs team working on types in the standard libary. This feels oddly specific for a team, and after being explained what they do, it does make a lot of sense to me, so, this argument probably isn't that important, but I figured I'd mention it anyway.
The only alternative I can think of that solves this problem while meeting the desired criteria is a "specs" team, but I figure you've already thought of the possibilities enough for this.
the names "types", "traits", and "formality" have been considered (among a few others, but those are the main ones). See this zulip stream for some earlier discussion. I think the name "types" is the best compromise here to summarize what the team really cares about.
To address the suggestion, the issue with the name "formality" -- and this also extends to "specs" -- is that the team will not be limited to the formal modeling and specification of types and the traits solver, but will also be involved in the implementation details (e.g. both working towards improving the existing trait solver, and working on what's next, whether that be chalk or something else!) That's a big reason that this team is (at least conceptually) a sub-team of both lang and compiler.
On the other hand, team names need to be succinct, imo. There will inevitably be misunderstanding about the team's purpose, but the teams repo luckily lets us put a description that'll hopefully elaborate this further ("involved in the specification and implementation of the type system and trait solver", or something better than that), and also hopefully the team is active enough that people will know "T-types" when they see it mentioned!
cc @rust-lang/compiler and @rust-lang/lang -- as currently envisioned, this team is a subteam of both these teams -- or intersects them, anyway. The idea is to take ownership (from lang) of drafting the "formal type rules + operational semantics" and to take ownership (from compiler) of the implementation side of things. But, just as the lang team decides "language policy" but the compiler team owns the implementation, the types team would have the same scope -- the goal is to formalize, validate, and implement the designs coming from lang team, not to drive the ship.
added T-lang Relevant to the language subteam, which will review and decide on the RFC.
T-compiler Relevant to the compiler subteam, which will review and decide on the RFC.
labels
In my experience “the type system” has been a pretty unambiguous way to refer to most parts that the proposed team would be in charge of. borrowck feels like it has historically been a somewhat independent entity but that's not too difficult to adapt to.
I think its going to be hard to come up with a better name. That said, if I had to pick between “type system team” and “types team”, I'd pick the former as it rolls off my tongue tad-a-bit easier than the alternative.
Outdated
The types team is meant to build a base of maintainers for the formal side of Rust, both design and implementation. This has traditionally been an area with a very low "[bus factor]", both in terms of the compiler (few maintainers to the code) and the language design (few people who fully understand the entire space). Focusing a team on just Rust's "type system" will allow us to do targeted outreach and to help people to learn the background that is needed to contribute here.
Like the compiler team, the team's plays a "supportive" role. Its goal is to ensure both that Rust's type system has an efficient and correct implementation and that the type system (design and implementation) is able to scale to new demands and requirements. At this moment, Rust is suffering from a general paralysis in which new features (implied bounds, const generics, specialization, etc) are stalled for long periods of time due to a combination of an inflexible implementation, a lack of maintainers, and a general difficulty in reasoning about their interactions.
Maybe the sentence "At this moment..." would be better at the beginning of this paragraph.
Hmm, maybe. I do agree that this sentence doesn't seem to "lead" anywhere though.
I changed the order here a bit. Thoughts?
Outdated Show resolved
Outdated Show resolved
Show resolved
Outdated Show resolved
Outdated
### Bug in the type checker
When a soundness bug is found in Rust's type system, the compiler team can contact the types team to request the bug be triaged and to prepare a fix. The types team owns that code and hence is ultimately responsible for reviewing changes to the relevant code.
Leads typically serve for 6 months to 1 year, at which point we will consider whether to rotate.
## Team membership
A common point of confusion for people is whether and how they can request considerationfor becoming a member. We should probably mention that this can be done by contacting the leads?
I don't think that's the right approach - asking for membership isn't a great approach. I added a bit that interested people should join meeting or do initiative-specific work.
Outdated
* [a-mir-formality](https://github.com/nikomatsakis/a-mir-formality)
* this may eventually grow to multiple 'formality' models
The team is also responsible for those portions of [rust-lang/rust] that implement the type system (jointly, with the compiler team, since those portions are not cleanly separable).
We could probably come up with a list of crates or even insert the team into the experts map
I think this is a bit out of scope of this RFC - ultimately, we'll probably end up with a few ways of "marking" the split here (e.g. highfive queue, experts map, "feeling")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
No one assigned
T-compiler Relevant to the compiler subteam, which will review and decide on the RFC. T-lang Relevant to the language subteam, which will review and decide on the RFC.
None yet
No milestone
Successfully merging this pull request may close these issues.
None yet
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK