Привет всем!
Этой статьей хочу начать серию переводов / краткое содержание докладов, которые были представлены на Haxe Summit 2018, 3-5 мая. Кстати, в нашем telegram-чате переводы будут появляться раньше на несколько дней.
Что ж перейдем сразу к делу...
Конференция началась с приветствия от Josefiene Pertosa, в котором она рассуждала о том, что нужно человеку для счастья. Источников счастья может быть множество, но для программистов одним из таких источников может быть ощущение движения вперед, ощущение прогресса, достижения чего-либо нового, осознания, что в процессе ты узнаешь что-то новое и чувствуешь вдохновение.
И Haxe как уникальный язык может дать нам, программистам, новый опыт, дать инструменты для необычного решения задач и тем самым стать таким источником вдохновения. Сама конференция тоже должна вдохновить нас и дать пищу для ума для дальнейших действий.
Далее последовал традиционный доклад от Nicolas Cannasse о текущем состоянии дел.
Начал он с краткой истории Haxe и Haxe Foundation:
Новые партнеры Haxe Foundation:
Команда у Haxe небольшая, приятно знать, что двое из них - это наши соотечественники: Александр Кузьменко (занимается поддержкой PHP-платформы) и Даниил Коростелёв (занимается поддержкой Haxe со стороны IDE).
Также в этом году к команде присоединился Phil Chertok в качестве директора по маркетингу (он также выступил с докладом).
Работа над языком координируется через Slack.
Средства Github используются для:
Кроме основного репозитория существует проект Haxe Evolution, предназначенный для внесения и обсуждения предложений от членов сообщества на предмет новых возможностей языка и изменений в архитектуре компилятора.
Примерами новых фич, которые появились в языке с помощью Haxe Evolution, являются тип Any и Arrow Functions.
Далее Nicolas перечислил сильные и слабые стороны команды компилятора и Haxe Foundation.
Как видно, сильными сторонами он считает, что им удается:
Слабыми же сторонами Nicolas считает:
Говоря о развитии Haxe Foundation, Nicolas упомянул, что они продолжают поиски разработчика компилятора на постоянную работу.
Далее Nicolas рассказал о том, что было сделано непосредственно с компилятором за прошедшие с Haxe Summit 2017 полгода. Почти 1900 коммитов - это вам не шутки :)
Также нас ждет новый интерпретатор макросов Eval, о котором в прошлом году рассказывал Simon Krajewski. Eval в среднем в 4 раза быстрее своего предшественника, а в некоторых случаях - до 10 раз быстрее.
Улучшена стабильность Compilation Server’а. Данные изменения означают сокращение времени компиляции, а также лучшую поддержку автодополнения для IDE.
Очень большое внимание уделяется интеграции с Visual Studio Code. Данная IDE стала очень популярна среди Haxe-программистов - доказательством этого является тот факт, что большая часть докладчиков использовала VS Code (сам Nicolas несколько лет подряд использовал FlashDevelop, а на этой конференции он уже пересел на VS Code).
В Haxe 4 нас ждут:
Для следующей версии (Haxe 4.1?) запланированы следующие фичи:
Большую часть своего выступления Nicolas посвятил HashLink - новой виртуальной машине для Haxe. Долгое время я вообще не знал что это такое :)
С использованием HashLink выпущена игра от студии Shiro Games - NorthGard. Таким образом Nicolas считает, что HashLink готов к использованию в продакшене коммерческих проектов.
Главной особенностью HashLink является Dual compilation (“двойная” компиляция) - возможность скомпилировать проект в байт-код или в нативный код.
При этом байт-код на выходе получается намного быстрее байт-кода neko, связано это с тем, что neko - динамически типизирован, а HashLink - статически.
Нативный код - это по сути Си, который затем можно скомпилировать в исполняемый файл.
При этом Nicolas считает, что удобнее использовать именно вариант с компиляцией проектов в байт-код (NorthGard именно так и выпущен в Steam), при этом не требуется промежуточный шаг компиляции кода, а байт-код получается незначительно медленее нативного кода (по его оценкам разница в скорости работы составляет около 30%). Разница в производительности достигается тем, что код дополнительно оптимизируется Си-компилятором.
В случае байт-кода проект можно запустить с помощью JIT-рантайма, используя параметры запуска: hl myApp.hl <args>.
Оба варианта (байт-код или нативный код) используют общий компактный рантайм, включающий в себя стандартную библиотеку (например, для работы со строками) и garbage collector (кстати, Nicolas признает, что garbage collector в hxcpp работает намного быстрее, поэтому для релиза игр на HashLink на консолях нужно проводить дополнительную работу - стараться как можно меньше создавать новые объекты во время исполнения, а также дополнительно отслеживать утечки памяти).
С недавнего времени HashLink-проекты можно запустить не только на десктопах, но и на мобильных платформах и на консолях (Nicolas обещал скорый релиз Northgard на консолях).
Еще одной сильной стороной HashLink является поддержка инструментов для разработчика - интеграция с VSCode с полной поддержкой дебаггера, в том числе с возможность отладки многопоточного кода.
И завершил свой доклад Nicolas перечислив успешные игровые проекты, использующие Haxe:
Vegas World - социальное казино от FlowPlay, которое перешло с Flash на html5 с помощью OpenFL (об этом были доклады в прошлом году, а также в этом).
Northgard - стратегия от студии Shiro Games
Dead Cells - игра от MotionTwin
И Northgard и Dead Cells сделаны на HashLink + Heaps, имеют высокие оценки от пользователей и продались (по примерным оценкам SteamSpy) более чем 500 тыс. копий каждая. Обе игры планируется выпустить на консолях (PS4 и Xbox One).