Strange Loop

Rebuilding Optimizing Compiler for Dart

Dart might be the only contemporary programming language that changed its core principles so radically between two major versions. 8 years ago, in 2010, it was born as a dynamically typed programming language with optional static types - ideas of Strongtalk wrapped into familiar C-like syntax. A language destined to be executed in a native VM with an adaptive JIT compiler. Yet over the years Dart has evolved into language with a sound static type system, and is being deployed in contexts that require ahead-of-time compilation and prohibit JITing.

This talk focuses on the architecture of Dart Virtual Machine and how it followed the evolution of the Dart language, adapting to the new semantics and new execution environments, where users wanted to bring Dart to. We will look at how language design has to balance expressivity and elegance with optimizability and discuss how some language features open possibilities from new optimizations, while at the same time preventing some old optimizations from happening.

Vyacheslav Egorov

Vyacheslav Egorov


Vyacheslav Egorov is a software engineer at Google Aarhus, where he is working on the Dart VM. His interest is primarily focused on the technology behind virtual machines and compilers. During his time at Google Vyacheslav also contributed to V8 JavaScript engine and LuaJIT. Before joining Google he worked on a Java VM with an ahead-of-time compiler at Excelsior LLC.