Kutulutsidwa kwa chilankhulo cha pulogalamu ya Go 1.18

Kutulutsidwa kwa chilankhulo cha pulogalamu ya Go 1.18 kumaperekedwa, komwe kukupangidwa ndi Google ndikutengapo gawo kwa anthu ammudzi ngati njira yosakanizidwa yomwe imaphatikiza magwiridwe antchito apamwamba a zilankhulo zophatikizidwa ndi zabwino zolembera zilankhulo monga kusavuta kulemba ma code. , liwiro la chitukuko ndi chitetezo cholakwika. Khodi ya polojekitiyi imagawidwa pansi pa layisensi ya BSD.

Mawu a Go's syntax adatengera zomwe zadziwika bwino za chilankhulo cha C ndi kubwereketsa kuchokera kuchilankhulo cha Python. Chilankhulocho ndi chachidule, koma code yake ndi yosavuta kuwerenga ndi kumvetsa. Go code imapangidwa kukhala mafayilo odziyimira okha a binary omwe amayenda mokhazikika osagwiritsa ntchito makina enieni (kulemba mbiri, ma module owongolera, ndi ma subsystem ena ozindikira zovuta za nthawi yothamanga amaphatikizidwa ngati magawo othamanga), omwe amalola kuti magwiridwe antchito afanane ndi mapulogalamu a C.

Pulojekitiyi imayamba kupangidwa ndi diso ku mapulogalamu amitundu yambiri komanso kugwira ntchito moyenera pamakina amitundu yambiri, kuphatikizapo kupereka njira zogwiritsira ntchito njira zokonzekera makompyuta ofananira ndi kuyanjana pakati pa njira zomwe zimagwiritsidwa ntchito mofanana. Chilankhulochi chimaperekanso chitetezo chomangidwira ku midadada yoperekedwa mopitirira muyeso ndipo imapereka mphamvu yogwiritsira ntchito zotayira zinyalala.

Mtundu watsopanowu umawonjezera kuthandizira kwa magwiridwe antchito ndi mitundu (generics), mothandizidwa ndi omwe wopanga amatha kufotokozera ndikugwiritsa ntchito ntchito zomwe zidapangidwa kuti zizigwira ntchito ndi mitundu ingapo nthawi imodzi. Ndikothekanso kugwiritsa ntchito zolumikizira kuti mupange mitundu yophatikizika yomwe imatenga mitundu ingapo ya data. Thandizo la ma generic limakhazikitsidwa popanda kuphwanya kuyanjana ndi ma code omwe alipo. // SumIntsOrFloats imagwira ntchito pamitundu ya int64 ndi float64 func SumIntsOrFloats[K yofananira, V int64 | float64](m mapu[K]V) V { var s V kwa _, v := range m { s += v } kubwerera s } // Njira ina yokhala ndi tanthawuzo la mtundu wamba: mtundu Nambala mawonekedwe { int64 | float64} func SumNumbers[K yofananira, V Nambala](m mapu[K]V) V {var s V ya _, v := range m {s += v} kubwerera s }

Zosintha zina:

  • Zida zoyesera ma code fuzzing zimaphatikizidwa muzolemba zokhazikika. Pakuyesa kwa fuzzing, mitsinje yamitundu yonse yomwe ingatheke mwachisawawa ya zolowetsa imapangidwa ndipo zolephera zomwe zingatheke pakukonza kwawo zimajambulidwa. Ngati ndondomeko ikuphwanyidwa kapena sichikugwirizana ndi zomwe akuyembekezera, ndiye kuti izi zikhoza kusonyeza cholakwika kapena chiopsezo.
  • Thandizo lowonjezera la malo ogwirira ntchito amitundu yambiri, kukulolani kuti mupereke malamulo pama module angapo nthawi imodzi, kukulolani kuti mupange nthawi imodzi ndikuyendetsa ma code muma module angapo.
  • Kukhathamiritsa kwakukulu kwa magwiridwe antchito apangidwa pamakina otengera Apple M1, ARM64 ndi purosesa ya PowerPC64. Kutha kugwiritsa ntchito zolembetsa m'malo mwa stack kupititsa mikangano ku magwiridwe antchito ndikubweza zotsatira. Kutsegula bwino kwa mizere ya malupu ndi compiler. Kufufuza kwamtundu mu compiler kwakonzedwanso. Mayesero ena akuwonetsa kuwonjezeka kwa 20% kwa machitidwe a code poyerekeza ndi kumasulidwa koyambirira, koma kudziphatikiza kokha kumatenga pafupifupi 15%.
  • Panthawi yothamanga, mphamvu yobwezeretsa kukumbukira komasulidwa ku machitidwe opangira opaleshoni yawonjezeka ndipo ntchito ya otaya zinyalala yasinthidwa, khalidwe lomwe lakhala lodziwika bwino.
  • Maphukusi atsopano net/netip ndi debug/buildinfo awonjezedwa ku laibulale yokhazikika. Thandizo la TLS 1.0 ndi 1.1 limayimitsidwa mwachisawawa pamakhodi a kasitomala. Module ya crypto/x509 yasiya kukonza ziphaso zosainidwa ndi SHA-1 hashi.
  • Zofunikira pa chilengedwe mu Linux zakwezedwa; kuti mugwire ntchito, muyenera kukhala ndi Linux kernel ya mtundu 2.6.32 osachepera. Pakutulutsidwa kotsatira, kusintha kofananako kumayembekezeredwa kwa FreeBSD (thandizo la nthambi ya FreeBSD 11.x idzathetsedwa) ndipo osachepera FreeBSD 12.2 idzafunika kugwira ntchito.

Source: opennet.ru

Kuwonjezera ndemanga