Go ပရိုဂရမ်းမင်းဘာသာစကား 1.16 ကိုဖြန့်ချိသည်။

Go 1.16 ပရိုဂရမ်းမင်းဘာသာစကား၏ ထွက်ရှိမှုကို တင်ပြထားပြီး၊ အသိုင်းအဝိုင်း၏ပါဝင်မှုဖြင့် Google မှ တီထွင်ထားသည့် ပေါင်းစပ်ဘာသာစကားများ၏ စွမ်းဆောင်ရည်မြင့်မားမှုကို ပေါင်းစပ်ထားသော ဇာတ်ညွှန်းရေးဘာသာစကားများ၏ အားသာချက်များဖြစ်သည့် ကုဒ်ရေးသားရလွယ်ကူခြင်း ဖွံ့ဖြိုးတိုးတက်မှု အရှိန်အဟုန်နှင့် အမှားအယွင်း ကာကွယ်မှု။ ပရောဂျက်ကုဒ်ကို BSD လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

Go ၏ syntax သည် Python ဘာသာစကားမှ ချေးယူထားသော အချို့သော C language ၏ အကျွမ်းတဝင်ရှိသော ဒြပ်စင်များအပေါ် အခြေခံထားသည်။ ဘာသာစကားသည် အလွန်တိုတောင်းသော်လည်း ကုဒ်သည် ဖတ်ရှုနားလည်ရန် လွယ်ကူသည်။ Go ကုဒ်ကို virtual machine ကိုအသုံးမပြုဘဲ မူရင်းအတိုင်းလည်ပတ်သည့် stand-alone binary executable ဖိုင်များ (profileing, debugging modules, and other runtime problem detection subsystems are integrated as runtime components) သည် C ပရိုဂရမ်များနှင့် နှိုင်းယှဉ်နိုင်သော စွမ်းဆောင်ရည်ကို ရရှိစေပါသည်။

ပရောဂျက်ကို အပြိုင်ကွန်ပြူတာစီစဉ်ခြင်းနှင့် parallel-executed နည်းလမ်းများကြား အပြန်အလှန်အကျိုးသက်ရောက်မှုအတွက် အော်ပရေတာအဆင့်နည်းလမ်းများ ပံ့ပိုးပေးခြင်းအပါအဝင် multi-threaded programming နှင့် multi-core စနစ်များတွင် ထိရောက်သောလည်ပတ်မှုများကို မျက်စိကျစေရန် ကနဦးတွင် ပရောဂျက်ကို တီထွင်ခဲ့သည်။ ဘာသာစကားသည် ခွဲဝေချထားပေးသော မမ်မိုရီပိတ်ဆို့ခြင်းမှ တပ်ဆင်ထားသော အကာအကွယ်ကိုလည်း ပေးဆောင်ပြီး အမှိုက်စုဆောင်းသူအား အသုံးပြုနိုင်စွမ်းကို ထောက်ပံ့ပေးသည်။

Go 1.16 တွင် မိတ်ဆက်ထားသော အဓိကအင်္ဂါရပ်များ-

  • ပရိုဂရမ်ထဲသို့ မတရားသော ဖိုင်များနှင့် လမ်းညွှန်များကို ထည့်သွင်းခြင်းအတွက် ကိရိယာများကို ပံ့ပိုးပေးသည့် မြှုပ်သွင်းပက်ကေ့ခ်ျကို ပေါင်းထည့်ထားသည်။ compile time တွင် ထည့်သွင်းမည့် ဖိုင်များကို သတ်မှတ်ရန် "//go:embed" ညွှန်ကြားချက်အသစ်ကို ပေးထားပါသည်။ ဥပမာအားဖြင့်၊ ကုဒ်မှတ်ချက်တွင် “//go:embed test.txt” ကို သတ်မှတ်ပြီးနောက် “var f embed.FS” ပြောင်းလဲမှုအား ကြေညာခြင်းသည် test.txt ဖိုင်ကို မြှုပ်နှံခြင်းနှင့် ““ မှတဆင့် ဝင်ရောက်နိုင်မှုတို့ကို ဦးတည်စေမည်ဖြစ်သည်။ f” ဖော်ပြချက်။ အလားတူနည်းဖြင့်၊ သင်သည် အလုပ်အတွက် လိုအပ်သော အမျိုးအစားတစ်ခု၏ အရင်းအမြစ်များ သို့မဟုတ် တစ်ခုချင်းတန်ဖိုးများဖြင့် ဖိုင်များကို မြှုပ်နှံနိုင်သည်၊ ဥပမာ၊ version.txt ဖိုင်မှ string variable “s” ကို ရယူရန်၊ သင်သည် သတ်မှတ်နိုင်သည်- import _ “embed ” //go:embed version.txt var s string print (s)
  • မူရင်းအားဖြင့်၊ ပေါင်းစပ်ဗားရှင်းပံ့ပိုးမှုပါရှိသော မော်ဂျူးစနစ်အသစ်သည် GOPATH အခြေခံမှီခိုစီမံခန့်ခွဲမှုကို အစားထိုးရန် လိုအပ်ပါသည်။ GO111MODULE ပတ်ဝန်းကျင် ပြောင်းလဲမှုအား ယခုမူလအားဖြင့် "on" ဟု သတ်မှတ်ထားပြီး အလုပ်လုပ်သော သို့မဟုတ် မိဘလမ်းညွှန်တွင် go.mod ဖိုင်တစ်ခုရှိနေသည်ဖြစ်စေ မော်ဂျူးမုဒ်ကို အသုံးပြုထားသည်။ မုဒ်အသစ်တွင်၊ "go build" နှင့် "go test" ကဲ့သို့သော build command များသည် go.mod နှင့် go.sum ၏ အကြောင်းအရာများကို မပြောင်းလဲဘဲ၊ "go install" command သည် version arguments များကို လုပ်ဆောင်သည် ("go install example.com/[အီးမေးလ်ကိုကာကွယ်ထားသည်]” ) ။ အမူအကျင့်ဟောင်းကို ပြန်ယူရန် GO111MODULE ကို "အော်တို" သို့ ပြောင်းပါ။ developer များ၏ 96% သည် module system အသစ်သို့ပြောင်းပြီးဖြစ်ကြောင်း မှတ်သားရပါသည်။
  • လင့်ခ်ကို အကောင်းဆုံးဖြစ်အောင် ပြုလုပ်ပြီးပါပြီ။ ကြီးမားသောပရောဂျက်များအတွက်၊ ယခုအခါ အပြင်အဆင်သည် 20-25% ပိုမြန်ပြီး memory 5-15% လိုအပ်ပါသည်။
  • compiler သည် "for" loops၊ method values ​​​​နှင့် 'type switch' constructs များ၏ အတိုကောက်အဓိပ္ပါယ်ဖွင့်ဆိုချက်များဖြင့် inline expansion of functions များအတွက် အထောက်အပံ့ကို ပေါင်းထည့်ထားပါသည်။
  • Apple M1 ARM ချစ်ပ်အသစ် တပ်ဆင်ထားသော Apple စနစ်များအတွက် ပံ့ပိုးမှု ပေါင်းထည့်ထားသည်။ 64-bit ARM နှင့် MIPS64 စနစ်များရှိ NetBSD အတွက် ပံ့ပိုးမှုဖြင့် netbsd/arm64 နှင့် openbsd/mips64 ဆိပ်ကမ်းများကို ပေါင်းထည့်ထားသည်။ cgo အတွက် ပံ့ပိုးမှု နှင့် “-buildmode=pie” မုဒ်ကို linux/riscv64 အပေါက်သို့ ပေါင်းထည့်ထားသည်။
  • x87 စုစည်းမှုမုဒ်အတွက် ပံ့ပိုးမှုကို ရပ်ဆိုင်းလိုက်ပါပြီ (GO386=387)။ "GO2=softfloat" ဆော့ဖ်ဝဲလ်မုဒ်မှတစ်ဆင့် SSE386 ညွှန်ကြားချက်မရှိသော ပရိုဆက်ဆာများအတွက် ပံ့ပိုးမှုကို ယခုရရှိနိုင်ပါပြီ။

ထို့အပြင်၊ Dart 2.12 ဘာသာစကား၏ beta ဖြန့်ချိမှုကို စတင်စမ်းသပ်ခြင်းစသည့်အချိန်မှစ၍ “Null” တန်ဖိုး (null safety) ကို အသုံးပြုရန်အတွက် safe mode ကို တည်ငြိမ်အောင်ပြုလုပ်ထားပြီး၊ ဖြစ်သည့် variables များကို အသုံးပြုရန် ကြိုးပမ်းမှုများကြောင့် ပျက်ကျမှုများကို ရှောင်ရှားနိုင်မည်ဖြစ်ကြောင်း မှတ်သားနိုင်ပါသည်။ တန်ဖိုးကို သတ်မှတ်မထားဘဲ “Null” ဟု သတ်မှတ်သည်။ မုဒ်တွင် ကိန်းရှင်များသည် null တန်ဖိုးများကို အတိအလင်း သတ်မှတ်မပေးပါက ၎င်းတို့တွင် null တန်ဖိုးများ မဖြစ်နိုင်ကြောင်း ဆိုလိုသည်။ မုဒ်သည် ကိန်းရှင်အမျိုးအစားများကို တင်းကြပ်စွာလေးစားသည်၊ ၎င်းသည် compiler အား ထပ်လောင်းပိုကောင်းအောင်ပြုလုပ်ခြင်းများကို အသုံးပြုခွင့်ပေးသည်။ အမျိုးအစားလိုက်လျောညီထွေမှုကို compile အချိန်၌စစ်ဆေးသည်၊ ဥပမာအားဖြင့်၊ သင်သည် “int” ကဲ့သို့ သတ်မှတ်မထားသောအခြေအနေဟု အဓိပ္ပာယ်မသက်ရောက်သော အမျိုးအစားတစ်ခုဖြင့် "Null" တန်ဖိုးကို သတ်မှတ်ရန်ကြိုးစားပါက၊ အမှားတစ်ခုပြသပါမည်။

source: opennet.ru

မှတ်ချက် Add