Sem coletor de lixo
Go depende de um GC de rastreamento concorrente — conveniente para o desenvolvedor, mas com sobrecarga constante de CPU e picos ocasionais de latência que importam em loops críticos, sistemas de baixa latência e alvos com pouca memória. Glide usa empréstimos delimitados por escopo e arenas: o compilador rastreia a posse em tempo de compilação, a liberação acontece ao sair do bloco, sem rastreamento em tempo de execução. O modelo mental é mais próximo de Rust do que de Go, mas sem necessidade de escrever anotações de tempo de vida.
fn parse_tree() {
let arena: *Arena = Arena::new(4096);
defer arena.free();
let n1: *Node = arena.create(Node);
let n2: *Node = arena.create(Node);
} // arena liberada de uma só vez
func parseTree() {
n1 := &Node{}
n2 := &Node{}
_ = n1; _ = n2
} // GC coleta quando quiser