Skip to the content.

Home › Developer Docs › Architecture

Aether Architecture & Roadmap

This document provides a high-level overview of Aether’s architecture, current status, and future roadmap.

Table of Contents


📖 For Practical Development: This document focuses on high-level architecture and long-term roadmap.

For day-to-day development guidance, see:


Architecture Overview

Aether is a tree-walking interpreter written in Rust following a classic three-stage pipeline:

Source Code (.ae)
      
   [Lexer]  ──→  Tokens
      
   [Parser] ──→  Abstract Syntax Tree (AST)
      
[Interpreter] ──→  Execution / Output
         
   [I/O Thread Pool]  (async tasks)

Core Components

Component Status Purpose Details
Lexer ✅ Complete Tokenization See LEXER.md
Parser ✅ Complete Syntax analysis See PARSER.md
Interpreter ✅ Complete AST execution See INTERPRETER.md
I/O Thread Pool ✅ Complete Concurrent I/O See ASYNC.md
Event Loop ✅ Complete Callback-based async See EVENT_LOOP.md
REPL ✅ Complete Interactive mode See REPL.md
Standard Library ✅ Complete Core functions See STDLIB.md
Memory Management ✅ Complete Memory management See MEMORY_MANAGEMENT.md

Project Structure

aether/
├── docs/              # Comprehensive documentation
├── stdlib/            # Standard library (written in Aether)
├── examples/          # Example programs
├── tests/             # Integration tests (~559 tests)
└── src/
    ├── lexer/         # Tokenization (14 unit tests)
    ├── parser/        # Parsing (53 unit tests)
    ├── interpreter/   # Execution (17 unit tests)
       ├── evaluator/
          ├── mod.rs           Evaluator struct, constructors, call_main
          ├── expressions.rs   eval_expr, eval_index, await_value
          ├── statements.rs    exec_stmt_internal (all Stmt variants)
          ├── functions.rs     eval_call, try_submit_io_task
          ├── members.rs       eval_member, eval_method_call
          ├── modules.rs       load_module, resolve_module_path
          └── operators.rs     eval_unary, eval_binary
       ├── builtins.rs          Built-in function dispatch
       ├── environment.rs       Scope chain
       ├── event_loop.rs        on_ready / event_loop
       ├── io_pool.rs           I/O thread pool
       └── value.rs             Value enum (16 variants)
    └── repl/          # Interactive mode

Current Status

Phase 5 Complete ✅

Test Coverage: ~693 tests passing (134 unit + ~559 integration) Code Quality: cargo clippy clean (5 acceptable mutable_key_type warnings for HashSet)

What’s Implemented

Core Language

Control Flow

Error Handling

Null Safety

Structs

Async / Await

I/O Thread Pool

Event Loop

Module System

Built-in Functions

Standard Library ✅ (40+ functions, written in Aether)

Test Coverage

Total: ~693 tests passing  (2 permanently ignored  deep recursion stack overflow in debug builds)

Unit Tests (134):
├── Lexer: 14 tests
├── Parser: 53 tests
├── Interpreter: 17 tests
├── Built-ins: 15 tests
└── Other unit: 35 tests

Integration Tests (~559):
├── Core features: 29 tests
├── Async: 21 tests
├── I/O pool: 14 tests
├── Event loop: 15 tests
├── Structs: 14 tests
├── Iterators: 22 tests
├── Sets: 24 tests
├── Null safety: 23 tests
├── JSON: 25 tests
├── HTTP: 5 tests (0 ignored  all network-free)
├── Error handling: 10 + 11 tests
├── String features: 16 + 9 + 8 + 15 tests
├── Array methods: 22 tests
├── Dict: 27 tests
├── Module system: 13 tests
├── Stdlib (collections/math/string/core): 38+26+24+9 tests
├── Stdlib testing framework: 19 tests
├── Function expressions: 13 tests
├── GC/leak: 6 + 4 tests
└── ... (35 test files total)

Roadmap

Completed Phases

Phase Description Tests at completion
Phase 1 Core interpreter (lexer, parser, evaluator, REPL) 102
Phase 2 Essential features (collections, error handling, modules) 147
Phase 3 Standard library (stdlib written in Aether) 230
Phase 4 Advanced language features (structs, sets, iterators) 314
Phase 5 Sprint 1 Testing framework 333
Phase 5 Sprint 2 Advanced types (structs, sets, iterators) 420
Phase 5 Sprint 3 Async/await + I/O pool 476
Phase 5 Sprint 4 Error context + stack traces ~547
Phase 5 Sprint 5 Null safety + Event loop ~693

Near-Term Backlog (Tier 1)

See BACKLOG.md for the full prioritised list. Top items:

Tier 2: Type System

Tier 3: Networking

Longer-Term

Compiler Improvements

Runtime Optimization

Design Principles

Core Philosophy

  1. Simplicity First — start with straightforward implementations; optimize later
  2. Test-Driven Development — write tests before implementation; tests serve as documentation
  3. User Empowerment — stdlib in Aether (users can read and extend); clear error messages
  4. Pragmatic Evolution — ship working features quickly; iterate based on usage

Technical Decisions

Why Tree-Walking Interpreter?

Why Rust?

Why Rc for GC?

Why Stdlib in Aether?

Why std::sync::mpsc for async?

Resources

Documentation

Core Implementation:

Language Features:

External Resources


Last Updated: April 29, 2026 Current Phase: Phase 5 Complete ✅ Test Count: ~693 passing


← Language Design    Development Guide →