نم 1.6.0 پروگرامنگ زبان کی ریلیز

ایک سال کی ترقی کے بعد، سسٹم پروگرامنگ لینگویج Nim 1.6 کی ریلیز شائع ہوئی، جو کہ جامد ٹائپنگ کا استعمال کرتی ہے اور اسے Pascal، C++، Python اور Lisp پر نظر رکھ کر بنایا گیا تھا۔ نم سورس کوڈ کو C، C++، یا JavaScript کی نمائندگی میں مرتب کیا گیا ہے۔ اس کے بعد، نتیجے میں آنے والا C/C++ کوڈ کسی بھی دستیاب کمپائلر (کلنگ، جی سی سی، آئی سی سی، بصری سی++) کا استعمال کرتے ہوئے ایک قابل عمل فائل میں مرتب کیا جاتا ہے، جو آپ کو C کے قریب کارکردگی حاصل کرنے کی اجازت دیتا ہے، اگر آپ چلانے کے اخراجات کو مدنظر نہیں رکھتے ہیں۔ کچرا جمع کرنے والا. Python کی طرح، Nim انڈینٹیشن کو بلاک الگ کرنے والوں کے طور پر استعمال کرتا ہے۔ میٹا پروگرامنگ ٹولز اور ڈومین مخصوص زبانیں (DSLs) بنانے کی صلاحیتیں معاون ہیں۔ پروجیکٹ کوڈ MIT لائسنس کے تحت فراہم کیا گیا ہے۔

نئی ریلیز میں قابل ذکر تبدیلیاں شامل ہیں:

  • تکرار کرنے والوں کے لئے ایک قسم کے نفاذ کے ساتھ دوبارہ قابل [T] کلاس شامل کی گئی۔ ٹیمپلیٹ sum[T](a: تکراری[T]): T = var نتیجہ: T برائے ai in a: نتیجہ += ai نتیجہ اسسٹ sum(iota(3)) == 0 + 1 + 2 # یا 'iota( 3) رقم
  • منتخب اثرات کو لاگو کرنے کے لیے ".effectOf" تشریحات کے لیے تجرباتی تعاون شامل کیا گیا۔ جب وضاحت کی جائے (nimHasEffectsOf): {.تجرباتی: "سخت اثرات"۔} else: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {. effectsOf: cmp۔ }
  • ایک نیا درآمدی ترکیب "import foo {.all.}" تجویز کیا گیا ہے، جو آپ کو نہ صرف عوامی بلکہ نجی علامتوں کو بھی درآمد کرنے کی اجازت دیتا ہے۔ آبجیکٹ کے نجی شعبوں تک رسائی کے لیے، std/importutils ماڈیول اور پرائیویٹ ایکسیس 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 اور نم اسکرپٹ بیک اینڈس کی بہتر مطابقت جو پہلے صرف C بیک اینڈ کے ساتھ کام کرتی تھی (مثال کے طور پر، std/prelude ماڈیول)۔ سی، جے ایس اور وی ایم بیک اینڈ کے ساتھ stdlib ماڈیولز کی جانچ قائم کی گئی ہے۔
  • Apple Silicon/M1 چپ، 32-bit RISC-V، armv8l اور CROSSOS سسٹمز کے لیے شامل کردہ تعاون۔
  • شامل کیے گئے ماڈیولز std/jsbigints، std/tempfiles اور std/sysrand۔ سسٹم، ریاضی، بے ترتیب، json، jsonutils، os، typetraits، wrapnils، lists اور hashes ماڈیولز میں نمایاں بہتری کی گئی ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں