19 comments

[ 3.2 ms ] story [ 59.7 ms ] thread
This question must inevitably come up: how does the approach compare with Rust’s?
Rust isn't in the bibliography. Coming from an academic perspective, that makes sense since nothing has been published on Rust yet. Consider this language to be more academic and less practical, but that means it will have (or at least should have) more novel features. I'm not well versed in permission-based and linear type-based systems, but it looks interesting.
(Disclaimer: I'm the co-author of Mezzo, and I also happen to be a long-time Mozilla contributor).

While we indeed do not mention Rust in the bibliography, the question does pretty much come up all the time (rightly so). The answer I usually give is that Rust and Mezzo are in essence trying to achieve the same thing, except that Mezzo is in the context of ML.

Being a high-level language gives us more flexibility:

- we can afford _not_ to think about what's stack-allocated or heap-allocated;

- our adoption/abandon mechanism, which somehow keeps the complexity of the system within reasonable bounds, is implemented using run-time tests;

- de-allocation is not predictable because we use a GC (so no destructors).

So I would say that we don't have to deal with all the high-performance constraints that Rust is tackling, which makes our life easier :-).

Also, the implementation and the design is a two-man project. I think the Rust team is a tiny bit bigger now!

> nothing has been published on Rust yet

That's a bit scary, right. A lot of stuff has been published on Rust, just not in a 10pt LaTeX font. Is there a rule in universities that things don't exist until they appear in a journal?

"published" != "on the web somewhere".
No, not at all. I cite non-academic sources (light table, Bret Victor) all the time in my research, however keep in mind: you are writing for your readers, and you understand their mindset. Writing for an ICFP crowd would be a bit different than writing for a hackernews crowd, so you would compare against more academic work (especially since the program committee are academics) and not so much industry projects.

A 12 page paper can never really be "complete," so optimize for the intended readership.

Well, "published" here is used in the academic sense, so yes.

It's not about some random blog posts or presentations, if that's what you mean.

To some extent, there is such a rule. But not all academics are perpetually 2-5 years behind the times by only getting updates from journals. Bleeding-edge researchers go to conferences, which can cut the latency down to as little as 6-12 months.
PL doesn't have much in the form of journals; we,rely mostly on conferences for communication, though I think that's changing a bit.
I had seen Mezzo mentioned on #rust-internals (or somewhere else relatively official), possibly by Niko, so it is certainly on the radar.
This is an impressive bit of work. The ability to typecheck a tail-recursive type-changing “map” implementation is particularly good, and a lot of practical results follow from that. I don’t expect Mezzo to be the next big thing, but ideas from it will most probably make their way into upcoming type-safe systems languages.
Thanks.

> I don’t expect Mezzo to be the next big thing, but ideas from it will most probably make their way into upcoming type-safe systems languages.

I guess that's also one difference between Rust and us. Being researchers, we don't have the manpower to turn this into a working, industrial project, so we're hoping that the ideas percolate. Rust, in contrast, it trying to become the next big thing, maybe at the expense of having theoretical soundness results and papers in 10pt LaTeX :).

I will certainly try to incorporate some of these ideas when there comes a time for a self-consistent story about mutation in my own language. :)
Always a soft squishy spot for MLs. This one is particularly beautiful.