Interpretadores de Chamada de Cauda: Quatro Anos de Progresso

2025-02-20

Quatro anos atrás, um artigo sobre a escrita de interpretadores ultrarrápidos usando chamadas de cauda e o atributo `musttail` gerou considerável interesse. Agora, essa técnica está sendo adotada no Python 3.14, LuaJIT Remake e outros, proporcionando ganhos significativos de desempenho. O artigo explora o suporte `musttail` do GCC e Clang, o impacto potencial da proposta "return goto" do padrão C em interpretadores de chamada de cauda e detalha os papéis dos atributos `preserve_none` e `preserve_most` na otimização de interpretadores de chamada de cauda. Conclui com um resumo do progresso emocionante no desenvolvimento de compiladores e interpretadores de linguagem de programação.

Leia mais

Rust Sem Pânico: O Rust Pode Substituir C na Programação de Sistemas de Baixo Nível?

2025-02-03

Este artigo explora a viabilidade de usar Rust para substituir C na programação de sistemas de baixo nível, focando especificamente em uma biblioteca Protocol Buffers chamada upb. O autor inicialmente duvidava da capacidade do Rust de igualar o C em desempenho e tamanho de código, mas descobriu uma técnica chamada "Rust Sem Pânico". Isso envolve evitar o uso de `panic!()`. O artigo aprofunda os princípios, vantagens e desafios do Rust Sem Pânico, incluindo tamanho de código, saídas irrecuperáveis e sobrecarga de tempo de execução. Ele demonstra como escrever código Rust Sem Pânico usando técnicas como a utilização da biblioteca libc, opções de otimização e `std::hint::assert_unchecked`, enfatizando a retenção de verificações de estouro no modo de depuração para verificações de consistência extras. Embora esta técnica exija trabalho meticuloso e possa necessitar de evitar a maior parte da biblioteca padrão, promete oferecer o desempenho e o tamanho de código de uma biblioteca C mantendo as garantias de segurança do Rust.

Leia mais
Desenvolvimento