Haxe 4.0 програмчлалын хэлийг гаргасан

Боломжтой хэрэгсэл гаргах Haxe 4.0, үүнд хүчтэй бичих чадвартай ижил нэртэй олон парадигмын өндөр түвшний програмчлалын хэл, хөндлөн хөрвүүлэгч, функцуудын стандарт номын сан багтсан болно. Төсөл нь C++, HashLink/C, JavaScript, C#, Java, PHP, Python болон Lua хэл рүү орчуулах, түүнчлэн JVM, HashLink/JIT, Flash болон Neko байт код руу хөрвүүлэх, зорилтот платформ бүрийн эх боломжуудыг ашиглах боломжийг олгодог. Хөрвүүлэгчийн код тараасан GPLv2 лицензийн дагуу, Haxe-д зориулж боловсруулсан стандарт номын сан, виртуал машин Неко MIT лицензийн дагуу.

Хэл бол илэрхийлэлд чиглэсэн хүчтэй бичвэртэй. Объект хандалтат, ерөнхий болон функциональ програмчлалын үзэл баримтлалыг дэмждэг.
Haxe синтакс нь ECMAScript болон өргөжиж байна статик бичих, автомат төрлөөр дүгнэлт хийх, хэв маягийг тааруулах, генерик, давталт дээр суурилсан давталт, AST макро, GADT (Ерөнхий алгебрийн өгөгдлийн төрлүүд), хийсвэр төрлүүд, нэргүй бүтэц, хялбаршуулсан массивын тодорхойлолт, нөхцөлт эмхэтгэлийн илэрхийлэл, талбарт мета өгөгдлийг хавсаргах зэрэг онцлогууд. , ангиуд болон илэрхийллүүд, мөрийн интерполяци ('Миний нэр бол $name'), төрөл параметрүүд ("шинэ Main‹String›('foo')") болон илүү их.

ангийн тест {
статик функц main() {
var хүмүүс = [
"Элизабет" => "Програмчлал",
"Жоел" => "Дизайн"
];

төлөө (хүмүүс.keys()-д нэр) {
var ажил = хүмүүс[нэр];
trace('$name нь $ажлын ажил хийдэг!');
}
}
}

Үндсэн инноваци 4.0 хувилбар:

  • "String->Int->Bool"-ын оронд "(name:String, age:Int)->Bool" эсвэл "(String, Int)->Bool" функцийн төрлийг зааж өгөх шинэ синтакс.
  • Сумны функцийн синтакс нь "функц(a, b) буцаах a + b"-ын оронд "(a, b) -> a + b" байна.
  • Null утгыг ашиглахтай холбоотой асуудлаас хамгаалах (туршилтын онцлог, сонголтоор тодорхой талбар, анги эсвэл багцад идэвхжүүлсэн).
  • "Эцсийн" түлхүүр үг нь ангийн талбарууд болон өөрчлөгддөггүй локал хувьсагчдад зориулагдсан. "Төгсгөлийн" нь мөн удамшлын замаар дарагдахаас сэргийлж функцуудыг тодорхойлоход болон удамших боломжгүй анги/интерфэйсүүдэд ашиглагдаж болно.
  • тусламж Neko-оос бусад бүх эмхэтгэлийн зорилтот "String" үндсэн төрлийн Юникод стандарт.
  • Баригдсан орчуулагчийг эхнээс нь дахин бичсэн бөгөөд одоо энэ нэрээр гарч байна Үнэлгээ. Шинэ орчуулагчийн ачаар скриптүүд болон макронууд илүү хурдан ажилладаг. Интерактив дибаг хийх горимыг дэмждэг.
  • Эмхэтгэх шинэ зорилтот систем (зорилтот) Хэшлинк - JIT эсвэл C-д зориулж байт код руу хөрвүүлэхийг дэмждэг Haxe-д тусгайлан зориулсан өндөр гүйцэтгэлтэй ажиллах хугацаа нь C-тэй хялбар интеграцчлахаас гадна доод түвшний тоон төрөл, заагч руу нэвтрэх боломжтой.
  • Шинэ JVM зорилтот - Java хэл дээр чиглүүлэх үед "-D jvm" тугийг нэмж Java кодын эмхэтгэлийн алхамыг алгасаж jvm байт код үүсгэх боломжийг танд олгоно.
  • Функц эсвэл бүтээгч гэж зарлагдаагүй байсан ч тэдгээрийг дуудах цэг дээр шугаман дээр байрлуулах чадвар.
  • Оруулах боломж статик өргөтгөлүүд "@:using(path.ToExtension)"-г ашиглан төрлийг ("enum" гэх мэт) зарлах үед.
  • Хийсвэр төрлүүд одоо "obj.foo = bar" илэрхийллийг дахин ачаалах "@:op(ab)" операторын "тогтоосон" хувилбарыг дэмждэг.
  • "for" давталтын синтакс одоо түлхүүр-утга давталтыг дэмждэг: "for (түлхүүр => цуглуулга дахь утга) {}".
  • “var a = ‹hi/›;” илэрхийлэлд xml-тэй төстэй тэмдэглэгээг ашиглахад дэмжлэг үзүүлэх. Одоогоор энэ функцийг зөвхөн макро ашиглан задлан шинжлэхэд ашиглах боломжтой бөгөөд дизайны шатандаа явж байна.
  • Нэргүй бүтцийн төрлүүдийн "бүрэн" тэмдэглэгээний нэмэлт талбаруудын синтакс нь: "{ var ?f:Int; }" (богино "{ ?f:Int }"-ийн өөр хувилбар).
  • Enum утгууд нь одоо функцийн аргументуудын өгөгдмөл утга байж болно: "функц foo‹T›(сонголт: Сонголт‹T› = Байхгүй)".
  • "enum abstract Name(BasicType) {}" синтакс нь "enum"-д "@:" угтвар оруулах шаардлагагүй болсон.
  • Хийсвэр тооллогын автомат дугаарлалт:

    enum abstract Foo(Int) {
    var A; // 0
    var B; // 1
    }
    enum abstract Bar(String) {
    var A; // "А"
    var B; // "Б"
    }

  • "extern" түлхүүр үгэнд "@:" угтварыг ашиглах шаардлагагүй болсон.
  • Сонголтыг хассан "хэрэгжүүлэлт Динамик"-ыг ашиглан ангиллын талбарт стрингээр хандана. Экстерн ангиудад эсвэл хийсвэр хэлбэрээр хэрэгжүүлэх боломжтой.
  • "A & B" төрлийн огтлолцлын синтаксийг нэмсэн бөгөөд энэ нь одоогоор зөвхөн нэргүй бүтэц болон төрлийн параметрийн хязгаарлалтад хамаарна. Хуучин хязгаарлалтын синтаксийг устгасан.
  • Хоосон "Газрын зураг" инстанцуудыг "var map:Map‹Int, String› = [];" синтакс ашиглан хийх боломжтой. массивтай төстэй.
  • "haxe.ds.ReadOnlyArray" өгөгдлийн бүтцийг нэмсэн.
  • Мета өгөгдөл одоо нэрийн орон зайтай байж болно (“@:prefix.name function() {…}”). Тодорхойлолттой адил: "#if (some.flag ... #end".
  • Ашигласан IDE-д зориулсан шинэ үйлчилгээний протокол VSCode-д зориулсан залгаас.
  • Вэб API-д зориулсан гадаад тодорхойлолтуудыг (extern) шинэчилж, дутууг нэмсэн.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх