Boa (JavaScript engine)
{{Notability|date=October 2024}}
{{Infobox software
| name = Boa
| logo = Boa logo in black.svg
| logo size = 64px
| screenshot =
| developer = Boa Developers
| caption =
| author = [https://jason-williams.co.uk Jason Williams]
| released = {{start date and age|2019|6|10|df=y}}
| latest release version = v0.20{{cite web |title=Boa release v0.19 |url=https://boajs.dev/blog/2024/12/05/boa-release-020 |website=boajs.dev |language=en |date=5 December 2024}} / {{start date and age|2024|12|5|df=y}}
| latest release date = {{start date and age|{{wikidata|qualifier|single|P548=Q2804309|P348|P577}}}}
| programming language = Rust{{cite web |title=About Boa {{!}} Boa JS |url=https://boajs.dev/about |website=boajs.dev |publisher=Boa Developers |access-date=15 October 2024 |language=en}}
| platform = x86-64, 32-bit ARM, AArch64
| genre = JavaScript and WebAssembly engine
| license = MIT
| website = {{URL|https://boajs.dev}}
| repo = {{URL|https://github.com/boa-dev/boa}}
}}
Boa is an open-source JavaScript engine written in Rust. Boa was introduced at JSConf EU 2019 by Jason Williams.{{cite web |last1=Williams |first1=Jason |title=Let's build a JavaScript Engine in Rust by Jason Williams - JSConf EU 2019 |url=https://www.youtube.com/watch?v=_uD2pijcSi4 |website=YouTube |publisher=JS Conf EU |access-date=15 October 2024 |date=20 June 2019}}{{cite web |author1=Jason Williams |title=Let's build a JavaScript Engine |url=https://2019.jsconf.eu/jason-williams/lets-build-a-javascript-engine.html |website=2019.jsconf.eu |publisher=JS Conf EU |access-date=25 February 2024 |archive-url=https://web.archive.org/web/20240225094308/https://2019.jsconf.eu/jason-williams/lets-build-a-javascript-engine.html |archive-date=25 February 2024 |language=en}}
Williams created Boa in 2017 after working on Servo and being inspired by the "written from scratch" CSS engine.{{cite web |title=Hacking & Contributing to Servo On Windows – Mozilla Hacks - the Web developer blog |url=https://hacks.mozilla.org/2017/04/hacking-contributing-to-servo-on-windows/ |website=Mozilla Hacks – the Web developer blog}} He was eager to work on a JavaScript engine using Rust to learn more about how JavaScript implementations work, since then the project has had over 100 contributors.{{cite web |title=Contributors to boa-dev/boa |url=https://github.com/boa-dev/boa/graphs/contributors |website=GitHub |language=en}} Overtime the engine gained more prominent features such as bytecode compilation,{{cite web |title=Boa release v0.14 |url=https://boajs.dev/blog/2022/03/15/boa-release-14 |website=boajs.dev |language=en |date=15 March 2022}} better conformance to the specification and ergonomic API design.
Design
Boa is an open-source implementation of a JavaScript execution engine. The project is developed as a Rust library for embedding the JavaScript engine in Rust applications. Additionally, the authors of Boa provide a command-line interface (CLI) for users to interact with Boa as standalone JavaScript interpreter accessible from a command line.{{cite web |last1=Munsters |first1=Aäron |title=BoaSpect |url=http://soft.vub.ac.be/Publications/2022/vub-soft-ms-22-01.pdf |publisher=Vrije Universiteit Brussel |access-date=15 October 2024}}
Boa follows the common interpreter design which approximately consists of a lexer, parser, compiler and bytecode interpreter
Standards
Boa implements the ECMA-262 specification (ECMAScript). As of 6 September 2024 Boa has 88% conformance to Test262{{cite web |title=test262.fyi |url=https://test262.fyi |website=test262.fyi |access-date=6 September 2024 |archive-url=https://web.archive.org/web/20240906171312/http://test262.fyi/ |archive-date=6 September 2024 |date=6 September 2024}}
See also
{{Portal|Free and open-source software|Internet}}
- JerryScript, an ultra-lightweight JavaScript engine
- SpiderMonkey, a JavaScript engine used in Firefox
- List Of ECMAScript engines