Experimental prototype-based programming language

A small set of composable mechanisms.

Protos is built around objects, slots, delegation, messages, execution contexts, closures, Futures, and Actors. There are no classes: objects delegate directly to other objects.

Core language: v0.1 draftReference implementation: active development
Objects delegate directlyfirst look
animal: {
    alive: true

    speak: () => {
        print(name)
    }
}

dog: animal {
    name: "Rex"
}

dog.speak()

dog delegates to animal. The inherited closure runs with dog as its receiver.

Why Protos?

Fewer independent semantic rules.

The design aims to grow through composition rather than by adding a new language institution for every new capability.

One object-and-slot model

Ordinary object state, module bindings, and lexical bindings all use slots instead of unrelated storage concepts.

Creation is not modification

The language keeps intent explicit: : creates a slot, while = modifies an existing eligible slot.

Closures are the executable value

Methods are an invocation role of closures, not a second callable value category.

Scale by composition

Futures, structured tasks, isolated parallel execution, and Actors extend the same object/message/closure universe.

One universe

Objects, slots, delegation, contexts.

Protos deliberately separates lexical lookup from receiver delegation while reusing the same slot mechanism. Reads may delegate; writes do not silently mutate an ancestor prototype.

Explore the design philosophy →

Start here

Read, run, then go deeper.