Hi,
Yesterday we removed rustboot from the build cycle; you can now do a
"normal" day-to-day rustc build without ocaml or rustboot at all
(configure still sniffs for ocaml, we'll be removing that later today).
It works entirely off snapshots.
In the near term (next few weeks) I'd like to ask everyone on the team
-- at least the group working for mozilla corp! -- to focus strictly on
performance enhancement and error checks. That is: make the current
build cycle fast and stable. Rustc still takes ~5 minutes to build; we
want down to a few seconds or tens of seconds. And it's *essential* that
we establish enough error-checking machinery to avoid snapshotting
compilers that are too buggy to compile our way out of. Memory safety,
for example, is not currently very well guaranteed in rustc. A bunch of
rules aren't being enforced yet, and you can pretty easily corrupt
memory still. Not cool.
In the longer term, we ought to move as quickly as possible towards
something that is no longer "not yet suitable for users". That is, a
general (if preliminary and "pre alpha" as they say) release that people
can "just download" to tinker with, sketch library code for, run
experiments on. Obviously we're not there yet, but I suspect we can be
by (say) the end of summer or sometime in the fall. I'd like to ask
everyone with an opinion, moz corp and otherwise, to do a little mental
triage exercise on features they think such an early-release compiler
*must* have, at minimum. I'll make a list of possibilities here and note
my own choices from it.
Followup to list here, I'll tabulate, weigh preferences and try to set
some reasonable milestones in the bug tracker.
Possible features:
- Major syntax changes
- Unique pointers and move semantics
- Kind system for types, including kind-polymorphism
- Cheap "block"-like lambda syntax/semantics, for down-fnargs
- Unsafe blocks and raw pointer sublanguage
- Resource items (dtors moved out of objs)
- Unit testing harness
- Tasking system
- Thread domains (or task:thread migration)
- Typestate system working on general preds
- Static overloading or pseudomethods
- Object extension and method overriding
- Proper native calling convention
- Stack growth
- Unwinding
- Note system
- Port to x64
- Port to arm
- GC for cyclic kinds
- Debug info
- Reflection interface
- Syntax extension interface
- Static check extension interface
- Fuzz tester
- Library / package manager
- Crate APIs / export versioning
Personally I think we can ship "something" credible and interesting with
only the first 9 on this list (up to and including thread domains, which
"work" but may need quite a bit of redesign). But I can imagine wanting
some of the remainder, and suspect that the interns (and the gsoc
student on llvm!) will have something meaningful to show for the next 4
by end-of-summer anyways.
Opinions? Things I missed that you think of as essential?
-Graydon
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev