Skip to content
This repository has been archived by the owner on Dec 3, 2018. It is now read-only.

Latest commit

 

History

History
41 lines (30 loc) · 1.47 KB

README.md

File metadata and controls

41 lines (30 loc) · 1.47 KB

v2

what

It's a JavaScript engine. Because the world doesn't have enough of those already. More seriously, it was written as a research project, and is no longer actively maintained.

This one is written entirely in Go, currently as two packages - a parser, and a VM. The VM generates bytecode, and then executes it, rather than operating on the AST directly.

why?

I felt like learning more about what's involved in JavaScript. I work with the details of JavaScript a lot already on QML's JavaScript engine, v4, but since I didn't write most of that, I didn't get the chance to learn about it from the ground up. v2 is my attempt at learning some of those things, and having some fun along the way.

The name (v2) was chosen because I'm unimaginative. There's v8, there's v4. And since I'm writing something that is much less capable than either of them, that only leaves me with a limited set of smaller numbers. :)

status

This thing can run some limited amounts of code, but it will die if you look at it wrong. There's a complete shortage of error handling, and generally many things are not yet implemented {fully,properly,at all}.

A (very incomplete) list of missing things:

  • exceptions
  • arrays
  • most built-in objects
  • spec compliance
  • implicit semicolon handling at parse time
  • regular expressions

You are welcome to fork v2, and do whatever you want with it - further updates will likely not be coming to the original codebase.