Ir para o conteúdo

TalorSegurança de memória que o compilador prova, não o programador escreve.

Segurança de memória estática e sem coletor de lixo, e menos para escrever à mão: regiões são inferidas em vez de anotadas, um borrow não precisa de sigil escrito, e o call site não carrega nada.

talor
use std.math.{PI};

variant Shape { Dot, Circle(f64), Rect { w: f64, h: f64 } }

fn area(s: Shape): f64 {
    match s {
        Shape.Dot => 0.0,
        Shape.Circle(r) => PI * r.powi(2),
        Shape.Rect { w, h } => w * h,
    }
}

fn main(): i32 {
    let shapes: Array<Shape> = [Shape.Circle(2.0), Shape.Rect { w: 3.0, h: 4.0 }, Shape.Dot];
    let total: f64 = 0.0;
    for s in shapes {
        total += area(s);
    }
    println(`total area: ${total}`);
    0
}

Por que Talor ​

  • Ownership sem os sigils. Parâmetros passam por borrow por padrão, e o compilador infere do corpo o que uma função faz com os valores de quem chamou - uma clause depois da assinatura (edits dst, takes src) apenas declara isso em voz alta. Nada é escrito no call site, nunca.
  • Sem referências. Não existe &, não existe &mut e não existe 'a: um lugar entregue a uma função que só lê é um borrow daquele lugar, e a região em que ele continua válido é inferida do fluxo de controle em vez de escrita na assinatura.
  • Um ponto para tudo. Shape.Circle(r), Point.of(1.0, 2.0), e io.STDIN depois de use std.io;: a mesma marca para casos de variant, métodos estáticos e caminhos de module. :: não existe.
  • Tipos soma e casamento de padrões. Um variant é uma união marcada com um payload por caso, lido apenas por um match exaustivo. Option<T> e Result<T, E> são variants, e é por isso que a linguagem não tem null nem exceções.
  • Erros são valores. Result<T, E> com ? para propagar, Option<T> para ausência, e panic só para o que não pode continuar.

Sobre esta tradução ​

Esta é a documentação em português do Brasil, e ela espelha a árvore em inglês página por página. O original em inglês é a fonte: quando os dois divergirem, vale o inglês. As páginas que ainda não foram traduzidas abrem com um aviso dizendo isso e um link para o texto original, para que a navegação nunca termine em uma página que não existe.

Talor v0.1.0 - Publicado sob a licença MIT OR Apache-2.0.