Π Π΅Π»ΠΈΠ· языка программирования Haxe 4.2

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

Π―Π·Ρ‹ΠΊ являСтся expression-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ со строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ, ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Бинтаксис Haxe Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ECMAScript ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΈΠΌΠΈ возмоТностями ΠΊΠ°ΠΊ статичСская типизация, Π°Π²Ρ‚ΠΎΠ²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠ², сопоставлСниС шаблонов, Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ, основанный Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… Ρ†ΠΈΠΊΠ» «for», AST-макросы, GADT (Generalized Algebraic Data Types), абстрактныС Ρ‚ΠΈΠΏΡ‹, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ структуры, ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹Π΅ опрСдСлСния массивов, выраТСния для условной компиляции, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ полям, классам ΠΈ выраТСниям, интСрполяция строк (‘My name is $name’), ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² (‘new Main<String>(«foo»)’) ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. class Test { static function main() { final people = [ «Elizabeth» => «Programming», «Joel» => «Design» ]; for (name => job in people) { trace(‘$name does $job for a living!’); } } }

НовыС возмоТности вСрсии 4.2:

  • ОбъявлСниС статичных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ модуля, Π±Π΅Π· нСобходимости оборачивания Π² класс.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° «ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΡ…» абстрактных классов ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
  • Нативная рСализация Π²Π°Ρ€ΠΈΠ°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для всСх Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (haxe.Rest) ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° развСртывания Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² «f(…array)».
  • РСализация Ρ†ΠΈΠΊΠ»Π° событий (event loop) для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² («sys.thread.Thread.events»).
  • ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ «@:inheritDoc» для наслСдования Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ²/ΠΏΠΎΠ»Π΅ΠΉ.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π° всСх Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ….
  • ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° Π² абстракт конструктора, Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ Π² основС Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… «@:forward.new».
  • Π’ «haxe.macro.Expr» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ конструктор «EIs» .
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ абстрактный Ρ‚ΠΈΠΏ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹ΠΌ с «@:forward.variance».
  • ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° «Any» ΠΊΠ°ΠΊ «Dynamic» ΠΏΡ€ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ вариантности.
  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚ «haxe.exceptions» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° прикрСплСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….
  • Ѐункция «StringTools.unsafeCharAt», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΏΡ€ΠΈ строковой ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.
  • eval (ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€): Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ «eval.luv» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ привязки ΠΊ «libuv».
  • eval: привязки ΠΊ Ρ€ΠΎΠ΄Π½Ρ‹ΠΌ рСализациям «Int64» ΠΈ «UInt64» Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚ «eval.integers».
  • cs: рСализация UDP сокСта.
  • cs: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ «cs.Syntax» для inline-вставок C#-ΠΊΠΎΠ΄Π°.
  • jvm: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π»Π°Π³ «-D jvm.dynamic-level=x» для контроля количСства Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Ρƒ динамичСского ΠΊΠΎΠ΄Π°. 0 = ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, 1 = оптимизация чтСния/записи ΠΏΠΎΠ»Π΅ΠΉ, 2 = замыкания ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π° этапС компиляции.
  • java, jvm: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„Π»Π°Π³Π° «—java-lib <дирСктория>».
  • python: рСализация threading API.

ΠžΠ±Ρ‰ΠΈΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ:

  • «expr is SomeType» Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ оборачивания Π² скобки.
  • Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Ρƒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² «@:using» .
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ использованиС статичСских Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° Ρ‡Π΅Ρ€Π΅Π· «super».
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ полям «@:noDoc».
  • Абстрактный Ρ‚ΠΈΠΏ «Map» сдСлан Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° «@:native» Π½Π° конструкторах пСрСчислСний.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° «@:using» Π½Π° ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… Ρ‚ΠΈΠΏΠ° («typedefs»).
  • ΠœΡƒΠ»ΡŒΡ‚ΠΈΡΡ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ ошибки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ «…» ΠΊΠ°ΠΊ прСфикс для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… строк.
  • ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠ², Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ структуры Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² явныС Ρ‚ΠΈΠΏΡ‹ ΠΈ «Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ся» ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • Π’Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠ°ΠΊ «()->…» вмСсто «Void->…».
  • ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово «function» Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΎ встраиваниС (inlining) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • cs: Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° .NET 5.0.
  • cpp: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… конструкторов Ρƒ Π²Π½Π΅ΡˆΠ½ΠΈΡ… классов.
  • php: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ «php.Syntax.customArrayDecl» для объявлСния Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ массива.
  • php: ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ внСшниС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (externs) для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ классов.
  • php: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° рСализация Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… структур.
  • hl: ΠŸΡ€ΠΎΠΏΡƒΡΠΊ компиляции ΠΏΡ€ΠΈ отсутствии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² модулях.
  • lua: ИспользованиС «hx-lua-simdjson» для парсинга json.
  • jvm: Π‘Π½ΠΈΠΆΠ΅Π½Π° Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° CPU Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ «sys.thread.Lock».
  • js: Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Google Closure Compiler.
  • Null Safety: Π£Ρ‡Ρ‘Ρ‚ «@:nullSafety(Off)» ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…: «var @:nullSafety(Off) v».

Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ вСрсий компилятора ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρƒ VSCode, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ появились подсказки с Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ интСрфСйсов, простых ΠΈ абстрактных классов, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² свойств.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru