Aether is a dynamically-typed, tree-walking interpreted programming language, written from scratch in modern C++23.
It supports closures, first-class functions, and full class-based OOP with inheritance — built as a from-the-ground-up exploration of how interpreters work, from scanning raw source text to executing an AST.
- Primitive types:
number,boolean,string,nil - Arithmetic (
+ - * /), comparison (== != < > <= >=), and logical (AND,OR) operators - Unary negation (
-) and logical not (!) - Lexical scoping — global, local, and block scope
- Control flow:
if/else/else if,while,for - Functions: custom, higher-order, and native (
clock()) - Closures
- Classes: instantiation, methods, constructors, inheritance, method overriding,
super,this - Clean, readable syntax error messages
See the full language guide for syntax and examples.
Grab the latest release for your OS from the Releases page, or run the install script:
Linux / macOS
curl -fsSL https://raw.githubusercontent.com/Shoyeb45/aether-lang/main/scripts/install.sh | bashWindows (PowerShell)
iwr https://raw.githubusercontent.com/Shoyeb45/aether-lang/main/scripts/install.ps1 -useb | iexVerify it worked:
aether versionRun a script:
aether run path/to/script.aeA quick taste:
fun greet(name) {
print "Hello, " + name + "!";
}
greet("world");
class Animal {
init(name) {
this.name = name;
}
speak() {
print this.name + " makes a sound.";
}
}
class Dog < Animal {
speak() {
print this.name + " barks.";
}
}
var d = Dog("Rex");
d.speak();
More examples live in examples/.
| Doc | Description |
|---|---|
| Language Guide | Syntax, statements, expressions, and semantics |
| Architecture | How the interpreter is structured internally |
| Roadmap | What's done and what's coming |
See docs/ROADMAP.md for the full, up-to-date list.
This project is licensed under the terms of the LICENSE file in this repository.
