Sii daynta luqadda barnaamijka Nim 1.6.0

Hal sano oo horumar ah ka dib, waxaa la daabacay siideynta luqadda barnaamijka Nim 1.6, kaas oo adeegsada teeb-celinta static waxaana lagu abuuray isha Pascal, C++, Python iyo Lisp. Koodhka isha Nim waxa lagu soo ururiyey C, C++ ama matalaad JavaScript. Ka dib, natiijada C/C++ code waxaa lagu soo ururiyay fayl la fulin karo iyadoo la adeegsanayo isku-dubarid kasta oo la heli karo (clang, gcc, icc, Visual C ++), kaas oo kuu ogolaanaya inaad ku guulaysato waxqabadka ku dhow C, haddii aadan xisaabta ku dareynin kharashka socodka qashin ururiyaha. Si la mid ah Python, Nim waxay u isticmaashaa soo gelista sidii xannibaadayaal. Aaladaha metaprogramming-ka iyo awoodaha lagu abuurayo luqadaha gaarka ah ee domain (DSLs) waa la taageerayaa. Xeerka mashruuca waxa lagu bixiyaa shatiga MIT.

Isbeddellada muuqda ee ku yimid sii deynta cusub waxaa ka mid ah:

  • Waxaa lagu soo daray fasalka la sheekayn karo oo leh nooc hirgelin oo loogu talagalay ku celceliyaasha. template wadarta [T] (a: la qiyaasi karo[T]): T = var natiijo: T for ai in a: natiijo += ai natiijada wadarta guud (iota (3)) == 0 + 1 + 2 # ama 'iota( 3) guud '
  • Taageero tijaabo ah oo lagu daray faallooyinka ".effectsOf" ee xulashada saamaynta marka la qeexo(nimHasEffectsOf): {.tijaabo: "strictEffects".} kale: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc (a, b: T): int) {.effectsOf: cmp. }
  • Soo dejinta cusub "import foo {.all.}" ayaa la soo jeediyay, taas oo kuu ogolaanaysa inaad soo dejiso ma aha oo kaliya dadweynaha, laakiin sidoo kale calaamadaha gaarka ah. Si loo galo meelaha gaarka ah ee walxaha, std/importutils moduleka iyo API-ga gaarka ah ayaa lagu daray. ka system {.all.} sida system2 soo dejinta nil echo system2. ThisIsSystem soo dejinta os {.all.} echo weirdTarget
  • Taageero tijaabo ah oo lagu daray hawlwadeenada dhibcaha, taas oo loo isticmaali karo in lagu hirgeliyo goobo firfircoon. soo dejinta std/json template '.?'(a: JsonNode, b: aan la qorin{ident}): JsonNode = a[astToStr(b)] let j = %*{β€œa1”: {β€œa2”: 10}} sheeg j.?a1.?a2.getInt == 10
  • Meelo dheeraad ah ayaa lagu qeexi karaa doodaha xannibaadda. template fn (a = 1, b = 2, body1, body2) = iska tuur fn (a = 1): bar1 samee: bar2
  • Taageerada ereyada ku qeexan isticmaale waa la hirgaliyay (tusaale, "-128'bignum"). func `'big`*(nambar: cstring): JsBigInt {.importjs: "BigInt(#)" .
  • Soo-sameeyaha waxa uu fuliyaa amarka β€œβ€”eval:cmd” si uu si toos ah ugu socodsiiyo amarrada Nim ee khadka taliska, tusaale ahaan 'nim β€”eval:"echo 1β€³".
  • Lagu siiyay taageero abuurista kordhintaada dhabarka dambe ee nimscript.
  • Farriimaha khaladka ah ayaa si weyn loo ballaariyay si loo muujiyo macnaha guud ee la xiriira qaladka. Dhaqangelinta digniinaha isku-dubaridaha caadada ah.
  • Waxqabadka si weyn loo hagaajiyay ee "--gc: arc" iyo "--gc:orc" qashinka aruuriya
  • Dhammaan backends ayaa hagaajiyay saxnaanta iyo waxqabadka koodka ee kala saarida isugeynta iyo nambarada dhibcaha sabbaynaya.
  • Waafaqsanaanta la wanaajiyey ee JS, VM iyo nimscript-ka dhabarka dambe ee cutubyo hore ula shaqayn jiray kaliya C backend (tusaale, std/module horudhac). Tijaabinta modules stdlib oo leh C, JS iyo VM dhabarka dambe ayaa la sameeyay.
  • Taageero lagu daray Apple Silicon/M1 chip, 32-bit RISC-V, armv8l iyo nidaamyada CROSSOS.
  • Qaybaha lagu daray std/jsbigints, std/tempfiles iyo std/sysrand. Horumar la taaban karo ayaa lagu sameeyay nidaamka, xisaabta, random, json, jsonutils, os, nooca nooca, duubabka, liisaska iyo qaybaha hashes.

Source: opennet.ru

Add a comment