Компания Facebook выложила в свободный доступ библиотеку Hack Codegen, которая автоматически генерирует исходный код на языке программирования Hack для виртуальной машины HipHop (HHVM). Она позволяет создавать схемы с фрагментами повторяющегося кода и автоматической реализацией всей сопутствующей функциональности. Библиотека сама генерирует необходимые классы, переменные, методы, функции, интерфейсы, файлы и другие стандартные блоки кода.
Hack — PHP-подобный язык программирования общего назначения со статической типизацией, представленный Facebook в марте 2014 года. Целью создания языка стало совмещение быстрого цикла разработки PHP с надежностью и производительностью, которые обеспечивает статическая типизация. К настоящему моменту Hack и HHVM поддерживают многие фреймворки.
Кроме статической типизации, в Hack внедрено множество фич из современных языков программирования, которых не хватало в PHP: это обобщенное программирование, псевдонимы типов, обнуляемые типы и ограничения на параметры типов, коллекции, лямбды, а также проверка возвращаемых типов и типов параметров во время выполнения.
Библиотека Hack Codegen упрощает работу при создании сложных веб-сайтов и больших проектов.
Пример реализации схемы в Hack Codegen
codegen_class('HelloWorld')
->addMethod(
codegen_method('sayHi')
->setBody('echo "hello world\n";')
);
Эта схема генерирует такой класс.
class HelloWorld {
public function sayHi() {
echo "hello world\n";
}
}
Исходный код Hack Codegen опубликован на Github.
«Возможность генерировать код с помощью инструмента автоматической генерации позволяет разработчикам увеличить уровень абстракции, создавая декларативные фреймворки, которые транслируются в высококачественный код Hack. Мы некоторое время уже используем библиотеку Hack Codegen в компании Facebook. Наблюдая столь значительный эффект от ее применения внутри компании, мы открываем исходный код, чтобы больше людей могли воспользоваться ее преимуществами», — пишет программист Алехандро Марку (Alejandro Marcu) в официальном блоге Facebook.