Poursuivre les compilateurs JIT : la fausse promesse de l’optimisation des caches intégrés

2025-03-13
Poursuivre les compilateurs JIT : la fausse promesse de l’optimisation des caches intégrés

Cet article étudie l’amélioration des performances des compilateurs Ahead-of-Time (AoT) en ajoutant la modification binaire dynamique (DBM). Les chercheurs ont implémenté une optimisation du cache intégré (IC) basée sur la DBM dans le compilateur Hopc AoT JavaScript. Cependant, les expériences n’ont montré aucune amélioration des performances. L’étude a révélé que la réduction des accès à la mémoire n’accélère pas toujours l’exécution sur les architectures modernes, remettant en question les stratégies d’optimisation traditionnelles. Il en conclut que les optimisations sophistiquées des compilateurs ne valent la peine que si le processeur ne peut pas déjà accélérer le code, une conclusion applicable aux compilateurs AoT et JIT.

Lire plus

Cohérence dans les classes de types : comparaison de Swift, Rust, Scala et Haskell

2025-03-12
Cohérence dans les classes de types : comparaison de Swift, Rust, Scala et Haskell

Les classes de types sont un mécanisme populaire pour la programmation générique, utilisé dans des langages comme Haskell, Swift, Rust et Scala. Cependant, la programmation implicite, bien que pratique, peut conduire à des ambiguïtés dans l'inférence de types, compromettant la cohérence (la propriété selon laquelle un programme a exactement une signification). La communauté de recherche est divisée : certains privilégient la résolution contextuelle ; d'autres préconisent des instances globalement uniques pour éviter les ambiguïtés. Cet article compare la manière dont ces quatre langages abordent la cohérence des classes de types, révélant que, malgré les différences syntaxiques, leurs stratégies pour contourner les limites des instances uniques sont étonnamment similaires.

Lire plus