CINXE.COM

Mathias Bynens

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Mathias Bynens</title> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="/css"> <link rel="manifest" href="/.webmanifest"> <link rel="alternate" href="/notes.atom" type="application/atom+xml" title="Notes (blog) Atom feed"> <link rel="alternate" href="/notes.rss" type="application/rss+xml" title="Notes (blog) RSS feed"> <meta name="description" content="Mathias Bynens is a web standards enthusiast currently working on Chrome at Google."> </head> <body> <header> <h1><a href="/">Mathias Bynens</a></h1> <nav> <h1>Navigation</h1> <ul> <li><a href="/">Home</a></li> <li><a href="/notes">Archive</a></li> </ul> </nav> </header> <section id="content"> <header id="about"> <img src="https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=112" alt="" width="112" height="112" srcset="https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=224 2x"> <h1>About me</h1> <p>Hi there! I’m Mathias. I work on Chrome at Google. HTML, CSS, JavaScript, Unicode, performance, and security get me excited. You can <a href="https://twitter.com/mathias" rel="me nofollow">follow me on Twitter</a>, <a href="https://bsky.app/profile/mths.be" rel="me nofollow">Bluesky</a>, and <a href="https://github.com/mathiasbynens" rel="me nofollow">GitHub</a>.</p> </header> <h1>Latest notes</h1> <article itemscope itemtype="http://schema.org/BlogPosting"> <h1 itemprop="headline"><a href="/notes/globalthis" rel="bookmark">A horrifying <code>globalThis</code> polyfill in universal JavaScript</a></h1> <p class="meta">Published <time datetime="2019-04-18" itemprop="datePublished">18th April 2019</time> · tagged with <a href="/notes#javascript">JavaScript</a></p> <p>The <code>globalThis</code> proposal introduces a unified mechanism to access the so-called “global object” a.k.a. “the global” in any JavaScript environment. It sounds like a simple thing to polyfill, but it turns out it’s pretty hard to get right.</p> <p class="read-more"><a href="/notes/globalthis" title="A horrifying globalThis polyfill in universal JavaScript" rel="bookmark">Continue reading “A horrifying <code>globalThis</code> polyfill in universal JavaScript”…</a></p> </article> <article itemscope itemtype="http://schema.org/BlogPosting"> <h1 itemprop="headline"><a href="/notes/prototypes" rel="bookmark">JavaScript engine fundamentals: optimizing prototypes</a></h1> <p class="meta">Published <time datetime="2018-08-16" itemprop="datePublished">16th August 2018</time> · tagged with <a href="/notes#javascript">JavaScript</a>, <a href="/notes#performance">performance</a></p> <p>This article explains JavaScript engine optimization pipeline trade-offs, and describes how engines such as V8 speed up accesses to prototype properties. As a JavaScript developer, having a deeper understanding of how JavaScript engines work helps you reason about the performance characteristics of your code.</p> <p class="read-more"><a href="/notes/prototypes" title="JavaScript engine fundamentals: optimizing prototypes" rel="bookmark">Continue reading “JavaScript engine fundamentals: optimizing prototypes”…</a></p> </article> <article itemscope itemtype="http://schema.org/BlogPosting"> <h1 itemprop="headline"><a href="/notes/shapes-ics" rel="bookmark">JavaScript engine fundamentals: Shapes and Inline Caches</a></h1> <p class="meta">Published <time datetime="2018-06-14" itemprop="datePublished">14th June 2018</time> · tagged with <a href="/notes#javascript">JavaScript</a>, <a href="/notes#performance">performance</a></p> <p>This article describes some key fundamentals that are common to all JavaScript engines — and not just V8, the engine the authors 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.</p> <p class="read-more"><a href="/notes/shapes-ics" title="JavaScript engine fundamentals: Shapes and Inline Caches" rel="bookmark">Continue reading “JavaScript engine fundamentals: Shapes and Inline Caches”…</a></p> </article> <article itemscope itemtype="http://schema.org/BlogPosting"> <h1 itemprop="headline"><a href="/notes/async-stack-traces" rel="bookmark">Asynchronous stack traces: why <code>await</code> beats <code>Promise#then()</code></a></h1> <p class="meta">Published <time datetime="2017-10-02" itemprop="datePublished">2nd October 2017</time> · tagged with <a href="/notes#javascript">JavaScript</a>, <a href="/notes#performance">performance</a></p> <p>Compared to using promises directly, not only can <code>async</code> and <code>await</code> make code more readable for developers — they enable some interesting optimizations in JavaScript engines, too! This write-up is about one such optimization involving stack traces for asynchronous code.</p> <p class="read-more"><a href="/notes/async-stack-traces" title="Asynchronous stack traces: why await beats Promise#then()" rel="bookmark">Continue reading “Asynchronous stack traces: why <code>await</code> beats <code>Promise#then()</code>”…</a></p> </article> <article itemscope itemtype="http://schema.org/BlogPosting"> <h1 itemprop="headline"><a href="/notes/es-regexp-proposals" rel="bookmark">ECMAScript regular expressions are getting better!</a></h1> <p class="meta">Published <time datetime="2017-01-25" itemprop="datePublished">25th January 2017</time> · tagged with <a href="/notes#javascript">JavaScript</a>, <a href="/notes#unicode">Unicode</a></p> <p>This article highlights what’s happening in the world of JavaScript regular expressions <strong>right now</strong>. Spoiler: it’s quite a lot — there are more <code>RegExp</code>-related proposals currently advancing through <a href="https://tc39.github.io/process-document/">the TC39 standardization process</a> than there have been updates to <code>RegExp</code> in the history of ECMAScript!</p> <p class="read-more"><a href="/notes/es-regexp-proposals" title="ECMAScript regular expressions are getting better!" rel="bookmark">Continue reading “ECMAScript regular expressions are getting better!”…</a></p> </article> <h2>Older notes</h2> <p><a href="/notes">Browse the archive.</a></p> </section> <footer>© 1988–2025 Mathias Bynens</footer> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js" integrity="sha384-K+ctZQ+LL8q6tP7I94W+qzQsfRV2a+AfHIi9k8z8l9ggpc8X+Ytst4yBo/hH+8Fk" crossorigin></script> <script src="/js"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10