Pull to refresh

Зимний отчет о состоянии Haxe

Reading time 4 min
Views 2.2K
Original author: Simon Krajewski

7 февраля в офисе компании InnoGames состоялась очередная мини-конференция HaxeUp Sessions 2020 Hamburg, на которой Саймон Краевский отчитался о проделанной работе, рассказал немного о ближайшем будущем Haxe. И здесь я хотел бы представить перевод основной части его доклада (пропустив начало, в котором Саймон рассказывает о том, как он попал в Haxe и чем занимался в Haxe Foundation. Об этом он уже рассказывал на предыдущем HaxeUp).


image


Кратко о том, что было сделано за прошедший 2019 год:


  • в феврале и марте вышли 2 релиз-кандидата (4.0.0-rc1 и 4.0.0-rc2)
  • в апреле к команде Haxe Foundation присоединились 2 новых человека: Аурел Били начал проходить шестимесячную практику в качестве интерна, а Александр Кузьменко стал вторым штатным разработчиком компилятора
  • в мае прошел Haxe US Summit 2019
  • в июне вышел Haxe 4.0.0-rc3. А в сентябре — Haxe 4.0.0-rc4 и Haxe 4.0.0-rc5
  • и в октябре, после нескольких лет разработки, вышел Haxe 4.0.0
    после этого до конца 2019 года вышло несколько минорных релизов, включающих в себя в основном исправления найденных проблем. На текущий момент последняя официальная версия Haxe — 4.0.5.

image


Рассказав о прошлом, давайте посмотрим, что ждет Haxe в 2020 году:
В первой половине года планируется выпустить Haxe 4.1. Данная версия будет включать в себя:


  • оптимизация хвостовых вызовов (tail-recursion elimination) — если в самом конце тела функции она вызывает сама себя, то компилятор может заменить этот вызов на цикл (данная фича уже присутствует в ночных сборках)
  • поддержка SSL в интерпретаторе макросов eval (соответствующий pull request был смержен на прошлой неделе)
  • в настоящее время Александр Кузьменко работает над улучшением обработки исключений (планируется добавить новый класс haxe.Exception, который можно будет использовать в качестве базового класса для исключений)
  • улучшение поддержки IDE со стороны компилятора. Для крупных проектов скорость работы IDE особенно актуальна (в том числе и для игры Forge of Empires от InnoGames — партнера Haxe Foundation)

Во второй половине 2020 года планируется добавить:


  • асинхронное системное API — asys (о нем в октябре подробно рассказывал Аурел Били)
  • корутины, обсуждение которых сильно затянулась, но Саймон надеется, что скоро команда придет к консенсусу, после чего можно будет приступить к их реализации
  • функции, доступные на уровне модуля, с которыми отпадает необходимость "оборачивать" функции в классы

И в октябре планируется провести европейский Haxe Summit в Германии, в городе Линц-ам-Райн.


image


Давайте поговорим немного о Haxe Foundation, потому что обычно все обсуждают сам язык, его фичи, но практически никогда не говорится о том, что же такое Haxe Foundation и чем вообще занимается.


На сайте Haxe можно найти следующее описание: "Haxe Foundation был создан для долгосрочного финансирования разработки Haxe и оказания поддержки компаниям, использующим Haxe". И это, в принципе, все — Haxe Foundation оказывает платную поддержку своим партнерам.


Давайте сначала я расскажу о том, куда идут полученные деньги:


  • во-первых, часть средств идет на оплату труда разработчиков (в настоящий момент это Саймон Краевский и Александр Кузьменко)
  • во-вторых, часть идет на финансирование отдельных проектов. В настоящее время такой проект один — dts2hx Джорджа Корни. dts2hx конвертирует декларативные файлы TypeScript (d.ts) в Haxe-экстерны. Некоторое время назад Саймон начинал работать над этим проектом, он написал генератор парсеров, применил его к декларативным файлам TypeScript, следующим шагом была генерация экстернов. Сначала такой подход сработал, но с течением времени TypeScript эволюционировал и парсить его стало существенно сложнее. Вместо парсинга было бы проще задействовать компилятор самого TypeScript, чтобы сам компилятор сразу выдавал Haxe-экстерны. Именно над этим и работает Джордж, в настоящее время у него есть прототип, примерно в марте ожидается версия, которую можно будет тестировать. В итоге dts2hx должен значительно повысить качество экстернов для JavaScript-библиотек и упростить их использование из Haxe
  • и в-третьих, часть средств Haxe Foundation идет на организацию мероприятий. Например, упомянутый ранее EU Haxe Summit 2020.

image


Теперь давайте рассмотрим, в чем выгода партнерства с Haxe Foundation для компаний:


  • это, конечно же, приоритетное исправление ошибок и внесение улучшений
    партнеры также могут влиять на выбор стратегических направлений развития. Обычно это происходит в рамках Haxe Summit, где можно обсудить вещи, на которых по мнению партнеров стоит сосредоточить усилия. На основании таких встреч делаются выводы о дальнейшей работе
  • однако, будучи партнером Haxe Foundation, вам не удастся "купить" нужную вам фичу в языке. Саймон специально оговорил этот момент, т.к. ранее один из бывших партнеров запросил привнести в Haxe фичу из TypeScript, но в Haxe Foundation решили, что она не впишется в язык. В таких случаях вместо этого Haxe Foundation предложит помощь в решении существующей проблемы, т.к. обычно вам требуется именно решить существующую проблему, а не получить новую фичу в языке
  • связь между Haxe Foundation и партнерами обычно осуществляется через "послов Haxe Foundation". В случае InnoGames таким человеком является Даниил Коростелев — он состоит в Haxe Foundation с 2013 года и в то же время является сотрудником InnoGames.

image


В качестве примера работы Haxe Foundation с партнерами рассмотрим реализацию поддержки функции "Go To Implementations" в VS Code:


image


Обычно в IDE есть функция перехода от определения интерфейса ко всем классам, реализующим данный интерфейс — в VS Code данная функция называется "Go To Implementations". И до недавнего времени Haxe не поддерживал данную функцию.


InnoGames сообщили нам о том, что в случае их проекта с большим количеством интерфейсов, классов, реализующих эти интерфейсы, и их подклассов, им не хватает этой функции. Была заведена соответствующая задача (18 декабря 2019 года).


В Haxe Foundation провели внутреннее обсуждение этой проблемы.
И 13 января эта проблема уже была разрешена.


Как видно, процесс занял меньше месяца, но также стоит учесть, что существенную часть этого времени пришлось на праздники (Рождество и Новый год).


И теперь данная функция доступна в ночных сборках Haxe и в vshaxe 2.18.0.


Хотелось бы отметить, что решение проблем в рамках партнерства приносит пользу всем: InnoGames получили нужную им функцию, но теперь ей могут пользоваться и все остальные!
Конечно, это совсем небольшая фича, но таких фич много, и каждая из них помогает всем. Поддержка со стороны партнеров позволяет улучшать Haxe, и я надеюсь, что этот процесс развития будет продолжаться.

Tags:
Hubs:
+9
Comments 5
Comments Comments 5

Articles