AST, Bytecode, and the Space In Between: An Exploration of Interpreter Design Tradeoffs

By: Octave Larose, Michael Vollmer, Stefan Marr

Abstract

Programming language interpreters usually interpret either an abstract syntax tree (AST) or bytecode (BC). In this paper, we explore the different design dimensions for the implementation of interpreters and discuss their tradeoffs. We derive guidelines for interpreter designs and demonstrate the performance of an optimized AST interpreter and bytecode interpreter implemented in Rust, finding that the discussed optimizations are more relevant for performance than the program representation itself.

Keywords

Interpreters, Bytecode, Abstract-Syntax-Tree, Language Implementation, Comparison

Cite as:

Octave Larose, Michael Vollmer, Stefan Marr, “AST, Bytecode, and the Space In Between: An Exploration of Interpreter Design Tradeoffs”, Journal of Object Technology, Volume 25, no. 1 ( 2026), pp. 1:1-15, doi:10.5381/jot.2026.25.1.a15.

DOI | BiBTeX | Tweet this | Post to CiteULike | Share on LinkedIn