Haxe 4.2 proqramlaşdırma dilinin buraxılışı

Haxe 4.2 alət dəstinin buraxılışı mövcuddur ki, o, güclü yazma, çarpaz kompilyator və standart funksiyalar kitabxanası ilə eyniadlı çoxparadiqmalı yüksək səviyyəli proqramlaşdırma dilini ehtiva edir. Layihə C++, HashLink/C, JavaScript, C#, Java, PHP, Python və Lua dillərinə tərcüməni, həmçinin JVM, HashLink/JIT, Flash və Neko bayt koduna kompilyasiyanı, hər bir hədəf platformanın yerli imkanlarına çıxışı dəstəkləyir. Kompilyator kodu GPLv2 lisenziyası altında paylanır və standart kitabxana və Haxe üçün hazırlanmış HashLink və Neko virtual maşınları MIT lisenziyası altında lisenziyalaşdırılır.

Dil güclü yazı ilə ifadə yönümlüdür. Obyekt yönümlü, ümumi və funksional proqramlaşdırma üsulları dəstəklənir. Haxe sintaksisi ECMAScript-ə yaxındır və onu statik yazma, avtomatik tipli nəticə, nümunə uyğunluğu, generiklər, döngələr üçün iterator əsaslı, AST makroları, GADT (ümumiləşdirilmiş cəbri məlumat növləri), abstrakt tiplər, anonim strukturlar, sadələşdirilmiş funksiyalarla genişləndirir. təriflər massivləri, şərti tərtib üçün ifadələr, sahələrə, siniflərə və ifadələrə metadata əlavə etmək, sətir interpolasiyası ('Mənim adım $name'), tip parametrləri ('yeni Main("foo")') və s. class Test { statik funksiya main() { final insanlar = [ "Elizabeth" => "Proqramlaşdırma", "Joel" => "Dizayn" ]; for (ad => insanlarda iş) { trace('$name dolanmaq üçün $iş edir!'); } } }

4.2 versiyasında yeni funksiyalar:

  • Statik dəyişənlərin və funksiyaların sinifə sarılmasına ehtiyac olmadan modul səviyyəsində elan edilməsi.
  • “Klassik” mücərrəd siniflər və funksiyalar üçün dəstək.
  • Bütün hədəf platformalar üçün variadik funksiyaların yerli icrası (haxe.Rest) və “f(...array)” arqument genişləndirmə operatorunun əlavə edilməsi.
  • Fərdi mövzular üçün hadisə dövrəsinin həyata keçirilməsi (“sys.thread.Thread.events”).
  • Növ/sahə sənədlərinin miras alınması üçün "@:inheritDoc" metadata.
  • Bütün hədəf platformalarda xarici metodlar üçün metodun həddindən artıq yüklənməsi dəstəyi.
  • “@:forward.new” metadatasından istifadə edərək, onun tipinin altında yatan konstruktorun abstrakt üçün yönləndirilməsi.
  • "haxe.macro.Expr"-ə "EIs" konstruktoru əlavə edildi.
  • "@:forward.variance" ilə abstrakt tipli variant yaratmaq imkanı.
  • Dəyişikliyi birləşdirərkən "Hər hansı" növünün "Dinamik" kimi təqdim edilməsi.
  • "haxe.exceptions" paketinə bəzi əsas istisna növləri əlavə edildi.
  • Dəyişənləri elan edərkən metadata əlavə etmək üçün dəstək.
  • Simli iterasiya üçün istifadə edilən "StringTools.unsafeCharAt" funksiyası.
  • eval (tərcüməçi): "eval.luv" paketində "libuv"a əlavə edilmiş bağlamalar.
  • eval: "eval.integers" paketi vasitəsilə "Int64" və "UInt64" yerli tətbiqlərinə bağlamalar.
  • cs: UDP yuvasının tətbiqi.
  • cs: C# kodunun daxili daxil edilməsi üçün “cs.Syntax” modulu.
  • jvm: Dinamik kod üçün yaradılan optimallaşdırmaların sayına nəzarət etmək üçün “-D jvm.dynamic-level=x” bayrağı əlavə edildi. 0 = heç biri, 1 = sahənin oxunması/yazılmasının optimallaşdırılması, 2 = tərtib zamanı metodun bağlanması.
  • java, jvm: "--java-lib " bayrağı üçün dəstək.
  • python: iş parçacığı API tətbiqi.

Ümumi təkmilləşdirmələr:

  • "expr is SomeType" mötərizə içərisində sarğı tələb etmir.
  • "@:using" tipli uzantılar üçün artan prioritet.
  • "Super" vasitəsilə statik tipli uzantıların istifadəsinə imkan verir.
  • Metaməlumatları “@: noDoc” sahələrinə təyin etmək imkanı.
  • Mücərrəd tipli "Xəritə" keçidlidir.
  • Enum konstruktorlarında "@:native" üçün dəstək.
  • Növ bəyannamələrində ("typedefs") "@:using" üçün dəstək.
  • Çoxsətirli xətalar sonrakı sətirlər üçün prefiks kimi "..." istifadə edir.
  • Növ qənaəti yenidən işlənmişdir, anonim strukturlar daha yaxşı açıq tiplərə çevrilir və funksiya tamamlandıqda “bağlanır”.
  • Arqumentsiz funksiyaların növünü "Void->..." əvəzinə "()->..." kimi çıxarmaq.
  • "Funksiya" açar sözünə paket adı kimi icazə verilir.
  • Obyektlərin təkmilləşdirilmiş inlining.
  • cs: .NET 5.0 üçün əlavə dəstək.
  • cpp: Xarici siniflər üçün yerli konstruktorlara dəstək.
  • php: Doğma massiv elan etmək üçün "php.Syntax.customArrayDecl" əlavə edildi.
  • php: Müxtəlif funksiyalar və siniflər üçün yenilənmiş xarici metodlar.
  • php: Anonim strukturların optimallaşdırılmış icrası.
  • hl: Modullarda heç bir dəyişiklik olmadıqda tərtibi keçin.
  • lua: json-u təhlil etmək üçün "hx-lua-simdjson" istifadə edin.
  • jvm: "sys.thread.Lock" tətbiqində CPU yükünün azaldılması.
  • js: Google Closure Compiler ilə təkmilləşdirilmiş uyğunluq.
  • Null Safety: Dəyişənləri elan edərkən "@:nullSafety(Off)" nəzərə alın: "var @:nullSafety(Off) v".

Həmçinin, VSCode redaktoruna əlavə, interfeyslərin çatışmayan sahələrinin, sadə və mücərrəd siniflərin, habelə mülkiyyət metodlarının yaradılması ilə göstərişlərin meydana çıxdığı kompilyatorun yeni versiyasına yeniləndi.

Mənbə: opennet.ru

Добавить комментарий