Strange Loop 2018
6 Years Of Dart (VM engineer perspective)
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.
Dart Conf 2018
Making Dart Fast on Mobile
No matter whether you are developing or deploying your Flutter application it ends up running on the Dart VM. How does Dart VM run your code? Is there any difference between development and deployment configurations?
Learn about all the things Dart VM team is doing behind the scenes to ensure that your applications are fast and slim.
Google PhD Student Summit on Compiler & Programming Technology 2017
From JIT to AOT (...and back again)
When Dart was originally designed its designers assume that it will primarily execute in a VM with a JIT.
This talk covers Dart VM journey from JITing Dart to AOT compiling it and the lessons we learned on the way.
Google PhD Student Summit on Compiler & Programming Technology 2016
How we don't do things
Compiler conferences are always full with engineers and researchers happy to share how they do things.
This talk is a refreshing departure from the trend. I will take a look at my time working on V8, Dart VM and LuaJIT at Google and share with you how we did not do things and why that matters.
Virtual Machines Summer School 2016
What I learned from LuaJIT
This talk summarizes my experience from digging into LuaJIT 2.x sources while working as a compiler engineer for Google DeepMind.
This is not a deep insight into LuaJIT inner design, but rather a collection of choices made by original LuaJIT implementor which I find interesting and educational.
GOTO Amsterdam 2016
GOTO Chicago 2015
And yet from time to time we still find ourselves wondering whether '===' is faster than '=='.
What is the right way to approach this question? Is this the question you should be asking to begin with?
We will take a look at some microbenchmarks written by JS developers and discover a violent clash between XIX century approach to benchmarking and XXI century virtual machines.
JFokus 2015 - VM Tech Summit
Patterns of VM Design
The popularity of dynamically typed programming languages has been skyrocketing in the past years. This success can be partially attributed to the advances in VM engineering enabling efficient execution of those languages.
Just like boilerplate of any enterprise application can be decomposed into infamous patterns of object oriented design, efficient virtual machines running dynamically typed languages seem to consist of reimplementations of common patterns of "VM design". These patterns often tread the thin line between efficiency, development time and maintainability.
Aarhus University — AWP 2014
JSConf EU 2014
Ever wanted to rebel against the sad immutability of the physics? Lets try to make functions fall upwards and inline all the apples.
The true freedom is just one heuristic away..
Handcrafting VMs for dynamic languages: reality and dreams
This is a story of what happens when the art of VM construction meets development constraints. This is a first-person narrative about my experience with the V8 and Dart virtual machines, fundamental engineering decisions, and their implications. I will try to show how production VMs are treading the thin line between "practical reality" and "dreams of academia". Finally I intend to share my own dreams on how ideas borrowed from academia could help to solve practical issues in VM-construction.
Crooked Mirrors of Performance
This is a fairy tale of programmer traveling through the strange land of microbenchmarks. Are they reflecting the truth, lies or maybe something in between? We will shatter the illusions and look behind their surface to reveal the fundamental truth: it's easier to spot a bad microbenchmark, than write a good one.
Что за... Dart?
Introduction to Dart (in Russian).
TechTalks NSU 2014
V8 & Dart VM
Overview of Dart VM and V8 compilation pipelines (in Russian). Slide deck built from CWP and Strange Loop ones (see below).
Dart Flight School Oslo (February 2014)
Dart VM Compiler
Overview of Dart VM optimizing compiler.
Dart Flight School Oslo (February 2014)
Introduction to AngularDart.
Aarhus University — CWP 2013
This talks walks the listener through various optimizing compiler related pitfalls in microbenchmarking. Greatly inspired by microbenchmarks found on jsPerf.
Building Optimizing Compiler for Dart
The talk describes Dart VM's compilation pipeline, its similarities and differences from V8's approach.
JSConf EU 2012
Exploring JS VM in JS
Форум Технологий Mail.Ru Group 2012
Web Rebels 2012
V8 Inside Out
JSConf US 2012
Can V8 Do That?!
Quick walk through the ideas behind V8's optimizing compilation pipeline (aka Crankshaft).