Kuburitswa kweGo 1.22 programming mutauro kunoratidzwa, iyo iri kuvandudzwa neGoogle nekutora chikamu kwenharaunda semhinduro yakasanganiswa inosanganisa kuita kwepamusoro kwemitauro yakabatanidzwa nezvakanakira zvemitauro yekunyora sekureruka kwekunyora kodhi. , kukurumidza kwekukura nekudzivirira kukanganisa. Iyo kodhi yeprojekiti yakagoverwa pasi peiyo BSD rezinesi.
Syntax yaGo yakavakirwa pazvinhu zvinozivikanwa zvemutauro weC nezvimwe zvinokwereta kubva mumutauro weOberon. Mutauro wacho wakapfupikiswa, asi kodhi yacho iri nyore kuverenga nekunzwisisa. Go kodhi inounganidzwa kuita yakaparadzana mabhinari eexecutable mafaera anoitwa natively, pasina kushandisa chaiwo muchina (profiling, debugging modules uye mamwe ekumhanya ekuona dambudziko subsystems akabatanidzwa seruntime components), iyo inobvumira kuita kuenzaniswa neC zvirongwa .
Iyo purojekiti yakatanga kugadziridzwa neziso kune akawanda-tambo dhizaini hurongwa uye hunoshanda hunoshanda pane akawanda-epakati masisitimu, kusanganisira kupa opareta-nhanho nzira yekuronga parallel computing uye kudyidzana pakati peparallel-executed nzira. Mutauro unopawo kuchengetedzwa kwakavakirwa-mukati kubva kune-yakagoverwa ndangariro mabhuroko uye inopa kugona kushandisa muunganidzi wemarara.
Pakati pekuchinja mukuburitswa kutsva:
- Tsigiro yekutsanangudza huwandu hwehuwandu hwakawedzerwa kune "ye" zvishwe, semuenzaniso, kudzokorodza kuburikidza netsika kubva pa0 kusvika 9, iwe unogona ikozvino kushandisa iyo "for i: = renji 10 {...}" loop.
- Yakawedzera kuyedza (GOEXPERIMENT=rangefunc) tsigiro yemhando yemabasa kusvika kune zvishwe, zvichikutendera kuti utaure basa seanodzokorora. Semuyenzaniso, "zvai, x := zvidimbu zvemhando.Backward(s) {...}"
- Yakagadzirisa nyaya yakamira kwenguva refu neyezvishwe izvo zvakakonzera mafoni kune coroutines (goroutines) kugovera loop variables pane iterations. Semuyenzaniso, macode values := []string{"a", "b", "c"} for _, v := range values {enda func() {fmt.Println(v) yaitwa < - chokwadi }()} zvino ichaburitsa "a", "b" uye "c", uye kwete "c", sezvazvaive kare.
- Memory management munguva yekumhanya yakagadziridzwa, izvo zvakakonzera kuwedzera kwekuita ne 1-3% uye kuderedzwa kwekushandiswa kwendangariro mumashandisirwo mazhinji ne1%.
- Basa rakaramba richisanganisira optimizations mumubatanidzwa zvichienderana nemhedzisiro yekodhi profiling (PGO - Profile-inotungamirwa optimization), iyo inobvumira kutora muakaundi maficha akatemerwa panguva yekuitwa kwechirongwa. Mushanduro itsva, mugadziri anoshandisa maturusi e devirtualization kutsiva mafoni asina kunanga enzira dzakasiyana nekuita kweakawedzera inline block.
- Pakagoneswa PGO, shanduko yakawedzerwa yakavandudza mashandiro ezvirongwa zvakawanda ne2-14%.
- Chiyedzo (GOEXPERIMENT=newinliner) yakagadziridzwa kushandiswa kweiyo call inlining mechanism yakawedzerwa kumugadziri, uchishandisa heuristics kuparadzanisa mashandiro akakosha uye asina kukosha.
- Iyo "math/rand/v2" package yakawedzerwa kune yakajairwa raibhurari, iyo inopa yakawedzera holistic API uye inoshandisa nekukurumidza algorithms kugadzira pseudo-random nhamba.
- Iyo mambure/http.ServeMux package yakawedzera kugona kudoma nzira nemasiki mumatemplate, semuenzaniso, iyo template "GET /static/{id}/" ichashandiswa kune zvikumbiro neHTTP nzira "GET" uye ichachengeta iyo kukosha kwechikamu chechipiri chenzira yakakumbirwa mune identifier "id".
- Iyo database/sql package yakawedzera tsigiro yerudzi rweNull[T], ichikubvumidza kuti utarise makoramu anogona kuve NULL. Yakawedzera iyo Concat basa kune zvimedu pasuru yekubatanidza akawanda zvidimbu zvechero mhando.
- Mune mirairo yekushanda nenzvimbo dzekushanda (kuunganidzwa kwemamodules), zvinokwanisika kushandisa "mutengesi" dhairekitori, iro rine zvinoenderana nezviri mukati menzvimbo yebasa. Iyo dhairekitori inogadzirwa paunenge uchiita iyo "enda kubasa mutengesi" kuraira uye inoshandiswa mukuvaka mirairo kana "-mod = mutengesi" sarudzo yaiswa (inogonesa nekukasira kana paine dhairekitori remutengesi).
Kuchinja kwemaitiro ekushandisa.
- go get haichatsigirwi kunze kwemodule mune legacy GOPATH modhi (kureva neGO111MODULE=off). Mimwe mirairo yekuvaka, senge enda unovaka uye enda bvunzo, icharamba ichishandira legacy GOPATH zvirongwa nekusingaperi.
- enda mod init haichayedza kuunza moduru zvinodiwa kubva kumafaira ekugadzirisa kune mamwe maturusi emutengesi (akadai seGopkg.lock).
- enda test -cover ikozvino inodhinda pfupiso yekuvhara yemapakeji akafukidzwa asina iwo ega mafaira ebvunzo. Pamberi peGo 1.22, ungaenda bvunzo -chivharo chirevo chepakeji yakadai? mymod/mypack [hapana bvunzo mafaira]
uye ikozvino kubva kuGo 1.22, mabasa ari mupakeji anoonekwa seasina kufukidzwa: mymod/mypack coverage: 0.0% yezvirevo Cherekedza: kana pasuru isina kodhi inogoneka zvachose, hatigone kuudza chikamu chine musoro chekuvhara; kune mapakeji akadaro, go bvunzo inoenderera mberi nekutaura asipo bvunzo mafaera.
- Iyo webhu dhizaini yechishandiso chekutevera yakagadziridzwa zvishoma sechikamu chebasa kutsigira mutsvaki mutsva, kugadzirisa dzimwe nyaya nekuvandudza kuverenga kwemapeji akasiyana. Iyo webhu interface ikozvino inotsigira kuongorora matrace mune shinda-yakachengeteka maonero. Iyo trace viewer ikozvino inoratidzawo nguva yakazara yeese mafoni ehurongwa. Aya magadzirirwo anongoshanda pakuona zviteshi zvinogadzirwa nezvirongwa zvakavakwa paGo 1.22 kana gare gare. Kuburitswa kweramangwana kuchaunza kumwe kwekuvandudzwa uku kumatehwe akagadzirwa neshanduro yekare yeGo.
- Nguva yekumhanya ikozvino inochengetedza mhando-yakavakirwa marara metadata padyo nechero murwi chinhu. Shanduko iyi zvakare inodzikisira ndangariro pamusoro pezvizhinji zveGo zvirongwa neinenge 1% nekudzoreredza redundant metadata. Mune mamwe mapurogiramu kuvandudzwa kungave kudiki nekuti shanduko iyi inogadzirisa saizi yekirasi miganhu yendangariro allocator, saka zvimwe zvinhu zvinogona kutamiswa kuenda kukirasi yepamusoro saizi. Mhedzisiro yeshanduko iyi ndeyekuti kero dzezvimwe zvinhu izvo zvaimbogara zvakabatana pamuganhu we16-byte (kana pamusoro) zvino zvinongoenderana pamuganhu we8-byte. Mamwe mapurogiramu anoshandisa mirairo yegungano inoda kuti kero dzendangariro dzienderane pamusoro pe8 bytes uye kuvimba nemaitiro ekare ekurongeka kweiyo memory allocator anogona kutadza, asi isu tinotarisira kuti zvirongwa zvakadaro zviite zvishoma. Zvirongwa zvakadaro zvinogona kuvakwa neGOEXPERIMENT=noallocheaders nesarudzo yekudzokera kumuenzaniso wekare metadata uye kudzoreredza maitiro ekurongeka kwekare, asi varidzi vepakeji vanofanirwa kugadzirisa kodhi yavo yegungano kuti vadzivise fungidziro yekurongeka, sezvo iyi workaround ichabviswa mukuburitswa kunotevera. .
- Sezvakataurwa muGo 1.20 kuburitsa manotsi, Go 1.22 ikozvino inoda iyo yekupedzisira vhezheni yeGo 1.20 kana gare gare yekutanga kuvaka. Isu tinotarisira Go 1.24 inoda iyo yekupedzisira vhezheni yeGo 1.22 kana gare gare yekutanga kuvaka.
Chekutanga (go.dev)
Source: linux.org.ru
