Abstract Machine Models Also: what Rust got particularly right

https://news.ycombinator.com/rss Hits: 6
Summary

Ever since 2010, I have studied the “meta” of software, by studying (and thinking about) the continued dialogue between programming language designers, computer designers, and programmers. The following constitutes a snapshot of my current thinking. During the period 2008-2012, I was requested to help design&build programming tools for a proposed new microprocessor architecture. The details of said architecture do not matter here; what is interesting is that folk in that research group had the following idea: their architecture had many design knobs, and they didn’t know what position to choose in the design spectrum. so instead they decided they would abstract over all the possible design points, and spell out a model that describes them all. then they asked me to make programming tools that work over all the possible-but-not-yet-existing platforms described by that model. Of note, I did not know this is what was asked of me at the beginning. I only figured it out towards the end. The more remarkable aspect is that these researchers did not understand that this is what they were doing either. Instead, what they were saying they were doing was: “we’re trying to invent a microprocessor.” “we specified a virtual machine for it and we implemented an emulator.” “it’s not finished.” (what they meant, but did not understand, is that too many design points were remaining open; plus the emulator was always changing and incomplete.) “please make a C compiler happen.” What wasn’t clear to me at the time, nor to them, is that the particular design choices that go into a hardware microprocessor have heavy implications on the design and implementation of programming tools. In particular, we found that when we change the hardware too much, it becomes hard to design efficient algorithms using existing languages, even if a compiler/toolchain exists. So the particular project above wasn’t exactly successful (there was no hardware, and too many knobs were left unspecified), I explain...

First seen: 2025-09-03 14:56

Last seen: 2025-09-03 19:57