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

d #1

Merged
merged 2,298 commits into from
Mar 2, 2017
Merged

d #1

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2298 commits
Select commit Hold shift + click to select a range
ce16e77
Remove "explanatory" alternatives and flesh out a possible command li…
Diggsey Jul 17, 2016
a229528
Correct typos in trait impl
shepmaster Jul 17, 2016
b89530e
Expand on GNU toolchain specifics
Diggsey Jul 17, 2016
4ad2de6
Merge pull request #1680 from shepmaster/impl-trait-typos
alexcrichton Jul 18, 2016
e6abfff
Add a drawback about doc readability
sfackler Jul 18, 2016
e2981fc
RFC: Macros 1.1
alexcrichton Jul 15, 2016
ea504d4
rustc-macro crates are now intermediate, not final
alexcrichton Jul 18, 2016
9659073
Require #[macro_use] on macro crates for now
alexcrichton Jul 18, 2016
4b052f8
Add version drawback and clarify another
alexcrichton Jul 18, 2016
00e6ec0
Don't pass around `&mut Context`
alexcrichton Jul 18, 2016
a88bfbb
Add named-field-puns RFC draft
ranweiler Jul 19, 2016
46a33d3
Wrap words
ranweiler Jul 19, 2016
f8e50c5
Caption example usage in summary
ranweiler Jul 19, 2016
bd201d6
Remove non-technical use of the word "type"
ranweiler Jul 19, 2016
96bcd13
Tweak adjective
ranweiler Jul 19, 2016
379e50a
Emphasize precedent and symmetry when assessing macros
ranweiler Jul 19, 2016
f9827d1
Fix field names in example
ranweiler Jul 19, 2016
5b441ff
Remove mentions of old attributes
alexcrichton Jul 19, 2016
8c307c1
Use "similar" to avoid conflation with senses of "shared"
ranweiler Jul 19, 2016
293adaf
Expand a bit and add index methods to trait
sfackler Jul 19, 2016
66b2a82
Add subsections to "Alternatives" section
ranweiler Jul 20, 2016
7cfd7e9
Add subsection for sigil alternative
ranweiler Jul 20, 2016
42f4035
Explicit type punning alternative.
Havvy Jul 20, 2016
673da42
Merge pull request #1 from Havvy/patch-1
ranweiler Jul 20, 2016
2fa187d
Add a note about what "no hygiene" means
alexcrichton Jul 20, 2016
7d89142
Update the RFC with discussion from the comment thread
nrc Jul 21, 2016
f671c20
propose the docs team
steveklabnik Jul 21, 2016
15e41ad
some feedback from other team members
steveklabnik Jul 21, 2016
57b6ffc
Merge remote-tracking branch 'SergioBenitez/master'
nikomatsakis Jul 22, 2016
6a46363
RFC #1559 is "Allow all literals in attributes"
nikomatsakis Jul 22, 2016
ec7f3b1
Add subsections to "Detailed design" section
ranweiler Jul 23, 2016
23b9194
Fix EOF newline
ranweiler Jul 23, 2016
7016ba9
Add description of formal grammar change
ranweiler Jul 23, 2016
6098278
More changes
nrc Jul 26, 2016
d795e41
remove empty bullet
nikomatsakis Jul 26, 2016
b8ae71c
add a note about how the team is intended as a temporary
nikomatsakis Jul 26, 2016
af2a82c
Merge pull request #1599 from sgrif/patch-1
aturon Jul 26, 2016
055c500
Fix type names in motivation/microbenchmark.
Stebalien Jul 27, 2016
c697b6a
Add unresolved question about removal of the Fuse::done unnecessary f…
Stebalien Jul 27, 2016
4809190
Introduce non-panicking borrow methods on `RefCell<T>`
nox Jun 27, 2016
8967540
Merge branch 'try-borrow' of https://github.com/nox/rust-rfcs
alexcrichton Jul 27, 2016
8f3ef24
RFC 1660 is RefCell::{try_borrow, try_borrow_mut}
alexcrichton Jul 27, 2016
680ee79
add debug_assert_ne to proposal
ashleygwilliams Jul 27, 2016
726547c
Merge branch 'assert_ne' of https://github.com/ashleygwilliams/rfcs
alexcrichton Jul 27, 2016
9d39535
RFC 1653 is an `assert_ne` macro
alexcrichton Jul 27, 2016
8c54f19
Merge remote-tracking branch 'Amanieu/int128'
nikomatsakis Jul 29, 2016
d218355
RFC 1504 is 128-bit integer support
nikomatsakis Jul 29, 2016
448b578
Merge branch 'master' of github.com:rust-lang/rfcs
nikomatsakis Jul 29, 2016
e33b529
Merge remote-tracking branch 'Amanieu/global_asm'
nikomatsakis Jul 29, 2016
83116f4
RFC 1548 is global-asm
nikomatsakis Jul 29, 2016
fb3e610
Merge remote-tracking branch 'nrc/name-resolution'
nikomatsakis Jul 29, 2016
6e83182
RFC 1560 is name resolution
nikomatsakis Jul 29, 2016
f359dd8
Merge pull request #1663 from joshtriplett/union-drop
nikomatsakis Jul 29, 2016
7dd371b
amendment
nikomatsakis Jul 29, 2016
851614d
Merge remote-tracking branch 'canndrew/bang_type'
nikomatsakis Jul 29, 2016
773cbfb
RFC 1216 is promote ! to a type
nikomatsakis Jul 29, 2016
b332a92
RFC for mem::discriminant()
durka Aug 1, 2016
597d1e5
write RFC
durka Aug 1, 2016
e5c9852
remove Reflect bound
durka Aug 1, 2016
960657a
fix minor typo: s/NonZero/Zeroable
liigo Aug 2, 2016
43a578d
Merge pull request #1698 from liigo/patch-2
alexcrichton Aug 2, 2016
95579ff
updates from discussion
steveklabnik Aug 3, 2016
d9626d9
Remove RFCs whose tracking issues are closed
pthariensflame Aug 4, 2016
20ffd8c
Add Match type and drop some iterators.
BurntSushi Aug 5, 2016
7e365b4
Merge pull request #1704 from pthariensflame/trim-rfc-list
alexcrichton Aug 5, 2016
cf5513e
Add outline, clarify document structure.
chriskrycho Aug 9, 2016
86ac17c
RFC 1683 is "Propose the docs team"
steveklabnik Aug 10, 2016
4139535
Merge pull request #1683 from steveklabnik/docs-team
steveklabnik Aug 10, 2016
805c453
Add current RFCs to README list
pthariensflame Aug 8, 2016
e4e44ed
Merge pull request #1706 from pthariensflame/update-rfcs-list
aturon Aug 11, 2016
5d457b0
Merge branch 'fused' of https://github.com/Stebalien/rfcs
alexcrichton Aug 11, 2016
30b58ee
RFC 1581 is the FusedIterator marker trait
alexcrichton Aug 11, 2016
ab6c7fb
Merge branch 'atomic_access' of https://github.com/Amanieu/rfcs
alexcrichton Aug 11, 2016
f088b53
RFC 1649 is get_mut/into_inner for atomics
alexcrichton Aug 11, 2016
39aff7c
add: list of methods to be implemented as of current state of discussion
benaryorg Aug 11, 2016
b708931
Merge remote-tracking branch 'LeoTestard/master'
nikomatsakis Aug 12, 2016
467ae3c
RFC 1576 is the "literal" matcher for macros
nikomatsakis Aug 12, 2016
9a23ee2
Merge remote-tracking branch 'petrochenkov/adtkinds'
nikomatsakis Aug 12, 2016
017d661
RFC 1506 is "clarified ADT kinds"
nikomatsakis Aug 12, 2016
8a970a3
Rewrite RFC in favour of `mainCRTStartup` alternative
Diggsey Aug 13, 2016
7de8ab7
Keep the bunnies happy
Diggsey Aug 13, 2016
d08e636
draft 1
vadimcn Aug 14, 2016
967a8e9
Rename 1510-rdylib.md to 1510-cdylib.md
liigo Aug 15, 2016
41852d9
Some final clarifying points
nrc Aug 15, 2016
4e1f2c3
Merge pull request #1715 from liigo/patch-3
alexcrichton Aug 15, 2016
24229cb
Merge remote-tracking branch 'nrc/style'
nikomatsakis Aug 15, 2016
a2a6710
RFC 1607 is "Strike team for rustfmt"
nikomatsakis Aug 15, 2016
2369145
Merge remote-tracking branch 'nikomatsakis/memory-model-strike-team'
nikomatsakis Aug 15, 2016
8f5c1cd
merge RFC 1643, unsafe code guidelines
nikomatsakis Aug 15, 2016
acc572e
Fix typo in fn variance
aidanhs Aug 15, 2016
ef94b29
Merge branch 'string-get-slice' of https://github.com/sfackler/rfcs
alexcrichton Aug 16, 2016
30221dc
RFC 1679 is panic-safe slicing methods
alexcrichton Aug 16, 2016
bde7d91
fix code for method
benaryorg Aug 16, 2016
3a9cbee
Merge branch 'checked_sub' of https://github.com/benaryorg/rfcs
alexcrichton Aug 18, 2016
27fcfc0
RFC 1640 is checked methods on Duration
alexcrichton Aug 18, 2016
97d2c11
Merge remote-tracking branch 'nikomatsakis/breaking-change-policy'
nikomatsakis Aug 18, 2016
19da8c4
merge RFC 1589: rustc bug fix procedure
nikomatsakis Aug 18, 2016
2c8c3ad
Merge branch 'master' of github.com:rust-lang/rfcs
nikomatsakis Aug 18, 2016
efb139d
Merge pull request #1716 from aidanhs/aphs-fn-variance
nikomatsakis Aug 18, 2016
fa8d2f6
RFC: Enable selecting how the C runtime is linked
alexcrichton Aug 18, 2016
e9285f9
Revising crt-link
brson Aug 19, 2016
5864dd3
Merge pull request #5 from brson/crt-link
alexcrichton Aug 19, 2016
efd28c6
Resolve some TODO
alexcrichton Aug 19, 2016
104b166
More crt-link edits
brson Aug 19, 2016
46fc716
Merge pull request #6 from brson/crt-link
alexcrichton Aug 19, 2016
30f9891
Rename RFC file
alexcrichton Aug 19, 2016
5ecde0c
Update builder and iterator types.
BurntSushi Aug 21, 2016
4d676e9
mention Unicode upgrades
BurntSushi Aug 21, 2016
8434b82
fix builder definition. derp.
BurntSushi Aug 21, 2016
785a5ca
Merge remote-tracking branch 'nrc/macro-naming'
nikomatsakis Aug 22, 2016
44c24bd
Merge RFC 1561: macro naming and modularisation
nikomatsakis Aug 22, 2016
34c70d9
Merge remote-tracking branch 'llogiq/static_statics'
nikomatsakis Aug 22, 2016
ac22573
Add a number of unresolved questions
alexcrichton Aug 22, 2016
67a14dc
Update unresolved questions and drawbacks for the FusedIterator RFC
Stebalien Aug 22, 2016
a80f9be
Merge RFC 1623: static lifetime in statics
nikomatsakis Aug 22, 2016
34c174e
Merge remote-tracking branch 'alexcrichton/macros-1.1'
nikomatsakis Aug 22, 2016
35ad6c5
Add ptr::{read,write}_unaligned
Amanieu Aug 22, 2016
8207010
Merge RFC #1681: Macros 1.1
nikomatsakis Aug 22, 2016
8428b05
Merge pull request #1724 from Stebalien/fix-fused
alexcrichton Aug 22, 2016
12cba3a
add some notes about spans
nikomatsakis Aug 22, 2016
7bb153c
Merge branch 'master' of github.com:rust-lang/rfcs
nikomatsakis Aug 22, 2016
0670624
Roadmap RFC
brson Aug 8, 2016
8b98bfd
Aturon's first edit round
aturon Aug 22, 2016
a0701a2
More edits to north star RFC
brson Aug 23, 2016
c3d4f6d
Aturon's edits
aturon Aug 23, 2016
96a089a
Fix typos
brson Aug 23, 2016
0a31e73
Add another unresolved question
brson Aug 23, 2016
2832657
'why' -> 'how'
brson Aug 23, 2016
1d01c98
Remove list of active RFCs from README
alexcrichton Aug 26, 2016
7355498
Update north star RFC
brson Sep 1, 2016
bd05843
Delete stray quote char.
solson Sep 6, 2016
902e54c
Merge pull request #1741 from solson/patch-1
eddyb Sep 6, 2016
5962091
Block quote the entire style guideline example.
solson Sep 6, 2016
9216e4f
Merge pull request #1742 from solson/patch-3
eddyb Sep 6, 2016
b7ad6f1
Lifetimes in arguments may be made longer
aidanhs Aug 19, 2016
7bfa935
Fix a typo in RFC #1681
untitaker Sep 11, 2016
058d721
Fix a duplicated word
untitaker Sep 11, 2016
24c8a90
Merge pull request #1747 from untitaker/patch-1
nrc Sep 11, 2016
8f4a7d9
Merge branch 'regex-1.0' of https://github.com/BurntSushi/rfcs
alexcrichton Sep 12, 2016
3654298
RFC 1620 is Regex 1.0
alexcrichton Sep 12, 2016
2195831
Merge branch 'patch-6' of https://github.com/durka/rfcs into durka-pa…
aturon Sep 15, 2016
c7edf9b
RFC 1696 is `mem::discriminant`
aturon Sep 15, 2016
5b785bc
fix typo in RFC 1696
durka Sep 16, 2016
1f5d3a9
Merge pull request #1750 from durka/patch-8
alexcrichton Sep 16, 2016
d04dfa6
Address concerns about documentation infrastructure.
chriskrycho Sep 21, 2016
297e5b1
Address concern about “edit link".
chriskrycho Sep 21, 2016
2bfd6fd
Add note on book rewrite status.
chriskrycho Sep 21, 2016
19cf3a3
Address concern: unclear language about change reviews.
chriskrycho Sep 21, 2016
8e145ae
Address concern: remove blog post requirement.
chriskrycho Sep 21, 2016
d04b8c3
Address concern: needless inline strikeouts.
chriskrycho Sep 21, 2016
3f8ed20
Address concern: unnecessary references to “core team”.
chriskrycho Sep 21, 2016
b425e05
Rename feature to "field-init-shorthand"
ranweiler Oct 4, 2016
e9495fb
Refine rough edges wrt coercion
nagisa Oct 5, 2016
b746484
Merge pull request #2 from nagisa/loop-break-pr
dhardy Oct 5, 2016
1c2a50d
Updated based on feedback
nrc Oct 7, 2016
2ebe33c
Drop kind="abstract".
vadimcn Oct 18, 2016
d4a0fba
Clarify must/should/may around the books. Require release notes.
chriskrycho Oct 19, 2016
7dd3f11
Drop unresolved question about docs subteam: we have one!
chriskrycho Oct 19, 2016
88a745b
Improve wording and rationale. Add some placeholders.
chriskrycho Oct 19, 2016
2738cb7
Fix a couple link refs.
chriskrycho Oct 19, 2016
7ae5c6b
Address a number of concerns.
chriskrycho Oct 19, 2016
2d33ba1
Drop internal links. (They're finicky, alas.)
chriskrycho Oct 19, 2016
3ad263e
Drop extraneous link item.
chriskrycho Oct 19, 2016
3d882f9
Fix a typo; clarify some language.
chriskrycho Oct 21, 2016
05cda5e
Merge branch 'master' of https://github.com/dhardy/rfcs into dhardy-m…
aturon Oct 22, 2016
e79b229
RFC 1624 is break with values for loop
aturon Oct 22, 2016
1c784f6
Merge branch 'named-field-puns' of https://github.com/ranweiler/rfcs …
aturon Oct 22, 2016
1811b12
RFC 1682 is field init shorthand
aturon Oct 22, 2016
f5b73f0
Merge branch 'dllimport' of https://github.com/vadimcn/rfcs
alexcrichton Oct 25, 2016
060ea31
RFC 1717 is dllimport connected to #[link(kind)]
alexcrichton Oct 25, 2016
3ffd68a
Merge branch 'crt-link' of https://github.com/alexcrichton/rfcs
alexcrichton Oct 25, 2016
49f1fea
RFC 1721 is customization of CRT linkage
alexcrichton Oct 25, 2016
25e5c3b
Merge branch 'windows-subsystem' of https://github.com/Diggsey/rfcs
alexcrichton Oct 31, 2016
dd3ba8e
RFC 1665 is windows subsystem support
alexcrichton Oct 31, 2016
0253019
Differentiate between the different uses of "windows"
shepmaster Nov 3, 2016
e6ed336
Merge pull request #1784 from shepmaster/windows-proper-nouns
alexcrichton Nov 3, 2016
1a22f60
Clarify re-coercion, pidgeonhole drawback; fix typos
archshift Nov 7, 2016
756dc01
Fix a typo in RFC1201 example code
mbrubeck Nov 10, 2016
a30fc8b
Merge pull request #1788 from rust-lang/mbrubeck-patch-1
eddyb Nov 10, 2016
d8b2a73
Merge pull request #1720 from aidanhs/aphs-fn-variance-2
nikomatsakis Nov 11, 2016
7403c08
RFC #1728 is "A process for establishing the Rust roadmap"
nikomatsakis Nov 12, 2016
fdbcc5c
Merge branch 'master' of github.com:rust-lang/rfcs
nikomatsakis Nov 12, 2016
84e33e1
Add Rvalue-static-promotion RFC
Kimundi Dec 18, 2015
c2ebeaf
Add generic<T> example
Kimundi Dec 18, 2015
1d9f541
Add Drawback elobaration to the generic case
Kimundi Dec 18, 2015
db24440
Move mutable rvalue promotion to alternative section
Kimundi Nov 12, 2016
aad08e0
Merge branch 'unaligned' of https://github.com/Amanieu/rfcs
alexcrichton Nov 23, 2016
438a3ea
RFC 1725 is unaligned access via `std::ptr`
alexcrichton Nov 23, 2016
82ca93a
Merge branch 'document_all_features' of https://github.com/chriskrych…
aturon Dec 2, 2016
97944a6
RFC 1636 is Require documentation for all new features
aturon Dec 2, 2016
3813ce9
Trivial - Fix Typo in Specialization RFC
JinShil Dec 6, 2016
0af2f7a
Merge pull request #1809 from JinShil/patch-1
steveklabnik Dec 7, 2016
59e3588
Add 'How We Teach This' to template, per RFC 1636.
chriskrycho Dec 7, 2016
75bbe75
Wrap sentences to newlines in "How We Teach This"
chriskrycho Dec 7, 2016
79a8539
Roadmap for 2017
aturon Oct 21, 2016
e59d253
Clarify Additional Goals section
aturon Oct 21, 2016
31c4f92
Missing period
aturon Oct 21, 2016
097fccd
JavaScript
aturon Oct 22, 2016
a2cb436
clarity supporting areas
aturon Oct 22, 2016
c403028
Clarify production framing
aturon Oct 22, 2016
b7ac67c
Fix awkward phrasing
aturon Oct 22, 2016
1d10205
Clarify extra goals from internals
aturon Oct 22, 2016
8e737ce
Add suggestions from withoutboats
sgrif Dec 10, 2016
cac791d
Merge pull request #1810 from chriskrycho/implement-rfc-1636
aturon Dec 13, 2016
ecefe52
Merge branch 'proc-macros' of https://github.com/nrc/rfcs into nrc-pr…
aturon Dec 13, 2016
7a446f8
RFC 1566 is Procedural macros
aturon Dec 13, 2016
4f40ba0
Remove C++ goal, and refactor to 'areas of exploration'
aturon Dec 14, 2016
8b9e3ad
Fix typo
F001 Dec 16, 2016
16318db
Merge pull request #1820 from F001/patch-1
eddyb Dec 16, 2016
3e925a5
Update motivation
Amanieu Dec 22, 2016
b616749
The Rust Bookshelf
steveklabnik Dec 24, 2016
6afaf52
Trivial - RFC 0195 Associated Items - remove text copied from RFC tem…
JinShil Dec 27, 2016
90240c5
Merge pull request #1829 from JinShil/patch-1
eddyb Dec 27, 2016
cb422d7
Update 1728 text with PR # and Issue description
chriskrycho Dec 30, 2016
79c61cd
Merge pull request #1836 from chriskrycho/patch-1
alexcrichton Dec 30, 2016
d897ccb
Remove last core-team reference from 1636
chriskrycho Dec 30, 2016
600d354
Merge pull request #1838 from chriskrycho/patch-2
aturon Jan 3, 2017
c59aa27
Add cookbooks, examples and patterns
aturon Jan 5, 2017
4282843
Merge branch 'roadmap-2017' of https://github.com/aturon/rfcs into at…
aturon Jan 5, 2017
9963385
RFC 1774 is Roadmap for 2017
aturon Jan 5, 2017
8873a1a
Fix links & reveal hidden information
dwijnand Jan 6, 2017
479e1ae
Merge pull request #1846 from dwijnand/patch-1
steveklabnik Jan 6, 2017
9ccd885
Allow `Self` to appear in the where clause of trait impls (#1647)
nrc Jan 6, 2017
50d603d
RFC 1414 rvalue static promotion
nrc Jan 6, 2017
91bd051
update with details
steveklabnik Jan 7, 2017
d51becd
Include more "fn literal" alternative details, clear up language
archshift Jan 8, 2017
a0e4255
Fix typos.
DerSaidin Jan 13, 2017
a6db7a2
Merge pull request #1852 from DerSaidin/patch-1
nikomatsakis Jan 13, 2017
5c5988a
Merge branch 'movecell' of https://github.com/Amanieu/rfcs into Amani…
aturon Jan 23, 2017
849ca2f
RFC 1651 is Extend Cell to non-Copy types
aturon Jan 23, 2017
68854f4
Macros by example 2.0 (macro!)
nrc Apr 19, 2016
f6f5c41
Update the RFC
nrc Nov 11, 2016
7dcb737
Use 'declarative macro' and add note on nomenclature
nrc Jan 30, 2017
4434bb0
Merge declarative macros 2.0
nrc Jan 30, 2017
6f43d81
Fix typo (Decalrative -> Declarative)
jonas-schievink Jan 30, 2017
2a5554b
Merge pull request #1877 from jonas-schievink/patch-1
nrc Jan 30, 2017
9a72f3d
Corrected some spelling errors.
Henning-K Jan 31, 2017
8e97f9d
Merge pull request #1878 from Henning-K/patch-1
aturon Jan 31, 2017
569abdf
Update coercion definition in summary
archshift Feb 1, 2017
ecde759
Merge branch 'rust-bookshelf'
steveklabnik Feb 6, 2017
d43f4ca
RFC 1828 is "Rust Bookshelf"
steveklabnik Feb 6, 2017
ee6347e
Remove file accidentally included in text/
steveklabnik Feb 8, 2017
18a38a6
Merge branch 'closure-to-fn-coercion' of https://github.com/archshift…
aturon Feb 14, 2017
3f235e1
RFC 1558 is Allow coercing non-capturing closures to function pointers
aturon Feb 14, 2017
deaa49d
Remove duplicate word from documentation
kalisjoshua Feb 15, 2017
73a65af
Merge pull request #1900 from kalisjoshua/consistent-wording
alexcrichton Feb 15, 2017
0ba091c
Change PR to pull request
kalisjoshua Feb 16, 2017
b23226f
Merge pull request #1902 from kalisjoshua/pr-to-pull-request
alexcrichton Feb 16, 2017
4cd75a6
fix member path
king6cong Feb 21, 2017
d8d2de4
Merge pull request #1914 from king6cong/master
alexcrichton Feb 21, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
22 changes: 20 additions & 2 deletions 0000-template.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,47 @@
- Feature Name: (fill me in with a unique ident, my_awesome_feature)
- Start Date: (fill me in with today's date, YYYY-MM-DD)
- RFC PR #: (leave this empty)
- Rust Issue #: (leave this empty)
- RFC PR: (leave this empty)
- Rust Issue: (leave this empty)

# Summary
[summary]: #summary

One para explanation of the feature.

# Motivation
[motivation]: #motivation

Why are we doing this? What use cases does it support? What is the expected outcome?

# Detailed design
[design]: #detailed-design

This is the bulk of the RFC. Explain the design in enough detail for somebody familiar
with the language to understand, and for somebody familiar with the compiler to implement.
This should get into specifics and corner-cases, and include examples of how the feature is used.

# How We Teach This
[how-we-teach-this]: #how-we-teach-this

What names and terminology work best for these concepts and why?
How is this idea best presented—as a continuation of existing Rust patterns, or as a wholly new one?

Would the acceptance of this proposal change how Rust is taught to new users at any level?
How should this feature be introduced and taught to existing Rust users?

What additions or changes to the Rust Reference, _The Rust Programming Language_, and/or _Rust by Example_ does it entail?

# Drawbacks
[drawbacks]: #drawbacks

Why should we *not* do this?

# Alternatives
[alternatives]: #alternatives

What other designs have been considered? What is the impact of not doing this?

# Unresolved questions
[unresolved]: #unresolved-questions

What parts of the design are still TBD?
281 changes: 234 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,78 +1,265 @@
# Rust RFCs
[Rust RFCs]: #rust-rfcs

Many changes, including bug fixes and documentation improvements can be
Many changes, including bug fixes and documentation improvements can be
implemented and reviewed via the normal GitHub pull request workflow.

Some changes though are "substantial", and we ask that these be put
through a bit of a design process and produce a consensus among the Rust
community and the [core team].
Some changes though are "substantial", and we ask that these be put
through a bit of a design process and produce a consensus among the Rust
community and the [sub-team]s.

The "RFC" (request for comments) process is intended to provide a
consistent and controlled path for new features to enter the language
and standard libraries, so that all stakeholders can be confident about
consistent and controlled path for new features to enter the language
and standard libraries, so that all stakeholders can be confident about
the direction the language is evolving in.

## Table of Contents
[Table of Contents]: #table-of-contents
* [Opening](#rust-rfcs)
* [Table of Contents]
* [When you need to follow this process]
* [Before creating an RFC]
* [What the process is]
* [The role of the shepherd]
* [The RFC life-cycle]
* [Reviewing RFC's]
* [Implementing an RFC]
* [RFC Postponement]
* [Help this is all too informal!]


## When you need to follow this process
[When you need to follow this process]: #when-you-need-to-follow-this-process

You need to follow this process if you intend to make "substantial"
changes to the Rust distribution. What constitutes a "substantial"
change is evolving based on community norms, but may include the following.
You need to follow this process if you intend to make "substantial" changes to
Rust, Cargo, Crates.io, or the RFC process itself. What constitutes a
"substantial" change is evolving based on community norms and varies depending
on what part of the ecosystem you are proposing to change, but may include the
following.

- Any semantic or syntactic change to the language that is not a bugfix.
- Changes to the interface between the compiler and libraries,
including lang items and intrinsics.
- Additions to `std`
- Removing language features, including those that are feature-gated.
- Changes to the interface between the compiler and libraries, including lang
items and intrinsics.
- Additions to `std`.

Some changes do not require an RFC:

- Rephrasing, reorganizing, refactoring, or otherwise "changing shape
- Rephrasing, reorganizing, refactoring, or otherwise "changing shape
does not change meaning".
- Additions that strictly improve objective, numerical quality
criteria (warning removal, speedup, better platform coverage, more
- Additions that strictly improve objective, numerical quality
criteria (warning removal, speedup, better platform coverage, more
parallelism, trap more errors, etc.)
- Additions only likely to be _noticed by_ other developers-of-rust,
- Additions only likely to be _noticed by_ other developers-of-rust,
invisible to users-of-rust.

If you submit a pull request to implement a new feature without going
through the RFC process, it may be closed with a polite request to
If you submit a pull request to implement a new feature without going
through the RFC process, it may be closed with a polite request to
submit an RFC first.

For more details on when an RFC is required, please see the following specific
guidelines, these correspond with some of the Rust community's
[sub-teams](http://www.rust-lang.org/team.html):

* [language changes](lang_changes.md),
* [library changes](libs_changes.md),
* [compiler changes](compiler_changes.md).


## Before creating an RFC
[Before creating an RFC]: #before-creating-an-rfc

A hastily-proposed RFC can hurt its chances of acceptance. Low quality
proposals, proposals for previously-rejected features, or those that
don't fit into the near-term roadmap, may be quickly rejected, which
can be demotivating for the unprepared contributor. Laying some
groundwork ahead of the RFC can make the process smoother.

Although there is no single way to prepare for submitting an RFC, it
is generally a good idea to pursue feedback from other project
developers beforehand, to ascertain that the RFC may be desirable:
having a consistent impact on the project requires concerted effort
toward consensus-building.

The most common preparations for writing and submitting an RFC include
talking the idea over on #rust-internals, filing and discusssing ideas
on the [RFC issue tracker][issues], and occasionally posting
'pre-RFCs' on [the developer discussion forum][discuss] for early
review.

As a rule of thumb, receiving encouraging feedback from long-standing
project developers, and particularly members of the relevant [sub-team]
is a good indication that the RFC is worth pursuing.

[issues]: https://github.com/rust-lang/rfcs/issues
[discuss]: http://internals.rust-lang.org/


## What the process is
[What the process is]: #what-the-process-is

In short, to get a major feature added to Rust, one must first get the
RFC merged into the RFC repo as a markdown file. At that point the RFC
is 'active' and may be implemented with the goal of eventual inclusion
In short, to get a major feature added to Rust, one must first get the
RFC merged into the RFC repo as a markdown file. At that point the RFC
is 'active' and may be implemented with the goal of eventual inclusion
into Rust.

* Fork the RFC repo http://github.com/rust-lang/rfcs
* Copy `0000-template.md` to `active/0000-my-feature.md` (where
'my-feature' is descriptive. don't assign an RFC number yet).
* Fill in the RFC
* Submit a pull request. The pull request is the time to get review of
the design from the larger community.
* Build consensus and integrate feedback. RFCs that have broad support
are much more likely to make progress than those that don't receive any
comments.
* Eventually, somebody on the [core team] will either accept the RFC by
merging the pull request and assigning the RFC a number, at which point
the RFC is 'active', or reject it by closing the pull request.

Once an RFC becomes active then authors may implement it and submit the
feature as a pull request to the Rust repo. An 'active' is not a rubber
stamp, and in particular still does not mean the feature will ultimately
be merged; it does mean that in principle all the major stakeholders
have agreed to the feature and are amenable to merging it.

Modifications to active RFC's can be done in followup PR's. An RFC that
makes it through the entire process to implementation is considered
'complete' and is moved to the 'complete' folder; an RFC that fails
after becoming active is 'inactive' and moves to the 'inactive' folder.
* Copy `0000-template.md` to `text/0000-my-feature.md` (where 'my-feature' is
descriptive. don't assign an RFC number yet).
* Fill in the RFC. Put care into the details: RFCs that do not present
convincing motivation, demonstrate understanding of the impact of the design, or
are disingenuous about the drawbacks or alternatives tend to be poorly-received.
* Submit a pull request. As a pull request the RFC will receive design feedback
from the larger community, and the author should be prepared to revise it in
response.
* Each pull request will be labeled with the most relevant [sub-team].
* Each sub-team triages its RFC pull requests. The sub-team will either close
the pull request (for RFCs that clearly will not be accepted) or assign it a
*shepherd*. The shepherd is a trusted developer who is familiar with the RFC
process, who will help to move the RFC forward, and ensure that the right people
see and review it.
* Build consensus and integrate feedback. RFCs that have broad support are much
more likely to make progress than those that don't receive any comments. The
shepherd assigned to your RFC should help you get feedback from Rust developers
as well.
* The shepherd may schedule meetings with the author and/or relevant
stakeholders to discuss the issues in greater detail.
* The sub-team will discuss the RFC pull request, as much as possible in the
comment thread of the pull request itself. Offline discussion will be summarized
on the pull request comment thread.
* RFCs rarely go through this process unchanged, especially as alternatives and
drawbacks are shown. You can make edits, big and small, to the RFC to
clarify or change the design, but make changes as new commits to the pull
request, and leave a comment on the pull request explaining your changes.
Specifically, do not squash or rebase commits after they are visible on the pull
request.
* Once both proponents and opponents have clarified and defended positions and
the conversation has settled, the RFC will enter its *final comment period*
(FCP). This is a final opportunity for the community to comment on the pull
request and is a reminder for all members of the sub-team to be aware of the
RFC.
* The FCP lasts one week. It may be extended if consensus between sub-team
members cannot be reached. At the end of the FCP, the [sub-team] will either
accept the RFC by merging the pull request, assigning the RFC a number
(corresponding to the pull request number), at which point the RFC is 'active',
or reject it by closing the pull request. How exactly the sub-team decide on an
RFC is up to the sub-team.


## The role of the shepherd
[The role of the shepherd]: #the-role-of-the-shepherd

During triage, every RFC will either be closed or assigned a shepherd from the
relevant sub-team. The role of the shepherd is to move the RFC through the
process. This starts with simply reading the RFC in detail and providing initial
feedback. The shepherd should also solicit feedback from people who are likely
to have strong opinions about the RFC. When this feedback has been incorporated
and the RFC seems to be in a steady state, the shepherd and/or sub-team leader
will announce an FCP. In general, the idea here is to "front-load" as much of
the feedback as possible before the point where we actually reach a decision -
by the end of the FCP, the decision on whether or not to accept the RFC should
usually be obvious from the RFC discussion thread. On occasion, there may not be
consensus but discussion has stalled. In this case, the relevant team will make
a decision.


## The RFC life-cycle
[The RFC life-cycle]: #the-rfc-life-cycle

Once an RFC becomes active then authors may implement it and submit
the feature as a pull request to the Rust repo. Being 'active' is not
a rubber stamp, and in particular still does not mean the feature will
ultimately be merged; it does mean that in principle all the major
stakeholders have agreed to the feature and are amenable to merging
it.

Furthermore, the fact that a given RFC has been accepted and is
'active' implies nothing about what priority is assigned to its
implementation, nor does it imply anything about whether a Rust
developer has been assigned the task of implementing the feature.
While it is not *necessary* that the author of the RFC also write the
implementation, it is by far the most effective way to see an RFC
through to completion: authors should not expect that other project
developers will take on responsibility for implementing their accepted
feature.

Modifications to active RFC's can be done in follow-up pull requests. We strive
to write each RFC in a manner that it will reflect the final design of
the feature; but the nature of the process means that we cannot expect
every merged RFC to actually reflect what the end result will be at
the time of the next major release.

In general, once accepted, RFCs should not be substantially changed. Only very
minor changes should be submitted as amendments. More substantial changes should
be new RFCs, with a note added to the original RFC. Exactly what counts as a
"very minor change" is up to the sub-team to decide. There are some more
specific guidelines in the sub-team RFC guidelines for the [language](lang_changes.md),
[libraries](libs_changes.md), and [compiler](compiler_changes.md).


## Reviewing RFC's
[Reviewing RFC's]: #reviewing-rfcs

While the RFC pull request is up, the shepherd may schedule meetings with the
author and/or relevant stakeholders to discuss the issues in greater
detail, and in some cases the topic may be discussed at a sub-team
meeting. In either case a summary from the meeting will be
posted back to the RFC pull request.

A sub-team makes final decisions about RFCs after the benefits and drawbacks are
well understood. These decisions can be made at any time, but the sub-team will
regularly issue decisions. When a decision is made, the RFC pull request will
either be merged or closed. In either case, if the reasoning is not clear from
the discussion in thread, the sub-team will add a comment describing the
rationale for the decision.


## Implementing an RFC
[Implementing an RFC]: #implementing-an-rfc

Some accepted RFC's represent vital features that need to be
implemented right away. Other accepted RFC's can represent features
that can wait until some arbitrary developer feels like doing the
work. Every accepted RFC has an associated issue tracking its
implementation in the Rust repository; thus that associated issue can
be assigned a priority via the triage process that the team uses for
all issues in the Rust repository.

The author of an RFC is not obligated to implement it. Of course, the
RFC author (like any other developer) is welcome to post an
implementation for review after the RFC has been accepted.

If you are interested in working on the implementation for an 'active'
RFC, but cannot determine if someone else is already working on it,
feel free to ask (e.g. by leaving a comment on the associated issue).


## RFC Postponement
[RFC Postponement]: #rfc-postponement

Some RFC pull requests are tagged with the 'postponed' label when they are
closed (as part of the rejection process). An RFC closed with “postponed” is
marked as such because we want neither to think about evaluating the proposal
nor about implementing the described feature until some time in the future, and
we believe that we can afford to wait until then to do so. Historically,
"postponed" was used to postpone features until after 1.0. Postponed pull
requests may be re-opened when the time is right. We don't have any formal
process for that, you should ask members of the relevant sub-team.

Usually an RFC pull request marked as “postponed” has already passed
an informal first round of evaluation, namely the round of “do we
think we would ever possibly consider making this change, as outlined
in the RFC pull request, or some semi-obvious variation of it.” (When
the answer to the latter question is “no”, then the appropriate
response is to close the RFC, not postpone it.)


### Help this is all too informal!
[Help this is all too informal!]: #help-this-is-all-too-informal

The process is intended to be as lightweight as reasonable for the
present circumstances. As usual, we are trying to let the process be
driven by consensus and community norms, not impose more structure than
The process is intended to be as lightweight as reasonable for the
present circumstances. As usual, we are trying to let the process be
driven by consensus and community norms, not impose more structure than
necessary.

[core team]: https://github.com/mozilla/rust/wiki/Note-core-team
[sub-team]: http://www.rust-lang.org/team.html
Loading