Skip to content

Instantly share code, notes, and snippets.

@ashleygwilliams
Last active November 29, 2018 22:37
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 ashleygwilliams/f19a5ee6719f35d20eef182c6d64a95b to your computer and use it in GitHub Desktop.
Save ashleygwilliams/f19a5ee6719f35d20eef182c6d64a95b to your computer and use it in GitHub Desktop.
  • So make it possible to add this feature, we need to add both async and await as keywords. But we also have to be careful that we’re not making old code invalid… code that might’ve used the words async or await as variable names. So we’re adding the keywords as part of Rust 2018. Even though the feature hasn’t landed yet, the keywords are now reserved.
  • So make it possible to add this feature, Rust needs to add both async and await as keywords. But Rust also has to be careful that it's not making old code invalid… code that might’ve used the words async or await as variable names. So Rust is adding the keywords as part of Rust 2018. Even though the feature hasn’t landed yet, the keywords are now reserved.

--

  • In our minds, it’s the second.
  • For Rust, it's the second.

--

  • Because of this, we knew we didn’t just need to make Rust as a language or Rust tooling better. We also needed to make it easier to use Rust in particular domains.
  • Because of this, the Rust team knew it didn’t just need to make Rust as a language or Rust tooling better. The team also needed to make it easier to use Rust in particular domains.

--

  • For embedded development, we needed to make existing functionality stable.
  • For embedded development, the Rust needed to make existing functionality stable.

--

  • To fix this, we needed to make sure that necessary features were in the stable channel. We also had to add tests to the CI system for micro-controller targets.
  • To fix this, the team needed to make sure that necessary features were in the stable channel. The team also had to add tests to the CI system for micro-controller targets.

--

  • With this year’s push, we have really good support for ARM Cortex-M family of microprocessor cores, which is used in a lot of devices. However, there are lots of architectures used on embedded devices, and those aren’t as well supported. We need to expand to have the same level of support for these other architectures.
  • With this year’s push, Rust has really good support for ARM Cortex-M family of microprocessor cores, which is used in a lot of devices. However, there are lots of architectures used on embedded devices, and those aren’t as well supported. Rust needs to expand to have the same level of support for these other architectures.

--

  • For networking, we needed to find common abstractions that could be shared between different frameworks. Then we needed to turn them into solidly engineered, reusable components and primitives.
  • For networking, the team needed to find common abstractions that could be shared between different frameworks. Then the team needed to turn them into solidly engineered, reusable components and primitives.

--

  • Some of the components and primitives we identifed are:
  • Some of the components and primitives the team identifed are:

--

  • For command line tools, we needed to bring together smaller, low-level libraries into higher level abstractions, and polish some existing tools.
  • For command line tools, the working group needed to bring together smaller, low-level libraries into higher level abstractions, and polish some existing tools.

--

  • What did we need to make this better yet?
  • What did the working group need to make this better yet?

--

  • We’ve abstracted away a lot of different tasks that are common between CLIs. But there’s still more that could be abstracted away.
  • The working group has abstracted away a lot of different tasks that are common between CLIs. But there’s still more that could be abstracted away.

--

  • To support IDEs, we need tools that can tell the IDE what Rust code actually means — for example, to tell the IDE what strings make sense for code competition.
  • To support IDEs, Rust needs tools that can tell the IDE what Rust code actually means — for example, to tell the IDE what strings make sense for code competition.

--

  • With compilation, faster means more productive. So we’ve made the compiler faster.
  • With compilation, faster means more productive. So the Rust teams have made the compiler faster.

--

  • One big pain point for developers learning Rust is the module system. And we could see why.
  • One big pain point for developers learning Rust is the module system. And the Rust team could see why.

--

  • To fix this, we made a few changes to the way paths work in Rust.
  • To fix this, the team made a few changes to the way paths work in Rust.

--

  • We’ve made this more explicit.
  • The Rust team has made this more explicit.

--

  • To fix this, we’ve made the borrow checker smarter.
  • To fix this, the team has made the borrow checker smarter.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment