Construyendo un Motor de JavaScript en Rust: Lecciones de Boa

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2026
November 16 - 19, 2026
New York, US & Online
Upcoming event
JSNation US 2026
JSNation US 2026
November 16 - 19, 2026. New York, US & Online
Bookmark
Rate this content
Sentry
Promoted
Code breaks, fix it faster

Crashes, slowdowns, regressions in prod. Seer by Sentry unifies traces, replays, errors, profiles to find root causes fast.

Get started

Los motores de JavaScript impulsan la web, pero ¿qué se necesita realmente para construir uno e incluso contribuir a los que son utilizados por miles de millones?

En esta charla, compartiré el viaje de crear Boa, un motor de JavaScript escrito en Rust, y lo que me enseñó sobre cómo JavaScript realmente funciona bajo el capó. Exploraremos cómo se analiza y ejecuta el código, y la sorprendente complejidad oculta dentro de la especificación ECMAScript.

Pero construir un motor no fue solo un desafío técnico, también se trató de construir una comunidad. Compartiré lecciones de liderar un proyecto de código abierto, hacer crecer a los contribuyentes y navegar por las realidades de mantener un entorno de ejecución de lenguaje.

Finalmente, veremos cómo este trabajo se extendió más allá de Boa, culminando en contribuciones a V8, el motor que impulsa Chrome, a través de la implementación de Temporal en Rust. Esta es la historia de cómo un proyecto de código abierto puede evolucionar de la experimentación a influir en el ecosistema más amplio de JavaScript.

This talk has been presented at JSNation 2026, check out the latest edition of this JavaScript Conference.

Jason Williams
Jason Williams
24 min
15 Jun, 2026

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Jason Williams, un ingeniero de software senior en Bloomberg y delegado de TC39, discute la contribución al proyecto Servo en Rust. El proceso de desarrollo del Motor de JavaScript Boa involucró destacar su velocidad, seguridad de memoria y rendimiento en comparación con Gecko. Los principios de construir un motor de JavaScript en Rust se comparan con plantas de procesamiento con etapas como tokenización y análisis. La tokenización implica descomponer el código JavaScript en tokens siguiendo la especificación ECMAScript. Las contribuciones de la comunidad de Boa se centraron en mejorar el almacenamiento en caché de la CPU, el almacenamiento en caché en línea y las pruebas de conformidad. El motor implementó con éxito Temporal, logrando una alta tasa de aprobación de pruebas e integración en motores principales.

1. Introduction to JavaScript Engine in Rust

Short description:

El orador se presenta como Jason Williams, un ingeniero de software senior en Bloomberg y delegado de TC39. Comparte su experiencia contribuyendo al proyecto Servo usando Rust para reemplazar el motor Gecko en Firefox.

Gracias por invitarme aquí. Estoy emocionado de presentar esto y ser parte del evento. Me encantaría estar allí en persona, pero digital también está bien. Hablaremos sobre la construcción de un motor de JavaScript en Rust, lecciones de Boa. Veremos cómo nos va.

Pero antes de hacerlo, mi nombre es Jason Williams. Soy un ingeniero de software senior en Bloomberg. También soy delegado de TC39, que es el Comité de Estándares de JavaScript. Si tienes alguna pregunta de esta charla, puedes publicarla, creo, debajo de este video. O también puedes contactarme. Soy más activo en Blue Sky, así que puedes encontrarme allí. Mi dominio nombre, JasonWilliams.co.uk. También estoy en otros lugares, pero probablemente soy más activo en Blue Sky, diría yo.

Así que, sí, sobre mí. He sido un contribuyente de código abierto durante muchos años. Hace diez años, estaba realmente interesado en aprender más sobre navegadores, renderizado, pintura, diseño, ese tipo de cosas. Así que, contribuí a un proyecto llamado Servo, que es un proyecto de motor de navegador paralelo que fue mantenido por Mozilla en ese momento. Y fue esencialmente diseñado usando un nuevo lenguaje de programación en ese entonces llamado Rust para reemplazar Gecko, que era el motor en Firefox.

El lenguaje era muy nuevo. Así que, de hecho, incluso cuando escribías en ese lenguaje, podía estar cambiando debajo de ti. Así que, parte de la sintaxis que escribiste hace dos semanas ya no era válida. Y recuerdo que a menudo teníamos, como, formateadores y herramientas que simplemente iban y actualizaban toda la sintaxis de vez en cuando. No creo que haya hecho una contribución significativa al motor durante ese tiempo. Pero una cosa que hice, puede que haya sido la primera persona o una de las primeras en hacerlo funcionar en Windows. No funcionaba en Windows en absoluto en ese entonces. Así que, eso fue, yo era un usuario de Windows. Así que, ese era mi principal objetivo en ese momento. Estaba recopilando información de personas que estaba solo en las cabezas de las personas. Nada estaba escrito. Y esencialmente reuní todo eso, hice una guía para mí mismo.

2. Development of Boa JavaScript Engine

Short description:

El orador comparte su experiencia al lograr que Servo funcione en Windows y promocionarlo a través de un blog en Mozilla Hacks. Destacan la velocidad, el rendimiento, el motor CSS concurrente, la seguridad de memoria y la rapidez de Servo en comparación con Gecko. La decisión de explorar la construcción de un motor de JavaScript llevó a la creación de Boa, inspirada por los nombres de proyectos temáticos de animales de Mozilla y encuentros personales.

Fue realmente para mi uso personal al principio. Y seguí esa guía y logré que Servo se iniciara en Windows y realmente quería compartir esto con el resto del mundo. Así que, tuve la suerte de poder hacer un blog en Mozilla Hacks hace casi diez años. 2017. Y estaba muy orgulloso de esto porque no solo mostraba al mundo que Servo está vivo y funcionando en Windows, sino que también permitía que más personas se involucraran frente a ti que no podían antes debido al sistema operativo en el que estaban.

Otra cosa que me llamó la atención sobre Servo fue la velocidad. Era bastante rendimiento. Esto se ejecutaba en Reddit en 2014. Estoy seguro de que ahora es incluso más rápido. Pero el motor CSS que fue escrito en Rust desde cero podía hacer uso de múltiples núcleos. Era muy concurrente. Creo que fue realmente uno de los primeros motores CSS concurrentes en ese momento. Y también tenía buena seguridad de memoria. Así que, todos estábamos muy confiados en él. Sabíamos que funcionaría bien. Realmente no había fallos. Pero también era muy rápido. Era más del doble de rápido que lo que Gecko tenía en ese momento.

Así que, básicamente, pensé, bueno, ¿podemos hacer esto con JavaScript? ¿Por qué no hacerlo en un motor de JavaScript? Y el equipo de Servo en ese momento estaba bastante ocupado. Así que, construir un motor de JavaScript no era algo en lo que estuvieran demasiado interesados en ese momento. Estaban bastante contentos de seguir usando Spider Monkey, que es el motor en Firefox. Así que, esencialmente me fui y jugué con algunas ideas. Y eventualmente comencé a trabajar por mi cuenta. Y ahí es donde entró Boa. El nombre, supongo que estaba tratando de seguir el tema de Mozilla de nombrar proyectos después de animales. Vi una serpiente en un zoológico en Sídney y pensé que realmente quería nombrar mi próximo proyecto después de eso. Así que, sí, lo que te mostraré es cómo comencé, realmente. Algunos principios del motor de JavaScript. No es exactamente cómo funciona Boa hoy. Pero es un poco de una visión, realmente, de dónde comenzaron las cosas.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Cómo Bun Hace que Construir Aplicaciones React Sea Más Simple y Rápido
React Day Berlin 2022React Day Berlin 2022
9 min
Cómo Bun Hace que Construir Aplicaciones React Sea Más Simple y Rápido
Top Content
BUN is a modern all-in-one JavaScript runtime environment that achieves new levels of performance. It includes BUN dev, a fast front-end dev server, BUN install, a speedy package manager, and BUN run, a fast package runner. BUN supports JSX, has optimized React server-side rendering, and offers hot module reloading on the server. The priorities for BUN include stability, node compatibility, documentation improvement, missing features in BUN install, AST plugin API, native Windows support, Bundler and Minifier optimization, and easier deployment to production. BUN's AST plugin API allows for bundle-time JavaScript execution and embedding code, potentially inspiring new frameworks.
Nunca te preocupes por CORS nuevamente
JSNation US 2025JSNation US 2025
28 min
Nunca te preocupes por CORS nuevamente
Talk on Bund: Overview of Bund, its speed optimization, components like runtime, package manager, test runner, and bundler. Efficient features include fast npm manager, pnpm lockfile support, Jest-compatible test runner, and optimized runtime components. Built-in features like modern password hashing, WebSocket server, file glob API, and database clients. API design focuses on common use cases and optimization. Enhanced JavaScript functionality with SIMD, native code, and performance improvements. Challenges in JavaScript productivity, BUN adoption, deployment, and support. React support, community involvement, security, Next.js compatibility, and transition.
Compatibilidad con Node.js en Deno
Node Congress 2022Node Congress 2022
34 min
Compatibilidad con Node.js en Deno
Deno aims to provide Node.js compatibility to make migration smoother and easier. While Deno can run apps and libraries offered for Node.js, not all are supported yet. There are trade-offs to consider, such as incompatible APIs and a less ideal developer experience. Deno is working on improving compatibility and the transition process. Efforts include porting Node.js modules, exploring a superset approach, and transparent package installation from npm.
Bun, Deno, Node.js? Recreando un runtime de JavaScript desde cero - Entender la magia detrás de Node.js
Node Congress 2023Node Congress 2023
29 min
Bun, Deno, Node.js? Recreando un runtime de JavaScript desde cero - Entender la magia detrás de Node.js
Top Content
The Talk explores the magic behind Node.js and delves into its components, including V8, libuv, and the C++ bridge. It discusses the workflow and execution process, the use of NodeMod, and the understanding of console functions. The Talk also covers Node.js functions and scheduling, the introduction of runtimes, and the collaboration between JavaScript runtimes. It concludes with insights on content production, the choice of Node.js, and the inspiration behind it.
Evaluar todas las cadenas! - JavaScript endurecido
Node Congress 2023Node Congress 2023
8 min
Evaluar todas las cadenas! - JavaScript endurecido
NPM packages can be potentially dangerous, so it's important to be proactive in managing them. Lava Mode allows you to detect and investigate suspicious packages before deploying your app. Lavamote prevents unauthorized access to sensitive resources by isolating dependencies and using hardened JavaScript. Lava Mode makes it easier to analyze obfuscated files and understand their actions.
Crea tu propio tiempo de ejecución de JavaScript
Node Congress 2023Node Congress 2023
21 min
Crea tu propio tiempo de ejecución de JavaScript
This Talk introduces Deno, a custom JavaScript runtime similar to Node.js, and discusses the benefits of using a custom runtime. It explores the process of building a custom runtime with Deno in Rust, including the integration with Cargo and the ability to mix and match crates and APIs. The Talk also covers the implementation of the setTimeout function in both Run.js and Runtime.js, and provides examples of how to fix errors and implement additional functions. Overall, the Talk highlights the flexibility and possibilities of creating custom runtimes with Deno.

Workshops on related topic

Build Peer-to-Peer Applications with Pear Runtime
JSNation 2024JSNation 2024
152 min
Build Peer-to-Peer Applications with Pear Runtime
Top Content
WorkshopFree
David Mark Clements
David Mark Clements
Aprende a construir rápidamente aplicaciones peer-to-peer con Pear Runtime. No se requieren servidores. Comprende los paradigmas peer-to-peer y construye aplicaciones a partir de bloques de construcción bien definidos. Esta masterclass cubrirá cómo crear aplicaciones tanto para Desktop como para Terminal (con discusión para Mobile) que funcionen completamente peer-to-peer desde cualquier lugar del mundo. Al final de esta masterclass deberías saber cómo construir un nuevo tipo de aplicación altamente escalable con costos de infraestructura completamente reducidos (~0) junto con arquitecturas adecuadas y mejores prácticas para aplicaciones peer-to-peer. Del creador de Pear Runtime y la empresa que nos trae keet.io. Tabla de contenido:- Introducción a Pear- Preguntas y Respuestas Iniciales- Configuración Inicial- Creación de una Aplicación Pear para Desktop- Compartiendo una Aplicación Pear- Ejecutando una Aplicación Pear- Creación de una Aplicación Pear para Terminal- Lanzamiento de una Aplicación Pear- Discusiones Arquitectónicas- Preguntas y Respuestas de Cierre