4

Create a types team by jackh726 · Pull Request #3254 · rust-lang/rfcs · GitHub

 2 years ago
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.
neoserver,ios ssh client

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.

Rendered RFC

This RFC was authored in large part by @nikomatsakis and other mentions of the current traits working group (and future types team).

Prior discussion can be found on zulip, here and here.

lebensterben, ibraheemdev, eholk, ChayimFriedman2, JakobDegen, IWANABETHATGUY, yerke, sekunho, not-matthias, oli-obk, and 12 more reacted with thumbs up emoji compiler-errors, SOF3, oli-obk, estebank, slanterns, janriemer, GrayJack, bluebear94, 2788, teohhanhui, and 4 more reacted with heart emoji

Copy link

Contributor

clarfonthey commented 10 days ago

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.

bjadamson, janriemer, and Boiethios reacted with thumbs up emoji

@clarfonthey:

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!

clarfonthey, guswynn, nickx720, nikomatsakis, slanterns, janriemer, and zseri reacted with heart emoji

Copy link

Contributor

nikomatsakis commented 9 days ago

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.

nikomatsakis

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

9 days ago

Copy link

Member

nagisa commented 9 days ago

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.

michaelwoerister, compiler-errors, jdahlstrom, janriemer, memoryruins, xFrednet, zseri, PatchMixolydic, tshepang, ModProg, and shepmaster reacted with thumbs up emoji

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?

text/0000-types-team.md

Outdated Show resolved

text/0000-types-team.md

Outdated Show resolved

text/0000-types-team.md

Show resolved

text/0000-types-team.md

Outdated Show resolved

### 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.

Copy link

Contributor

@oli-obk oli-obk yesterday

edited

Does the types team make the decision on whether to do breaking changes necessary to resolve said soundness bugs?

I think it should take over that responsibility from the lang team

compiler-errors reacted with thumbs up emoji

Leads typically serve for 6 months to 1 year, at which point we will consider whether to rotate.

## Team membership

Copy link

Contributor

@oli-obk oli-obk yesterday

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.

* [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).

Copy link

Contributor

@oli-obk oli-obk yesterday

We could probably come up with a list of crates or even insert the team into the experts map

compiler-errors reacted with thumbs up emoji

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

Assignees

No one assigned

Labels

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.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

None yet

8 participants

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK