Ohjelmointikielen Haxe 4.2 julkaisu

Haxe 4.2 -työkalupaketin julkaisu on saatavilla, joka sisältää samannimisen moniparadigman korkean tason ohjelmointikielen vahvalla kirjoituksella, ristikääntäjän ja funktioiden vakiokirjaston. 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äkoodia jaetaan GPLv2-lisenssillä ja standardikirjasto sekä Haxelle kehitetyt HashLink- ja Neko-virtuaalikoneet lisensoidaan MIT-lisenssillä.

Kieli on ilmaisusuuntautunut ja vahva kirjoitus. Oliosuuntautuneita, yleisiä ja toiminnallisia ohjelmointitekniikoita tuetaan. Haxen syntaksi on lähellä ECMAScriptiä ja laajentaa sitä ominaisuuksilla, kuten staattinen kirjoittaminen, automaattinen tyyppipäätelmä, kuvioiden sovitus, geneeriset ominaisuudet, iteraattoripohjainen silmukoille, AST-makrot, GADT (Generalized Algebraic Data Types), abstraktit tyypit, anonyymit rakenteet, yksinkertaistettu määritelmätaulukot, lausekkeet ehdolliseen kokoamiseen, metatietojen liittäminen kenttiin, luokkiin ja lausekkeisiin, merkkijonojen interpolointi ('Nimeni on $nimi'), tyyppiparametrit ('new Main ("foo"') ja monet muut. class Test { staattinen funktio main() { final people = [ "Elizabeth" => "Ohjelmointi", "Joel" => "Design" ]; for (nimi => työ ihmisissä) { trace('$nimi tekee $työtä elantonsa vuoksi!'); } } }

Uudet ominaisuudet versiossa 4.2:

  • Staattisten muuttujien ja funktioiden ilmoittaminen moduulitasolla ilman, että niitä tarvitsee kääriä luokkaan.
  • Tuki "klassisille" abstrakteille luokille ja funktioille.
  • Variadic-funktioiden natiivi toteutus kaikille kohdealustoille (haxe.Rest) ja argumentin laajennusoperaattorin "f(...array)" lisäys.
  • Tapahtumasilmukan toteutus yksittäisille säikeille ("sys.thread.Thread.events").
  • "@:inheritDoc"-metatiedot tyypin/kentän dokumentaation perimiseksi.
  • Menetelmän ylikuormitustuki ulkoisille menetelmille kaikilla kohdealustoilla.
  • Sen tyypin taustalla olevan rakentajan edelleenlähetys abstraktiin käyttämällä @:forward.new-metatietoja.
  • Lisätty "EIs"-konstruktori "haxe.macro.Expr".
  • Mahdollisuus tehdä abstrakti tyyppivariantti "@:forward.variance":lla.
  • "Kaikki"-tyypin esitys "Dynaamisena" muunnelman yhdistämisessä.
  • Lisätty joitakin peruspoikkeustyyppejä "haxe.exceptions" -pakettiin.
  • Tuki metatietojen liittämiseen muuttujien ilmoittamisen yhteydessä.
  • Funktiota "StringTools.unsafeCharAt" käytetään merkkijonoiteraatioon.
  • eval (tulkki): Lisätty sidokset "libuv" -pakettiin "eval.luv".
  • eval: sidokset "Int64" ja "UInt64" alkuperäisiin toteutuksiin paketin "eval.integers" kautta.
  • cs: UDP-vastakkeen toteutus.
  • cs: "cs.Syntax" -moduuli C#-koodin upottamista varten.
  • jvm: Lisätty "-D jvm.dynamic-level=x" -lippu ohjaamaan dynaamisen koodin luotujen optimointien määrää. 0 = ei mitään, 1 = kentän luku/kirjoitusoptimointi, 2 = menetelmän sulkeminen käännöshetkellä.
  • java, jvm: Tuki "--java-lib <hakemisto>"-lipulle.
  • python: ketjutussovellusliittymän toteutus.

Yleisiä parannuksia:

  • "Expr on SomeType" ei vaadi rivitystä suluissa.
  • "@:using"-tyyppisten laajennusten prioriteettia korotettu.
  • Mahdollistaa staattisen tyyppisten laajennusten käytön "super" kautta.
  • Mahdollisuus asettaa metatiedot @:noDoc-kenttiin.
  • Abstrakti tyyppi "Kartta" on tehty transitiiviseksi.
  • Tuki "@:native":lle enum-konstruktoreissa.
  • Tuki "@:using":lle tyyppimäärittelyissä ("typedefs").
  • Moniriviset virheet käyttävät "..." etuliitteenä seuraaville riveille.
  • Tyyppipäätelmä on muokattu, anonyymit rakenteet muunnetaan paremmin eksplisiittisiksi tyypeiksi ja "suljetaan", kun toiminto on valmis.
  • Päätetään funktioiden tyypiksi ilman argumentteja "()->..." "Vid->..." sijaan.
  • Avainsana "function" on sallittu paketin nimenä.
  • Paranneltu esineiden rivitys.
  • cs: Lisätty tuki .NET 5.0:lle.
  • cpp: Tuki ulkoisten luokkien alkuperäisille rakentajille.
  • php: Lisätty "php.Syntax.customArrayDecl" ilmoittamaan alkuperäisen taulukon.
  • php: Päivitetyt ulkoiset menetelmät eri funktioille ja luokille.
  • php: Nimettömien rakenteiden optimoitu toteutus.
  • hl: Ohita kokoaminen, jos moduuleihin ei ole tehty muutoksia.
  • lua: Komento "hx-lua-simdjson" jäsentää json.
  • jvm: Vähentynyt suorittimen kuormitus "sys.thread.Lock"-toteutuksessa.
  • js: Parannettu yhteensopivuus Google Closure Compilerin kanssa.
  • Nollaturvallisuus: Harkitse "@:nullSafety(Off)" määritettäessä muuttujia: "var @:nullSafety(Off) v".

Lisäksi VSCode-editorin lisäys on päivitetty kääntäjän uuteen versioon, johon on ilmestynyt vihjeitä puuttuvien rajapintojen kenttien, yksinkertaisten ja abstraktien luokkien sekä ominaisuusmenetelmien generoimiseksi.

Lähde: opennet.ru

Lisää kommentti