RuneWay is a programming language written in Rust, with syntax inspired by Rust, Python, and JavaScript.
- Comments (
//,/* */) - Variables and Types (
let,int,float,string,bool,null) - Binary and Unary Operations
- String Interpolation (
f"...",r"...",fr"...") - Logic and Loops (
if,while,for,loop) - Functions (
act name() {}) - Static type annotations (
x: int) - Static type annotations in functions (
act f(x: int) -> int) - Constants (
const PI: float = 3.14) - Generic types (
SomeType<T, E, 3>)
RuneWay is a compiled language. The pipeline is:
source (.rnw)
│
▼
Lexer ──► Tokens
│
▼
Parser (Recursive Descent + Pratt) ──► AST
│
▼
HIR lowering + name resolution ──► HIR
│
▼
Semantic / type checking
│
▼
MIR lowering ──► MIR
│
▼
Cranelift IR codegen ──► native binary
- Lexer (out: Tokens)
- Parser (out: AST. Based on: Recursive Descent + Pratt) — in progress
- HIR (out: HIR) — in progress
- Name resolution
- Semantic / type checker
- MIR (out: MIR)
- Cranelift IR codegen (out: native binary)
- Native console out (
print,println) - Native console in (
input) - Primitive Types (
int,string,bool, ...)
- Module System (Imports:
import some_module::some_submodule) - std::buffered
- std::http
- std::json
- std::itertools
- std::random
- std::decimal
- std::math
- std::files
- std::time
- std::mem
- Method calls (
a.iter()) - User-defined structs
- Contracts
- Error reporter (Rust like)
- User-defined Error Throwing
To be continued...
To be continued...
- Telegram: @voiris
- Telegram Channel: Потёмки Войриса
- Github: github.com/Voiris
- Carrd: Voiris
MIT License. See LICENSE for details.