Programavimo kalbos Haxe 4.0 išleidimas

Galima įrankių rinkinio išleidimas Haxe 4.0, kuri apima kelių paradigmų aukšto lygio programavimo kalbą tuo pačiu pavadinimu su stipriu spausdinimu, kryžminį kompiliatorių ir standartinę funkcijų biblioteką. Projektas palaiko vertimą į C++, HashLink/C, JavaScript, C#, Java, PHP, Python ir Lua, taip pat kompiliavimą į JVM, HashLink/JIT, Flash ir Neko baitinį kodą su prieiga prie kiekvienos tikslinės platformos vietinių galimybių. Kompiliatoriaus kodas išplatino pagal GPLv2 licenciją ir standartinę biblioteką bei virtualią mašiną, sukurtą Haxe Neko pagal MIT licenciją.

Kalba yra orientuotas į išraišką su stipriu spausdinimu. Palaikomos į objektą orientuotos, bendrosios ir funkcinės programavimo koncepcijos.
Haxe sintaksė yra artima ECMAScript ir plečiasi jo ypatybės, pvz., statinis spausdinimas, automatinio tipo išvados, šablonų suderinimas, bendrieji elementai, iteratorius pagrįstos kilpoms, AST makrokomandos, GADT (generalizuoti algebriniai duomenų tipai), abstraktūs tipai, anoniminės struktūros, supaprastinti masyvo apibrėžimai, sąlyginės kompiliavimo išraiškos, metaduomenų pridėjimas prie laukų , klasės ir išraiškos, eilučių interpoliacija („Mano vardas yra $name“), tipo parametrai („new Main‹String›('foo')“) ir daug daugiau.

Class Test {
statinė funkcija main() {
var zmones = [
"Elizabeth" => "Programavimas",
"Joel" => "Dizainas"
];

for (vardas žmonės.raktai()) {
var darbas = žmonės[vardas];
trace('$name dirba $darbą pragyvenimui!');
}
}
}

pagrindinis naujoves 4.0 versija:

  • Nauja sintaksė, skirta nurodyti funkcijos tipą „(pavadinimas:Eilutė, amžius:Int)->Bool“ arba „(String, Int)->Bool“, o ne „String->Int->Bool“.
  • Rodyklės funkcijos sintaksė yra "(a, b) -> a + b", o ne "funkcija(a, b) grąžina a + b".
  • Apsauga nuo problemų, susijusių su Null reikšmių naudojimu (eksperimentinė funkcija, pasirinktinai įjungta tam tikriems laukams, klasėms ar paketams).
  • „Galutinis“ raktinis žodis skirtas klasių laukams ir vietiniams kintamiesiems, kurie yra nekintantys. „galutinis“ taip pat gali būti naudojamas funkcijoms apibrėžti, kad jų nepaisytų paveldėjimas, ir klasėms / sąsajoms, kurių negalima paveldėti.
  • Remti Unikodo standartas pagrindiniam tipui „String“ visuose kompiliavimo taikiniuose, išskyrus „Neko“.
  • Integruotas vertėjas, perrašytas nuo nulio, kuris dabar vadinamas pavadinimu Įvertinti. Dėl naujojo interpretatoriaus scenarijai ir makrokomandos veikia daug greičiau. Palaikomas interaktyvus derinimo režimas.
  • Nauja tikslinė kompiliavimo sistema (target) Hashlink - didelio našumo vykdymo laikas, sukurtas specialiai Haxe, palaikantis kompiliavimą į baitinį kodą JIT arba C, lengvai integruojamas su C, taip pat prieiga prie žemo lygio skaitinių tipų ir rodyklių.
  • Naujas JVM tikslas – leidžia generuoti jvm baitinį kodą praleidžiant „Java“ kodo kompiliavimo veiksmą, pridedant „-D jvm“ vėliavėlę, kai taikoma „Java“.
  • Galimybė diegti tiesiogiai iškviečiant funkcijas ar konstruktorius, net jei jie nėra deklaruoti kaip tokie.
  • Galimybė įtraukti statiniai plėtiniai deklaruojant tipą (pvz., "enum") naudojant "@:using(path.ToExtension)".
  • Abstraktūs tipai dabar palaiko „@:op(ab)“ operatoriaus „set“ versiją, kad iš naujo įkeltų „obj.foo = bar“ išraiškas.
  • Ciklo sintaksė „for“ dabar palaiko rakto vertės iteraciją: „for (raktas => reikšmė rinkinyje) {}“.
  • Palaikymas naudojant xml tipo žymėjimą išraiškose: „var a = ‹hi/›;“. Kol kas ši funkcija galima tik analizuojant makrokomandas ir yra projektavimo etape.
  • Neprivalomų laukų sintaksė „visame“ anoniminių struktūrų tipų žymėjime yra: „{ var ?f:Int; }“ (alternatyva trumpajam „{ ?f:Int }“).
  • Enum reikšmės dabar gali būti numatytosios funkcijos argumentų reikšmės: "function foo‹T›(parinktis: Parinktis‹T› = Nėra)".
  • Sintaksei „enum abstract Name(BasicType) {}“ nebereikia „@:“ priešdėlio „enum“.
  • Automatinis abstrakčių sąrašų numeravimas:

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

  • „Extern“ raktiniam žodžiui nebereikia naudoti priešdėlio „@:“.
  • Pašalinta parinktis "padargai Dinaminis“, kad pasiektumėte klasės laukus per eilutes. Galima naudoti išorinėms klasėms arba įgyvendinant abstrakčiojo tipo.
  • Pridėta "A ir B" sintaksė tipo sankirtai, kuri šiuo metu taikoma tik anoniminėms struktūroms ir tipo parametrų apribojimams. Senoji apribojimo sintaksė buvo pašalinta.
  • Kurti tuščius „Žemėlapio“ egzempliorius galima naudojant sintaksę „var map:Map‹Int, String› = [];“ panašus į masyvą.
  • Pridėta duomenų struktūra „haxe.ds.ReadOnlyArray“.
  • Dabar metaduomenyse gali būti vardų erdvių („@:prefix.name function() {…}“). Panašiai ir su apibrėžimais: „#if (kai.vėliava ... #pabaiga“.
  • Naujas paslaugų protokolas, skirtas naudoti IDE VSCode įskiepis.
  • Atnaujinti išoriniai žiniatinklio API apibrėžimai (išoriniai) ir pridėti trūkstami.

Šaltinis: opennet.ru

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