Skip to content

Repository files navigation

The Aether Programming Language

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.

Aether classes demo


Features

  • 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.


Installation

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 | bash

Windows (PowerShell)

iwr https://raw.githubusercontent.com/Shoyeb45/aether-lang/main/scripts/install.ps1 -useb | iex

Verify it worked:

aether version

Quick Start

Run a script:

aether run path/to/script.ae

A 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/.


Documentation

Doc Description
Language Guide Syntax, statements, expressions, and semantics
Architecture How the interpreter is structured internally
Roadmap What's done and what's coming

Roadmap

See docs/ROADMAP.md for the full, up-to-date list.


License

This project is licensed under the terms of the LICENSE file in this repository.

About

A dynamically type, tree-walking interpreted programming language, written from scratch in C++23.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages