የኒም ፕሮግራሚንግ ቋንቋ መለቀቅ 1.6.0

ከአንድ አመት እድገት በኋላ የስርዓት ፕሮግራሚንግ ቋንቋ ኒም 1.6 ታትሟል፣ እሱም የማይንቀሳቀስ ትየባ የሚጠቀም እና በፓስካል፣ C++፣ Python እና Lisp ላይ በአይን ተፈጠረ። የኒም ምንጭ ኮድ በ C፣ C++ ወይም JavaScript ውክልና ተሰብስቧል። በመቀጠልም የተገኘውን የC/C++ ኮድ በማናቸውም የሚገኙ ማቀናበሪያ (clang, gcc, icc, Visual C ++) በመጠቀም ወደተፈፃሚ ፋይል ይዘጋጃል, ይህም የሩጫ ወጪዎችን ግምት ውስጥ ካላስገባ, ከ C ጋር ቅርበት ያለው አፈፃፀም እንድታሳዩ ያስችልዎታል. ቆሻሻ ሰብሳቢው. ከፓይዘን ጋር በሚመሳሰል መልኩ ኒም መግባቱን እንደ የማገጃ ገደቦች ይጠቀማል። የሜታ ፐሮግራም መሳሪያዎች እና ጎራ-ተኮር ቋንቋዎችን (ዲ.ኤስ.ኤል.ዎች) የመፍጠር ችሎታዎች ይደገፋሉ። የፕሮጀክት ኮድ የቀረበው በ MIT ፍቃድ ነው።

በአዲሱ ልቀት ላይ ጉልህ ለውጦች የሚከተሉትን ያካትታሉ:

  • የሚደጋገሙ [T] ክፍልን ከአይነት ትግበራ ጋር ለድግግሞሾች ታክሏል። አብነት ድምር[T](ሀ፡ ሊተረጎም[T]))፡ T = var ውጤት፡ ቲ ለ ai በ ሀ፡ ውጤት += ai result assert sum(iota(3)) == 0 + 1 + 2 # ወይም 'iota( 3) ድምር
  • ለ".effectsOf" ማብራሪያዎች ለተፅዕኖዎች ምርጫ ተጨምሯል ። ሲገለጽ(nimHasEffectsOf): {.experimental: "strictEffects".} ሌላ፡ {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp. }
  • አዲስ የማስመጣት አገባብ “ኢምፖርት foo {.all.}” ቀርቧል፣ ይህም ይፋዊ ብቻ ሳይሆን የግል ምልክቶችንም እንዲያስገቡ የሚያስችል ነው። የነገሮችን የግል መስኮች ለመድረስ std/importutils ሞጁል እና የግል መዳረሻ ኤፒአይ ታክለዋል። ከስርዓት {.all.} እንደ ሲስተም2 አስመጪ nil echo system2.ይህ ስርአት አስመጪ os {.all.} እንግዳ ታርጌት አስተጋባ።
  • ተለዋዋጭ መስኮችን ለመተግበር የሚያገለግል የነጥብ ኦፕሬተሮች ተጨማሪ የሙከራ ድጋፍ። አስመጣ std/json አብነት '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] let j = %*{“a1”: {“a2”: 10}} አስረግጦ j.?a1.?a2.getInt == 10
  • ተጨማሪ መመዘኛዎች በአግድ ግቤቶች ውስጥ ሊገለጹ ይችላሉ. አብነት fn (a = 1, b = 2, body1, body2) = አስወግድ fn (a = 1): bar1 አድርግ: bar2
  • በተጠቃሚ-የተገለጹ ቀጥተኛ ቃላት ድጋፍ ተተግብሯል (ለምሳሌ "-128'bignum")። func `'ትልቅ`*(ቁጥር፡ cstring): JsBigInt {.importjs: "BigInt(#)"።} አስረግጦ 0xffffffffffffff'big == (1'ትልቅ shl 64'ትልቅ) - 1'ትልቅ
  • አቀናባሪው የ "--eval:cmd" ትዕዛዙን በቀጥታ የኒም ትዕዛዞችን ከትዕዛዝ መስመሩ ለማስኬድ ይሰራል፣ ለምሳሌ 'nim -eval:'echo 1''።
  • ለኒምስክሪፕት ጀርባ የእራስዎን ቅጥያ ለመፍጠር ድጋፍ ሰጥቷል።
  • ከስህተቱ ጋር የተያያዘውን አውድ ለማሳየት የስህተት መልዕክቶች በጣም ተዘርግተዋል። የተተገበሩ ብጁ የማጠናከሪያ ማስጠንቀቂያዎች።
  • የ"-gc:arc" እና "--gc:orc" የቆሻሻ አሰባሳቢዎች አፈጻጸም በከፍተኛ ሁኔታ ተሻሽሏል።
  • ኢንቲጀርን እና ተንሳፋፊ ነጥብ ቁጥሮችን ለመፈተሽ ሁሉም የኋላ ደጋፊዎች የኮዱን ትክክለኛነት እና አፈጻጸም አሻሽለዋል።
  • የተሻሻለ የJS፣ VM እና nimscript backends ከሞጁሎች ጋር ከዚህ ቀደም ከC backend ጋር ብቻ ይሠሩ ነበር (ለምሳሌ፣ std/prelude ሞጁል)። የ stdlib ሞጁሎችን ከ C፣ JS እና VM ደጋፊዎች ጋር መሞከር ተመስርቷል።
  • ለ Apple Silicon/M1 ቺፕ፣ 32-ቢት RISC-V፣ armv8l እና CROSSOS ስርዓቶች ድጋፍ ታክሏል።
  • የታከሉ ሞጁሎች std/jsbigints፣ std/tempfiles እና std/sysrand። በሲስተም፣ በሒሳብ፣ በዘፈቀደ፣ json፣ jsonutils፣ os፣ typetraits፣ wrapnils፣ዝርዝሮች እና ሃሽ ሞጁሎች ላይ ጉልህ ማሻሻያዎች ተደርገዋል።

ምንጭ: opennet.ru

አስተያየት ያክሉ