د نیم پروګرامینګ ژبه خپرول 1.6.0

د یو کال پراختیا وروسته، د سیسټم پروګرام کولو ژبه Nim 1.6 خپره شوه، کوم چې د جامد ټایپینګ کاروي او د Pascal، C++، Python او Lisp په سترګو سره رامینځته شوی. د نیم منبع کوډ په C، C++، یا جاواسکریپټ نمایش کې تالیف شوی. بیا وروسته، نتیجه اخیستونکی C/C++ کوډ د هر موجود کمپیلر (کلینګ، جی سی سی، آئی سی سی، ویژول C++) په کارولو سره د اجرا وړ فایل کې تالیف شوی، کوم چې تاسو ته اجازه درکوي چې د C سره نږدې فعالیت ترلاسه کړئ، که تاسو د چلولو لګښتونه په پام کې ونلرئ. د کثافاتو راټولونکی Python ته ورته، Nim د بلاک ډیلیمیټر په توګه انډیټینشن کاروي. د ډومین ځانګړي ژبې (DSLs) رامینځته کولو لپاره د میټاپروګرام کولو وسیلې او وړتیاوې ملاتړ کیږي. د پروژې کوډ د MIT جواز لاندې چمتو شوی.

په نوي ریلیز کې د پام وړ بدلونونه شامل دي:

  • د تکرار وړ [T] ټولګي د تکرار کونکو لپاره د ډول پلي کولو سره اضافه کړل. د کينډۍ مجموعه [T](a: تکرار وړ[T]): T = var پایله: T د ai لپاره په a کې: پایله += ai پایله د اثبات مجموعه(iota(3)) == 0 + 1 + 2 # یا 'iota( ۳) مجموعه
  • د انتخابي اغیزو پلي کولو لپاره د ".effectOf" تشریحاتو لپاره تجربوي ملاتړ اضافه شوی. کله چې تعریف شوی وي (nimHasEffectsOf): {.تجربي: "سخت تاثیرات".} else: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {. effectsOf: cmp. }
  • د وارداتو یو نوی ترکیب "import foo {.all.}" وړاندیز شوی، تاسو ته اجازه درکوي چې نه یوازې عامه، بلکې شخصي سمبولونه هم وارد کړئ. د شیانو شخصي ساحو ته د لاسرسي لپاره، د std/importutils ماډل او د PrivateAccess API اضافه شوي. د سیسټم څخه {.all.} لکه د سیسټم2 واردول nil echo system2.ThisIsSystem واردات os {.all.} echo weirdTarget
  • د ډاټ آپریټرانو لپاره تجربوي ملاتړ اضافه شوی، کوم چې د متحرک ساحو پلي کولو لپاره کارول کیدی شي. وارد std/json کينډۍ '.؟'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] اجازه راکړئ 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″.
  • د نمسکریپټ بیکینډ لپاره ستاسو د خپلو توسیعونو رامینځته کولو لپاره ملاتړ چمتو کړی.
  • د خطا پیغامونه خورا پراخه شوي ترڅو د خطا سره تړلي شرایط وښیې. د دودیز کمپیلر اخطارونه پلي شوي.
  • د "--gc:arc" او "--gc:orc" کثافاتو راټولونکو فعالیت د پام وړ ښه شوی.
  • ټول شالیدونه د انټیجرونو او فلوټینګ پوائنټ شمیرو پارس کولو لپاره د کوډ دقت او فعالیت ښه کړی.
  • د ماډلونو سره د JS، VM او nimscript بیکینډونو ښه مطابقت چې مخکې یې یوازې د C بیکینډ سره کار کاوه (د مثال په توګه، د std/prelude ماډل). د C, JS او VM بیکینډونو سره د stdlib ماډلونو ازموینه رامینځته شوې.
  • د آپیل سیلیکون/M1 چپ، 32-bit RISC-V، armv8l او CROSSOS سیسټمونو لپاره ملاتړ اضافه شوی.
  • ماډلونه std/jsbigints، std/tempfiles او std/sysrand اضافه کړل. په سیسټم کې د پام وړ پرمختګونه شوي، ریاضی، تصادفي، json، jsonutils، os، typetraits، wrapnils، لیستونه او د هش ماډلونه.

سرچینه: opennet.ru

Add a comment