Всем большой привет!
Итак, первое, поздравляю всех с профессиональным праздником Днем Программиста (как вы помните это 256 день)
Второе, сегодня мой день рождения, потому праздную я вдвойне можно сказать 😄 и у меня для вас есть интересная информация напрямую от одного из главных контрибьюторов PHP Дмитрия Стогова о новом JIT-движке, который будет использоваться в следующих версиях PHP.
Как вы знаете JIT появился в PHP 8.0 и представлял из себя компиляцию "на лету" - Just In Time, так же вы вероятно знаете, что PHP является интерпретируемым языком, он не компилирует программы в прямом смысле этого значения, как, например это делают C или Rust.
Чтобы включить JIT нужно было указать несколько параметров конфига php.ini.
Новый JIT движок PHP
Дмитрий Стогов поделился информацией в internal рассылках PHP о новом JIT-движке, который будет использоваться в следующих мажорных версиях PHP. Теперь это настоящий оптимизирующий компилятор с промежуточным представлением, аналогичный серверному компилятору Java HotSpot.
Он создает основу для будущих улучшений и устраняет многие низкоуровневые детали существующего PHP JIT. Вместо поддержки ассемблерного кода для разных процессоров теперь PHP генерирует один IR и передает его независимому от PHP JIT-движку.
Новая реализация JIT основана на IR-Lightweight JIT Compilation Framework и в отличии от старого JIT-подхода в PHP 8.*, который генерирует собственный код непосредственно из байт-кода PHP, эта реализация генерирует промежуточное представление (IR) и делегирует все задачи более низкого уровня в IR Framework. IR для JIT похож на абстрактное синтаксическое дерево (AST) для компилятора.
По сравнению с классическими оптимизирующими компиляторами (такими как GCC и LLVM), IR Framework использует очень короткий конвейер оптимизации. В сочетании с компактным IR-представлением это делает его чрезвычайно быстрым и позволяет генерировать довольно хороший машинный код за разумное время.
Более подробно и с примерами в новом посте https://sergeymukhin.com/blog/novyi-jit-dvizok-dlia-php-84-i-php-9
Post #39
335
- 🎉 7
- 👍 2