Útgáfa af Nim 1.6.0 forritunarmálinu

Eftir eins árs þróun var gefin út útgáfa kerfisforritunarmálsins Nim 1.6 sem notar truflanir vélritun og var búið til með auga á Pascal, C++, Python og Lisp. Nim frumkóði er settur saman í C, C++ eða JavaScript framsetningu. Í kjölfarið er C/C++ kóðann sem myndast settur saman í keyrsluskrá með því að nota hvaða tiltæka þýðanda (clang, gcc, icc, Visual C++), sem gerir þér kleift að ná frammistöðu nálægt C, ef þú tekur ekki tillit til kostnaðar við að keyra sorphirðu. Svipað og Python notar Nim inndrátt sem blokkaskilgreinar. Metaforritunarverkfæri og getu til að búa til lénssértæk tungumál (DSL) eru studd. Verkefniskóðinn er veittur undir MIT leyfinu.

Áberandi breytingar í nýju útgáfunni eru:

  • Bætti við endurteknum [T] flokki með gerð útfærslu fyrir endurtekna. sniðmát summa[T](a: endurtekið[T]): T = var niðurstaða: T fyrir ai í a: niðurstöðu += ai niðurstaða fullyrða sum(iota(3)) == 0 + 1 + 2 # eða 'iota( 3).sum'
  • Bætti við tilraunastuðningi við „.effectsOf“ skýringar til að beita áhrifum sértækt. þegar skilgreint er(nimHasEffectsOf): {.experimental: "strictEffects".} annað: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp. }
  • Ný innflutningssetningafræði „import foo {.all.}“ hefur verið lögð til, sem gerir þér kleift að flytja inn ekki aðeins opinber, heldur einnig einkatákn. Til að fá aðgang að einkareitum hluta hefur std/importutils einingunni og privateAccess API verið bætt við. frá kerfi {.all.} sem kerfi2 flytur inn ekkert echo system2.ThisIsSystem innflutningur os {.all.} echo weirdTarget
  • Bætti við tilraunastuðningi fyrir punktastjórnendur, sem hægt er að nota til að útfæra kraftmikla reiti. flytja inn std/json sniðmát '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] láttu j = %*{“a1”: {“a2”: 10}} fullyrða j.?a1.?a2.getInt == 10
  • Hægt er að tilgreina fleiri færibreytur í blokkarrökum. sniðmát fn(a = 1, b = 2, meginmál1, meginmál2) = fleygja fn(a = 1): strik1 gera: stika2
  • Stuðningur við notendaskilgreinda bókstafi hefur verið innleiddur (til dæmis "-128'bignum'"). func `'big`*(num: cstring): JsBigInt {.importjs: "BigInt(#)".} fullyrða 0xffffffffffffff'big == (1'stór shl 64'stór) - 1'stór
  • Þjálfarinn útfærir „—eval:cmd“ skipunina til að keyra Nim skipanir beint frá skipanalínunni, til dæmis „nim —eval:“ echo 1″‘.
  • Veitt stuðning við að búa til þínar eigin viðbætur fyrir nimscript bakendann.
  • Villuskilaboð hafa verið stækkuð til muna til að sýna samhengið sem tengist villunni. Innleitt sérsniðnar þýðandaviðvaranir.
  • Verulega bætt afköst "--gc:arc" og "--gc:orc" sorphirðu.
  • Allir bakendarnir hafa bætt nákvæmni og frammistöðu kóða til að flokka heiltölur og flottölur.
  • Bætt samhæfni JS, VM og nimscript bakenda með einingum sem áður virkuðu aðeins með C backend (til dæmis std/prelude einingunni). Prófun á stdlib einingum með C, JS og VM bakenda hefur verið komið á fót.
  • Bætt við stuðningi fyrir Apple Silicon/M1 flís, 32 bita RISC-V, armv8l og CROSSOS kerfi.
  • Bætt við einingum std/jsbigints, std/tempfiles og std/sysrand. Verulegar endurbætur hafa verið gerðar á kerfinu, stærðfræði, slembivali, json, jsonutils, os, tegundaeiningum, wrapnils, listum og kjötkássaeiningum.

Heimild: opennet.ru

Bæta við athugasemd