[rust-dev] Student projects/internships

Graydon Hoare 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.
> nss);
> - ...
> 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 
bit deeper.

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
     interesting compiler-hacking.

   - 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 mailing list