Pular para o conteúdo principal

Hew

Hew compila programas baseados em actors para código nativo. Cada actor possui seu estado, e supervisors decidem como actors que falharam reiniciam.

Ler status atual · GitHub

O estado fica com o actor

Este actor de sessão possui seu vector de mensagens. post é o único código que o modifica, e cada chamada espera o handler terminar antes de retornar um Result.

count lê o mesmo estado privado e retorna o valor ao caller. O ramo de erro continua visível porque o actor pode ter parado antes da chamada terminar.

Ler o modelo de actors → 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"),
    }
}

Instalar Hew

Escolha o sistema operacional e a versão do compilador.

v0.9.3 · Versão

Leia o guia completo de instalação.

O que a linguagem torna explícito

As superfícies de actors, supervisão, concorrência e wire disponíveis na v0.9.3.

Uma chamada a Session
  1. Chamador: chat.post("hello"). Aguarda o resultado do handler.
  2. Caixa de mensagens: post("hello").
  3. Um turno do handler: messages.push(text). Estado privado: messages: ["hello"].
  4. Resultado da chamada → Chamador.

Uma chamada post bem-sucedida atualiza o estado privado de Session antes de retornar seu resultado.

Isolamento por actors

Cada actor possui seu estado de forma exclusiva. O compilador aplica limites locais de actors e verificações Send.

Árvores de supervisão

Serviços caem — Hew espera isso. Actors supervisors, orçamentos de reinício e as estratégias centrais de reinício fazem parte da linguagem, não de um framework separado.

Concorrência estruturada

Um scope limita o trabalho filho e espera por ele antes de retornar; fork inicia chamadas independentes que podem ser reunidas depois.

Contratos Wire

Wire types colocam schema, tags de campos e verificações de compatibilidade na linguagem, ao lado dos actors que os enviam.

Diário de engenharia

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 de out. de 2026
Ler o 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