Explications très détaillées sur le compilateur Just In Time (JIT) introduit dans PHP 8.
Concrètement ça améliore la vitesse d'exécution de votre code au fur et à mesure que celui-ci est executé en compilant spécifiquement en code machine (assembleur) certaines function qui sont appellés toujours avec les mêmes types.
C'est le même principe que le JIT dans la JVM ou v8.
je ne suis pas sûr que vous obteniez des améliorations aussi bonnes mais ça ouvre la porte à d'autres types d'applications boudés par souci de performances, comme l'IA, le jeu vidéo, les statistiques..
Par contre ça m'étonnerait qu'on se mette à faire de l'IA, du jeu vidéo ou n'importe quoi d'autre qui demande des performances avec PHP car le JIT reste quand même bien moins optimisé qu'une compilation Ahead Of Time (C++, Rust, Golang, etc)
Une alternative au compilateur officiel TSC pour Typescript.
C'est beaucoup plus rapide (~100x plus rapide) car:
- écrit en C++
- écrit uniquement pour les versions récentes de TS
- cache des fichiers compilés
Il utilise un bytecode intermédiaire pour représenter le typescript et conserve un cache pour ne prendre en compte que les dernières modifications.
Par contre toutes les fonctionnalités ne sont pas supportées.
(Merci Sébastien pour le partage)
Une très bonne vidéo sur le fonctionnement de la suite d'outils LLVM qui permet de créer plus facilement des langages compilés ahead of time comme C++ ou Rust.
LLVM gère une représentation intermédiaire du langage, un peu comme le bytecode Java ou Javascript, qui est ensuite traduit vers les différentes architectures de CPU.
Cette représentation intermédiaire est optimisé par LLVM et peu être inspecté par tous les outils LLVM compatibles
Un type de supply chain attack peu répandu mais particulièrement difficile à détecter si correctement réalisé.
Créer un compilateur avec une backdoor capable de répliquer cette backdoor dans les programmes compilés