Ohjelmointikielen Haxe 4.1 julkaisu

Saatavilla työkalupakin julkaisu Haxe 4.1, joka sisältää samannimisen moniparadigman korkean tason ohjelmointikielen vahvalla kirjoituksella, ristikääntäjän ja vakiofunktiokirjaston. Projekti tukee kääntämistä C++-, HashLink/C-, JavaScript-, C#-, Java-, PHP-, Python- ja Lua-sovelluksiin sekä kääntämistä JVM-, HashLink/JIT-, Flash- ja Neko-tavukoodiin, joilla on pääsy kunkin kohdealustan alkuperäisiin ominaisuuksiin. Kääntäjän koodi jakelija GPLv2-lisenssin ja Haxelle kehitetyn standardikirjaston ja virtuaalikoneiden alaisena HashLink и Neko MIT-lisenssillä.

Kieli on ilmaisusuuntautunut vahvalla kirjoituksella. Oliosuuntautuneita, yleisiä ja toiminnallisia ohjelmointitekniikoita tuetaan. Haxe-syntaksi on lähellä ECMAScriptiä ja laajenee sen ominaisuudet, kuten staattinen kirjoittaminen, autotyyppien päättely, kuvioiden sovitus, yleiset ominaisuudet, iteraattoripohjainen silmukoille, AST-makrot, GADT (Generalized Algebraic Data Types), abstraktit tyypit, anonyymit rakenteet, yksinkertaistetut taulukkomääritykset, ehdolliset käännöslausekkeet, metatietojen liittäminen kenttiin , luokat ja lausekkeet, merkkijonojen interpolointi (""Nimeni on $nimi"), tyyppiparametrit ("uusi pää ("foo")') ja paljon enemmän.

luokkakoe {
staattinen funktio main() {
lopulliset ihmiset = [
"Elizabeth" => "Ohjelmointi",
"Joel" => "Design"
];

for (nimi => työpaikka ihmisissä) {
trace('$name tekee $työtä elantonsa vuoksi!');
}
}
}

Uudet ominaisuudet versiossa 4.1:

  • Lisätty tail-rekursion optimointi.
  • Lisätty uusi yhtenäinen API poikkeusten käsittelyä varten.
  • Konstrukti "try {} catch(e) {}" on sallittu lyhenteenä sanalle "try {} catch(e: haxe.Exception) {}".
  • Lisätty SSL-tuki eval-tulkkiin.
  • Kohde-JVM:ää ei enää pidetä kokeellisena.
  • Language Server Protocoliin on lisätty tuki "Goto Implementation"- ja "Find references" -toiminnoille.
  • Parannettu väliaikaisten paikallisten muuttujien nimeäminen luodussa koodissa. Ylimääräinen "palautus" poistettu; nuolifunktioissa ilman palautusarvoa.
  • Käyttöoikeusyhdistelmät (get, oletus) ovat sallittuja kentissä (vain getter, oletusmäärityskäyttäytyminen).
  • Salli kenttien lisäys- ja vähennysoperaattorit abstrakteja tyyppejä.
  • Parannettu for-silmukoiden rivitys anonyymeillä iteraattoreilla.
  • js: Parannettu StringMap-toteutus ES5:lle.
  • js: Kääntäjävaihtoehtoon “-D js-es=6” on lisätty let-muuttujien generointi, ES6-luokkien generointia on parannettu.
  • lua: optimoitu "StringIterator", parannettu virheiden käsittely.
  • php: Optimoitu "Std.isOfType" perustyypeille.
  • php: Luodut taulukot toteuttavat nyt alkuperäiset rajapinnat "Iterator", "IteratorAggregate", "Countable".
  • cs: Lisätty metatiedot "@:assemblyMeta" ja "@:assemblyStrict".
  • python: lisätty "__contains__" -toteutus anonyymeihin objekteihin
    ja "__getitem__", jonka avulla niitä voidaan käyttää sanakirjoina luodussa koodissa.

  • jvm: Merkittävästi parannettu suorituskyky uuden tavan ansiosta päästä käsiksi kirjoitettuihin funktioihin ja luoda lisärajapintoja tapauksissa, joissa objekteja käytetään anonyymeinä rakenteina (dynaaminen ominaisuuksien haku on estetty):
    Ohjelmointikielen Haxe 4.1 julkaisu

Parannuksia vakiokirjastoon:

  • Lisätty "Array.contains" -toiminto.
  • Lisätty "Array.keyValueIterator", joka toteuttaa avainarvoiteroinnin taulukoille ("for (avain => arvo taulukossa)").
  • Lisätty rajoitustyyppi "haxe.Constraints.NotVoid".
  • Funktiot “findIndex” ja “foldi” on lisätty “Lambda”-luokkaan.
  • Toteutettu "matriisikäyttö" (pääsy "arr[i]":n kautta) ja avainarvoiteraatio "haxe.ds.HashMap" -sovellukselle.
  • jvm: Toteutetut JVM-kohtaiset versiot sanoista "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Käytetty "MD5", "SHA-1" ja "SHA-256" alkuperäisiä toteutuksia "haxe.crypto"-moduuleille.
  • makro: Lisätty "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Strict"-tilaa käsitellään nyt yksisäikeisenä; lisätty "StrictThreaded" -tila.
  • "Std.is" on poistettu käytöstä "Std.isOfType":n hyväksi.
  • Lisätty varoitus käytettäessä paikallisia muuttujia ilman arvoja sulkemisissa.
  • js: "kirjoittamaton __js__(koodi, args)" on vanhentunut ja korvattu "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" ja "php.Web" on vanhentunut ja siirretään "hx4compat"-kirjastoon myöhemmin.

Seuraavassa julkaisussa suunniteltu:

  • Paketinhallinnan parannuksia haxelib.
  • Asynkronisen järjestelmän API-pohjainen libuv.
  • Korutiinit.
  • Modulaaristen staattisten funktioiden ja muuttujien ilmoittaminen luokkia luomatta (saatavana jo iltaisin rakennelmissa).

Lähde: opennet.ru

Lisää kommentti