Slava Egorov

My Talks

2025

What is an Isolate anyway?

Flutter&Friends[slides]

This is a talk about the past, present and future of the Dart concurrency model. How and why did Dart end up with Isolates? How did they evolve over the years and where we are taking them in the future.Sep 2025

2024

Learning something about Dart performance by optimizing jsonDecode

Flutter&Friends[slides][video]

This talk takes us on a journey through the layers of the cake called "Dart". We often hear that jsonDecode is slow in Dart - can we make it faster? Where do we start? We will look at the Dart core libraries and how they implement jsonDecode. We will take that code for a spin with a profiler and learn how to diagnose performance issues using low-level tools.Sep 2024

2023

Runtime that makes Dart tick

Flutter and Friends[slides][video]

This talk is about how the Dart runtime works and how you can figure out low-level performance issues and how to apply optimisations.Sep 2023

2020

10 years of Dart

VMIL[slides][video]

Dart might be the only contemporary programming language that changed its core principles so radically between two major versions. 10 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 a language with a sound static type system, and is being deployed in contexts that require ahead-of-time compilation and prohibit JITing. Now, it is even trying to get rid of the “billion-dollar mistake” - null - and incrementally transition to non-nullable by default reference types. 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.Oct 2020

2018

6 Years Of Dart (VM engineer perspective)

Strange Loop[slides][video]

Dart might be the only contemporary programming language that changed its core principles so radically between two major versions. 10 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 a language with a sound static type system, and is being deployed in contexts that require ahead-of-time compilation and prohibit JITing. Now, it is even trying to get rid of the “billion-dollar mistake” - null - and incrementally transition to non-nullable by default reference types.

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.Sep 2018

Making Dart Fast on Mobile

Dart Conf[slides][video]

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.Jan 2018

2016

How we don't do things

Google PhD Student Summit on Compiler&Programming Technology[slides]

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.Dec 2016

JavaScript Performance Through the Spyglass

GOTO Amsterdam[slides][video]

JavaScript performance remains an area of focus for all major browser vendors. Each day VM-engineers across the globe pump their expertise into JavaScript engines powering client and server-side code alike.

However our understanding of JavaScript engine internals does not always keep up with those internals.

This talk tries to rectify this lag and demonstrate that knowledge of implementation details is crucial not only to writing fast JavaScript code but even to simply measuring the difference between fast and slow.Jun 2016

Производительность JavaScript через подзорную трубу

HolyJS[slides][video]

Каждый день инженеры-компиляторщики по всему миру увлеченно стучат по своим клавиатурам разгоняя исполнение JavaScript в совершенно различных браузерах и даже на сервере.

Общественность, программирующая на JavaScript, однако же, часто отстает в своем понимании от стремительного прогресса, происходящего во внутренностях JS движков.

Этот доклад старается покрыть отставание и продемонстрировать, что знание этих самых внутренностей важно не только для написания быстрого JavaScript кода, но и просто для того, чтобы достоверно измерить разницу между "быстрым" и "медленным".Jun 2016

What I learned from LuaJIT

Virtual Machines Summer School 2016[slides][video]

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.Jun 2016

2015

Benchmarking JavaScript

GOTO Chicago[slides][video]

JavaScript is everywhere. JavaScript VMs improve by leaps and bounds. Performance graphs are breaking through the ceilings of expectations.

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.May 2015

Patterns of VM Design

JFokus - VM Tech Day[slides][video]

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.

This talk discusses the trade offs we encountered while building virtual machines for JavaScript and Dart programming languages.Feb 2015

2014

V8

Aarhus University Advanced Web Programming Course[slides]

Overview of V8 compilation pipeline. Guest lecture at Aarhus University Advanced Web Programming course.Dec 2014

invokedynamic.js

JSConf EU[slides][video]

The apple always falls down attracted by the gravity of the earth. It’s the law of physics. The function is never inlined if it’s source is bigger than 600 characters long. It’s a heuristic - a physical law of our dystopian cyber-world confined inside a JavaScript Virtual Machine.

Ever wanted to rebel against the sad immutability of the physics? Lets try to make functions fall upwards and inline all the apples.

In an ultimate attempt to create a space-time paradox that will rip our universe apart we will look at Java programmers implementing JavaScript on JVM through invokedynamic and then will implement invokedynamic in a JS VM instead.

The true freedom is just one heuristic away..Sep 2014

Handcrafting VMs for dynamic languages, reality and dreams

ICOOOLPS[slides]

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.Jul 2014

Crooked Mirrors of Performance

WebRebels 2014[slides]

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.May 2014

Что за... Dart?

CodeFest 2014[slides]

Introduction to Dart (in Russian).Mar 2014

V8 and Dart VM

TechTalks NSU[slides]

Overview of Dart VM and V8 compilation pipelines (in Russian). Slide deck built from CWP and Strange Loop ones (see below).Mar 2014

Dart VM Compiler

Dart Flight School Oslo[slides][video]

Overview of Dart VM optimizing compiler.Feb 2014

AngularDart

Dart Flight School Oslo[slides][video]

Introduction to AngularDart.Feb 2014

2013

V8

Aarhus University Client-Based Web Programming Course[slides]

Overview of V8 compilation pipeline.Dec 2013

Doubt Everything

LXJS 2013[slides][video]

This talks walks the listener through various optimizing compiler related pitfalls in microbenchmarking. Greatly inspired by microbenchmarks found on jsPerf.Oct 2013

Building Optimizing Compiler for Dart

StrangeLoop[slides][video]

The talk describes Dart VM's compilation pipeline, its similarities and differences from V8's approach.Sep 2013

2012

JavaScript глазами JIT компилятора

Форум Технологий Mail.Ru Group[slides][video]

Walk through V8's implementation details and the ways they might affect performance of your JavaScript code (in Russian).Oct 2012

Exploring JS VM in JS

JSConf EU[slides][video]

The talk explores building blocks which could be used to write parts of JavaScript VMs in JavaScript.Oct 2012

V8 Inside Out

Web Rebels[slides][video]

An attempt to explain how inline caches and optimizing compilation works using (mostly) only JavaScript on the slides.May 2012

Can V8 Do That?!

JSConf US[slides][video]

Quick walk through the ideas behind V8's optimizing compilation pipeline (aka Crankshaft).Apr 2012

2011

Understanding V8

nodecampeu[slides]

Walk through V8's implementation details and performance tuning recommendations for JavaScript code.Jun 2011