/naive

Learn JavaScript the hard way 🤯

Primary LanguageRust

Naive

This is a naive JavaScript engine implemented in pure Rust to improve my JavaScript knowledge.

asciicast

Checklist

Frontend

Intermediate

  • Generates bytecode(opcode) from AST
  • Bytecode analysis
  • Optimizes bytecode according to the analysis result

VM

  • Reference-counting GC with Mark-and-Sweep to deal with the reference cycle
  • Common Flow Control Statements(if-else, for, while, do-while)
  • Closure
  • Mathematical Operations
  • Function Invocation
  • Logical Operations
  • Bitwise Operations
  • Object Literal
  • New Expression
  • Member Access Expression
  • For-in Statement
  • Switch Case Statement
  • Try-catch Statement
  • Debug

How to run

Thanks to the Rust development infrastructure, run this engine from source is very easy, just:

$ cargo build
$ cargo run your-script.js

It's still in development, after it’s completed I’d like to write a series of posts to describe how to build a JavaScript engine from scratch, stay tuned.

Feel free to leave any response by submitting a issue. Star/Fork to subscribe its updates is welcome.