Odin: Uma linguagem inspirada em C que abraça as melhores práticas modernas

2025-05-13
Odin: Uma linguagem inspirada em C que abraça as melhores práticas modernas

O autor, com base na experiência de construir um motor de jogo em C, destaca a incorporação de várias melhores práticas de C em Odin. Isso inclui alocadores personalizados (com suporte embutido nas bibliotecas principais do Odin), alocadores temporários para gerenciamento de memória baseado em quadros, alocadores de rastreamento para detecção de vazamentos, inicialização zero, inicializadores designados e programação amigável ao cache por meio de suporte SoA. Odin consegue isso mantendo a simplicidade de C, adicionando recursos modernos como genéricos e sobrecarga. O autor enfatiza que, embora os recursos do Odin sejam muito benéficos para aqueles com um histórico semelhante em C, também é acessível para aqueles não familiarizados com esses conceitos, sugerindo seu livro como um recurso introdutório.

Leia mais
Desenvolvimento

Alocadores de Arena e Vetores Dinâmicos em Odin: Armadilhas Escondidas

2025-04-13
Alocadores de Arena e Vetores Dinâmicos em Odin: Armadilhas Escondidas

O uso de alocadores de arena com vetores dinâmicos em Odin apresenta armadilhas sutis. Arenas gerenciam eficientemente alocações com o mesmo tempo de vida, desalocação tudo de uma vez. No entanto, o mecanismo de crescimento de vetores dinâmicos deixa blocos de memória antigos sem liberação ao usar um alocador de arena, levando a desperdício de memória. O artigo explica o porquê: alocadores de arena não suportam desalocações individuais, e o crescimento do vetor dinâmico cria um 'cemitério' de blocos antigos. Soluções incluem usar o alocador padrão, pré-alocar o tamanho máximo ou usar uma arena virtual crescente. Embora a arena virtual crescente impeça a movimentação de blocos de memória, ela não é imune a potenciais desperdícios. O artigo conclui que, se o uso da memória for altamente dinâmico, evitar alocadores de arena é aconselhável.

Leia mais