TypePHP — компилятор с опережающей компиляцией (AOT), который переводит исходный код PHP сначала в C++, а затем в нативный машинный код. В отличие от байткод-кеша или виртуальной машины, он не интерпретирует опкоды во время выполнения, а создаёт оптимизированные бинарные файлы, работающие напрямую на процессоре.
При этом сохраняется привычный синтаксис PHP, дополненный информацией о типах на этапе компиляции — это позволяет генерировать быстрый статически типизированный C++ код для критичных участков. Динамические значения PHP, встроенные функции, рефлексия и метаданные объектов продолжают взаимодействовать с рантаймом Zend через PHPX.
TypePHP полностью написан на PHP и является самодостаточным: бинарный файл компилятора собирается путём компиляции исходного кода самого компилятора с помощью TypePHP. Цепочка загрузки состоит целиком из PHP — без использования C или C++ в самом компиляторе.
Проект поддерживает три режима сборки: нативный исполняемый файл, PHP-расширение или разделяемую библиотеку из одной кодовой базы. Есть строго типизированные контейнеры, высокоточная арифметика (GMP, MPFR, libmpdec), проверки на этапе компиляции и кроссплатформенная поддержка Linux, Windows, macOS, а также WASM.
GitHub ★ 748
