Haxe 4.1 программалоо тилинин чыгарылышы

Жеткиликтүү инструменттердин чыгарылышы Haxe 4.1, ал күчтүү терүү, кайчылаш компилятор жана функциялардын стандарттык китепканасы менен бирдей аталыштагы көп парадигмалуу жогорку деңгээлдеги программалоо тилин камтыйт. Долбоор C++, HashLink/C, JavaScript, C#, Java, PHP, Python жана Lua тилдерине которууну, ошондой эле JVM, HashLink/JIT, Flash жана Neko байт кодуна компиляцияны колдойт, ар бир максаттуу платформанын жергиликтүү мүмкүнчүлүктөрүнө жетүү. Компилятор коду жайылуу GPLv2 лицензиясы жана Haxe үчүн иштелип чыккан стандарттык китепкана жана виртуалдык машиналар HashLink и Неко MIT лицензиясы боюнча.

Тил бул экспрессияга багытталган күчтүү терүү менен. Объектке багытталган, жалпы жана функционалдык программалоо ыкмалары колдоого алынат. Haxe синтаксиси ECMAScript жана бейм анын статикалык терүү, автотипти чыгаруу, үлгү дал келүү, генериктер, циклдер үчүн итераторго негизделген, AST макролору, GADT (Жалпы алгебралык маалымат түрлөрү), абстракттуу типтер, анонимдүү структуралар, жөнөкөйлөштүрүлгөн массивдин аныктамалары, шарттуу компиляция туюнтмалары, талааларга метаберилиштерди тиркөө сыяктуу өзгөчөлүктөрү , класстар жана туюнтмалар, сап интерполяциясы (“'Менин атым $name'”), тип параметрлери ('жаңы Негизги ("foo")') жана дагы көп.

класс сыноо {
статикалык функция main() {
акыркы адамдар = [
"Элизабет" => "Программалоо",
"Джоэл" => "Дизайн"
];

үчүн (аты => адамдардагы жумуш) {
trace('$name жашоо үчүн $иш кылат!');
}
}
}

4.1 версиясындагы жаңы функциялар:

  • Кошулган куйрук рекурсия оптималдаштыруу.
  • Өзгөчө кырдаалдарды иштетүү үчүн жаңы бирдиктүү API кошулду.
  • "try {} catch(e) {}" конструкциясына "try {} catch(e: haxe.Exception) {}" стенографиясы катары уруксат берилген.
  • Баалоочу котормочуга SSL колдоосу кошулду.
  • Максаттуу JVM мындан ары эксперименталдык деп эсептелбейт.
  • Language Server Protocol үчүн "Goto Implementation" жана "Find Links" функцияларын колдоо кошулган.
  • Түзүлгөн коддогу убактылуу жергиликтүү өзгөрмөлөрдүн жакшыртылган аталышы. Ашыкча "кайтаруу" алынып салынды; кайтаруу мааниси жок жебе функцияларында.
  • Кирүү комбинацияларына (ал, демейки) талааларда уруксат берилет (алуучу гана, демейки дайындоо жүрүм-туруму).
  • Талаалар үчүн көбөйтүү жана азайтуу операторлоруна уруксат берүү абстракттуу түрлөрү.
  • Анонимдүү итераторлорду колдонуу менен for циклдарынын жакшыртылган кириши.
  • js: ES5 үчүн жакшыртылган StringMap ишке ашыруу.
  • js: “-D js-es=6” компилятор опциясына let өзгөрмөлөрүнүн генерациясы кошулду, ES6 класстарынын мууну жакшыртылды.
  • lua: "StringIterator" оптималдаштырылган, каталарды иштетүү жакшыртылган.
  • php: Негизги түрлөрү үчүн оптималдаштырылган "Std.isOfType".
  • php: Түзүлгөн массивдер эми “Итератор”, “ИтераторАгрегат”, “Эсептелүүчү” түпнуска интерфейстерин ишке ашырышат.
  • cs: Кошулган метадайындар "@:assemblyMeta" жана "@:assemblyStrict".
  • python: анонимдүү объекттерге "__contains__" ишке ашыруу кошулду
    жана "__getitem__", аларды түзүлгөн коддо сөздүктөр катары колдонууга мүмкүндүк берет.

  • jvm: Терилген функцияларга жетүүнүн жана объекттер анонимдүү структуралар катары колдонулган учурларда кошумча интерфейстерди түзүүнүн жаңы ыкмасынын аркасында бир кыйла жакшыртылган аткаруу (динамикалык мүлктү издөө бөгөттөлгөн):
    Haxe 4.1 программалоо тилинин чыгарылышы

Стандарттык китепканадагы жакшыртуулар:

  • "Array.contains" функциясы кошулду.
  • Массивдер үчүн ачкыч-маани итерациясын ишке ашырган "Array.keyValueIterator" кошулду ("үчүн (ачкыч => массивдеги маани)").
  • Кошулган чектөө түрү "haxe.Constraints.NotVoid".
  • "findIndex" жана "foldi" функциялары "Lambda" классына кошулду.
  • Ишке ашырылган "массивге кирүү" ("arr[i]" аркылуу кирүү) жана "haxe.ds.HashMap" үчүн ачкыч-маани итерациясы.
  • jvm: "StringMap", "sys.thread.Lock", "sys.thread.Thread" JVM-спецификалык версиялары ишке ашырылды.
  • java/jvm: "haxe.crypto" модулдары үчүн "MD5", "SHA-1" жана "SHA-256" жергиликтүү ишке ашыруулар колдонулган.
  • макро: "haxe.macro.Context.containsDisplayPosition(pos)" кошулду.
  • nullsafety: "Катуу" режим азыр бир жип катары каралат; "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.
  • Корутиндер.
  • Класстарды түзбөстөн модулдук статикалык функцияларды жана өзгөрмөлөрдү жарыялоо (түнкү түзүлүштөрдө мурунтан эле бар).

Source: opennet.ru

Комментарий кошуу