Rhyddhau'r iaith raglennu Haxe 4.0

Ar gael rhyddhau pecyn cymorth Haxe 4.0, sy'n cynnwys yr iaith raglennu aml-paradigm lefel uchel o'r un enw gyda theipio cryf, traws-grynhoydd a llyfrgell safonol o swyddogaethau. Mae'r prosiect yn cefnogi cyfieithu i C++, HashLink/C, JavaScript, C#, Java, PHP, Python a Lua, yn ogystal Γ’ llunio cod beit JVM, HashLink/JIT, Flash a Neko, gyda mynediad i alluoedd brodorol pob platfform targed. Cod casglwr dosbarthu gan dan y drwydded GPLv2, a llyfrgell safonol a pheiriant rhithwir a ddatblygwyd ar gyfer Haxe neko dan drwydded MIT.

Iaith yw mynegiant-ganolog gyda theipio cryf. Cefnogir cysyniadau rhaglennu sy'n canolbwyntio ar wrthrychau, generig a swyddogaethol.
Mae cystrawen Haxe yn agos i ECMAScript a yn ehangu ei nodweddion megis teipio statig, casgliad awtodeip, paru patrymau, generig, yn seiliedig ar iterator ar gyfer dolenni, macros AST, GADT (Mathau Data Algebraidd Cyffredinol), mathau haniaethol, strwythurau dienw, diffiniadau araeau symlach, mynegiadau crynhoi amodol, atodi metadata i feysydd , dosbarthiadau ac ymadroddion, rhyngosodiad llinynnol ('Fy enw yw $name'), paramedrau teipio ("Prif Llinyn newydd">('foo')"), a llawer mwy.

prawf dosbarth {
prif ffwythiant statig () {
var pobl = [
"Elizabeth" => "Rhaglenu",
"Joel" => "Dylunio"
];

ar gyfer (enw yn people.keys()) {
var swydd = pobl[enw];
trace('Mae $name yn gwneud $job am fywoliaeth!');
}
}
}

Y prif arloesiadau fersiwn 4.0:

  • Cystrawen newydd ar gyfer nodi math swyddogaeth "(enw: Llinyn, oedran: Int) -> Bool" neu "(Llinynnol, Int) -> Bool" yn lle "Llinynnol-> Int-> Bool".
  • Cystrawen swyddogaeth saeth yw "(a, b) -> a + b" yn lle "swyddogaeth (a, b) dychwelyd a + b".
  • Amddiffyn rhag problemau sy'n gysylltiedig Γ’ defnyddio gwerthoedd Null (nodwedd arbrofol, wedi'i galluogi'n ddewisol ar gyfer rhai meysydd, dosbarthiadau neu becynnau).
  • Mae'r allweddair "terfynol" ar gyfer meysydd dosbarth a newidynnau lleol sy'n ddigyfnewid. gellir defnyddio "terfynol" hefyd i ddiffinio swyddogaethau i'w hatal rhag cael eu diystyru gan etifeddiaeth ac ar gyfer dosbarthiadau/rhyngwynebau na ellir eu hetifeddu.
  • Cymorth Safon Unicode ar gyfer y math sylfaenol "String" ar yr holl dargedau casglu ac eithrio Neko.
  • Dehonglydd adeiledig wedi'i ailysgrifennu o'r dechrau, sydd bellach yn dod o dan yr enw Gwerthuso. Diolch i'r dehonglydd newydd, mae sgriptiau a macros yn rhedeg yn llawer cyflymach. Cefnogir modd dadfygio rhyngweithiol.
  • System darged newydd i'w llunio (targed) Hashlink - amser rhedeg perfformiad uchel a ddyluniwyd yn benodol ar gyfer Haxe, sy'n cefnogi casglu cod beit ar gyfer JIT neu C, sy'n integreiddio'n hawdd Γ’ C, yn ogystal Γ’ mynediad at fathau ac awgrymiadau rhifol lefel isel.
  • Targed JVM newydd - yn eich galluogi i gynhyrchu cod byte jvm trwy hepgor y cam llunio cod Java trwy ychwanegu'r faner "-D jvm" wrth dargedu yn Java.
  • Y gallu i fewn-leoli ar y pwynt galw swyddogaethau neu adeiladwyr, hyd yn oed os na chΓ’nt eu datgan felly.
  • Posibilrwydd cynhwysiant estyniadau statig wrth ddatgan math (fel "enum") gan ddefnyddio "@:using(path.ToExtension)".
  • Mae mathau haniaethol bellach yn cefnogi fersiwn "set" o'r gweithredwr "@:op(ab)" i ail-lwytho ymadroddion "obj.foo = bar".
  • Mae cystrawen dolen "for" bellach yn cefnogi iteriad gwerth bysell: "for (key => gwerth yn y casgliad) {}".
  • Cefnogaeth ar gyfer defnyddio marcio tebyg i xml mewn ymadroddion: β€œvar a = β€Ήhi/β€Ί;”. Am y tro, dim ond ar gyfer dosrannu gyda macros y mae'r nodwedd hon ar gael ac mae yn y cam dylunio.
  • Y gystrawen ar gyfer meysydd dewisol yn nodiant β€œllawn” mathau o strwythurau dienw yw: β€œ{ var ?f:Int; }" (dewis arall i'r byr "{ ?f:Int }").
  • Gall gwerthoedd Enum nawr fod yn werthoedd rhagosodedig ar gyfer dadleuon swyddogaeth: "function fooβ€ΉTβ€Ί(option:Optionβ€ΉT"> = Dim)".
  • Nid yw'r gystrawen "enum abstract Name(BasicType) {}" bellach angen y rhagddodiad "@:" yn "enum".
  • Rhifo awtomatig ar gyfer cyfrifiadau haniaethol:

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

  • Nid yw'r allweddair "allanol" bellach yn gofyn am ddefnyddio'r rhagddodiad "@:".
  • Wedi dileu'r opsiwn "offer Dynamic" i gael mynediad i feysydd dosbarth trwy linynnau. Ar gael ar gyfer dosbarthiadau allanol neu drwy weithrediad yn Γ΄l math haniaethol.
  • Ychwanegwyd cystrawen "A & B" ar gyfer croestoriad math, sydd ar hyn o bryd ond yn berthnasol i strwythurau dienw a chyfyngiadau paramedr math. Mae'r hen gystrawen gyfyngiad wedi'i ddileu.
  • Mae creu enghreifftiau gwag "Map" ar gael trwy'r gystrawen "var map:Mapβ€ΉInt, String> = [];" tebyg i arae.
  • Ychwanegwyd strwythur data "haxe.ds.ReadOnlyArray".
  • Bellach gall metadata gael gofodau enwau (β€œ@:prefix.name function() {…}”). Yn yr un modd gyda diffiniadau: β€œ#if (some.flag ... #end".
  • Protocol gwasanaeth newydd ar gyfer DRhA a ddefnyddir yn ategyn ar gyfer VSCcode.
  • Diffiniadau allanol wedi'u diweddaru (allanol) ar gyfer API Gwe ac ychwanegu rhai coll.

Ffynhonnell: opennet.ru

Ychwanegu sylw