Comments 12
Что-то подобное показывал SerafimArts на своих стримах про PHP + Vulcan.
Стримы — это в основном болтология. Не советовал кому-либо тратить время на просмотр их записей. Тем более они на середине обрываются (всего 2 серии), т.к. покопавишь в VK — понял, что эта штука требует дофига опыта, которого у меня просто нет, так что не могу гарантировать качество материала. В качестве альтернативы могу предложить более сжатый и щадащий вариант с введением в OpenGL на PHP: https://www.youtube.com/watch?v=1ZO1wR4rCCQ
Если же мы говорим про демку от Искандера, то она использует SDL. Если кратко, то это набор из функций-утилит для работы с окнами, событиями и 2d примитивами, которая в значительной степени облегчает работу с графикой и не требует глубоких познаний устройств видеокарты. Так что для знакомства с этим миром я бы рекомендовал начать именно с неё (с библиотеки SDL), а не лезть сразу в дебри из OpenGL и уж тем более (тьфу-тьфу) Vulkan.
Остановитесь! Я не успеваю учить =)
Что там учить-то, уже 5-10 лет назад все выучили в разных других языках. Я бы сказал, что PHP даже запаздывает с сахаром (где async-await? или ставка на файберы? - что, в принципе, интересный ход).
где async-await? или ставка на файберы?
Ставка на файберы.
Так одно другому не мешает. В смысле, это разные вещи. Файберы — это просто небольшое улучшение корутин.
А для async/await нужен асинхронный движок. В чем проблема делать сейчас на Amp/Swoole?
Проблема в том, что как правило уже есть проект не на Amp/Swoole, но хочется внедрить для некоторых операций параллельщину. И вот тут начинаются проблемы с сериализацией. Т.к. огромное кол-во кода просто нельзя пропустить через тот же amphp/parallel
, т.к. он не сериализуем (doctrine, symfony/http-client, ...).
Что-то все в кучу. Давайте разбираться.
асинхронность != параллельность
>хочется внедрить для некоторых операций параллельщину
Можно какой-нибудь конкретный пример из жизни? Попробуем разобраться.
Синхронность/одноточность PHP — преимущество, которое очень упрощает код и отладку.
Вот допустим смержат https://github.com/swow/swow в ядро PHP. Что изменится для вашего проекта "не на Amp/Swoole"?
Также, symfony/http-client — вполне поддерживает асинхронность https://symfony.com/doc/current/http_client.html#http-client-streaming-responses И вообще делать непблокирующие HTTP-вызовы — тривиальная задача, которую умели делать еще со времен curl multi.
подробнее, например, тут https://github.com/amphp/ext-fiber/issues/9
пример неработающей связки amp и symfony/http-client - https://github.com/Gemorroj/parallel-nonserializable
где async-await?
Блин, пхпшники уже совсем разленились (ирония)
function await(\Generator $coroutine): mixed
{
while ($coroutine->valid()) {
$current = $coroutine->current();
if ($current instanceof \Generator) {
$current = await($current);
}
$coroutine->send($current);
}
return $coroutine->getReturn();
}
Для файберов примерно тоже самое будет, только ещё шаг со start
добавится.
Так что всё что надо — это определиться с тем что именно будет считаться "единицей авейта". В питоне, например, это корутинки и есть.
А циклический сдвиг вправо >>> собираются добавить когда нибудь?
По моему PHP единственный из распространенных языков где его нет
PHP Дайджест № 213 (27 сентября – 11 октября 2021)