Nim 2.2.8 ပရိုဂရမ်းမင်းဘာသာစကား ထုတ်ဝေသည်။

စနစ်ပရိုဂရမ်းမင်းဘာသာစကားတစ်ခုဖြစ်သည့် Nim 2.2.8 ကို ထွက်ရှိလာပြီဖြစ်သည်။ Nim သည် Python မှ လှုံ့ဆော်ပေးသော syntax နှင့် Lisp-like metaprogramming စွမ်းရည်များပါရှိသော statically typed၊ compiled လုပ်ထားသော programming language တစ်ခုဖြစ်သည်။ ၎င်းသည် C၊ C++ နှင့် JavaScript များသို့ compile လုပ်ကာ high-level language များ၏ ဖော်ပြနိုင်စွမ်းဖြင့် C-level စွမ်းဆောင်ရည်ကို ပေးဆောင်သည်။ ပရောဂျက်၏ကုဒ်ကို MIT လိုင်စင်အောက်တွင် လိုင်စင်ချထားသည်။

Nim ရဲ့ features တွေမှာ compile time မှာ AST ပေါ်မှာ အလုပ်လုပ်တဲ့ macro system၊ concepts တွေပါတဲ့ generic programming အတွက် support၊ multiple dispatch၊ multiple strategy (ARC/ORC, refc, mark-and-sweep) အတွက် support ပါတဲ့ deterministic memory management၊ asynchronous programming အတွက် built-in async/await support နဲ့ C/C++/JavaScript နဲ့ အလွယ်တကူ integrate လုပ်နိုင်တဲ့ FFI တို့ ပါဝင်ပါတယ်။ Nim ကို embedded systems ကနေ web အထိ development အတွက် သင့်တော်တဲ့ systems language အဖြစ် position လုပ်ထားပါတယ်။ဆာဗာများစွမ်းဆောင်ရည်၊ မှတ်ဉာဏ်ဘေးကင်းရေးနှင့် ဆော့ဖ်ဝဲရေးသားသူ အဆင်ပြေမှုကို အလေးပေး၍။

ဗားရှင်း ၂.၂.၆ ထွက်ရှိပြီး လေးလအကြာတွင် ဖြန့်ချိသည့် ၂.၂.၈ သည် ထွက်ပေါ်လာခဲ့ပြီး commit ၈၉ ခုနှင့်အတူ bug ပြင်ဆင်မှုများနှင့် တိုးတက်မှုများလည်း ပါဝင်သည်။ ဖြန့်ချိမှု၏ အဓိကတိုးတက်မှုမှာ multithreading ကို တက်ကြွစွာအသုံးပြုသည့်အခါ default memory allocator ၏ တည်ငြိမ်မှုကို သိသိသာသာ မြှင့်တင်ပေးခြင်းဖြစ်သည်။ developer များ၏ အဆိုအရ multithreaded code အတွက် "-d:useMalloc" workaround လိုအပ်မှုသည် အတိတ်ကအရာတစ်ခု ဖြစ်သွားပါပြီ။ အသုံးပြုသူများအား အကြံပြုချက်များ ပေးရန် အားပေးပါသည်။

ပြင်ဆင်ပြီးသော bug များထဲတွင်-

  • ယာယီအရာဝတ္ထုများ အချိန်မတန်မီ ပျက်စီးခြင်းကြောင့် constant table တစ်ခုပေါ်တွင် iterating လုပ်သည့်အခါ SIGBUS;
  • trailing iterators များပါရှိသော SIGSEGV;
  • method တစ်ခုအတွင်း .global ကို initialize လုပ်သည့်အခါ C code generation မှားယွင်းနေပါသည်။
  • try..except နဲ့ iterator ကိုပိတ်ရာမှာ error processing ဖြစ်သွားပါတယ်;
  • --debuginfo ကို အသုံးပြုသည့်အခါ C++ ပုံစံ အမည် မှားယွင်းစွာ မှားယွင်းနေပါသည်။
  • မှတ်ဉာဏ်ရှင်းလင်းမှု အလွန်အကျွံပြုလုပ်ခြင်းကြောင့် sequence size ကို လျှော့ချသောအခါ setLen သည် နှေးကွေးသည်။
  • "—mm:refc" မုဒ်အတွက် setLenUninit မရှိခြင်း။
  • အသုံးအနှုန်းပြန်လည်ရေးသားခြင်းလုပ်ငန်းစဉ်သည် ဖိုင်ကြီးများတွင် ရပ်တန့်နေပါသည်။
  • refc mode မှာ object တွေကို heap လုပ်ဖို့ assignment နဲ့အတူ distinct type တွေကိုသုံးတဲ့အခါ SIGSEGV ကိုသုံးပါတယ်။
  • ARC/ORC/ATOMICARC အောက်ရှိ generic distinct type များအတွက် hooks များတွင် m_type ကို မှားယွင်းစွာ ဝင်ရောက်ခွင့်။
  • concept မှ "items" များဖြင့် tuple ကို ဖြတ်သန်းသည့်အခါ compiler ပျက်စီးသွားသည်။
  • recursive သဘောတရားများကြောင့် compiler segfault ဖြစ်ပေါ်လာသည်။
  • httpclient တွင် HTTP proxy မှတစ်ဆင့် HTTPS တောင်းဆိုမှုများကို မှားယွင်းစွာ ထုတ်လုပ်ခြင်း။
  • shl လုပ်ဆောင်ချက်တွင် မသတ်မှတ်ထားသော အပြုအမူ;
  • သတိပေးချက်မရှိဘဲ ရှည်လျားသော integer literal များကို ဖြတ်တောက်ပါ။
  • compiler သည် မှားယွင်းသော generic instantiations အများအပြားဖြင့် crash ဖြစ်သွားသည်။
  • ထည့်သွင်းထားသော မုဒ် —styleCheck:warn။

source: opennet.ru

မှတ်ချက် Add