Un intérprete de WebAssembly rápido, escrito en C, lo bastante pequeño para microcontroladores e integrable como biblioteca en muchos lenguajes.
boa-dev/boa
Un motor de JavaScript integrable, escrito en Rust, con lexer, parser e intérprete y amplia compatibilidad con la especificación ECMAScript.
- Estrellas
- 7,662
- Forks
- 690
- Issues abiertos
- 223
- Último commit
- hace 14 horas
¿Qué es?
Boa es un lexer, parser e intérprete de JavaScript escrito en Rust. Su objetivo es implementar más del 90 % de la versión más reciente de la especificación ECMAScript, y su desarrollo incluye un trabajo continuo de conformidad que se sigue con la suite Test262.
El motor se distribuye como un conjunto de crates de Rust. El crate principal, boa_engine, permite que las aplicaciones Rust creen un contexto de ejecución y evalúen código fuente JavaScript directamente. Los crates complementarios incluyen el AST, el parser, el recolector de basura, el interner de strings y funciones de ejecución al estilo de WebAPI. El proyecto también incluye un CLI y un REPL para ejecutar archivos JS desde la terminal.
Boa se puede compilar a WebAssembly y el proyecto ofrece un entorno interactivo en el navegador. El README describe una configuración específica para el target wasm32-unknown-unknown que requiere habilitar un feature flag y configurar getrandom.
Funciones clave
- 01Lexer, parser e intérprete de JavaScript escritos en Rust.
- 02Su objetivo es implementar más del 90 % de la versión más reciente de la especificación ECMAScript.
- 03Se integra mediante el crate boa_engine, que ofrece una API eval sencilla.
- 04Incluye un CLI y un REPL con opciones para volcar el AST y usar el optimizador.
- 05Se puede compilar a WebAssembly e incluye un entorno interactivo en el navegador.
Casos de uso
- Ejecutar JavaScript dentro de una aplicación Rust sin depender de un motor de C++.
- Evaluar scripts o expresiones proporcionados por usuarios en un host Rust aislado.
- Experimentar con la implementación del lenguaje JavaScript o con los componentes internos de un motor.
- Ejecutar JavaScript en entornos WebAssembly.
Inicio rápido
- 1
Añade el crate boa_engine a Cargo.toml
cargo add boa_engine - 2
Copia el código de ejemplo en main.rs
- 3
Ejecuta el proyecto
cargo run
Antes de usarlo
- Sus autores lo describen como experimental, por lo que quizá todavía no sea adecuado para producción.
- Aún no cumple por completo con la especificación ECMAScript; afirma ofrecer más del 90 % de compatibilidad.
Temas
Preguntas frecuentes
- ¿Qué es boa?
- Un motor de JavaScript integrable, escrito en Rust, con lexer, parser e intérprete y amplia compatibilidad con la especificación ECMAScript. Boa es un lexer, parser e intérprete de JavaScript escrito en Rust. Su objetivo es implementar más del 90 % de la versión más reciente de la especificación ECMAScript, y su desarrollo incluye un trabajo continuo de conformidad que se sigue con la suite Test262.
- ¿boa es gratuito? ¿Qué licencia tiene?
- boa es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿boa sigue mantenido?
- Mantenimiento activo. El último commit de boa fue el 7 nov 2026.
- ¿Para qué puedo usar boa?
- Ejecutar JavaScript dentro de una aplicación Rust sin depender de un motor de C++. Evaluar scripts o expresiones proporcionados por usuarios en un host Rust aislado. Experimentar con la implementación del lenguaje JavaScript o con los componentes internos de un motor. Ejecutar JavaScript en entornos WebAssembly.
- ¿Cómo se instala boa?
- Añade el crate boa_engine a Cargo.toml: cargo add boa_engine Copia el código de ejemplo en main.rs Ejecuta el proyecto: cargo run
- ¿Dónde consigo boa?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/boa-dev/boa
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
WebAssembly Micro Runtime (WAMR) es un runtime de Wasm ligero para sistemas embebidos, IoT, edge y otros entornos con recursos limitados.
Un fork de QuickJS que puede suspender JavaScript en ejecución, guardar una instantánea de todo el heap y reanudarlo en otro proceso, con compatibilidad nativa con TypeScript.
Motor de JavaScript ECMAScript 5.1 escrito íntegramente en Go, para integrar la ejecución de JS en aplicaciones Go.
Un compilador y parser de TypeScript y JavaScript escrito en Rust, muy rápido y utilizable desde Rust y JavaScript.
Una biblioteca de Go y la CLI shfmt para analizar, dar formato e interpretar scripts de shell POSIX, Bash, Zsh y mksh.