question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Meeting proposal: Rust Specification

See original GitHub issue

Summary

Let’s talk about creating an official Rust specification.

Background reading

https://blog.m-ou.se/rust-standard/

Current situation

Languages like C and C++ are standardized. Rust is not. Standardization comes down to, basically:

  1. Having an accurate specification (a document)
  2. An (open?) process for evolution of the language
  3. Stability

Rust currently already has 2 and 3, but not 1.

For 1, we currently have:

These are currently all incomplete, and/or not a good source to rely on.

Things to discuss

It’d be wonderful if we had an official Rust specification, which is kept up to date and distributed together with each new release. (I suppose this would effectively mean completing/upgrading the Rust Reference.)

Questions to discuss:

  • Do we want this at all?
  • What are the goals we aim to meet? (Audience and purpose.)
  • How do we want to do this?
    • Writing a specification involves a lot of tedious work, so it’s unlikely to happen entirely from volunteer contributions, unlike many other parts of the Rust project.
    • We could ask the foundation to fund the work. E.g. by hiring a technical writer/editor who will collect the information and write it down in a draft that the team(s) can approve or give feedback on.
  • What form/structure should the spec have?
    • We could take the Ferrocene spec as a starting point, or we could take the current Rust reference as starting point, or we could come up with something else.
  • What should the scope of the spec be?
    • Should it include the standard library? (Just core, or also alloc and std?)
    • Should it cover all editions and all versions? Or only the latest ones? (Or only the latest version+edition accurately, but with notes everywhere that say in which edition or version a feature was introduced as useful (but not necessarily accurate/complete) context.)
    • Should it cover things like rustc flags and details about cargo (and build.rs)?
    • How about proc macros? (And the proc_macro crate?)
    • Should it include our (still nonexistent (?)) memory model?
    • Should it also document our stability guarantees?
    • Should it specify exactly which programs are accepted and rejected? Or should it focus on specifying the behavior of accepted programs? (And leave it to “cargo check” which programs are accepted. That’d allow us to skip specifying the exact details of the borrow checker for example, while still specifying the behaviour of any compiled Rust program.)
  • How should it tie in to our existing language evolution processes?
    • Do we expect RFCs to include a diff/patch for the spec? (I think no.)
    • Should it be required for the spec to be updated to include a new feature when it is stabilized? (I think yes.)

About this issue

This issue corresponds to a lang-team design meeting proposal. It corresponds to a possible topic of discussion that may be scheduled for deeper discussion during one of our design meetings.

Issue Analytics

  • State:closed
  • Created a year ago
  • Reactions:1
  • Comments:18 (16 by maintainers)

github_iconTop GitHub Comments

1reaction
m-ou-secommented, Nov 2, 2022

one thing i very much want Rust to avoid is ending up like ISO C++ where the standard’s text is behind a paywall.

No worries, nobody wants that.

I assume you are all aware of the Ferrocene project and its effort to produce a reasonable language reference/specification?

Yes, it’s already mentioned and linked in the meeting proposal above.

1reaction
nikomatsakiscommented, Nov 2, 2022

Question I would want to start with:

What are the goals we aim to meet? (for which audience, and for which purpose)

Read more comments on GitHub >

github_iconTop Results From Across the Web

Planning meeting 2022-11-02 - HackMD
T-lang planning meeting agenda * Meeting date: 2022-11-02 ## Attendance * Team members: Josh, ... “Meeting proposal: Rust Specification” lang-team#179 ...
Read more >
Submitting a proposal - Rust Forge
There is an issue template for meeting proposals that gives directions. The basic idea is that you open an issue with a few...
Read more >
Introduction - The Rust RFC Book
While the RFC pull request is up, the sub-team may schedule meetings with the author and/or relevant stakeholders to discuss the issues in...
Read more >
Rust Verification Workshop
We solicit proposals for contributed talks and tool demos. Proposals should be at most 2 pages, in either plain text or PDF format,...
Read more >
Rust removal, scrape off peeling and failing paint, power grind ...
Request For Proposals (RFP) – RFP 14_006. Background. Results. Vendors: G.O. Painters ... Recommendation is based on low bid vendor meeting specifications.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found