[rust-dev] Student projects/internships
graydon at mozilla.com
Fri Jan 13 11:17:08 PST 2012
On 12-01-13 04:25 AM, David Rajchenbach-Teller wrote:
> Dear list,
> As some of you know, I am one of the persons in charge of relationships
> to Universities. As a big fan of Rust, I would love submitting
> Rust-related student projects and/or internships.
> From the top of my heads, I am considering the following topics, and I
> would like to hear your thoughts about them and the general idea of
> getting Rust in the hands of students:
> - writing a modern http server (or an irc server) in Rust;
> - contributing to some of the "easy" bugs;
> - getting Rust to produce Android binaries (it doesn't yet, does it?);
> - developing a web framework for Rust;
> - adding high-level bindings to a number of system-level libraries (e.g.
> - ...
> Any thoughts?
It'd help to know which time-period you're talking about; we'll be at
different maturity-levels now vs. 3, 6, 9, 12 months from now.
Writing servers, library bindings, frameworks for well-understood tasks
etc. is ... definitely work-that-needs-doing, I'd question exactly how
much value a student will get out of it. If we're considering students
as "needing practice and experience" or "inexpensive labour", then those
are, I guess, good tasks; if we're considering them as people we want to
challenge with something strange and difficult, we might want to go a
Thinking a bit more along the lines of "strange and difficult":
- An android-targeting port would be a challenge for someone who
likes the "lower" systems-level stuff: there's asm code involved,
and some spooky platform-interface stuff. Could be fun.
- I'd like the compiler to grow a bunch more syntax extensions and
pragma-like attributes. These systems are still pretty immature;
they "work" but they're hard-wired into the compiler. So I'd be
very interested in having students work on making the attribute
and syntax-extension systems work via libraries themselves, and
implementing a number of additional extensions. I have a long list
in mind and each of them is somewhat bite-sized but involves some
- Of particular near-term interest is the stuff erickt is doing
interfacing with clang. Being able to use clang to consume C/C++
"in the raw" opens up a lot of tooling possibilities.
- I had high-ish hopes for the language being relatively reflective,
a lot of these have been deferred or thrown out during the course
of our development. I'd like to revive some of them. The API for
parsing and inspecting rust ASTs is of course exposed via librustc,
but programs can't in general reflect much on themselves nor the
type-descriptors that drive some of the polymorphic system, and
the post-parse data structures (results of resolution, type and
type-state analysis) are mostly hidden or inaccessible; certainly
thrown out after compilation. We're also missing quasiquoting,
which should probably have been one of the *first* syntax
More information about the Rust-dev