Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create an Operational Semantics Team #3346

Merged
merged 2 commits into from
Jan 26, 2023

Conversation

JakobDegen
Copy link
Contributor

@JakobDegen JakobDegen commented Nov 8, 2022

This RFC proposes creating T-opsem, a subteam of T-lang that replaces WG-unsafe-code-guidelines and will be the long term owner of questions around undefined behavior, memory models, etc.

There was discussion about this on Zulip.

Rendered

@compiler-errors compiler-errors added T-lang Relevant to the language team, which will review and decide on the RFC. T-types Relevant to the types team, which will review and decide on the RFC. labels Nov 8, 2022
@compiler-errors
Copy link
Member

Added T-lang and T-types labels at the request of @JakobDegen. Whether or not T-types needs to participate in this team's creation decision is undecided, though better to add it now and remove it later -- cc @rust-lang/types. ❤️ 😃

@JakobDegen
Copy link
Contributor Author

To clarify, my reason for adding T-types is that this is responsibility that was given to T-types in the RFC that created that team, and it seems mean to take things away without asking first 😛

@JakobDegen JakobDegen force-pushed the opsem branch 2 times, most recently from df2f4f4 to e1c6fa7 Compare November 16, 2022 00:22

**T-types**: As T-types will no longer own semantics questions, the responsibilities of T-opsem and T-types are not expected to overlap. However, like other teams, T-types is expected to consult T-opsem on any changes that require support from the operational semantics. For example, if T-types wants to extend the borrow checker to allow more code patterns, T-opsem must confirm that the code that this permits can be supported by a reasonable operational semantics.

**T-compiler**: Unlike T-types, T-opsem is not a subteam of T-compiler as it does not own any implementations. However, T-compiler is still expected to request approval from T-opsem before adding any optimization that depends on new theorems about the operational semantics. T-opsem will ensure that these theorems are expected to be true and are reasonable things for the compiler to depend on now.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The two teams are expected to heavily interact on the syntax and semantics of MIR specifically -- right? that seems worth documenting.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've included this for T-types. I'm somewhat hesitant to include this for T-compiler, since I don't see a fundamental reason that rustc's MIR should be the same as the spec's MIR

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see a fundamental reason that rustc's MIR should be the same as the spec's MIR

If they are not the same, we will probably want to have a translation from rustc's MIR to the spec's core language, as a means to give precise semantics to rustc's MIR.

@nikomatsakis
Copy link
Contributor

@rfcbot merge

This has been under discussion for some time! I am excited about seeing this team get started.

@rfcbot
Copy link
Collaborator

rfcbot commented Dec 5, 2022

Team member @nikomatsakis has proposed to merge this. The next step is review by the rest of the tagged team members:

Concerns:

Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

See this document for info about what commands tagged team members can give me.

@rfcbot rfcbot added proposed-final-comment-period Currently awaiting signoff of all team members in order to enter the final comment period. disposition-merge This RFC is in PFCP or FCP with a disposition to merge it. labels Dec 5, 2022
@nikomatsakis
Copy link
Contributor

For historical context:

I initially felt that this should be part of the types team's remit, since establishing soundness of the type system requires establishing an operational semantics, but it's become clear that the area of unsafe code interactions require special considerations that are really a distinct specialty from Rust's static type system (although the two certainly interact), and so it make sense to have a dedicated team.

@rfcbot rfcbot added final-comment-period Will be merged/postponed/closed in ~10 calendar days unless new substational objections are raised. and removed proposed-final-comment-period Currently awaiting signoff of all team members in order to enter the final comment period. labels Dec 7, 2022
@rfcbot
Copy link
Collaborator

rfcbot commented Dec 7, 2022

🔔 This is now entering its final comment period, as per the review above. 🔔


Because of the size and complexity inherent to attempting to stabilize an operational semantics, this RFC does not propose any particular process for achieving that. How an operational semantics is planned, evaluated, and stabilized is an important set of questions that will need to be answered, but requires more work and is sufficiently thorny to deserve its own RFC.

## Membership
Copy link
Member

@joshtriplett joshtriplett Dec 13, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section should include information on the process of adding a member. I would suggest using the language proposed by the libs and style teams:

Proposed new members of the team are nominated by existing members. All existing members of the team must affirmatively agree to the addition of a member, with zero objections; if there is any objection to a nomination, the new member will not be added. In addition, the team lead or another team member will check with the moderation team regarding any person nominated for membership, to provide an avenue for awareness of concerns or red flags.

Or, alternatively, do we want the membership to be determined by approval from lang? (That's not a proposal, that's a question to check which model we want.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or, alternatively, do we want the membership to be determined by approval from lang?

My gut reaction to this is that the types team does not - as far as I know - do this, and if the system is working for them we should only diverge with a clear reason for why our needs are different (such a reason certainly might exist, but I don't know it)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My assumption is that the opsem team would manage its own membership.

@joshtriplett
Copy link
Member

@rfcbot concern process-for-adding-members

Per suggestion. Happy with this otherwise.

@rfcbot rfcbot added proposed-final-comment-period Currently awaiting signoff of all team members in order to enter the final comment period. and removed final-comment-period Will be merged/postponed/closed in ~10 calendar days unless new substational objections are raised. labels Dec 13, 2022
@JakobDegen
Copy link
Contributor Author

@joshtriplett forget to ask in the triage meeting today, can the concern be resolved?

@joshtriplett
Copy link
Member

@rfcbot resolve process-for-adding-members

@rfcbot reviewed

@rfcbot rfcbot added the final-comment-period Will be merged/postponed/closed in ~10 calendar days unless new substational objections are raised. label Jan 3, 2023
@rfcbot rfcbot removed the proposed-final-comment-period Currently awaiting signoff of all team members in order to enter the final comment period. label Jan 3, 2023
@rfcbot
Copy link
Collaborator

rfcbot commented Jan 3, 2023

🔔 This is now entering its final comment period, as per the review above. 🔔

@rfcbot rfcbot added finished-final-comment-period The final comment period is finished for this RFC. and removed final-comment-period Will be merged/postponed/closed in ~10 calendar days unless new substational objections are raised. labels Jan 13, 2023
@rfcbot
Copy link
Collaborator

rfcbot commented Jan 13, 2023

The final comment period, with a disposition to merge, as per the review above, is now complete.

As the automated representative of the governance process, I would like to thank the author for their work and everyone else who contributed.

This will be merged soon.

@JakobDegen
Copy link
Contributor Author

Teams PR is up, so this should be good to merge I think? Not sure if convention dictates that I let someone from the approving team hit the big scary green button

@compiler-errors
Copy link
Member

compiler-errors commented Jan 26, 2023

As far as I'm aware, any member of the project can click merge. I can do so, since it seems like all the pre-requisites are satisfied (renaming the file to reflect the issue# and setting up the PR link correctly).

@compiler-errors compiler-errors merged commit b17ce53 into rust-lang:master Jan 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
disposition-merge This RFC is in PFCP or FCP with a disposition to merge it. finished-final-comment-period The final comment period is finished for this RFC. T-lang Relevant to the language team, which will review and decide on the RFC. T-types Relevant to the types team, which will review and decide on the RFC. to-announce
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants