Bean Machine Retrospective, part 8
Explores a functional, combinator-based approach to AST transformation in the Bean Machine compiler, contrasting it with traditional visitor patterns.
Explores a functional, combinator-based approach to AST transformation in the Bean Machine compiler, contrasting it with traditional visitor patterns.
Exploring compiler design using functional programming concepts and combinatory logic to transform abstract syntax trees (ASTs) in Python.
A developer explains the benefits of keeping a new systems programming language private during its early development phase.
A 2021 survey of parsing techniques used in major programming language implementations, comparing parser generators and handwritten parsers.
Explores the design and implementation of a self-hosting parser for a new systems programming language, detailing the evolution from a yacc-based prototype.
A review of the Nand to Tetris course, which teaches how to build a computer from first principles, from logic gates to a high-level language.
Upgrading a Lisp compiler's x86 backend to use stack-based value passing instead of limited registers, aiming for feature parity with an LLVM backend.
Explains tail call optimization with examples and implementation details for interpreters and compilers.
Extending a Lisp compiler to generate LLVM IR instead of x86 assembly, covering IR basics, function definitions, and backend architecture.
A guide to building a statically typed functional language, covering type checking, interpretation, and transpilation to JavaScript.
A rebuttal to claims about PyPy's design philosophy, arguing its core principle is automation, not that 'the compiler knows best'.
Jonathan Shapiro explains why he stopped developing the BitC programming language, citing design issues and lack of funding.
Author introduces 'shore', a statically typed, Python-inspired language designed for conciseness and high-level abstractions.
A technical guide on writing a custom lexer by hand, covering structure, state management, and test-driven development.