Skip to content

hsiaosiyuan0/naive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Learn JavaScript the hard way 🤯

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages