Specification format and process

Format

Same as Ferrocene but with (non-normative) explainer sections leading into each section.

Governance

  • Subteam of the lang team "Spec team"
    • Chartered to develop/maintain the specification and to ensure consistency
      • authorship is an open-source process
      • works with editor provided by foundation whose role is to main consistency and guide the effort
    • Spec team is empowered to resolve details on its own, but consults with other teams for
      • types team: details of type system
      • opsem team: details of what happens when programs are executed
      • lang team: big picture, evolution, any surfaced lang issues that need resolving by changing/clarifying the language
        • Spec team documents what is, and raises issues (with appropriate priorities) if that's not what should be
      • compiler team: details of implementation, esp. linker related things
      • each of these teams can object to details of the specification; lang team ultimately resolved.
    • Decisions made by consensus-with-no-objections as usual
  • Integration into stabilization
    • specification chapters can be authored just like edits to the compiler:
      • as an experiment
      • after RFC is approved
    • stabilization requires spec chapter to be authored
      • spec team can waive this but opens an issue to deal with it
  • Initial scope of specification
    • language features
    • not stdlib apart from lang items
    • invariants and constraints on the borrow checker and type system
  • Excluded from initial scope
    • linker and platform specific details ?
  • Extending scope of specification

Authorship

Examples

Proposal: we should have some specific process examples, for how the spec team would handle different cases. For instance, "The spec team found a behavior in the language that seems almost certainly not what we want. The spec team documents the current behavior without blocking, files an issue for fixing the behavior (possibly with suggestions for what we might want instead), and blocks shipping/blessing the spec on a decision on that issue."

Select a repo