The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз языка программирования Haxe 4.1

17.05.2020 10:47

Доступен релиз инструментария Haxe 4.1, включающего одноимённый мультипарадигмальный высокоуровневый язык программирования со строгой типизацией, кросс-компилятор и стандартную библиотеку функций. Проектом поддерживается трансляция в С++, HashLink/C, JavaScript, C#, Java, PHP, Python и Lua, а также компиляция в байт-код JVM, HashLink/JIT, Flash и Neko, с доступом к родным возможностям каждой целевой платформы. Код компилятора распространяется под лицензией GPLv2, а стандартной библиотеки и развиваемых для Haxe виртуальных машин HashLink и Neko под лицензией MIT.

Язык является expression-ориентированным со строгой типизацией. Поддерживаются приёмы объектно-ориентированного, обобщённого и функционального программирования. Синтаксис Haxe близок к ECMAScript и расширяет его такими возможностями как статическая типизация, автовывод типов, сопоставление шаблонов, дженерики, основанный на итераторах цикл "for", AST-макросы, GADT (Generalized Algebraic Data Types), абстрактные типы, анонимные структуры, упрощённые определения массивов, выражения для условной компиляции, прикрепление метаданных к полям, классам и выражениям, интерполяция строк ("'My name is $name'"), параметры типов ('new Main<String>("foo")') и многое другое.


   class Test {
     static function main() {
       final people = [
         "Elizabeth" => "Programming",
         "Joel" => "Design"
       ];

       for (name => job in people) {
         trace('$name does $job for a living!');
       }
     } 
   }

Нововведения версии 4.1:

  • Добавлена оптимизация хвостовой рекурсии.
  • Добавлено новое унифицированное API для обработки исключений.
  • Разрешена конструкция "try {} catch(e) {}" как сокращение для "try {} catch(e: haxe.Exception) {}".
  • В интерпретатор eval добавлена поддержка SSL.
  • Целевая платформа JVM больше не считается экспериментальной.
  • Для Language Server Protocol добавлена поддержка функций "Goto Implementation" и "Find references".
  • Улучшено именование временных локальных переменных в сгенерированном коде. Удалены избыточные "return;" в стрелочных функциях без возвращаемого значения.
  • К полям разрешена комбинация доступа (get, default) (только геттер, поведение для присваивания по умолчанию).
  • Разрешены операторы инкремента и декремента для полей абстрактных типов.
  • Улучшено встраивание (inlining) for-циклов с использованием анонимных итераторов.
  • js: Улучшена реализация StringMap для ES5.
  • js: В опцию компилятора "-D js-es=6" добавлена генерация let переменных, улучшена генерация ES6 классов.
  • lua: оптимизирован "StringIterator", улучшена обработка ошибок.
  • php: Оптимизирован "Std.isOfType" для базовых типов.
  • php: Сгенерированные массивы теперь реализуют нативные интерфейсы "Iterator", "IteratorAggregate", "Countable".
  • cs: Добавлены метадаты "@:assemblyMeta" и "@:assemblyStrict".
  • python: в анонимные объекты добавлена реализация "__contains__" и "__getitem__", что позволяет использовать их как словари в сгенерированном коде.
  • jvm: Значительно повышена производительность благодаря новому способу обращения к типизированным функциям и генерации дополнительных интерфейсов в случаях использования объектов как анонимных структур (предотвращен динамический поиск свойств):

Улучшения в стандартной библиотеке:

  • Добавлена функция "Array.contains".
  • Добавлен "Array.keyValueIterator", реализующий key-value итерацию для массивов ("for (key => value in array)").
  • Добавлено ограничение типа "haxe.Constraints.NotVoid".
  • В класс "Lambda" добавлены функции "findIndex" и "foldi".
  • Реализован "array access" (доступ через "arr[i]") и key-value итерация для "haxe.ds.HashMap".
  • jvm: Реализованы JVM-специфичные версии "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Использованы нативные реализации "MD5", "SHA-1" и "SHA-256" для модулей "haxe.crypto".
  • macro: Добавлен "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: режим "Strict" теперь рассматривается как однопоточный; добавлен режим "StrictThreaded".
  • "Std.is" объявлен устаревшим в пользу "Std.isOfType".
  • Добавлено предупреждение при использовании локальных переменных без значений в замыканиях.
  • js: "untyped __js__(code, args)" объявлен устаревшим, взамен предоставляется "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" и "php.Web" объявлены устаревшими и будут позже перенесены в библиотеку "hx4compat".

В следующем релизе планируются:

  • Улучшение пакетного менеджера haxelib.
  • Асинхронное системное API на основе libuv.
  • Сопрограммы (coroutine).
  • Объявление модульных статических функций и переменных без создания классов (уже доступно в ночных сборках).


  1. Главная ссылка к новости (https://haxe.org/blog/haxe-4.1...)
  2. OpenNews: Релиз языка программирования Haxe 4.0
  3. OpenNews: Компания Apple представила язык программирования Swift 5.2
  4. OpenNews: Релиз языка программирования Nim 1.2.0
  5. OpenNews: Доступен язык программирования R 4.0
  6. OpenNews: Выпуск языка программирования Dart 2.8
Автор новости: Рыбла
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52974-haxe
Ключевые слова: haxe
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (70) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.4, Аноним (4), 12:32, 17/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +25 +/
    Хороший язык. Разрабатывать на нем, конечно же, не буду.
     
     
  • 2.45, Аноним (45), 21:13, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да и котлин уже есть.
     
     
  • 3.48, Аноним (48), 21:40, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +10 +/
    можно на котлине не разрабатывать?
     
     
  • 4.59, Аноним (45), 10:42, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    а вот это никак нет
     
     
  • 5.63, Аноним (63), 13:17, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А вот и можно, плюсы уже есть.
     
  • 3.72, Аноним (72), 21:44, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Котлин jvm Онли ну ещё за немного жс
    Для утомлённых джавой вопщем
    Хотя форсят как мульт платформ
    А хекс истинный мультиплатформенный яп
     

  • 1.5, Аноним (5), 12:38, 17/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Проблему с GIL в Python он решает?
     
     
  • 2.6, Аноним (4), 12:50, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Проблема с GIL только у кодеров, которые не понимают зачем нужен GIL и питон вообще
     
     
  • 3.9, Вы забыли заполнить поле Name (?), 13:09, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну то есть у 90%
     
  • 3.12, Аноним (12), 14:00, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Расскажи нам, зачем же нужен GIL? Почему нельзя без GIL обойтись?
     
     
  • 4.16, jOKer (ok), 14:25, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Может быть потому что без GIL весьма велика вероятность возникновения состояния "гонка за ресурсами", а накладные расходы интерпретатора существенно возрастают?

    ЗЫ Вообще-то на этот вопрос, в свое время, Гвидо уже ответил весьма и весьма развернуто. Больше читаем, и меньше возмущаемся на формах, приятель. А заодно учимся понимать как могут помочь делу сопрограммы, и почему в бинарных библиотеках ограничения GIL не действуют.

     
     
  • 5.20, Вы забыли заполнить поле Name (?), 14:56, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > и почему в бинарных библиотеках ограничения GIL не действуют

    Пока к питоновским структурам дынных не обращаешься, иначе нужна синхронизация?

     
     
  • 6.39, jOKer (ok), 18:56, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тут все немного сложнее. Событийно-ориентированного механизма на этом уровне нет. Следовательно, требуется реализовать несколько нитей-тредов и заставить один из них тупо ждать пока бинарная библиотека не отработает.

    В момент, когда такой поток делает запрос к бинарной библиотеке он отпускает GIL (глобальная блокировка так же отпускается при переходе потока-владельца в ожидание событий ввода-вывода и каждые 100 тиков проца), и другие нити могут спокойно в это время работать. Когда же от бинарной библиотеки приходит ответ, то нить может сохранить полученный ответ в очереди для использования другими потоками. Конечно, в этот момент /момент сохранения/ так же будут действовать правила GIL, но это будет уже не так важно, потому что тяжелые много-поточные вычисления, реализованные на уровне внешней библиотеки, к этому моменту уже будут завершены.

     
     
  • 7.43, анонимут (?), 20:12, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы обойти ущербность Python разрабатывали вложенные интерпретаторы для обхода GIL, но что-то пошло не так. Запустить несколько экземпляров Python интерпретаторов реализуемо. Pandas и Numpy это расширения написанные на C. Me
     
     
  • 8.47, jOKer (ok), 21:37, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Несколько интерпретаторов точнее субинтрепретаторы subinterpreters появилис... текст свёрнут, показать
     
     
  • 9.74, анонимут (?), 12:14, 19/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Одна из причин ущербности Python это реальная мультипоточность которая может быт... текст свёрнут, показать
     
  • 4.40, Owlet (?), 19:58, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Он позволяет не беспокоиться о состояниях гонки внутри интерпретатора. Использование для этого более гранулярных локов очень сильно затормозило бы однопоточные программы, для которых питон чаще всего и используют. А введение async/await (ну и всякие twisted с greenlet) позволяют и сетевые программы успешно писать.
     
  • 4.44, topin89 (ok), 20:36, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Для чего нужен GIL?

    Он нужен для конкурентной многозадачности без сложного кода атомарного доступа к одним и тем же объектам из разных потоков. Это нужно, чтобы банальное присвоение любого объекта не прерывалось на середине. Я не знаю, когда был введён GIL, но судя по патчу для Python 1.4, который его удаляет, в 1996 году он уже стал частью Питона.

    Глобальный блокировщик -- идея очень простая, и введена как раз поэтому. Да, она не позволяет работать на множестве ядер, но будем честными, в 1996 году об этом точно никто не задумывался. Я не знаю, когда именно был введён GIL, но первые x86 двухядерные процы появились сильно позже, да и многопроцессорные системы были достаточно редкими, чтобы о них париться.

    В ядре линукса было что-то похожее, Big Kernel Lock

    > Почему нельзя без GIL обойтись?

    Можно. Если есть деньги на развитие и поддержку проекта, то вполне можно заменить мегалок на много атомарных. В Джаве нет. В Шарпе нет. В Linux нет с 2011 года (заметим, спустя шесть лет с выхода многоядерного x86).

    Но это сложно, однозначно приведёт огромному количеству сложноуловимых багов и на первых порах сильно просадит однопоток. А на последних сделает добавление новых фич очень затратным делом.

    Теперь ответ на вопрос, а какие есть альтернативы в Питоне: многопроцесность. Да, как в хроме, можно запустить питонов по количеству ядер и организовать проброс сообщений между ними через очереди (Queue). В большинстве случаев этого хватает. Тот же flask так делает. Часто сложный, долгий код выносят в C(++), где можно наплодить потоков как душе угодно, если они не меняют в разных потоках переменные питоновского кода.

    Кстати, GIL -- это то самое "лучше чем ничего". Года три назад, в PHP многопоток был небезопасен, в JavaScript его не было вовсе, в Lua каком-нибудь и до сих пор нет. В нативных языках типа C(++) или Fortran атомарное присвоение не гарантируется, там проще. В Rust подрублен серьёзный статический анализ. Не знаю, как там в остальных языках.

     
     
  • 5.46, Вы забыли заполнить поле Name (?), 21:30, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Кстати, GIL -- это то самое "лучше чем ничего". Года три назад, в PHP многопоток был небезопасен, в JavaScript его не было вовсе

    В JavaScript такая же кооперативная многозадачность, чем по сути GIL и является. Ну а node.js в libuv есть пул потоков.

    > В нативных языках типа C(++) или Fortran атомарное присвоение не гарантируется, там проще.

    В C++ начиная с 11 года стандартизирована модель памяти и есть атомики.

     
  • 5.75, анонимут (?), 12:18, 19/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Глобальный блокировщик -- идея очень простая, и введена как раз поэтому

    От которой постоянно пытаются избавиться

    Так Python создавался для обработки текста. И как замена bash скриптам ok. Но писать на нем приложения в десятки тысяч строк идиотизм потому что они рассыпаются из-за обычных опечаток. Или писать миллионы тестов

     
     
  • 6.77, Вы забыли заполнить поле Name (?), 17:23, 19/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Так Python создавался для обработки текста.

    Откуда инфа? Это про perl.

    >  потому что они рассыпаются из-за обычных опечаток

    Ну это претензия к любому динамически типизируеимому языку. Да и зависит от связности кода. А по теме есть опциональная проверка типов.

     
  • 5.76, Аноним (76), 13:51, 19/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > В Rust подрублен серьёзный статический анализ.

    Который предотвращает только data races (подкласс race conditions). Это, конечно, облегчает, но не избавляет от необходимости следить за низкоуровневыми деталями реализации многопоточности.
    Для стандартных задач принято использовать либы напр. https://github.com/rayon-rs/rayon и
    https://tokio.rs/ | https://async.rs/

     
  • 2.73, Аноним (72), 21:45, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да
    Пишеш код на хекс
    И компилируеш в jvm таргет
     

  • 1.7, Аноним (7), 12:54, 17/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Нахе* нужен! ;)
     
     
  • 2.15, Z (??), 14:19, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Кому?
     
     
  • 3.41, Gogi (??), 20:10, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хипстерам же, ну! Чё б ни изучать, лишь бы не работать. :)
     

  • 1.8, Аноним (-), 13:07, 17/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    Нет ничего более убогого, чем фигурные скобки в качестве операторных.
     
     
  • 2.19, заминированный тапок (ok), 14:54, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    ну как же, есть - отступы
     
     
  • 3.64, Аноним (63), 13:20, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пора бы уже свести все языки к принудительным отступам со скобками, чтобы все страдали и этот унылый срач закончился.
     
     
  • 4.71, Аноним (71), 20:43, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    И никаких Lint. А если бы еще проверяло орфографию в названиях переменных и т.д. - брал бы сразу. Как наделают своих сокращений и завернут в крокодилы/простыни - сиди и думай что сказать то хотели. А так сразу на уровне компиляции по рукам давать.
     
     
  • 5.78, Трололо (?), 00:44, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Освой уже Go, бро :)
     

  • 1.10, Аноним (10), 13:46, 17/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Кто-нибудь юзает? и для каких кейсов
     
     
  • 2.18, Аноним (18), 14:43, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для игор https://github.com/abagames
     
     
  • 3.24, mos87 (ok), 15:43, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Для ненужна

    fxd

     
     
  • 4.65, Аноним (63), 13:21, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для ненужнов нужна космическая капсула, чтобы выкинуть их всех в космос и они перестами переводить ресурсы на земле.
     
     
  • 5.68, mos87 (ok), 20:04, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Для ненужнов нужна космическая капсула, чтобы выкинуть их всех в космос и
    > они перестами переводить ресурсы на земле.

    верно. авторы сабжа займут места в партере.

     
  • 2.26, Аноним (-), 15:48, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    https://haxe.org/use-cases/
    Веб еще норм, особенно если захочешь потом написать мобильное приложение, реюзнув логику / структуры данных клиента/сервера.
     
     
  • 3.69, mos87 (ok), 20:04, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > https://haxe.org/use-cases/
    > Веб еще норм, особенно если захочешь потом написать мобильное приложение, реюзнув логику
    > / структуры данных клиента/сервера.

    не-гумновеб структуры нельзя реюзать??

     
     
  • 4.70, Аноним (70), 20:18, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Узнай что такое структуры данных пожалуйста, вместо триггеринга на слово веб в предложении
     

  • 1.11, Аноним (11), 13:52, 17/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/



    final people = [
        "Elizabeth" => "Programming",
        "Joel" => "Design"
    ];


    Выглядит по PHP-шному, где это просто ядерная смесь понятия "массив" и "ассоциативный массив" -- реально бесит в итоге.

     
     
  • 2.13, Мока (?), 14:11, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это синтаксис ассоциативного массива (Map<String, String> если точнее), для обычных будет [1, 2, 3] например (Array<Int>)
     
  • 2.17, КО (?), 14:36, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Это пол беды, а вот как он узнает, что "Elizabeth" это name?
     
     
  • 3.21, snut (?), 14:59, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    name это имя переменной о которой знает программист который этот код написал. Не передергивайте
     
     
  • 4.23, пох. (?), 15:41, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    я полагаю, он не передергивает, а реально не понял, что за херня тут написана и где определения этих name и job. А их и нету ;-)
     
     
  • 5.30, анонимуслинус (?), 16:27, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ну учитывая, что это строгая типизация то вполне справедливое замечание. но видимо этот язык похож этой чертой на питона, где такое норма, но все же действительно странно.
     
  • 3.22, пох. (?), 15:40, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    из for name => job  - где name и job - это просто первое что придумал афтырь, очевидно же ж.

     
  • 3.31, Мока (?), 16:47, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что Map это структура ключ-значение. Такой for тоже (key => value), где можно назвать их как удобнее для итерации. Знает, потому что ключ слева, а значение справа =)
     
  • 3.33, Аноним (33), 17:17, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А как узнать, что 180 - это количество комментариев на опеннете, а не iq?

    Как всегда, либо называть понятным образом переменные, либо добавлять domain level типизацию через инструменты определения пользовательских типов, присутствующие в данном языке.

     
  • 2.34, Аноним (33), 17:18, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    По пхпшному - это смешать все в кучу. Тут же явно задаётся map string-string.
     

  • 1.14, Онаним (?), 14:13, 17/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    "р" в конце не хватает.
     
  • 1.25, mos87 (ok), 15:45, 17/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    что люди ни делают только бы не почитать пол часа ман перл
     
     
  • 2.27, Аноним (7), 16:11, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У вчерашней школоты не модно жи)
     
  • 2.29, Аноним (29), 16:20, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вменяемые люди, рационально используют свое время
     
     
  • 3.37, mos87 (ok), 18:13, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Вменяемые люди, рационально используют свое время

    покупают поддержку Майкрософт Лангуаге Фор Професионалс Про++ !!!1111 пыщпыщ

     
  • 2.35, Вы забыли заполнить поле Name (?), 17:20, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    87 в нике - это год производтсва? тогда не удивлен
     
  • 2.36, Эксперт (?), 17:50, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Что пережитки коммунизма не делают, лишь бы теплое с мягким сравнивать.
     
     
  • 3.79, Аноним (79), 23:17, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > почитать пол часа ман перл
    > пережитки коммунизма

    Распространенный вариант, когда под одним идиотским комментарием оставили другой идиотский комментарий :)

     
  • 2.38, MPEG LA (ok), 18:28, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    и что это даст пользователям Haxe?
     
     
  • 3.42, Gogi (??), 20:12, 17/05/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Ответ на вопрос, "зачем нужен нахе"? Ответ: нахе-р не нужен.
     
     
  • 4.57, коржик (?), 09:01, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    блин, а смешно, даже немного неловко
     
  • 4.62, MPEG LA (ok), 13:12, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Ответ на вопрос, "зачем нужен нахе"? Ответ: нахе-р не нужен.

    мимо, для ответа на этот вопрос перл не нужен.

     
  • 2.54, Аноним (79), 01:52, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ман перл

    Эй некрофил, а по теме есть сказать что? А может новость почитать внимательнее и после комментировать? А еще лучше не полениться и вначале хотя бы вики глянуть по haxe?

     

  • 1.53, Аноним (53), 23:21, 17/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сколько максимально можно сделать платформ?
     
  • 1.55, Аноним (55), 03:33, 18/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    хороший язык, только не понятно как не нем начинать проект. В с++ просто, cmake, main.cpp, в rust тоже всё подробно описано в мануале, а тут?
     
     
  • 2.56, Мока (?), 07:27, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Здесь у каждой платформы можно прочитать какой сетап:
    https://haxe.org/manual/target-details.html
    Для большинства достаточно команды типа 'haxe --js main.js --main Main'
    Для Java/С# можно поставить вспомогательную библиотеку для использования jar/dll либ.
    Для C++ вспомогательная часть для компиляции в кучу платформ тоже в либе реализована.
    Еще более простое описание, начиная с DE вот на этой странице для части таргетов:
    https://haxe.org/documentation/introduction/
    Вкратце: поставить хакс, vscode c плагином (https://marketplace.visualstudio.com/items?itemName=nadako.vshaxe), открыть им пустую папку и в палитре команд выбрать "Haxe: Initialize Project".
     
     
  • 3.58, Онаним (?), 09:02, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хвост воблы, глаза иволги, вот это всё.
     
  • 3.67, Аноним (79), 14:17, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за ссылки, сейчас копаюсь как оно в lua транслируется, идея супер у языка
     

  • 1.60, Аноним (60), 10:52, 18/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Молодец. Защитил диплом-то?
    А так чего не сделают, что бы C/C++ не изучать.
     
     
  • 2.66, Nicolas Cannasse (?), 14:06, 18/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да, себе и другу
    https://store.steampowered.com/developer/shirogames
    https://store.steampowered.com/developer/MotionTwin
     

  • 1.61, Im banana man (?), 12:53, 18/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Забавный академический язык )
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру