نيم پروگرامنگ ٻولي رليز 1.6.0

ترقيءَ جي هڪ سال کان پوءِ، سسٽم پروگرامنگ ٻولي Nim 1.6 جو رليز ڪيو ويو، جيڪو جامد ٽائپنگ استعمال ڪري ٿو ۽ Pascal، C++، Python ۽ Lisp تي نظر سان ٺاهيو ويو. نِم سورس ڪوڊ مرتب ڪيو ويو آهي سي، سي++، يا جاوا اسڪرپٽ جي نمائندگي ۾. ان کان پوء، نتيجو C/C++ ڪوڊ ڪنهن به دستياب ڪمپلر (clang، gcc، icc، Visual C++) استعمال ڪندي هڪ قابل عمل فائل ۾ مرتب ڪيو ويو آهي، جيڪو توهان کي C جي ويجهو ڪارڪردگي حاصل ڪرڻ جي اجازت ڏئي ٿو، جيڪڏهن توهان هلائڻ جي قيمتن کي حساب ۾ نه ٿا وٺو. ڪچرو گڏ ڪندڙ. Python سان ملندڙ جلندڙ، نِم انڊنٽيشن کي بلاڪ ڊيليٽرز طور استعمال ڪري ٿو. Metaprogramming Tools ۽ صلاحيتون ٺاھڻ لاءِ ڊومين-مخصوص ٻوليون (DSLs) سپورٽ آھن. پروجيڪٽ ڪوڊ MIT لائسنس تحت مهيا ڪيل آهي.

نئين رليز ۾ قابل ذڪر تبديليون شامل آهن:

  • شامل ڪيو ويو itereable[T] ڪلاس هڪ قسم تي عمل درآمد سان گڏ. ٽيمپليٽ sum[T](a: iterable[T]): T = var نتيجو: T لاءِ ai in a: result += ai نتيجو assert sum(iota(3)) == 0 + 1 + 2 # or 'iota( 3) رقم
  • شامل ڪيل تجرباتي سپورٽ ".effectOf" تشريح لاءِ چونڊيل اثر لاڳو ڪرڻ لاءِ. جڏهن وضاحت ڪئي وئي (nimHasEffectsOf): {. تجرباتي: "سخت اثرات".} else: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {. effectsOf: cmp. }
  • هڪ نئون امپورٽ نحو ”import foo {.all.}“ تجويز ڪيو ويو آهي، جيڪو توهان کي نه صرف عوامي پر پرائيويٽ علامتن کي درآمد ڪرڻ جي اجازت ڏئي ٿو. شين جي خانگي شعبن تائين رسائي حاصل ڪرڻ لاءِ، std/importutils module ۽ privateAccess API شامل ڪيا ويا آهن. سسٽم مان {.all.} as system2 import nil echo system2.ThisIsSystem import os {.all.} echo weirdTarget
  • ڊٽ آپريٽرز لاء تجرباتي مدد شامل ڪئي وئي، جيڪو متحرڪ شعبن کي لاڳو ڪرڻ لاء استعمال ڪري سگھجي ٿو. درآمد ڪريو std/json ٽيمپليٽ '.؟'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] let j = %*{“a1”: {“a2”: 10}} assert j.؟a1.?a2.getInt == 10
  • اضافي پيٽرولن کي بلاڪ دليلن ۾ بيان ڪري سگھجي ٿو. ٽيمپليٽ fn(a = 1, b = 2, body1, body2) = رد ڪريو fn(a = 1): bar1 do: bar2
  • استعمال ڪندڙ جي بيان ڪيل لٽريلز لاءِ سپورٽ لاڳو ڪئي وئي آھي (مثال طور، "-128'bignum'"). func `'big`* (num: cstring): JsBigInt {.importjs: "BigInt(#)".} assert 0xffffffffffffffff'big == (1'big shl 64'big) - 1'big
  • ڪمپائلر ڪمانڊ لائن مان نيم ڪمانڊ کي سڌو هلائڻ لاءِ ”-eval:cmd“ ڪمانڊ لاڳو ڪري ٿو، مثال طور ’nim —eval:”echo 1″.
  • nimscript پس منظر لاءِ پنهنجون واڌايون ٺاهڻ لاءِ مدد فراهم ڪئي.
  • غلطي جي پيغامن کي تمام گهڻو وڌايو ويو آهي غلطي سان لاڳاپيل حوالن کي ڏيکارڻ لاء. لاڳو ڪيل ڪسٽم مرتب ڪندڙ ڊيڄاريندڙ.
  • خاص طور تي بهتر ڪارڪردگي "--gc:arc" ۽ "--gc:orc" گندگي گڏ ڪرڻ وارن جي.
  • سڀ پٺاڻن انٽيجرز ۽ فلوٽنگ پوائنٽ نمبرن کي پارس ڪرڻ لاءِ ڪوڊ جي درستگي ۽ ڪارڪردگي کي بهتر بڻايو آهي.
  • JS، VM ۽ nimscript پٺاڻن جي بهتر مطابقت ماڊلز سان جيڪي اڳ ۾ صرف C پس منظر سان ڪم ڪندا هئا (مثال طور، std/prelude module). سي، جي ايس ۽ وي ايم پس منظر سان stdlib ماڊلز جي جاچ قائم ڪئي وئي آهي.
  • ايپل سلڪون/M1 چپ، 32-bit RISC-V، armv8l ۽ CROSSOS سسٽم لاءِ سپورٽ شامل ڪئي وئي.
  • شامل ڪيل ماڊلز std/jsbigints، std/tempfiles ۽ std/sysrand. سسٽم، رياضي، بي ترتيب، json، jsonutils، os، ٽائيپ ٽائيپ، لفافي، لسٽ ۽ هيش ماڊلز ۾ اهم سڌارا ڪيا ويا آهن.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو