Persiguiendo compiladores JIT: La falsa promesa de optimizar cachés en línea

2025-03-13
Persiguiendo compiladores JIT: La falsa promesa de optimizar cachés en línea

Este artículo investiga la mejora del rendimiento de los compiladores Ahead-of-Time (AoT) añadiendo Modificación Binaria Dinámica (DBM). Los investigadores implementaron una optimización de caché en línea (IC) basada en DBM en el compilador Hopc AoT JavaScript. Sin embargo, los experimentos no mostraron ninguna mejora de rendimiento. El estudio descubrió que reducir los accesos a la memoria no siempre acelera la ejecución en arquitecturas modernas, desafiando las estrategias de optimización tradicionales. Se concluye que las optimizaciones sofisticadas de compiladores solo valen la pena si el procesador no puede acelerar el código por sí solo, un hallazgo aplicable tanto a los compiladores AoT como a los JIT.

Leer más

Coherencia en Clases de Tipos: Una Comparación entre Swift, Rust, Scala y Haskell

2025-03-12
Coherencia en Clases de Tipos: Una Comparación entre Swift, Rust, Scala y Haskell

Las clases de tipos son un mecanismo popular para la programación genérica, utilizado en lenguajes como Haskell, Swift, Rust y Scala. Sin embargo, la programación implícita, aunque conveniente, puede llevar a la ambigüedad en la inferencia de tipos, poniendo en peligro la coherencia (la propiedad de que un programa tenga exactamente un significado). La comunidad de investigación está dividida: algunos favorecen la resolución sensible al contexto; otros abogan por instancias globalmente únicas para evitar ambigüedades. Este artículo compara cómo estos cuatro lenguajes abordan la coherencia de las clases de tipos, revelando que, a pesar de las diferencias sintácticas, sus estrategias para sortear las limitaciones de las instancias únicas son sorprendentemente similares.

Leer más