Programmēšanas valodas Haxe 4.1 izlaišana

Pieejams rīku komplekta izlaišana Haxe 4.1, kas ietver tāda paša nosaukuma daudzparadigmu augsta līmeņa programmēšanas valodu ar spēcīgu rakstīšanu, savstarpēju kompilatoru un standarta funkciju bibliotēku. Projekts atbalsta tulkošanu uz C++, HashLink/C, JavaScript, C#, Java, PHP, Python un Lua, kā arī kompilāciju uz JVM, HashLink/JIT, Flash un Neko baitu kodu, ar piekļuvi katras mērķa platformas vietējām iespējām. Kompilatora kods izplata saskaņā ar GPLv2 licenci un standarta bibliotēku un virtuālajām mašīnām, kas izstrādātas Haxe HashLink и Neko saskaņā ar MIT licenci.

Valoda ir orientēts uz izteiksmi ar spēcīgu rakstīšanu. Tiek atbalstītas uz objektu orientētas, vispārīgas un funkcionālas programmēšanas metodes. Haxe sintakse ir tuvu ECMAScript un izplešas tā funkcijas, piemēram, statiskā rakstīšana, autotipa secinājumi, modeļu saskaņošana, vispārīgie skaitļi, uz iteratoriem balstītas cilpas, AST makro, GADT (vispārinātie algebrisko datu tipi), abstraktie veidi, anonīmas struktūras, vienkāršotas masīvu definīcijas, nosacījuma kompilācijas izteiksmes, metadatu pievienošana laukiem. , klases un izteiksmes, virkņu interpolācija (“Mans vārds ir $name”), tipa parametri ('new Main("foo")' un daudz vairāk.

klases ieskaite {
statiskā funkcija main() {
galīgie cilvēki = [
"Elizabeth" => "Programmēšana",
"Joel" => "Dizains"
];

for (vārds => darbs cilvēkos) {
trace('$name dara $darbu iztikai!');
}
}
}

Jaunas funkcijas versijā 4.1:

  • Pievienota astes rekursijas optimizācija.
  • Pievienota jauna vienota API izņēmumu apstrādei.
  • Konstrukcija "try {} catch(e) {}" ir atļauta kā saīsinājums vārdam "try {} catch(e: haxe.Exception) {}".
  • Pievienots SSL atbalsts eval tulkam.
  • Mērķa JVM vairs netiek uzskatīts par eksperimentālu.
  • Valodu servera protokolam ir pievienots atbalsts funkcijām “Goto Implementation” un “Find references”.
  • Uzlabota pagaidu vietējo mainīgo nosaukumu piešķiršana ģenerētajā kodā. Noņemts lieks "atgriešanās;" bultiņu funkcijās bez atgriešanas vērtības.
  • Piekļuves kombinācijas (get, noklusējuma) ir atļautas laukos (tikai getter, noklusējuma piešķiršanas darbība).
  • Atļaut laukiem palielināt un samazināt operatorus abstraktie veidi.
  • Uzlabota for cilpu iekļaušana, izmantojot anonīmus iteratorus.
  • js: uzlabota StringMap ieviešana ES5.
  • js: kompilatora opcijai “-D js-es=6” pievienota let mainīgo ģenerēšana, uzlabota ES6 klašu ģenerēšana.
  • lua: optimizēts "StringIterator", uzlabota kļūdu apstrāde.
  • php: Optimizēts "Std.isOfType" bāzes tipiem.
  • php: ģenerētie masīvi tagad ievieš vietējās saskarnes “Iterator”, “IteratorAggregate”, “Countable”.
  • cs: pievienoti metadati "@:assemblyMeta" un "@:assemblyStrict".
  • python: pievienota "__contains__" ieviešana anonīmiem objektiem
    un "__getitem__", kas ļauj tos izmantot kā vārdnīcas ģenerētajā kodā.

  • jvm: ievērojami uzlabota veiktspēja, pateicoties jaunam veidam, kā piekļūt drukātām funkcijām un ģenerēt papildu saskarnes gadījumos, kad objekti tiek izmantoti kā anonīmas struktūras (tiek novērsta dinamiskā rekvizītu meklēšana):
    Programmēšanas valodas Haxe 4.1 izlaišana

Uzlabojumi standarta bibliotēkā:

  • Pievienota funkcija "Array.contains".
  • Pievienots "Array.keyValueIterator", kas ievieš atslēgas vērtību iterāciju masīviem ("for (key => value in array)").
  • Pievienots ierobežojuma veids "haxe.Constraints.NotVoid".
  • “Lambda” klasei ir pievienotas funkcijas “findIndex” un “foldi”.
  • Ieviesta "masīva piekļuve" (piekļuve, izmantojot "arr[i]") un atslēgas vērtības iterācija "haxe.ds.HashMap".
  • jvm: ieviestas JVM specifiskās "StringMap", "sys.thread.Lock", "sys.thread.Thread" versijas.
  • java/jvm: Moduļiem "haxe.crypto" tika izmantotas "MD5", "SHA-1" un "SHA-256" vietējās implementācijas.
  • makro: pievienots "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Stingrais" režīms tagad tiek uzskatīts par vienu pavedienu; pievienots "StrictThreaded" režīms.
  • "Std.is" ir novecojis par labu "Std.isOfType".
  • Pievienots brīdinājums, izmantojot lokālos mainīgos bez vērtībām slēgšanā.
  • js: "untyped __js__(kods, args)" ir novecojis, aizstāts ar "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" un "php.Web" ir novecojušas un vēlāk tiks pārvietotas uz bibliotēku "hx4compat".

Nākamajā izlaidumā ir plānoti:

  • Pakešu pārvaldnieka uzlabojumi hakselib.
  • Asinhronās sistēmas API pamatā libuv.
  • Korutīnas.
  • Modulāro statisko funkciju un mainīgo deklarēšana, neveidojot klases (jau pieejams nakts veidojumos).

Avots: opennet.ru

Pievieno komentāru