Go ၏ syntax သည် Python ဘာသာစကားမှ ချေးယူထားသော အချို့သော C language ၏ အကျွမ်းတဝင်ရှိသော ဒြပ်စင်များအပေါ် အခြေခံထားသည်။ ဘာသာစကားသည် အလွန်တိုတောင်းသော်လည်း ကုဒ်သည် ဖတ်ရှုနားလည်ရန် လွယ်ကူသည်။ Go ကုဒ်ကို virtual machine ကိုအသုံးမပြုဘဲ မူရင်းအတိုင်းလည်ပတ်သည့် stand-alone binary executables များအဖြစ် စုစည်းထားသည် (profileing၊ debugging နှင့် အခြားသော runtime problem detection subsystems များအဖြစ် ပေါင်းစပ်ထားသည်။
ပရောဂျက်ကို အပြိုင်ကွန်ပြူတာစီစဉ်ခြင်းနှင့် parallel-executed နည်းလမ်းများကြား အပြန်အလှန်အကျိုးသက်ရောက်မှုအတွက် အော်ပရေတာအဆင့်နည်းလမ်းများ ပံ့ပိုးပေးခြင်းအပါအဝင် multi-threaded programming နှင့် multi-core စနစ်များတွင် ထိရောက်သောလည်ပတ်မှုများကို မျက်စိကျစေရန် ကနဦးတွင် ပရောဂျက်ကို တီထွင်ခဲ့သည်။ ဘာသာစကားသည် ခွဲဝေချထားပေးသော မမ်မိုရီပိတ်ဆို့ခြင်းမှ တပ်ဆင်ထားသော အကာအကွယ်ကိုလည်း ပေးဆောင်ပြီး အမှိုက်စုဆောင်းသူအား အသုံးပြုနိုင်စွမ်းကို ထောက်ပံ့ပေးသည်။
အဓိက
- ချိတ်ဆက်ကိရိယာ၏လုပ်ဆောင်ချက်ကို လည်ပတ်မှုအမြန်နှုန်းတိုးမြှင့်ခြင်းနှင့် မှတ်ဉာဏ်သုံးစွဲမှုကို လျှော့ချခြင်းနှင့် ကုဒ်ထိန်းသိမ်းမှုတို့ကို ရိုးရှင်းစေခြင်း၏ ဦးတည်ချက်နှစ်ခုစလုံးတွင် သိသိသာသာ တိုးတက်ကောင်းမွန်လာခဲ့သည်။ ELF လည်ပတ်နိုင်သော ဖိုင်ဖော်မတ် (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris) ကို အသုံးပြု၍ လည်ပတ်မှုစနစ်များတွင် စမ်းသပ်သောအခါ၊ ပုံမှန် Go အပလီကေးရှင်းကြီးများ၏ 20% ပိုမြန်လာပြီး မှတ်ဉာဏ်သုံးစွဲမှုကို ပျမ်းမျှ 30% လျှော့ချခဲ့သည်။ အလုပ်၏အပြိုင်လုပ်ဆောင်မှုအဆင့်ကို တိုးမြင့်ရန် အရာဝတ္ထုဖိုင်ဖော်မတ်အသစ်သို့ ပြောင်းကာ အတွင်းပိုင်းအဆင့်များကို ပြန်လည်လုပ်ဆောင်ခြင်းဖြင့် ထုတ်လုပ်မှုစွမ်းအားကို မြှင့်တင်နိုင်ခဲ့သည်။ မူရင်းလင့်ခ်ကို ယခု linux/amd64 နှင့် "-buildmode=pie" ရှိ "-buildmode=pie" ရှိ linux/amd64 နှင့် linux/armXNUMX စနစ်များတွင် ပုံမှန်အားဖြင့် အသုံးပြုနေပြီဖြစ်ပြီး C linker ကိုအသုံးပြုရန်မလိုအပ်တော့ပါ။
- runtime တွင်၊ CPU cores အများအပြားရှိသော စနစ်များပေါ်ရှိ အရာဝတ္တုငယ်များ ဖြန့်ဖြူးမှုကို သိသာထင်ရှားစွာ မြှင့်တင်ထားပြီး latency ကို လျှော့ချထားသည်။ ပျက်ကွက်မှုများတွင်၊ လိပ်စာကိုပြသမည့်အစား ကိန်းဂဏာန်းနှင့် စာတန်းအမျိုးအစားတန်ဖိုးများကို ပြသသည်။ Go အပလီကေးရှင်းသို့ SIGSEGV၊ SIGBUS နှင့် SIGFPE အချက်ပြမှုများကို ပေးပို့သောအခါ၊ os/signal. ကိုင်တွယ်သူအား အကြောင်းကြားခြင်းမရှိဘဲ၊ အပလီကေးရှင်းသည် stack trace output တစ်ခုဖြင့် ထွက်ပါမည် (ယခင်က အပြုအမူသည် ခန့်မှန်း၍မရပါ)။
- အမှိုက်စုဆောင်းသူအတွက် မက်တာဒေတာအချို့ပါဝင်မှုကို ရပ်တန့်ကာ အသုံးမပြုသော မက်တာဒေတာကို ပိုမိုပြင်းထန်စွာ သန့်ရှင်းရေးပြုလုပ်ခြင်းဖြင့် ထုတ်လုပ်နိုင်သော စီစဥ်နိုင်သောဖိုင်များ၏ အရွယ်အစားကို ပျမ်းမျှ 5% လျှော့ချရန် compiler ကို ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ထားသည်။
- Spectre အတန်းအစားတိုက်ခိုက်မှုများကိုကာကွယ်ရန်အတွက် "-spectre" အလံကို compiler နှင့် assembler တွင်ထည့်သွင်းထားသည် (ပရိုဂရမ်အများစုအတွက် ၎င်းကိုမလိုအပ်ပါ၊ ရွေးချယ်မှုကိုဖွင့်ခြင်းသည်သာ မျှတနိုင်သည်
အချို့သော ကိစ္စများသည် အလွန်တိကျသည်။ ). - X.509 အသိအမှတ်ပြုလက်မှတ်များတွင်၊ ဘာသာရပ်ဆိုင်ရာ အစားထိုးအမည်များ အကွက်ပျောက်နေပါက လက်ခံသူအမည်အဖြစ် သဘောထားတော့မည် မဟုတ်ပါ။
- GOPROXY ပတ်၀န်းကျင် variable ရှိ "go" အမိန့်သည် ယခုအခါ ကော်မာ သို့မဟုတ် "|" ဖြင့် ပိုင်းခြားထားသော ပရောက်စီများစွာကို စာရင်းပြုစုနိုင်ပါပြီ။ စာရင်းရှိ ပထမပရောက်စီသည် အမှားအယွင်း (404 သို့မဟုတ် 410) ကို ပြန်ပို့ပါက၊ ဒုတိယပရောက်စီမှတစ်ဆင့် ဆက်သွယ်ရန် ကြိုးပမ်းမှုတစ်ခု စသည်တို့ကို ပြုလုပ်မည်ဖြစ်သည်။
- "x" သည် rune သို့မဟုတ် byte မှလွဲ၍ အခြား integer type ဖြစ်ပါက vet utility သည် string(x) မှပြောင်းရန်ကြိုးစားခြင်းနှင့်ပတ်သက်၍ သတိပေးချက်တစ်ခုထပ်ဖြည့်ထားသည်။
- GNU assembler syntax ကို disassembling လုပ်ခြင်းကို ပံ့ပိုးရန် "-gnu" အလံကို objdump utility တွင် ထည့်သွင်းထားသည်။
- ပက်ကေ့ခ်ျအသစ် ထပ်ထည့်လိုက်ပါတယ်။
အချိန်/tzdata ဒေတာဘေ့စ်တစ်ခုအား အချိန်ဇုန်ဒေတာနှင့် ပရိုဂရမ်ထဲသို့ ပေါင်းစပ်နိုင်စေမည့်၊ - အရင်းအမြစ် စာသားများနှင့် စာရွက်စာတမ်းများမှ
ဖယ်ရှားခဲ့သည်။ whitelist/blacklist နှင့် master/slave ဟူသော စကားစုများကို ယခု "ခွင့်ပြုစာရင်း"၊ "ပိတ်ဆို့စာရင်း"၊ "လုပ်ငန်းစဉ်"၊ "pty" "proc" နှင့် "control" တို့ဖြင့် အစားထိုးထားသည်။ - စံစာကြည့်တိုက်အတွက် အသေးစား တိုးတက်မှုများစွာကို ပြုလုပ်ထားပါသည်။
- GOARCH=arm နှင့် GOARCH=arm6.7 မုဒ်များတွင် OpenBSD 64 အတွက် ပံ့ပိုးမှု ထပ်လောင်းပါ (ယခင်က GOARCH=386 နှင့် GOARCH=amd64 ကိုသာ ပံ့ပိုးထားသည်)။
- 64-bit RISC-V ပလပ်ဖောင်း (GOOS=linux၊ GOARCH=riscv64) ၏ ဖွံ့ဖြိုးတိုးတက်မှုကို ဆက်လက်လုပ်ဆောင်ခဲ့သည်။
- 32-bit x86 စနစ်များအတွက်၊ နောက်ထွက်ရှိမှုတွင် အနိမ့်ဆုံးစနစ်လိုအပ်ချက်များကို မြှင့်တင်ပါမည် - SSE2 ပါသည့် ပရိုဆက်ဆာများကိုသာ ဆက်လက်ပံ့ပိုးပေးပါမည်။ GOARCH=386 မုဒ်တွင် တည်ဆောက်ရန်အတွက် အနည်းဆုံး Intel Pentium 4 (2000 တွင်ထွက်ရှိ) သို့မဟုတ် AMD Opteron/Athlon 64 (2003 တွင်ထွက်ရှိ) လိုအပ်ပါသည်။
source: opennet.ru