Incremental compilation has been worked on while MIR development was happening, so it won't start, it's already in-progress. :)
With MIR, yes, the idea is that compile time should improve. One of those tracking bugs is to make sure that it doesn't regress before turning it on by default.
With incremental compilation, you should see compiles after the first improve; you'll need to compile a lot less code for each change. Right now, the entire crate is recompiled, but afterwards, just the portion that changed will need to be.
https://github.com/rust-lang/rfcs/blob/master/text/1298-incr...
AFAICT, the idea is to track and hash items like function signatures and bodies, map them to the object files produced by LLVM, and to recompile them when the hashes change.
(Note also that MIR should generate somewhat faster debug binaries than current trans (by virtue of doing "obvious" optimizations in the frontend, rather than asking LLVM to chew on it), so if there are people out there who currently make release builds during development because their debug builds are too doggone slow, then this should help alleviate that.)
Out of curiosity, do you want general syntax extensions, or is it stuff like Serde/Diesel, specifically?
Code generators/source maps: https://github.com/rust-lang/rfcs/pull/1573
Procedural macros: https://github.com/rust-lang/rfcs/pull/1566
(also the reference links in the readme are broken, eg. http://serde-rs.github.io/serde/serde/serde/ser/trait.Serial... - seems like one too many /serde)
I have an as-yet-unpublished crate that takes a JSON API spec and generates an API client for it (in rust) at compile time using this method.
In a way, Serde itself is all about extracting the metadata of a type and handling validation issues. However this is metadata is currently not exposed to end users. It's something I've thought about doing, but I haven't had a driving use case to help come up with a proper API for it. I don't think it'd be that hard to implement once we actually have a clear idea on what we want.
The code Serde generates though typically optimizes down into nearly the same code as a hand written serializer and deserializer. On my laptop, serde_json [1] serializes a particular micro-benchmark [2] that serializes as fast as a hand rolled serializer (416MB/s vs 414MB/s). In comparison, rapidjson serializes the same structure in 432MB/s. I didn't write a hand written deserializer, but serde_json is comparable to rapidjson (193MB/s vs 182MB/s).
So it may be fast enough that you might be able to just implement whatever you want by just using Serde directly without having to generate parsers.
[1]: https://github.com/serde-rs/json
[2]: https://github.com/serde-rs/json/blob/master/json_tests/benc...
[3]: https://github.com/erickt/rust-serialization-benchmarks/tree...