Zum Hauptinhalt springen

Hew

Hew kompiliert actorbasierte Programme zu nativem Code. Jeder Actor besitzt seinen Zustand, und Supervisors bestimmen, wie fehlgeschlagene Actors neu starten.

Aktuellen Status lesen · GitHub

Der Zustand bleibt beim Actor

Dieser Session-Actor besitzt seinen Nachrichtenvektor. Nur post verändert ihn, und jeder Aufruf wartet auf das Ende des Handlers, bevor er ein Result zurückgibt.

count liest denselben privaten Zustand und gibt den Wert an den Caller zurück. Der Fehlerzweig bleibt sichtbar, weil der Actor vor Abschluss des Aufrufs stoppen kann.

Actor-Modell lesen → EN
session.hew
// A chat session is an actor: state lives in fields and only its handlers
// can mutate it. Ordinary actor calls wait for the handler and return a
// Result, whether or not the handler itself returns a value.
actor Session {
    let user: string;
    var messages: Vec<string> = Vec.new();
    receive fn post(text: string) {
        messages.push(text);
    }
    receive fn count() -> i64 {
        messages.len()
    }
}
 
fn main() {
    let chat = spawn Session { user: "ada", messages: [] };
    chat.post("hello").expect("actor stopped");
    chat.post("world").expect("actor stopped");
    let total = chat.count();
    match total {
        .Ok(n) => println(f"{n} messages posted"),
        .Err(_) => println("session unavailable"),
    }
}

Hew installieren

Wählen Sie Betriebssystem und Compiler-Version.

v0.9.3 · Version

Lesen Sie die vollständige Installationsanleitung.

Was die Sprache ausdrücklich macht

Die in v0.9.3 verfügbaren Actor-, Supervision-, Nebenläufigkeits- und Wire-Oberflächen.

Ein Aufruf an Session
  1. Aufrufer: chat.post("hello"). Wartet auf das Handler-Ergebnis.
  2. Mailbox: post("hello").
  3. Ein Handler-Durchlauf: messages.push(text). Privater Zustand: messages: ["hello"].
  4. Ergebnis des Aufrufs → Aufrufer.

Ein erfolgreicher post-Aufruf aktualisiert den privaten Zustand von Session, bevor er sein Ergebnis zurückgibt.

Actor-Isolation

Jeder Actor besitzt seinen Zustand exklusiv. Der Compiler erzwingt lokale Actor-Grenzen und Send-Prüfungen.

Supervision-Bäume

Dienste stürzen ab — Hew rechnet damit. Supervisor-Actors, Neustart-Budgets und die zentralen Neustartstrategien sind Teil der Sprache selbst, nicht eines separaten Frameworks.

Strukturierte Nebenläufigkeit

Ein scope begrenzt Child-Arbeit und wartet vor der Rückkehr darauf; fork startet unabhängige Actor-Aufrufe, die später zusammengeführt werden können.

Wire-Verträge

Wire-Typen bringen Schemas, Feld-Tags und Kompatibilitätsprüfungen in die Sprache, direkt neben die Actors, die sie senden.

Entwicklungsjournal

Hew 0.6.2: safer values, steadier services Edit parsed configuration without changing its source value, then see how Hew 0.6.2 carries the same actor reference across local and remote services. 21. Okt. 2026
Zum Blog → EN

Hew Notes

Language development, engineering articles, releases and community projects. About once a month, with an extra issue for a significant release. Written in English.

Subscribe to Hew Notes