|
| 1 | +- Feature Name: `unreserve_proc` |
| 2 | +- Start Date: 2018-04-26 |
| 3 | +- RFC PR: [rust-lang/rfcs#2420](https://github.com/rust-lang/rfcs/pull/2420) |
| 4 | +- Rust Issue: N/A. Already implemented. |
| 5 | + |
| 6 | +# Summary |
| 7 | +[summary]: #summary |
| 8 | + |
| 9 | +The keyword `proc` gets unreserved. |
| 10 | + |
| 11 | +# Motivation |
| 12 | +[motivation]: #motivation |
| 13 | + |
| 14 | +We are currently not using `proc` as a keyword for anything in the language. |
| 15 | +Currently, `proc` is a reserved keyword for future use. However, we have |
| 16 | +no intention of using the keyword for anything in the future, and as such, |
| 17 | +we want to unreserve it so that rustaceans can use it as identifiers. |
| 18 | + |
| 19 | +In the specific case of `proc`, it is a useful identifier for many things. |
| 20 | +In particular, it is useful when dealing with processes, OS internals and |
| 21 | +kernel development. |
| 22 | + |
| 23 | +# Guide-level explanation |
| 24 | +[guide-level-explanation]: #guide-level-explanation |
| 25 | + |
| 26 | +See the [reference-level-explanation]. |
| 27 | + |
| 28 | +# Reference-level explanation |
| 29 | +[reference-level-explanation]: #reference-level-explanation |
| 30 | + |
| 31 | +[list of reserved keywords]: https://doc.rust-lang.org/book/second-edition/appendix-01-keywords.html#keywords-currently-in-use |
| 32 | + |
| 33 | +The keyword `proc` is removed from the [list of reserved keywords] and is no |
| 34 | +longer reserved. This is done immediately and on edition 2015. |
| 35 | + |
| 36 | +# Drawbacks |
| 37 | +[drawbacks]: #drawbacks |
| 38 | + |
| 39 | +The only drawback is that we're not able to use `proc` as a keyword in the |
| 40 | +future, without a reservation in a new edition, if we realize that we made |
| 41 | +a mistake. |
| 42 | + |
| 43 | +[arrow]: https://downloads.haskell.org/~ghc/7.8.1/docs/html/users_guide/arrow-notation.html |
| 44 | + |
| 45 | +The keyword `proc` could be used for some [`Arrow` notation][arrow] as used in |
| 46 | +Haskell. However, `proc` notation is rarely used in Haskell since `Arrow`s are |
| 47 | +not generally understood; and if something is not well understood by one of the |
| 48 | +most academically inclined of communities of users, it is doubly a bad fit for |
| 49 | +Rust which has a community mixed with users used to FP, systemsy and dynamically |
| 50 | +checked programming languages. Moreover, `Arrow`s would most likely require HKTs |
| 51 | +which we might not get. |
| 52 | + |
| 53 | +# Rationale and alternatives |
| 54 | +[alternatives]: #alternatives |
| 55 | + |
| 56 | +There's only one alternative: Not doing anything. |
| 57 | + |
| 58 | +Previously, this used to be the keyword used for `move |..| { .. }` closures, |
| 59 | +but `proc` is no longer used for anything. |
| 60 | + |
| 61 | +Not unreserving this keyword would make the word unavailable for use as an |
| 62 | +identifier. |
| 63 | + |
| 64 | +# Prior art |
| 65 | +[prior-art]: #prior-art |
| 66 | + |
| 67 | +Not applicable. |
| 68 | + |
| 69 | +# Unresolved questions |
| 70 | +[unresolved]: #unresolved-questions |
| 71 | + |
| 72 | +There are none. |
0 commit comments