lynzrand / inkstone

[WIP] Course project for Programming Language Principle

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Inkstone Logo

Inkstone is not a markup language.

Inkstone is an experimental general-purpose scripting language to make scripting less frustrating to work with. It was created as the author finds markup languages for game scripts being overwhelmed with unnecessary symbols, tags, or being too domain specific.

Inkstone is the course project for the Programming Language Principle class in BUAA.

Related languages

Inkstone is inspired by RenPy. Various aspects of Inkstone are inspired by Ruby, Rust, Elixir and Haskell.

Building

To build Inkstone, you'll need to install Rust 1.57 stable or later.

After installation, you only need to run:

cargo build

-- And you're good to go!

Implementation status

Status feature
Usable Lexing
Usable Parsing
Usable Bytecode definition
Usable - Bytecode
WIP - Other data structures
WIP Bytecode generation
Usable - Symbol table
Usable - Constant table
WIP - Closure handling
No - Module system
WIP - Code generation
WIP Bytecode virtual machine
WIP - Execution unit
WIP - Garbage collector
No Type checking
No JIT compiler
WIP Documentation

Crates

  • inkstone-syn contains code and structures to parse and represent Inkstone source code.
  • inkstone-bytecode contains the definition of an instruction set for the Inkstone virtual machine.
  • inkstone-codegen contains code for generating bytecode from an AST.
  • inkstone-vm contains implementation of a virtual machine that can run bytecode.
  • The root crate, inkstone, wraps the aforementioned crates and provides an executable.

Planned

  • inkstone-typings for type-checking Inkstone code.
  • inkstone-jit for JIT-ting efficient machine code from bytecode and probably type information, probably using cranelift.

License

The source code of Inkstone's reference implementation is licensed under Mozilla Public License 2.0.

About

[WIP] Course project for Programming Language Principle


Languages

Language:Rust 100.0%