© 2020 Strange Loop
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.