V8 is, I'm sure, the most used implementation of JavaScript today. Used in Chrome, (and by extension) Microsoft Edge, Node.js, etc. Safari's JavaScriptCore and Firefox's SpiderMonkey are also contenders for extremely mainstream implementations.
But what else is out there? What if I want to embed JavaScript in a C program, or a Go program, or a Rust program, or a Java program(, and so on)? Or what if I want to run JavaScript on a microcontroller? Or use it as a base for language research? It turns out there are many high-quality implementations out there.
This post describes a number of them and their implementation choices. I'm not going to cover V8, JavaScriptCore, or SpiderMonkey because they are massive and hide multiple various interpreters and compilers inside. Plus, you already know about them.
I'm going to miss some implementations and get some details wrong. Please Tweet or email me with your corrections! I'd be particularly interested to hear about pure-research; and commercial, closed-source implementations of JavaScript.
These are implementations that would make sense to look into for your own commercial, production applications.
I don't know whether to put Microsoft's ChakraCore into this list or the next. So I'll put it here but note that as of this year 2021, they are transitioning it to become a community-driven project.
Implementations toward the top are more reliable and proven. Implementations toward the bottom less so.
If you are a looking to get involved in language development, the implementation further down on the list can be a great place to start since they typically need work in documentation, testing, and language features.
These last few are not toys but they are also more experimental or, in AssemblyScript's case, not JavaScript.
Thanks to @smarr for contributing eJS, Higgs, and b9!
Great for inspiriration if you've never implemented a language before.
New post is up! Enumerating and analyzing 40+ non-V8 JavaScript implementations; of course with links to source code and parser & runtime/backend decisions.
— Phil Eaton (@phil_eaton) September 21, 2021
I hope you enjoy learning about JavaScript engines as much as I did. 😁https://t.co/dEX06WU38f pic.twitter.com/AoYScphG6m