Skip to content
HomeVideos
AllLongsCategoriesPlaylists
BooksBlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    Andy Keep - Writing a Nanopass Compiler

    ClojureTV

    1 HN recommender · recommended in 4 months, 2016–2026

    YouTube

    40:48 · 29K views · Jan 6, 2014

    Andy Keep's Clojure/Conj talk on writing a nanopass compiler, built from many single-task passes with formally defined intermediate languages. It covers the framework's origins in a compiler teaching course at Indiana University.

    Cited alongside compiler-construction resources as the go-to talk on the nanopass approach used in Chez Scheme.

    Software Engineering & LanguagesCompilers, interpreters & program analysisFunctional programming
    1. 1:02:26
      Solving Problems the Clojure Way - Rafal DittwaldClojure/north87K views • 7 years ago
    2. 41:09
      ClojureScript for Skeptics - Derek SlagerClojureTV72K views • 10 years ago
    3. 1:03:31
      Brian Goetz - Stewardship: the Sobering PartsClojureTV39K views • 11 years ago
    4. 32:44
      Clojure in a nutshell by James TrunkFunc Prog Sweden104K views • 5 years ago
    5. 1:10:16
      Saša Jurić - Parsing from first principles - WebCamp Zagreb 2019WebCamp Zagreb6.3K views • 6 years ago
    6. 1:07:22
      Invited Talk - Guy SteeleClojureTV39K views • 9 years ago
    7. 1:31:06
      William Byrd on "The Most Beautiful Program Ever Written" [PWL NYC]PapersWeLove367K views • 9 years ago
    8. 53:56
      Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojurejasonofthel33t119K views • 13 years ago
    9. 45:31
      Bruce Hauman - Developing ClojureScript With FigwheelClojureTV56K views • 11 years ago
    10. 35:41
      clojure.core/typing - Matt AderethClojureTV40K views • 10 years ago
    11. 1:14:52
      Effective Programs - 10 Years of Clojure - Rich HickeyClojureTV176K views • 9 years ago
    12. 1:04:45
      Stanford Seminar - Concatenative Programming: From Ivory to MetalStanford Online14K views • 8 years ago
    13. 57:38
      Clasp: Common Lisp using LLVM and C++ for Molecular MetaprogrammingGoogle TechTalks52K views • 11 years ago
    14. 1:03:29
      Maybe Not - Rich HickeyClojureTV181K views • 7 years ago
    15. 1:01:39
      "Simple Made Easy" - Rich Hickey (2011)ClojureTV434K views • 5 years ago
    16. 49:09
      Debugging with the Scientific Method - Stuart HallowayClojureTV25K views • 10 years ago
    17. 43:31
      Analyzing Programs with Z3Compose Conference24K views • 10 years ago
    18. 58:39
      Tim Ewald - Clojure: Programming with Hand ToolsClojureTV48K views • 12 years ago
    19. 36:14
      Barliman: trying the halting problem backwards, blindfolded - William Byrd, Greg RosenblattClojureTV7.9K views • 9 years ago
    20. 6:22
      Interactive programming Flappy Bird in ClojureScriptBruce Hauman55K views • 12 years ago

    4 comments from Hacker News

    1. @undecidabotApr 2018· in “MLton Compiler Overview”

      Compilers come in all shapes and sizes. Some are single pass like Turbo Pascal. They directly generate machine code while parsing (no AST!). Niklaus Wirth (Pascal/Modula/Oberon guy) wrote a book following this approach [1]. Some have multiple passes like Chez Scheme. They have many simple passes, which they call a "nanopass". Andrew Keep has a great talk on this approach [2]. In practice, most compilers today are multi-pass, though probably not as many Chez. If we look at Rust, they go from AST -> HIR -> MIR -> LLVM IR -> machine code [3]. There are probably more things going on from LLVM to machine code, but I'm not knowledgeable enough to comment on it. I think the trade-off here is clear: less passes -> shorter compile times, more passes -> faster code generated, more modular compiler. Martin Odersky (Scala guy) has a paper attempting to get the best of both [4]. [1] [LINK] [2] this video [3] [LINK] [4] [LINK]

      RecommendsView on HN
    2. @vengariothSep 2017· in “Ask HN: Resources for building a programming language?”

      Many suggest resources for compiler implementations, i personally would start prototyping the language itself, think about it's type system and its runtime properties. There are many possibilities in terms of type systems, from static to dynamic and everything in between, concepts like linear types, algebraic types, etc. Runtime properties are things like it's memory model (garbage collection, yes or no). All of this depends on the purpose of your language. The second part would be choosing a platform to run on (so you only have to write a compiler frontend). There are many great technologies to host a language, but i'd advocate two specific ones here: * [LINK] (shoutout to @love2code) * [LINK] ZetaVM is a great target for dynamicly typed and/or jit compiled languages like python or javascript. LLVM is used in many low level / near metal languages like C, C++, rust and so on. None of both must be your final targets, your compiler frontend can be moved to target another platform like the JVM later. As a last part, implement your compiler frontend. This involves lexing/parsing source code, type checking if needed and generating your target's intermediate representation. I personally prefer hand-written recursive descent parsers using a parser combinator framework (like [LINK] ) over parser generators. For further processing like type checking, there is the common monolith aproach and the nanopass framework/approach this video Also there's a great series on compiler frontends by Al

      CitesView on HN
    3. @LiamPowellApr 2026· in “Want to Write a Compiler? Just Read These Two Papers (2008)”

      See also, Andy Keep's dissertation [1] and his talk at Clojure/Conj 2013 [2]. I think that the nanopass architecture is especially well suited for compilers implemented by LLMs as they're excellent at performing small and well defined pieces of work. I'd love to see Anthropic try their C compiler experiment again but with a Nanopass framework to build on. I've recently been looking in to adding Nanopass support to Langkit, which would allow for writing a Nanopass compiler in Ada, Java, Python, or a few other languages [3]. [1]: [LINK] [2]: this video [3]: [LINK]

      CitesView on HN
    4. @616cDec 2016· in “An Incremental Approach to Compiler Construction (2006) [pdf]”

      Is this preceding work to the tour de force that is the Chez Scheme incremental like 40+ Scheme compiler. I mean, Cisco bought it, probably to hide it from us all. It must be worth something. this video [LINK] [LINK]

      CitesView on HN