2

Sobre Go como linguagem de sistemas: eu entendo a crítica. Quando falo desse espaço, penso mais em controle,
previsibilidade, binário nativo, baixo overhead e capacidade de escrever tooling, runtime, servidores e partes mais
próximas da infraestrutura. Go entra em parte disso, mas realmente não tenta ocupar o mesmo lugar que C, Zig ou Rust.

Sobre ownership/borrow no Glide: a ideia não é copiar o Rust nem dizer que o Glide “faz o que Rust não consegue”. Rust
resolve um problema muito difícil: segurança de memória sem GC, com controle fino e garantias fortes em tempo de
compilação. O custo disso é um modelo de ownership/borrow mais explícito, incluindo lifetimes quando a inferência não
basta.

No Glide, o caminho é diferente. A linguagem usa arenas como modelo principal de memória, então muitos valores vivem
dentro de um escopo/arena e são liberados em bloco. Isso reduz bastante a necessidade de rastrear ownership fino objeto
por objeto. Em vez de provar todas as relações de tempo de vida como o Rust, o Glide tenta tornar o caso comum mais
simples: alocar, usar dentro de um escopo claro e descartar tudo junto.

Isso tem limitações. Não é a mesma garantia formal do borrow checker do Rust. Se você quer controle máximo e garantias
muito fortes contra dangling references em todo cenário possível, Rust continua sendo a referência. O Glide tenta trocar
parte dessa rigidez por ergonomia e previsibilidade, usando arenas, escopos e convenções mais simples.

Sobre err(): funções que podem falhar retornam um tipo de resultado, como !T. Então um err(...) não é exceção; é um valor
de erro. Quem chama precisa lidar com isso ou propagar usando ?. A ideia é deixar o fluxo de erro explícito, mais
parecido com Result do Rust/Zig do que com exceções.

E sim, eu conheço Zig, Odin e outras linguagens nessa linha “better C”. Elas são referências importantes. Zig é muito
forte em controle explícito, comptime e integração com C. Odin tem uma pegada muito interessante para programação
prática, tooling e jogos/sistemas. Rust joga outro jogo: garantias fortes de segurança e concorrência, mas com uma
complexidade maior.

Eu diria que o Glide está mais próximo dessa família de linguagens compiladas modernas do que de Go puro. Ele tem algumas
ideias que lembram Rust/Zig/Odin, mas com outro equilíbrio: arena allocation por padrão, erros como valores, corrotinas
M:N, canais, traits e uma sintaxe que tenta continuar simples.

Então a proposta não é “fazer o que Rust não consegue”, nem fingir que Zig/Odin não existem. É explorar outro ponto no
mapa: uma linguagem generalista, grande, com controle razoável, ergonomia boa e escolhas próprias de memória, erro e
concorrência.

Carregando publicação patrocinada...
1

Você parece estar fazendo um bom trabalho, ou pelo menos ele está bem adiantado. Não é projeto de uma pessoa emocionada que está tentando fazer alguma coisa qualquer, o que eu valorizo também, mas uma iniciativa mais estruturada é bem mais interessante.

Eu conheço bem o funcionamento de arenas, e sei que tem um certo problema para garantir que tudo não escape de uma arena, isso não é tão simples, precisa ter um mecanismo que garanta isso ou terá o problema que tem em C, por exemplo. O risco é menor, mas entendi que você preferiu deixar acontecer se o programador não se atentar o escape.

Eu entendi como o sistema de result funciona, o que faltou foi um exemplo de tratamento do err() diferente da propagação. Eu até imagino como seja, mas pode ser que você criou algo diferente.

Conhece Jai? Até onde dá para conhecer. Estou acompanhando lá e o GH.

Agora pude ver mais informações que você resolveu o problema com o website da linguagem.

Quero ver de perto como está a implmentação da concorrência que é algo que eu nunca me aprofundei tanto.