Skip to content

Instantly share code, notes, and snippets.

@mrhota
Forked from chriskrycho/rfc_documentation_status.md
Last active January 21, 2018 23:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mrhota/dff2f991d825d6ebc803d3e36b8e7f9d to your computer and use it in GitHub Desktop.
Save mrhota/dff2f991d825d6ebc803d3e36b8e7f9d to your computer and use it in GitHub Desktop.
Status (as best it is known) of RFCs not yet documented or tracked in https://github.com/rust-lang-nursery/reference/issues/9

I have included the more recent contributions of @matthewjasper, which brought us up to (roughly) the August timeframe for RFCs. I added all additional RFCs which had been accepted as of 21 Jan 2018.

With full credit where it is due: to @EH2406, who put the original together (here). Note that I'm doing a quick pass and confirming each of these as I get to them.

Legend

  • Not Reviewed at all: I simply added items in this list which weren't already in this document. I haven't determined what their stability status is, or whether any documentation exists for them yet
  • Need documentation: I (or someone else) determined that the feature is stabilized but no documentation for the feature exists in either the reference or libstd docs. They need documentation as soon as possible.
    • If an item is crossed off, I think that means some documentation exists (but maybe it isn't sufficient?). We should double check these struck-off items, move them to the appropriate section, depending on where its documentation lives, give it a link to said documentation, and uncross it.
  • Reviewed with no conclusion: Apparently, the RFC was examined, some research was done into its stability status and whether docs exist, but nothing conclusive was found.
  • Still need review: Insufficient review into the RFC's status has been conducted. Take a look and see what you can find out, then move the RFC link to the appropriate section.
  • Reviewed, not yet stabilized: Research has shown that the RFC is still unstable. You could write docs for one of these items, but since the feature isn't stable, it's lower priority than already-stabilized, undocumented features.
  • Documentation not required: These items either don't require documentation at all because of the nature of the RFC or documentation has already been written. Please move items here as you find out docs exist in libstd or the reference.

Not Reviewed at all

Need documentation

  • #0092: struct-grammar: Restriction isn't documented.
  • #0116: no-module-shadowing 6.1.2 somewhat implies this, but doesn't state it explicity.
  • #0136: no-privates-in-public (Not the full set of rules)
  • #0141: lifetime-elision documented in the nomicon and book but it is not in the reference
  • #0179: and-mut-patterns due to lack of pattern documentation.
  • #0184: tuple-accessors
  • #0192: bounds-on-object-and-generic-types
  • #0213: defaulted-type-params
  • #0218: empty-struct-with-braces 6.1.5 could be clearer here, 7.2.4 is fine though.
  • #0234: variants-namespace
  • #0241: deref-conversions 8.3.2 is missing one (arguably)
  • #0255: object-safety 8.1.11 links to the RFC.
  • #0326: restrict-xXX-to-ascii doc in 3.5.1.2.3 Character escapes
  • #0342: keywords in The grammar 3.5.1, but this surely deserves to be in the reference.
  • #0387: higher-ranked-trait-bounds only in the nomicon and new book
  • #0401: coercions, partially documented, but (a) semantics of the coercions and (b) kinds of and semantics of casts are both undocumented *?
  • #0447: no-unused-impl-parameters
  • #0459: disallow-shadowing
  • #0490: dst-syntax
  • #0546: Self-not-sized-by-default
  • #0599: default-object-bound and #1156: adjust-default-object-bounds
  • #0735: allow-inherent-impls-anywhere, #1023: rebalancing-coherence orphan rules #1268: allow-overlapping-impls-on-marker-traits (unimplemented issue), all related and not in the reference.
  • #0738: variance this is in the nomicon to some extent.
  • #0940: hyphens-considered-harmful partially in 6.1.2.1, but it links to the RFC
  • #0953: op-assign, the reference ignores this. (std documentation exists though)
  • #1014: stdout-existential-crisis requires documentation in std.
  • #1135: raw-pointer-comparisons existence is documented in std, semantics are not documented anywhere though.
  • #1174: into-raw-fd-socket-handle-traits in unix::io::AsRawFd, std/os/windows/io/trait.AsRawSocket.html, std/os/windows/io/trait.AsRawHandle.html, last two are really minimal though (and need to use local copy of docs).
  • #1184: stabilize-no_std 6.3.13 isn't enough and claims that core is unstable.
  • #1270: deprecation in 6.3.7, very minimal. Enhanced docs in this PR.
  • #1492: dotdot-in-patterns tracking issue 7.2.22 needs examples and to say more.
  • #1506: adt-kinds

Closures

closures are documented in 8.1.10 Closure types and 7.2.15 Lambda expressions. It neads to cover all the changes in:

  • #0114: closures
  • #0151: capture-by-value
  • #0231: upvar-capture-inference more unboxed closures.

Macros

I've put these here as the macro documentation in the Reference isn't that great and probably needs a rewrite.

  • #0085: pattern-macros
  • #0378: expr-macros
  • #0453: macro-reform
  • #0550: macro-future-proofing wow, I don't get this one.
  • #0873: type-macros
  • #1681: macros-1.1 stable in 1.15

It's complicated...

Reviewed with no conclusion

Still need review

Misc

Language and library

  • #0587: fn-return-should-be-an-associated-type FnOnce::Output covers this as far as it's a library issue.
  • #0982: dst-coercion both lib and lang? ops::CoerceUnsized for libs, the Reference isn't clear here, and misses implementations for most std smart pointers.

Language

  • #0769: sound-generic-drop replaced by 1238
  • #1240: repr-packed-unsafe-ref Tracking issue is open, but the segfalts are not seen on playpen.
  • #1560: name-resolution first place to check is Visibility and privacy

Grammar

  • #0438: precedence-of-plus
  • #0463: future-proof-literal-suffixes
  • #0593: forbid-Self-definitions
  • #0879: small-base-lexing
  • #0087: trait-bounds-with-plus
  • #0090: lexical-syntax-simplification
    • Lexical syntax is already documented in the grammar reference, but isn't up-to-date with RFC 0090. Since there's already a lexical syntax section in the Rust Reference, probably just add this to the Reference instead.

Compiler

  • #0404: change-prefer-dynamic
  • #1193: cap-lints FCP in pr not issue. It is just a rustc flag.
  • #1510: cdylib.md Rename 1510-rdylib.md to 1510-cdylib
  • #1513: less-unwinding

Compiler internals or language specification details

Neither of theses are in the reference at all, so it's just a question of do they need docs.

Libraries

Cargo Things

Reviewed

Not yet stabilized

  • #0086: plugin-registrar This is compiler plugins related.
  • #0089: loadable-lints This is compiler plugins related.
  • #0107: pattern-guards-with-bind-by-move
  • #0469: feature-gate-box-patterns box patterns
  • #0528: string-patterns
  • #0639: discriminant-intrinsic
  • #0809: box-and-in-for-stdlib
  • #0888: compiler-fence-intrinsics all intrinsics are unstable
  • #0911: const-fn
  • #1183: swap-out-jemalloc
  • #1192: inclusive-ranges Such bike sheding.
  • #1201: naked-fns
  • #1210: impl-specialization
  • #1211: mir Mir is internal to rustc so may not nead eany docs, and the issue is open.
  • out of order 1191-hir.md but hir needs the similar treatment as mir.
  • #1216: bang-type is not yet stabilized.
  • #1228: placement-left-arrow
  • #1238: nonparametric-dropck
  • #1298: incremental-compilation
  • #1327: dropck-param-eyepatch
  • #1399: repr-pack
  • #1419: slice-copy
  • #1422: pub-restricted
  • #1434: contains-method-for-ranges
  • #1440: drop-types-in-const
  • #1444: union
  • #1445: restrict-constants-in-patterns
  • #1504: int128
  • #1522: conservative-impl-trait
  • #1542: try-from
  • #1543: integer_atomics
  • #1548: global-asm
  • #1559: attributes-with-literals
  • #1561: macro-naming
  • #1581: fused-iterator
  • #1696: discriminant
  • #1682: field-init-shorthand is going to be covered by #38830
  • #0202: subslice-syntax-change (in fact all of slice patterns)
  • #0803: type-ascription
  • #0495: array-pattern-changes
  • #1260: main-reexport unimplemented issue
  • #1558: closure to fn coercion
  • #1695: add error macro
  • #1733: trait alias
  • #1845: shared from slice
  • #1860: manually drop
  • #1866: more readable assert eq
  • #1868: portability lint
  • #1884: unstable sort

Documentation Not Required

  • #0572: rustc-attribute doesn't really need documentation in the reference, since it's about feature gates, which are unstable things.

Grammar

Removal

  • #0130: box-not-special removes a special case for Box<T>, although some of the other special cases need documenting.

Already documented in reference

Already documented in std

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment