Dëshironi për lëshimin e gjuhës së programimit Haxe 4.0

I verfĂŒshĂ«m lĂ«shimi i toolkit-it Haxe 4.0, pĂ«rfshirĂ« gjuhĂ«n e programimit shumĂ«paradigmĂ« me emrin e njĂ«jtĂ«, me tipizim tĂ« rreptĂ«, njĂ« cross-compiler dhe njĂ« bibliotekĂ« standarde funksionesh. Projekti mbĂ«shtet pĂ«rkthimin nĂ« C++, HashLink/C, JavaScript, C#, Java, PHP, Python dhe Lua, si dhe kompaktimin nĂ« bajt-kod JVM, HashLink/JIT, Flash dhe Neko, me akses nĂ« mundĂ«sitĂ« native tĂ« secilĂ«s platformĂ« tĂ« synuar. Kodi i kompajlerit distribuohet nĂ«n licencĂ«n GPLv2, ndĂ«rsa biblioteka standarde dhe ata qĂ« zhvillohen pĂ«r makinĂ«n virtuale Haxe Neko nĂ« pĂ«rputhje me licencĂ«n MIT.

Gjuha është orientuar në shprehje me tipizim të rreptë. Mbështeten parimet e programimit objekt-orientuar, të përgjithësuar dhe funksional.
Sintaksa e Haxe i ngjan ECMAScript dhe shkallĂ«zon ka mundĂ«si si tipizimi statik, auto-shpjegimi i tipave, pĂ«rputhje modele, gjenerikĂ«t, cikli 'for' i bazuar nĂ« iteracione, makrotĂ« AST, GADT (Tipat e DhĂ«na Algjebrike tĂ« Gjeneruar), tipat abstraktĂ«, strukturat anonime, pĂ«rkufizimet e thjeshta tĂ« masivave, shprehjet pĂ«r kompilin e kushtit, bashkĂ«ngjitjen e metadata nĂ« fusha, klasa dhe shprehje, interpolimi i vargjeve (‘Emri im Ă«shtĂ« $name’), parametrat e tipeve (‘new Mainâ€čStringâ€ș(‘foo’)’) dhe shumĂ« mĂ« tepĂ«r.

class Test {
funkcioni statik kryesor() {
var people = [
«Elizabeth» => «Programim»,
«Joel» => «Dizajn»
];

for (name in people.keys()) {
var job = people[name];
trace(‘$emri bĂ«n $punĂ« pĂ«r njĂ« jetĂ«!’);
}
}
}

Ndryshimet kryesore novitete versioni 4.0:

  • Sintaksa e re pĂ«r specifikimin e tipit tĂ« funksioneve '(name:String, age:Int)->Bool' ose '(String, Int)->Bool' nĂ« vend tĂ« 'String->Int->Bool'.
  • Sintaksa e funksioneve me shkallĂ« '(a, b) -> a + b' nĂ« vend tĂ« 'function(a, b) return a + b'.
  • Mbrojtja nga problemet e lidhura me pĂ«rdorimin e vlerave Null (veçori eksperimentale, aktivizohet me dĂ«shirĂ« pĂ«r fusha tĂ« caktuara, klasa ose paketa).
  • FjalĂ«kalimi 'final' pĂ«r fushat e klasave dhe variablat lokalĂ«, qĂ« janĂ« tĂ« pandryshueshĂ«m. 'final' mund tĂ« pĂ«rdoret gjithashtu pĂ«r tĂ« pĂ«rcaktuar funksionet pĂ«r tĂ« ndaluar mbi-shkrimin e tyre gjatĂ« trashĂ«gimisĂ« dhe pĂ«r klasat/interfetat qĂ« nuk mund tĂ« trashĂ«gohen.
  • MbĂ«shtetje standardit Unicode pĂ«r tipin bazĂ« 'String' nĂ« tĂ« gjitha qĂ«llimet e kompikimit pĂ«rveç Neko.
  • TĂ« rinovuar nga zero interpretuesi i integruar, i cili tani jepet me emrin Eval. FalĂ« interpretuesit tĂ« ri, skenaret dhe makrotĂ« ekzekutohen shumĂ« mĂ« shpejt. MbĂ«shtetet moda e ndihmĂ«s interaktive.
  • Sistemi i ri i synimit pĂ«r kompaktimin (target) Hashlink — njĂ« runtime me performancĂ« tĂ« lartĂ«, e cila Ă«shtĂ« zhvilluar veçanĂ«risht pĂ«r Haxe, mbĂ«shtet kompaktimin nĂ« bajt-kod pĂ«r JIT ose C, ka integrim tĂ« thjeshtĂ« me C, si dhe akses nĂ« tipe numerike tĂ« ulĂ«ta dhe tregues.
  • Sistemi i ri i synimit JVM — lejon qĂ« tĂ« gjenerohet bajt-kod jvm, duke kaluar fazĂ«n e kompaktimit tĂ« kodit Java duke shtuar flagun '-D jvm' gjatĂ« synimit nĂ« Java.
  • MundĂ«sia e zhvillimit inline nĂ« vendin e thirrjes sĂ« funksioneve ose konstruktorĂ«ve, madje edhe nĂ«se ato nuk janĂ« shpallur si tĂ« tilla.
  • MundĂ«sia e pĂ«rfshirjes zgjerimeve statike nĂ« shpalljen e tipit (p.sh. 'enum') me '@:using(path.ToExtension)'.
  • Tipat abstraktĂ« tani mbĂ«shtesin versionin 'set' tĂ« operatorit '@:op(a.b)' pĂ«r tĂ« mbivendosur shprehjet 'obj.foo = bar'.
  • Sintaksa e ciklit 'for' tani mbĂ«shtet iterimin 'çelĂ«s-vlerĂ«': 'for (key => value in collection) {}'.
  • MbĂ«shtetje pĂ«r pĂ«rdorimin e markimit sё ngjashĂ«m me xml nĂ« shprehjet: 'var a = â€čhi/â€ș;'. Deri tani kjo mundĂ«si Ă«shtĂ« e disponueshme vetĂ«m pĂ«r pĂ«rpunimin nga makrotĂ« dhe Ă«shtĂ« nĂ« fazĂ« dizajni.
  • Sintaksa pĂ«r fushat opsionale nĂ« 'shĂ«nimin e plotĂ«' tĂ« tipeve tĂ« strukturave anonime: '{ var ?f:Int; }' (alternativĂ« 'e shkurtĂ«r' '{ ?f:Int }').
  • Vlerat e enumerimeve tani mund tĂ« jenĂ« vlera qĂ« janĂ« nĂ« mĂ«nyrĂ« tĂ« paracaktuar pĂ«r argumentet e funksioneve: 'function fooâ€čTâ€ș(option:Optionâ€čTâ€ș = None)'.
  • Sintaksa 'enum abstract Name(BasicType) {}' nuk kĂ«rkon mĂ« prefiksin '@:'.
  • NumĂ«rimi automatik pĂ«r enumerimet abstrakte:

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

  • FjalĂ«kalimi 'extern' nuk kĂ«rkon mĂ« pĂ«rdorimin e prefiksit '@:'.
  • Eliminimi i mundĂ«sisĂ« 'implements Dynamic' pĂ«r tĂ« arritur nĂ« fushat e klasĂ«s pĂ«rmes vargjeve. E disponueshme pĂ«r klasat extern ose pĂ«rmes zbatimit tĂ« tipit abstrakt.
  • E shtuar sintaksa 'A & B' pĂ«r kryqĂ«zimin e tipeve, e cila aktualisht aplikohet vetĂ«m pĂ«r strukturat anonime dhe kufizimet e parametrit tĂ« tipit. Sintaksa e vjetĂ«r e kufizimeve Ă«shtĂ« eliminuar.
  • Krijimi i instancave tĂ« zbrazĂ«ta 'Map' Ă«shtĂ« i disponueshĂ«m pĂ«rmes sintaksĂ«s 'var map:Mapâ€čInt, Stringâ€ș = [];', nĂ« mĂ«nyrĂ« tĂ« ngjashme me masivin.
  • Struktura e dhĂ«nave 'haxe.ds.ReadOnlyArray' Ă«shtĂ« shtuar.
  • Metadatet tani mund tĂ« kenĂ« hapĂ«sira emrash ('@:prefix.name function() {...}'). Po ashtu edhe pĂ«r pĂ«rkufizimet: '#if (some.flag ... #end'.
  • Protocol i ri shĂ«rbimesh pĂ«r IDE-tĂ« qĂ« pĂ«rdoren nĂ« shtesĂ«n pĂ«r VSCode.
  • PĂ«rditĂ«sime tĂ« pĂ«rkufizimeve tĂ« jashtme (extern) pĂ«r Web APIs dhe janĂ« shtuar ato qĂ« mungonin.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster