Skip to content

Note development roadmap

Graydon Hoare edited this page Jan 6, 2012 · 1 revision

This is a high-level picture of where we're going with Rust over the medium-term. This does not include Mozilla's eventual uses for the language; merely a set of tasks, priorities and rough order that the main developers are mostly agreed on. If you don't see something on this list, or take issue with some of it, please say so!

Planned

  • Extend the runtime library. At present the runtime services are quite minimal and incomplete: thread domains are only partly functioning, process domains do not exist at all, and the logging service some of the required filtering mechanisms. Some runtime services can probably be rewritten in rust while working on this.

In Progress

  • [In Progress] Complete parts of rustc not necessary for bootstrapping but represented in the testsuite. This includes the typestate system, the tasking system, the syntactic extension system, the unwinder and the garbage collector.

  • [In Progress see Self Types and Object Types] Introduce the keyword 'self' for supporting self-types and self-dispatch in the object system as well as static "method"-like (value.function()) dispatch for non-object types. Possibly consider a looser static dispatch scheme similar to haskell typeclasses for the latter.

  • [In Progress] Develop components of a library ecosystem. This means getting the crate versioning and metadata system pinned down to a satisfactory degree, as well as putting online a registry of 3rd party installable crates and some network-enabled librarian logic, either in rustc or a separate tool.

Complete

  • [Complete] Bootstrap rustc.

  • [Complete see Compiler Snapshots] Implement a stable incompatible-feature-migration strategy for rustc.

  • [Complete] Perform the long-delayed set of "agreeable" syntax changes (mostly just tweaking keywords and literals). We've been deferring most discussion of syntax for a while, but have built up (casually, mostly off the record in private notes) a substantial set of less-contentious changes that we're expecting to discuss, find consensus on, and implement as a batch. This will involve bulk-editing all existing rust code in the repository (rustc, standard library and tests).

  • [Complete] Introduce uniquely-owned boxes and whatever semantic modifications are required to handle this addition to the memory model. Unique ownership permits several important optimizations, such as elimination of reference counting overheads and multi-threaded read access to 'pinned' data structures.

  • [Complete] Possibly introduce a form of environment-capture or anonymous function literal, if we can agree on that. This is unclear but is a regular feature-request; many people seem to dislike the current 'bind'-based closure system. We've got some design work to do here to see if we can produce something better.

All Categories:

Clone this wiki locally