I've been happily using the Jekyll static site generator for this website for almost 7½ years now, initially motivated by the excellent GitHub Pages service. Jekyll is awesome, since it gets you started easily without a lot of worrying about how to setup lot's of different things. But during the last month or so, Mathias managed to convince me, that it makes sense to dogfood our own software and…
I spent some time today and hacked together a simple Jekyll plugin to automatically generate a service worker with Google Workbox , with minimal overhead / effort. I had previously used the jekyll-pwa-plugin , which is awesome, but it's doing a bit too much for my taste: Local copy of the workbox distribution rather than fetching it from the Google CDN. Generates both the actual service sw.js as…
Asynchronous processing in JavaScript traditionally had a reputation for not being particularly fast. To make matters worse, debugging live JavaScript applications — in particular Node.js servers — is no easy task, especially when it comes to async programming. Luckily the times, they are a-changin’. This article explores how we optimized async functions and promises in V8 (and to some extent in…
DataView s are one of the two possible ways to do low-level memory accesses in JavaScript, the other one being TypedArray s . Up until now, DataView s were much less optimized than TypedArray s in V8, resulting in lower performance on tasks such as graphics-intensive workloads or when decoding/encoding binary data. The reasons for this have been mostly historical choices, like the fact that asm.js…
This article describes some key fundamentals that are common to all JavaScript engines — and not just V8 , the engine the authors ( Mathias and Benedikt ) work on. As a JavaScript developer, having a deeper understanding of how JavaScript engines work helps you reason about the performance characteristics of your code. Previously , we discussed how JavaScript engines optimize object and array…
This article describes some key fundamentals that are common to all JavaScript engines — and not just V8 , the engine the authors ( Benedikt and Mathias ) work on. As a JavaScript developer, having a deeper understanding of how JavaScript engines work helps you reason about the performance characteristics of your code. Note: If you prefer watching a presentation over reading articles, then enjoy…
Before the conference the YGLF crew wanted to learn more about the speakers, so they had asked them #3FrontendQuestions related to their topics at YGLF and engineering experience. This is what I responded during the interview. Benedikt Meurer # Benedikt is a JavaScript compiler engineer who loves to tinker with different aspects of programming languages. He joined Google to work on the V8…
I just realized that this is going to be the very first blog post of 2018 that I write myself - versus bugging someone else to write a blog post. It's been quite a busy year for me already, plus I was sick a lot, and so was my family. Anyways, here's something I've been meaning to send out for a while. And while the title mentions React explicitly, this is by no means limited to React, but…
Following up on my talk "A Tale of TurboFan" ( slides ) at JS Kongress , I wanted to give some additional context on how TurboFan, V8's optimizing compiler, works and how V8 turns your JavaScript into highly-optimized machine code. For the talk I had to be brief and leave out several details. So I'll use this opportunity to fill the gaps, especially how V8 collects and uses the profiling…
The last months have been a hectic time for me. I was hosting my first intern Juliana Franco at Google working on the Deoptimizer during her internship on lazyiness . Then I was diagnosed with articular gout and almost couldn't walk for a week. And we finally moved into our new house with a lot of help from my awesome colleagues on the V8 team. On the Node.js front, I became the tech lead of Node…