Rilis basa pemrograman Haxe 4.1

Kasedhiya release toolkit Haxe 4.1, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹ΠΉ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅Π½Π½Ρ‹ΠΉ высокоуровнСвый язык программирования со строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, кросс-компилятор ΠΈ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ поддСрТиваСтся трансляция Π² Π‘++, HashLink/C, JavaScript, C#, Java, PHP, Python ΠΈ Lua, Π° Ρ‚Π°ΠΊΠΆΠ΅ компиляция Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ JVM, HashLink/JIT, Flash ΠΈ Neko, с доступом ΠΊ Ρ€ΠΎΠ΄Π½Ρ‹ΠΌ возмоТностям ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Код компилятора disebarake dening ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv2, Π° стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… для Haxe Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин HashLink ΠΈ Neko miturut lisensi MIT.

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

tes kelas {
fungsi statis utama() {
final people = [
"Elizabeth" => "Pemrograman",
"Joel" => "Desain"
];

for (name => job in people) {
trace('$jeneng gawe $pekerjaan kanggo urip!');
}
}
}

НововвСдСния вСрсии 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: Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ благодаря Π½ΠΎΠ²ΠΎΠΌΡƒ способу обращСния ΠΊ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ функциям ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… интСрфСйсов Π² случаях использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠ°ΠΊ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… структур (ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ динамичСский поиск свойств):
    Rilis basa pemrograman Haxe 4.1

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция Β«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Β».

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅Π»ΠΈΠ·Π΅ ngrancang:

  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° haxelib.
  • АсинхронноС систСмноС API Π½Π° основС libu.
  • Π‘ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (coroutines).
  • ОбъявлСниС ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… статичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±Π΅Π· создания классов (ΡƒΠΆΠ΅ доступно Π² Π½ΠΎΡ‡Π½Ρ‹Ρ… сборках).

Source: opennet.ru

Add a comment