Perseguindo Compiladores JIT: A Falsa Promessa de Otimizar Caches Inline

2025-03-13
Perseguindo Compiladores JIT: A Falsa Promessa de Otimizar Caches Inline

Este artigo investiga a melhoria do desempenho de compiladores Ahead-of-Time (AoT) adicionando Modificação Binária Dinâmica (DBM). Os pesquisadores implementaram uma otimização de cache inline (IC) baseada em DBM no compilador Hopc AoT JavaScript. No entanto, experimentos mostraram nenhuma melhoria de desempenho. O estudo descobriu que reduzir acessos à memória nem sempre acelera a execução em arquiteturas modernas, desafiando estratégias de otimização tradicionais. Conclui-se que otimizações sofisticadas de compiladores só valem a pena se o processador não puder acelerar o código por si só, uma descoberta aplicável tanto a compiladores AoT quanto a JIT.

Leia mais

Coerência em Classes de Tipos: Uma Comparação entre Swift, Rust, Scala e Haskell

2025-03-12
Coerência em Classes de Tipos: Uma Comparação entre Swift, Rust, Scala e Haskell

Classes de tipos são um mecanismo popular para programação genérica, usado em linguagens como Haskell, Swift, Rust e Scala. No entanto, a programação implícita, embora conveniente, pode levar à ambiguidade na inferência de tipos, colocando em risco a coerência (a propriedade de que um programa tem exatamente um significado). A comunidade de pesquisa está dividida: alguns favorecem a resolução sensível ao contexto; outros defendem instâncias globalmente únicas para evitar ambiguidades. Este artigo compara como essas quatro linguagens abordam a coerência da classe de tipos, revelando que, apesar das diferenças sintáticas, suas estratégias para contornar as limitações de instâncias únicas são surpreendentemente semelhantes.

Leia mais