Ukukhutshwa kolwimi lwenkqubo Haxe 4.2

Ukukhutshwa kwe-Haxe 4.2 toolkit kuyafumaneka, equka i-multi-paradigm yolwimi lweprogram yezinga eliphezulu legama elifanayo kunye nokuchwetheza okunamandla, umqokeleli we-cross-compiler kunye nelayibrari eqhelekileyo yemisebenzi. Iprojekthi isekela ukuguqulelwa kwi-C ++, i-HashLink / C, i-JavaScript, i-C #, i-Java, i-PHP, i-Python kunye ne-Lua, kunye nokuhlanganiswa kwi-JVM, i-HashLink / i-JIT, i-Flash kunye ne-Neko bytecode, kunye nokufikelela kwizakhono zomthonyama zeplatifomu nganye ekujoliswe kuyo. Ikhowudi yokuhlanganisa isasazwa phantsi kwelayisenisi ye-GPLv2, kwaye ilayibrari esemgangathweni kunye ne-HashLink kunye ne-Neko yoomatshini benyani abaphuhliselwe i-Haxe banikwe ilayisenisi phantsi kwelayisenisi ye-MIT.

Ulwimi lujolise kwintetho ngokuchwetheza ngamandla. Iinkqubo ezijolise kwinjongo, igeneric kunye neendlela ezisebenzayo zokucwangcisa ziyaxhaswa. I-syntax ye-Haxe ikufutshane ne-ECMAScript kwaye iyandisa ngeempawu ezifana nokuchwetheza okumileyo, uhlobo oluzenzekelayo lwentelekelelo, ukuthelekisa ipateni, iigenerics, i-iterator-based for looops, i-AST macros, i-GADT (Iintlobo zeDatha ye-Algebraic ngokubanzi), iintlobo ezingabonakaliyo, izakhiwo ezingachazwanga, zenziwe lula. iinkcazelo uluhlu, amabinzana kuqulunqo olunemiqathango, incamathela imetadata kwimimandla, iiklasi kunye nentetho, umtya wofakelo ('Igama lam ndingu-$igama'), chwetheza iparameters ('entsha Engundoqo (“foo”)') kunye nabanye abaninzi. Uvavanyo lweklasi { static function main () { final people = [ "Elizabeth" => "Ucwangciso", "Joel" => "Yila" ]; kuba (igama => umsebenzi ebantwini) { trace ('$igama lenza umsebenzi we-$ ukuze uziphilise!'); }}}

Iimpawu ezitsha kwinguqulo 4.2:

  • Объявление статичных переменных и функций на уровне модуля, без необходимости оборачивания в класс.
  • Inkxaso yeeklasi ze "classic" abstract kunye nemisebenzi.
  • Uzalisekiso lwendalo lwemisebenzi eyahlukeneyo yazo zonke iindawo ekujoliswe kuzo (i-haxe.Rest) kunye nokongezwa kwengxoxo yomsebenzisi wokwandisa "f(...array)".
  • Реализация цикла событий (event loop) для отдельных потоков («sys.thread.Thread.events»).
  • "@:inheritDoc" imetadata yokufumana ilifa uhlobo/uxwebhu lommandla.
  • Indlela yokulayisha ngaphezulu kwenkxaso kwiindlela zangaphandle kuwo onke amaqonga ekujoliswe kuwo.
  • Пересылка в абстракт конструктора, лежащего в основе его типа с помощью метаданных «@:forward.new».
  • Kongezwe "EIs" umakhi ukuya "haxe.macro.Expr".
  • Ukukwazi ukwenza uhlobo olungabonakaliyo olwahlukileyo "@:forward.variance".
  • Представление типа «Any» как «Dynamic» при унификации вариантности.
  • В пакет «haxe.exceptions» добавлены некоторые базовые типы исключений.
  • Inkxaso yokuncamathisela imethadatha xa kubhengezwa iinguqu.
  • Функция «StringTools.unsafeCharAt», используемая при строковой итерации.
  • eval (интерпретатор): в пакете «eval.luv» добавлены привязки к «libuv».
  • eval: привязки к родным реализациям «Int64» и «UInt64» через пакет «eval.integers».
  • cs: Ukuphunyezwa kweesokethi ze-UDP.
  • cs: "cs.Syntax" imodyuli yofakelo lwangaphakathi lwekhowudi ye-C #.
  • I-jvm: Yongezwe i-"-D jvm.dynamic-level=x" iflegi ukulawula inani lemveliso eyenziweyo yekhowudi eguqukayo. 0 = akukho, 1 = intsimi yokufunda / ukubhala kakuhle, 2 = ukuvalwa kwendlela ngexesha lokuqokelela.
  • java, jvm: Inkxaso ye "--java-lib <directory>" iflegi.
  • python: ukuthunga ukuphunyezwa kwe-API.

Uphuculo ngokubanzi:

  • "expr is SomeType" ayifuni kusongwa kwizibiyeli.
  • Ukunyuswa kokuphambili ku-"@:usebenzisa" uhlobo lwezandiso.
  • Разрешено использование статических расширений типа через «super».
  • Ukukwazi ukuseta imethadatha kwiindawo "@:noDoc".
  • Uhlobo lwe-abstract "Imephu" yenziwa i-transitive.
  • Inkxaso ye-"@:native" kubakhi be-enum.
  • Поддержка «@:using» на объявлениях типа («typedefs»).
  • Iimpazamo ze-Multiline zisebenzisa "..." njengesimaphambili semigca elandelayo.
  • Переработан вывод типов, анонимные структуры лучше преобразуются в явные типы и «закрываются» по завершению функции.
  • Ukunika udidi lwemisebenzi ngaphandle kweengxoxo njenge "()->..." endaweni ka "Void->...".
  • Ключевое слово «function» разрешено в качестве имени пакета.
  • Ukuphuculwa kokungaphakathi kwezinto.
  • cs: Inkxaso eyongeziweyo ye.NET 5.0.
  • cpp: Inkxaso yabakhi bomthonyama kwiiklasi zangaphandle.
  • php: Добавлен «php.Syntax.customArrayDecl» для объявления нативного массива.
  • php: Обновлены внешние методы (externs) для различных функций и классов.
  • php: Оптимизирована реализация анонимных структур.
  • hl: Пропуск компиляции при отсутствии изменений в модулях.
  • lua: Ukusebenzisa "hx-lua-simdjson" ukwahlula i-json.
  • jvm: Снижена нагрузка на CPU в реализации «sys.thread.Lock».
  • js: Улучшена совместимость с Google Closure Compiler.
  • Null Ukhuseleko: Qwalasela "@:nullSafety(Cima)" xa uchaza izinto eziguquguqukayo: "var @:nullSafety(Valiwe) v".

Также до новой версий компилятора обновлено дополнение к редактору VSCode, в котором появились подсказки с генерацией недостающих полей интерфейсов, простых и абстрактных классов, а также методов свойств.

umthombo: opennet.ru

Yongeza izimvo