Kutulutsidwa kwa chilankhulo cha pulogalamu ya Nim 1.6.0

Pambuyo pa chaka cha chitukuko, kutulutsidwa kwa chinenero cha pulogalamu ya Nim 1.6 chinasindikizidwa, chomwe chimagwiritsa ntchito kulemba mokhazikika ndipo chinapangidwa ndi diso la Pascal, C ++, Python ndi Lisp. Khodi ya Nim imapangidwa kukhala C, C++, kapena kuyimira JavaScript. Pambuyo pake, kachidindo ka C / C ++ kamene kamapangidwira kumapangidwa kukhala fayilo yotheka kugwiritsa ntchito compiler iliyonse yomwe ilipo (clang, gcc, icc, Visual C ++), yomwe imakulolani kuti mukwaniritse ntchito pafupi ndi C, ngati simukuganizira mtengo wothamanga. wotolera zinyalala. Mofanana ndi Python, Nim amagwiritsa ntchito indentation ngati block delimiters. Zida zopangira ma metaprogramming ndi kuthekera kopanga zilankhulo zenizeni (DSLs) zimathandizidwa. Khodi ya polojekiti imaperekedwa pansi pa layisensi ya MIT.

Zosintha zowoneka bwino pakumasulidwa kwatsopano zikuphatikiza:

  • Onjezani kalasi ya iterable[T] yokhala ndi mtundu wa kukhazikitsa kwa obwereza. template sum[T](a: iterable[T]): T = var chotsatira: T kwa ai mu: chotsatira += ai zotsatira assert sum (iota(3)) == 0 + 1 + 2 # kapena 'iota( 3) .
  • Onjezani zoyeserera za ".effectsOf" mawu ofotokozera pazotsatira zomwe mwasankha. when defined(nimHasEffectsOf): {.experimental: "strictEffects".} china: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp. }
  • Mawu atsopano olowera "import foo {.all.}" aperekedwa, kukulolani kuti mulowetse osati zapagulu, komanso zizindikilo zachinsinsi. Kuti mupeze magawo achinsinsi azinthu, gawo la std/importutils ndi PrivateAccess API aonjezedwa. kuchokera ku dongosolo {.all.} monga system2 import nil echo system2.ThisIsSystem import os {.all.} echo weirdTarget
  • Thandizo lowonjezera loyesera kwa ogwiritsa ntchito madontho, lomwe lingagwiritsidwe ntchito kukhazikitsa magawo amphamvu. import std/json template '.?'(a: JsonNode, b: untypeed{ident}): JsonNode = a[astToStr(b)] let j = %*{β€œa1”: {β€œa2”: 10}} tsimikizirani j.?a1.?a2.getInt == 10
  • Zina zowonjezera zitha kufotokozedwa muzokambirana za block. template fn(a = 1, b = 2, body1, body2) = kutaya fn(a = 1): bar1 chitani: bar2
  • Thandizo la zilembo zofotokozedwa ndi ogwiritsa ntchito lakhazikitsidwa (mwachitsanzo, "-128'bignum'"). func `'big`*(nambala: cstring): JsBigInt {.importjs: "BigInt(#)".} amanena 0xffffffffffffff'big == (1'big shl 64'big) - 1'big
  • Wopangayo amagwiritsa ntchito lamulo la "-eval:cmd" kuti ayendetse mwachindunji malamulo a Nim kuchokera pamzere wolamula, mwachitsanzo 'nim -eval:"echo 1β€³'.
  • Anapereka chithandizo chopangira zowonjezera zanu za nimscript backend.
  • Mauthenga olakwika awonjezedwa kwambiri kuti awonetse nkhani yokhudzana ndi cholakwikacho. Kukhazikitsa machenjezo a compiler.
  • Kuchita bwino kwambiri kwa "--gc:arc" ndi "--gc:orc" otolera zinyalala.
  • Ma backends onse athandizira kulondola komanso magwiridwe antchito a ma code pakuphatikiza ndi manambala oyandama.
  • Kulumikizana bwino kwa JS, VM ndi nimscript backends ndi ma modules omwe kale ankagwira ntchito ndi C backend (mwachitsanzo, std / prelude module). Kuyesedwa kwa ma module a stdlib okhala ndi C, JS ndi VM backends kwakhazikitsidwa.
  • Thandizo lowonjezera la Apple Silicon/M1 chip, 32-bit RISC-V, armv8l ndi CROSSOS.
  • Ma module owonjezera std/jsbigints, std/temfiles ndi std/sysrand. Kusintha kwakukulu kwapangidwa ku dongosolo, masamu, mwachisawawa, json, jsonutils, os, typetraits, wrapnils, lists ndi hashes modules.

Source: opennet.ru

Kuwonjezera ndemanga