Пишем свой PHP-экстеншен на Rust
FirstJohn 54 минуты назад Пишем свой PHP-экстеншен на Rust Средний 12 мин 1.3K Блог компании FirstVDS PHP * Rust * Программирование * Туториал Я довольно долго пишу бэкенд на PHP: в основном это привычные API, админки,...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
В сфере искусственного интеллекта произошло заметное событие. FirstJohn 54 минуты назад Пишем свой PHP-экстеншен на Rust Средний 12 мин 1. 3K Блог компании FirstVDS PHP * Rust * Программирование * Туториал Я довольно долго пишу бэкенд на PHP: в основном это привычные API, админки, интеграции и очереди. Для большинства задач этого стека более чем достаточно.
Однако со временем мне стало интересно разобраться, как устроен PHP «под капотом», и попробовать написать код, который будет работать не поверх интерпретатора, а внутри него. Заодно появился хороший повод познакомиться с Rust — языком, который всё чаще используют для создания производительных и безопасных системных компонентов. В этой статье мы с нуля напишем собственное PHP-расширение на Rust.
Технические детали
Разберёмся, как устроен процесс разработки, как собрать расширение и подключить его к PHP, как экспортировать функции и работать с типами данных. После прочтения у вас будет готовый шаблон проекта и понимание того, как создавать собственные экстеншены без необходимости писать код на C и вручную работать с Zend API. Для реализации я выбрал ext-php-rs — библиотеку, которая предоставляет удобную обёртку над Zend API и позволяет собирать PHP-расширения обычной командой cargo build, без phpize и написания glue-кода на C.
На практике это выглядит так: вы описываете Rust-функции, помечаете их макросами и получаете файл . so, который PHP загружает как обычное расширение. Мы не будем ограничиваться только сборкой проекта.
В конце статьи сравним производительность расширения с реализацией на чистом PHP на нескольких практических примерах: от классического Hello World до генерации UUID, обработки строк регулярными выражениями и парсинга логов. Все примеры, бенчмарки и исходный код доступны в репозитории alexdontsov/php_rust_ext. Что такое ext-php-rsext-php-rs — это библиотека, которая предоставляет безопасную и удобную обёртку над внутренним API PHP (Zend API).
Отраслевые последствия
Она позволяет разрабатывать PHP-расширения на Rust, не погружаясь в детали взаимодействия с движком и не работая напрямую с API, написанным на C. При разработке классического расширения приходится самостоятельно регистрировать функции и классы, работать с zval, разбирать аргументы, управлять памятью через emalloc/efree, а также использовать phpize и систему сборки Autotools. ext-php-rs берёт большую часть этой работы на себя.
В результате разработчик получает обычный Rust-проект с привычной экосистемой Cargo и минимальным количеством специфичного для PHP кода. Основные макросы библиотеки:# — экспортирует функцию в PHP;# — описывает модуль расширения;# и # — экспортируют классы и их методы (в этой статье мы их рассматривать не будем). Библиотека автоматически преобразует большинство распространённых типов данных между Rust и PHP.
Например, String, bool, Vec, HashMap, T> и Result можно использовать прямо в сигнатурах функций, не работая вручную с zval. Если функция возвращает Result, ошибка автоматически преобразуется в PHP-исключение.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





