Skip to content

Stabilization metabug: 1.0-alpha #19260

Closed
@aturon

Description

@aturon

This is a tracking metabug for stabilization of both APIs and gated features.

API stabilization for libstd

First pass stabilization/reform

For simpler/mostly stable APIs (core types, iterators), stabilization is mostly a matter of aligning with conventions and deprecating marginal methods and takes place directly under the supervision of the core team. For deeper redesign, RFCs are needed. Where applicable, the list below points to the relevant RFC.

Most APIs with a chechmark are still #unstable, either due to developing conventions, lack of language features (e.g. unboxed closures), or some other problem. We plan to do a rapid second pass closer to the 1.0.0 beta.

(You can track the following list quantitatively, though the fact that trait impls count exaggerates the amount of #[experimental] items.)

Items are marked complete when a PR/RFC has been posted -- this is just tracking the design work.

Second pass stabilization: for alpha

The second pass is about actually moving APIs to #[stable] status; it may involve a bit of minor shuffling, but any major design work should have already taken place. In many cases APIs were blocked on language features (like unboxed closures) before moving to this status.

RFCs for reform

The following RFCs tackle deeper API redesigns:

Accepted

Pending

Non-std crates

See #18585 (comment)

Just need #[experimental]

We will ship these crates, but will they will participate in #![staged_api]
and will not be accessible in the stable channel.

  • alloc
  • arena
  • collections
  • core
  • flate
  • fmt_macros
  • graphviz
  • rand
  • rbml
  • rustc
  • rustc_back
  • rustc_llvm
  • rustc_trans
  • rustdoc
  • syntax
  • unicode

Need Cargo.toml and a publishing strategy

These crates will all be distributed, but participate in #![staged_api]. This
means they will not be accessible in the stable channel's standard
distribution, but they will all be available through crates.io.

Need cooperation with the standard library due to compiler internals

Removed or to remove

Feature stabilization

Ungating

Removal

  • Slicing syntax: should be removed in favor of ops reform

CLI Tooling

Metadata

Metadata

Assignees

No one assigned

    Labels

    metabugIssues about issues themselves ("bugs about bugs")

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions