[HN Gopher] Lessons from Writing a Compiler
___________________________________________________________________
Lessons from Writing a Compiler
Author : zetalyrae
Score : 33 points
Date : 2022-07-14 20:09 UTC (2 hours ago)
(HTM) web link (borretti.me)
(TXT) w3m dump (borretti.me)
| _dain_ wrote:
| What does the Austral language bring to the table? Are there code
| examples?
| tekknolagi wrote:
| You might enjoy a read through the programming language's
| website. I certainly did.
|
| https://austral.github.io/
|
| The spec has some nice code snippets:
|
| https://austral.github.io/spec/
| zetalyrae wrote:
| You can think of it as either "Rust: The Good Parts" or "Modern
| Ada". It's a minimal language with linear types, capability-
| based security, an Ada-inspired module system, and strong
| typing. And it's designed with simplicity as the overriding
| goal: it's small enough that it fits in your head, and avoids
| becoming the Vasa[0].
|
| By way of example: the borrow checker in the Rust compiler is
| 24.7k lines of code[1]. Austral's equivalent is 600 lines,
| because it's simply doing less. The linear type system is
| designed so that the rules fit in a page of text, and you learn
| them once and apply them everywhere, rather than fighting
| against an ever-changing, opaque pile of heuristics. It's much
| more like a normal type system and much less like static
| analysis.
|
| There are a few example programs in the compiler repository[2]
| and the website[3].
|
| [0]: https://www.stroustrup.com/P0977-remember-the-vasa.pdf
|
| [1]: https://twitter.com/zetalyrae/status/1540883027743559682
|
| [2]: https://github.com/austral/austral/tree/master/examples
|
| [3]: https://austral.github.io/examples/
| tsegratis wrote:
| That was a useful write up, thanks
|
| It's more unusual to find writeups on implementation of semantics
| or typchecking, but as you say, more important
|
| Keeping the env flat, and like a relational database (for
| typechecking) sounds like an idea i will take
| tester756 wrote:
| >The prototypical compilers textbook is:
|
| Dragon Book?
| [deleted]
| astrange wrote:
| Yes, which is why it's a bad book and you shouldn't tell people
| to read it. Actual compilers tend to handwrite their parsers
| rather than using theory; parser generators aren't good at
| recovery and error messages.
___________________________________________________________________
(page generated 2022-07-14 23:00 UTC)