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

2018 roadmap #231

Merged
merged 3 commits into from
Mar 12, 2018
Merged

2018 roadmap #231

merged 3 commits into from
Mar 12, 2018

Conversation

aturon
Copy link
Member

@aturon aturon commented Mar 6, 2018

No description provided.

@aturon
Copy link
Member Author

aturon commented Mar 6, 2018

cc @rust-lang/core

Copy link
Member

@steveklabnik steveklabnik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good, just a few comments

---
layout: post
title: "Rust's 2018 roadmap"
author: "Aaron Turon"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i don't want to say this is not by you, but should it be "from the core team?"

I don't care a ton, but something to think about.


We will continue to publish releases every six weeks as usual. But we will
designate a release in the latter third of the year (Rust 1.29 - 1.31) as the
beginning of the Rust 2018 epoch. This “epoch release” will be the culmination
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW, I have been running the "era" wording past some people and they all vastly preferred it to "epoch"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting! I like "era" as well, because it more strongly conveys the idea of a period of time rather than a point in time. "epoch" can mean that in the archaeology sense, but because of the use of "epoch" in computing (January 1, 1970), there's also a feeling of "point in time" or "start of a new point in time" instead. "era" doesn't have that problem.

_both_ fresh and re-builds. Compiler performance should not be an obstacle to
productivity in Rust 2018.


Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✂️ the excessive whitespace

the epoch release.

[Cargo build system integration]: https://github.com/rust-lang/rfcs/pull/2136
[Xargo integration]: https://github.com/japaric/xargo
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think this should link to rust-lang/cargo#4959, as it's way less confusing

specific domains of use. We’ve selected four such domains to invest in and
highlight this year:

- **Network services**. Rust’s reliability and low footprint make it an
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we link these names to their announcement posts, so if people want to get involved they have a foot in the door?

Copy link
Member

@Mark-Simulacrum Mark-Simulacrum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left some nits. I sort of feel like it's missing something, but can't quite say what. Maybe a reflection on what we've already done? Otherwise though it looks great.


## Entering the Rust 2018 epoch

**This year, we will deliver _Rust 2018_, marking the first new era in Rust programming since 1.0**.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can say "1.0, or Rust 2015”? That way it'll be easier to discuss this.

of feature stabilization throughout the year, and will ship with polished
documentation, tooling, and libraries that tie in to those features.

The idea of “epochs” is to signify major steps in Rust’s evolution, where a
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, I thought we might be switching to "era" over epochs...

### Compatibility across epochs

**TL;DR: Rust will continue its stability guarantee
of [hassle-free updates to new versions][stability]**.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure how this will render, but it looks somewhat odd.


[stability]: https://blog.rust-lang.org/2014/10/30/Stability.html

Epochs will have a meaning for the compiler. You will be able to write:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should be consistent with epoch/era...

epoch = "2018"
```

in your Cargo.toml to _opt in_ to the new epoch for your crate. Doing so may
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did we decide on a flag for rustc? Otherwise I think we'll get pushback from people who want to not use cargo.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cargo will indeed pass -C epoch=2018 to rustc (currently -Zepoch=2018)

Rust], reaching print as well.

[trpl]: https://doc.rust-lang.org/nightly/book/second-edition/
[Programming Rust]: https://www.google.com/search?q=programming+rust&ie=utf-8&oe=utf-8&client=firefox-b-1-ab
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like the wrong URL?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code). We will continue to improve Cargo by stabilizing custom registries,
public dependencies, and a revised profile system. We’re also expecting further
work on [Cargo build system integration], [Xargo integration], and [custom test
frameworks], though it’s unclear as yet which of these will be complete prior to
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which -> how many, let's be positive

produce static binaries come together to great effect for writing CLI apps.
- **WebAssembly**. The “wasm” web standard allows shipping native-like binaries
to all major browsers, but GC support is still years away. Rust
is [extremely well positioned](https://mgattozzi.com/rust-wasm) to target this
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, I feel like maybe a more "official" post might be better? Maybe we can promote this to blog.r-l.o at least for url stability reasons?

- **Ecosystem** WG: We'll be providing guidance and support to important crates throughout the ecosystem. Drop into the [WG-ecosystem room](https://gitter.im/rust-lang/WG-ecosystem) and we'll guide you to places that need help!
- **Dev Tools Team**. There are always interesting things to tackle with developer tools (IDEs, rustdoc, Clippy, Rustfmt, custom test frameworks, and more). Drop in to [#rust-dev-tools](https://paper.dropbox.com/?q=%23rust-dev-tools) and have a chat with the team!
- **Rustdoc Team**. With your help, we can make documentation better for everyone. Come join us in #rustdoc on IRC, and we can help you get started!
- **Release team**. Drop by [#rust-release](https://paper.dropbox.com/?q=%23rust-release) on IRC to get involved with regression triage and release production!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the wrong URL, and I'd probably avoid linking this at all perhaps.

- **Ecosystem** WG: We'll be providing guidance and support to important crates throughout the ecosystem. Drop into the [WG-ecosystem room](https://gitter.im/rust-lang/WG-ecosystem) and we'll guide you to places that need help!
- **Dev Tools Team**. There are always interesting things to tackle with developer tools (IDEs, rustdoc, Clippy, Rustfmt, custom test frameworks, and more). Drop in to [#rust-dev-tools](https://paper.dropbox.com/?q=%23rust-dev-tools) and have a chat with the team!
- **Rustdoc Team**. With your help, we can make documentation better for everyone. Come join us in #rustdoc on IRC, and we can help you get started!
- **Release team**. Drop by [#rust-release](https://paper.dropbox.com/?q=%23rust-release) on IRC to get involved with regression triage and release production!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The IRC links here point to Dropbox Paper >_>

@@ -0,0 +1,221 @@
---
layout: post
title: "Rust's 2018 roadmap"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ultimate nit of all nits: This could have a nice unicode quotation mark, the same one that’s in the first heading two-three lines below :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is actually a yaml document, so the should be ascii quotation marks.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The apostrophe is what I had in mind. It should not be a part of YAML syntax.

Copy link
Member

@nrc nrc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. One thing that kind of bothered me is that what is a goal for 2018 and what is a goal for the 2018 epoch is a bit blurred and it surprised me a bit when reading. I think it would be good to either say explicitly that they are the same thing, or to be a bit stricter about what is an epoch goal, and what is not.

## Community

**Connect and empower Rust's global community**. We will pursue
internationalization (specifically: translation) as a first-class concern, and
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"internationalization (specifically: translation)" is not very clear to me - do you mean adding internationalisation support to the language to facilitate translation or internationalising things like compiler messages and documentation by translating them?

- **CLI WG**. Writing CLI apps in Rust should be a frictionless experience – from finding the right libraries and writing concise integration tests up to cross-platform distribution. Join us at [https://github.com/rust-lang-nursery/cli-wg](https://github.com/rust-lang-nursery/cli-wg) and help us reach that goal!
- **Embedded Devices WG**. Quality, productivity, accessibility: Rust can change the embedded industry for the better. Let's get this process started in 2018! Join us at [https://github.com/rust-lang-nursery/embedded-wg](https://github.com/rust-lang-nursery/embedded-wg)
- **Ecosystem** WG: We'll be providing guidance and support to important crates throughout the ecosystem. Drop into the [WG-ecosystem room](https://gitter.im/rust-lang/WG-ecosystem) and we'll guide you to places that need help!
- **Dev Tools Team**. There are always interesting things to tackle with developer tools (IDEs, rustdoc, Clippy, Rustfmt, custom test frameworks, and more). Drop in to [#rust-dev-tools](https://paper.dropbox.com/?q=%23rust-dev-tools) and have a chat with the team!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should add Cargo to the list of tools to work on


### Tooling improvements

Rust 2018 will see high quality 1.0 releases of the RLS (underlying much of our
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggest:

Rust Language Server (RLS)

instead of just "RLS".

### Tooling improvements

Rust 2018 will see high quality 1.0 releases of the RLS (underlying much of our
IDE integration story) and rustfmt (a standard formatting tool for Rust
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should "rustfmt" be in a <code>, like rustfmt?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both "RLS" and "rustfmt" could use links to satisfy people's curiosity as to the scope of the projects.

- **WebAssembly WG**. Compiling Rust to WebAssembly should be _the_ best choice for fast code on the Web. Check out [rust-lang-nursery/rust-wasm](https://github.com/rust-lang-nursery/rust-wasm) to learn more and get involved!
- **CLI WG**. Writing CLI apps in Rust should be a frictionless experience – from finding the right libraries and writing concise integration tests up to cross-platform distribution. Join us at [https://github.com/rust-lang-nursery/cli-wg](https://github.com/rust-lang-nursery/cli-wg) and help us reach that goal!
- **Embedded Devices WG**. Quality, productivity, accessibility: Rust can change the embedded industry for the better. Let's get this process started in 2018! Join us at [https://github.com/rust-lang-nursery/embedded-wg](https://github.com/rust-lang-nursery/embedded-wg)
- **Ecosystem** WG: We'll be providing guidance and support to important crates throughout the ecosystem. Drop into the [WG-ecosystem room](https://gitter.im/rust-lang/WG-ecosystem) and we'll guide you to places that need help!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other "WG"s are bold, but this one is not.

Rust], reaching print as well.

[trpl]: https://doc.rust-lang.org/nightly/book/second-edition/
[Programming Rust]: https://www.google.com/search?q=programming+rust&ie=utf-8&oe=utf-8&client=firefox-b-1-ab
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- **Ownership system improvements**, including making borrowing more flexible
via “non-lexical lifetimes”, improved pattern matching integration, and
more.
- **Trait system improvements**, including the long-awaited impl Trait syntax
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe put "impl Trait" in back ticks

[blitz]: https://blog.rust-lang.org/2017/05/05/libz-blitz.html
[Rust API guidelines book]: https://github.com/rust-lang-nursery/api-guidelines

**Web site improvements**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this be a 2nd level headline, too?

irc.mozilla.org network.

- **WebAssembly WG**. Compiling Rust to WebAssembly should be _the_ best choice for fast code on the Web. Check out [rust-lang-nursery/rust-wasm](https://github.com/rust-lang-nursery/rust-wasm) to learn more and get involved!
- **CLI WG**. Writing CLI apps in Rust should be a frictionless experience – from finding the right libraries and writing concise integration tests up to cross-platform distribution. Join us at [https://github.com/rust-lang-nursery/cli-wg](https://github.com/rust-lang-nursery/cli-wg) and help us reach that goal!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you fix the double space and adjust the link to [rust-lang-nursery/cli-wg](https://github.com/rust-lang-nursery/cli-wg)? Thanks! :)

- **WebAssembly WG**. Compiling Rust to WebAssembly should be _the_ best choice for fast code on the Web. Check out [rust-lang-nursery/rust-wasm](https://github.com/rust-lang-nursery/rust-wasm) to learn more and get involved!
- **CLI WG**. Writing CLI apps in Rust should be a frictionless experience – from finding the right libraries and writing concise integration tests up to cross-platform distribution. Join us at [https://github.com/rust-lang-nursery/cli-wg](https://github.com/rust-lang-nursery/cli-wg) and help us reach that goal!
- **Embedded Devices WG**. Quality, productivity, accessibility: Rust can change the embedded industry for the better. Let's get this process started in 2018! Join us at [https://github.com/rust-lang-nursery/embedded-wg](https://github.com/rust-lang-nursery/embedded-wg)
- **Ecosystem** WG: We'll be providing guidance and support to important crates throughout the ecosystem. Drop into the [WG-ecosystem room](https://gitter.im/rust-lang/WG-ecosystem) and we'll guide you to places that need help!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WG not bold (inconsistent)

- **Trait system improvements**, including the long-awaited impl Trait syntax
for dealing with types abstractly.
- **Module system improvements**, focused on increasingly clarity and reducing
complexity.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The non-marketing version: Experimentation with module system is happening, nobody knows how it will affect learnability, clarity and complexity.

@sophiajt
Copy link
Contributor

sophiajt commented Mar 7, 2018

Just to copy over a comment from an earlier draft: would love to see sample code in here. This roadmap gives us a chance to jump start people looking forward to the epoch, and to catch the eye of people who haven't seen Rust in a while.

Let's show 'em what it'll be able to do 😄

- **Network services**. Rust’s reliability and low footprint make it an
excellent match for network services and infrastructure, especially at high
scale.
- **CLI apps**. Rust’s portability, reliability, ergonomics, and ability to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's expand CLI before we use the acronym, as not everyone will be familiar with it

IDE integration story) and rustfmt (a standard formatting tool for Rust
code). We will continue to improve Cargo by stabilizing custom registries,
public dependencies, and a revised profile system. We’re also expecting further
work on [Cargo build system integration], [Xargo integration], and [custom test
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "Xargo integration" is going to be a merger right? Maybe "merging with Xargo".

@aturon
Copy link
Member Author

aturon commented Mar 7, 2018

https://internals.rust-lang.org/t/epoch-vs-era/6941 re: epoch/era naming.

programming support.

In addition, we anticipate a few more major features to stabilize prior to the
epoch release, including **SIMD**, **custom allocators**, and **macros 2.0**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These bolded terms might be asking for links to RFCs/tracking issues.

[Programming Rust]: https://www.google.com/search?q=programming+rust&ie=utf-8&oe=utf-8&client=firefox-b-1-ab
[Rust By Example]: https://rustbyexample.com/

**Language improvements**
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be "### Language improvements"

@aturon
Copy link
Member Author

aturon commented Mar 11, 2018

I've pushed an update which addresses the vast majority of comments here, and renames from "epoch" to "edition".

via “non-lexical lifetimes”, improved pattern matching integration, and more.
- **Trait system improvements**, including the long-awaited `impl Trait` syntax
for dealing with types abstractly.
- **Module system improvements**, focused on increasingly clarity and reducing

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/ly//

@steveklabnik steveklabnik merged commit 18c2d69 into rust-lang:gh-pages Mar 12, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.