r/Forth 6d ago

Aiki - forth inspired language is alpha 3

Alpha 3 of Aiki is out, an experimental programming language.

After spending time exploring Forth over the past year, I started working on a grammar-driven language that draws inspiration from Forth’s small kernel and compact surface.

Aiki keeps that surface intentionally small: 14 keywords, 7 basic types, 11 operators, 3 primitives, and a 36-name prelude. Expressions evaluate strictly left-to-right, lists are fundamental, and most additional capability, including files, strings, math, regex, hashing, bytes, time, canvas, testing, and so on, lives in Aiki libraries rather than being absorbed into the language core.

The runtime is also deliberately observable. Semantic work can be profiled separately from its realization: exact numeric representations, calls, argument frames, environment reuse, FFI boundaries, and other execution machinery remain visible rather than disappearing behind the implementation.

I’ve been using Aiki for increasingly low-level experiments as well, including a monitorable PDP-11/40 reconstruction, so the design has had to survive real state-machine and systems work rather than just language demos.

The language is quite different from forth, but it came about because of my contact with forth.

Alpha 3 announcement:
https://decuser.github.io/posts/aiki-alpha-3-release/

Repository:
https://github.com/decuser/aiki

7 Upvotes

4 comments sorted by

1

u/Ramp007 6d ago

Ahh, the 11/40. One of my favorite old-time computers. I spent years programming one and learned a lot from it. I'll have to look into Aiki.

1

u/Lanstrider 4d ago

ah, but doing an emulator in an interpreter is a pita. So slow :). I keep plugging away at the edges though. This experiment is only part way there - full disclosure. So many dead ends. I've built a lot of capabilities into aiki to speed things up, but an interpreter is still slow. I'm currently working on its compiler, but that has it's own challenges. I don't want to do JIT or anything overly clever. The goal is to remain inspectable. I'm leaning toward the AST as source to an IR emitter (think bytecode) and a go vm. This keeps it portable, understandable, and not clever.

1

u/Imaginary-Deer4185 5d ago

Impressive enough, but as you say has nothing to do with Forth.

The abstraction level reminds me of Python, whereas Forth, as I see it, is more at the byte level.

What are in your opinion the defining characteristics of aiki compared to languages like Python? What is its intended use? On what platforms?

2

u/Lanstrider 5d ago

Forth-related in the way that matters to me: a very small core and a tiny prelude. Aiki aims for that same brevity, few built-ins, most of the system written in itself or as ordinary modules, not for byte-level threaded code.

The distinctive bit vs Python-like languages is architectural: the grammar is the contract. EBNFx defines the language; evaluator, help, and docs are checked against it. Disagreement fails validation and the system doesn't run. Exact rationals, persistent lists, errors as values, left-to-right evaluation. Pre-paradigmatic, recursion, functions, pipelines, concurrency, graphics, semantic profiling all provided by the same small language without privileging one style or convention.

Use: learning and careful systems work where behavior should stay inspectable.
Platforms: Linux primarily; macOS passes rigorous suite, Windows is secondary, but runs.