Ukukhutshwa kolwimi lwenkqubo Haxe 4.0

Iyafumaneka Ρ€Π΅Π»ΠΈΠ· Ρ‚ΡƒΠ»ΠΊΠΈΡ‚Π° Haxe 4.0, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹ΠΉ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅Π½Π½Ρ‹ΠΉ высокоуровнСвый язык программирования со строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, кросс-компилятор ΠΈ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ поддСрТиваСтся трансляция Π² Π‘++, HashLink/C, JavaScript, C#, Java, PHP, Python ΠΈ Lua, Π° Ρ‚Π°ΠΊΠΆΠ΅ компиляция Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ JVM, HashLink/JIT, Flash ΠΈ Neko, с доступом ΠΊ Ρ€ΠΎΠ΄Π½Ρ‹ΠΌ возмоТностям ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Код компилятора isasazwa ngu ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv2, Π° стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ для Haxe Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ neko phantsi kwelayisenisi ye-MIT.

Ulwimi lu ijolise kwintetho со строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡ€ΠΈΡ‘ΠΌΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ, ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования.
Бинтаксис Haxe Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ECMAScript ΠΈ yandisa Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΈΠΌΠΈ возмоТностями, ΠΊΠ°ΠΊ статичСская типизация, Π°Π²Ρ‚ΠΎΠ²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠ², сопоставлСниС шаблонов, Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ, основанный Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… Ρ†ΠΈΠΊΠ» Β«forΒ», AST-макросы, GADT (Generalized Algebraic Data Types), абстрактныС Ρ‚ΠΈΠΏΡ‹, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ структуры, ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹Π΅ опрСдСлСния массивов, выраТСния для условной компиляции, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ полям, классами ΠΈ выраТСниям, интСрполяция строк (β€˜My name is $name’), ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² (Β«new Mainβ€ΉStringβ€Ί(β€˜foo’)Β») ΠΈ Okuninzi.

Uvavanyo lweklasi {
umsebenzi ongatshintshiyo () {
var people = [
"Elizabeth" => "Ukucwangcisa",
"Joweli" => "Yila"
];

for (name in people.keys()) {
var job = people[name];
trace(β€˜igama le-$ lenza umsebenzi we-$ ukuze uziphilise!’);
}
}
}

Siseko ezintsha вСрсии 4.0:

  • Новый синтаксис для указания Ρ‚ΠΈΠΏΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Β«(name:String, age:Int)->BoolΒ» ΠΈΠ»ΠΈ Β«(String, Int)->BoolΒ» вмСсто Β«String->Int->BoolΒ».
  • Бинтаксис стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Β«(a, b) -> a + bΒ» вмСсто Β«function(a, b) return a + bΒ».
  • Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанных с использованиСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Null (ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ функция, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ, классов ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²).
  • ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«finalΒ» для ΠΏΠΎΠ»Π΅ΠΉ классов ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Β«finalΒ» Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ наслСдовании ΠΈ для классов/интСрфСйсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ унаслСдованы.
  • inkxaso стандарта Unicode для Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Β«StringΒ» Π½Π° всСх Ρ†Π΅Π»Π΅ΠΉ компиляции Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Neko.
  • ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ с нуля встроСнный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ поставляСтся ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Vavanya. Благодаря Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ скрипты ΠΈ макросы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.
  • Новая цСлСвая систСма для компиляции (target) Hashlink β€” Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ runtime, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Haxe, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ для JIT ΠΈΠ»ΠΈ C, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с C, Π° Ρ‚Π°ΠΊΠΆΠ΅ доступ ΠΊ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ числовым Ρ‚ΠΈΠΏΠ°ΠΌ ΠΈ указатСлям.
  • Новая цСлСвая систСма JVM β€” позволяСт Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ jvm, пропуская этап компиляции Java-ΠΊΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π° Β«-D jvmΒ» ΠΏΡ€ΠΈ Ρ‚Π°Ρ€Π³Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² Java.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ inline-развёртывания Π½Π° мСстС Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ конструкторов, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ статичСских Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ объявлСнии Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«enumΒ») с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Β«@:using(path.ToExtension)Β».
  • АбстрактныС Ρ‚ΠΈΠΏΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Β«setΒ»-Π²Π΅Ρ€ΡΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«@:op(a.b)Β» для ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Β«obj.foo = barΒ».
  • Бинтаксис Ρ†ΠΈΠΊΠ»Π° Β«forΒ» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Β«ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β»: Β«for (key => value in collection) {}Β».
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° использования xml-like Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Π² выраТСниях: Β«var a = β€Ήhi/β€Ί;Β». Пока эта Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для парсинга макросами ΠΈ находится Π½Π° этапС Π΄ΠΈΠ·Π°ΠΉΠ½Π°.
  • Бинтаксис для ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ Π² Β«ΠΏΠΎΠ»Π½ΠΎΠΉΒ» Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… структур: Β«{ var ?f:Int; }Β» (Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Β«ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉΒ» Β«{ ?f:Int }Β»).
  • ЗначСния пСрСчислСний Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: Β«function fooβ€ΉTβ€Ί(option:Optionβ€ΉTβ€Ί = None)Β».
  • Бинтаксис Β«enum abstract Name(BasicType) {}Β» большС Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ прСфикса Β«@:Β» Π² Β«enumΒ».
  • Авто-нумСрация для абстрактных пСрСчислСний:

    enum abstract Foo(Int) {
    var A; // 0
    var B; // 1
    }
    enum abstract Bar(String) {
    var A; // Β«AΒ»
    var B; // Β«BΒ»
    }

  • ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«externΒ» большС Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ использованиС прСфикса Β«@:Β».
  • Π£Π΄Π°Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Β«izixhobo DynamicΒ» для доступа ΠΊ полям класса Ρ‡Π΅Ρ€Π΅Π· строки. Доступно для extern-классов ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ абстрактным Ρ‚ΠΈΠΏΠΎΠΌ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ синтаксис Β«A & BΒ» для пСрСсСчСния Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ примСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… структур ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚ΠΈΠΏΠ°. Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ синтаксис ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΡƒΠ΄Π°Π»Ρ‘Π½.
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ пустых экзСмпляров Β«MapΒ» доступно Ρ‡Π΅Ρ€Π΅Π· синтаксис Β«var map:Mapβ€ΉInt, Stringβ€Ί = [];Β» ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с массивом.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° структура Π΄Π°Π½Π½Ρ‹Ρ… Β«haxe.ds.ReadOnlyArrayΒ».
  • ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ пространства ΠΈΠΌΠ΅Π½ (Β«@:prefix.name function() {…}Β»). Аналогично с опрСдСлСниями: Β«#if (some.flag … #endΒ».
  • Новый ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» сСрвисов для IDE, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΏΠ»Π°Π³ΠΈΠ½Π΅ ΠΊ VSCode.
  • ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ внСшниС опрСдСлСния (extern) для Web APIs ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅.

umthombo: opennet.ru

Yongeza izimvo