Nenda toleo la lugha ya programu 1.13

Iliyowasilishwa na kutolewa kwa lugha ya programu Nenda 1.13, ambayo inatengenezwa na Google kwa ushiriki wa jumuiya kama suluhu ya mseto inayochanganya utendaji wa juu wa lugha zilizokusanywa pamoja na manufaa ya lugha za uandishi kama vile urahisi wa kuandika msimbo, kasi ya maendeleo na ulinzi wa makosa. Msimbo wa mradi kusambazwa na chini ya leseni ya BSD.

Sintaksia ya Go inategemea vipengele vinavyojulikana vya lugha ya C na baadhi ya mikopo kutoka kwa lugha ya Python. Lugha ni fupi kabisa, lakini kanuni ni rahisi kusoma na kuelewa. Msimbo wa Go unakusanywa katika utekelezeji wa mfumo wa jozi wa kusimama pekee ambao huendeshwa kienyeji bila kutumia mashine pepe (kuweka wasifu, kurekebisha hitilafu, na mifumo mingine midogo ya kugundua tatizo wakati wa utekelezaji imeunganishwa kama vipengele vya wakati wa kukimbia), ambayo hukuruhusu kufikia utendaji unaolinganishwa na programu za C.

Mradi huo hapo awali umeandaliwa kwa jicho la upangaji wa nyuzi nyingi na utendakazi mzuri kwenye mifumo ya msingi-nyingi, ikijumuisha kutoa njia za kiwango cha opereta kwa ajili ya kuandaa kompyuta sambamba na mwingiliano kati ya mbinu zinazotekelezwa sambamba. Lugha pia hutoa ulinzi uliojengwa ndani dhidi ya vizuizi vya kumbukumbu vilivyotengwa zaidi na hutoa uwezo wa kutumia mtozaji wa takataka.

kuu ubunifuilianzishwa katika toleo la Go 1.13:

  • Kifurushi cha crypto/tls kina usaidizi wa itifaki unaowezeshwa na chaguomsingi TLS 1.3. Imeongeza kifurushi kipya "crypto/ed25519" na usaidizi wa sahihi za dijiti za Ed25519;
  • Imeongezwa usaidizi wa viambishi awali halisi vya nambari ili kufafanua nambari jozi (km 0b101), octal (0o377), ya kufikirika (2.71828i) na sehemu ya kuelea ya heksadesimali (0x1p-1021), na uwezo wa kutumia herufi "_" kutenganisha tarakimu kwa macho. kwa idadi kubwa (1_000_000);
  • Kizuizi cha kutumia vihesabio visivyo na saini pekee katika shughuli za zamu kimeondolewa, jambo ambalo huepuka ubadilishaji usiohitajika kuwa aina ya uint kabla ya kutumia viendeshaji β€œβ€Ήβ€Ήβ€ na β€œβ€Ίβ€Ίβ€;
  • Usaidizi ulioongezwa kwa jukwaa la Illumos (GOOS=illumos). Utangamano na mfumo wa Android 10 umehakikishwa. Mahitaji ya matoleo ya chini kabisa ya FreeBSD (11.2) na macOS (10.11 β€œEl Capitan”) yameongezwa.
  • Kuendelea kuendelezwa kwa mfumo mpya wa moduli, ambao unaweza kutumika kama mbadala wa GOPATH. Kinyume na mipango iliyotangazwa hapo awali katika Go 1.13, mfumo huu haujawashwa kwa chaguo-msingi na unahitaji kuwezesha kupitia GO111MODULE=on variable au matumizi ya muktadha ambapo moduli zinatumika kiotomatiki. Mfumo mpya wa moduli una usaidizi jumuishi wa matoleo, uwezo wa utoaji wa vifurushi, na usimamizi bora wa utegemezi. Kwa moduli, wasanidi programu hawafungamani tena na kufanya kazi ndani ya mti wa GOPATH, wanaweza kufafanua kwa uwazi utegemezi wa matoleo, na kuunda miundo inayoweza kurudiwa.

    Tofauti na matoleo ya awali, utumiaji wa kiotomatiki wa mfumo mpya sasa unafanya kazi wakati faili ya go.mod iko kwenye saraka ya sasa ya kufanya kazi au saraka kuu wakati wa kutekeleza amri ya kwenda, pamoja na wakati iko kwenye saraka ya GOPATH/src. Vigezo vipya vya mazingira vimeongezwa: GOPRIVATE, ambayo inafafanua njia za moduli zinazoweza kufikiwa na umma, na GOSUMDB, ambayo inabainisha vigezo vya ufikiaji kwenye hifadhidata ya hundi kwa moduli ambazo hazijaorodheshwa kwenye faili ya go.sum;

  • Amri ya "go" kwa chaguo-msingi hupakia moduli na hukagua uadilifu wao kwa kutumia kioo cha moduli na hifadhidata ya checksum inayodumishwa na Google (proxy.golang.org, sum.golang.org na index.golang.org);
  • Usaidizi wa vifurushi vya mfumo wa jozi pekee umekatishwa; kuunda kifurushi katika modi ya "//go:kifurushi-tu-kiwili" sasa husababisha hitilafu;
  • Usaidizi ulioongezwa wa kiambishi tamati cha "@patch" kwa amri ya "nenda pata", ikionyesha kuwa moduli inapaswa kusasishwa hadi toleo la hivi punde la matengenezo, lakini bila kubadilisha toleo kuu la sasa au dogo;
  • Wakati wa kurejesha moduli kutoka kwa mifumo ya udhibiti wa chanzo, amri ya "nenda" sasa hufanya ukaguzi wa ziada kwenye mfuatano wa toleo, ikijaribu kulinganisha nambari za matoleo ya uwongo na metadata kutoka kwenye hifadhi;
  • Aliongeza msaada ukaguzi wa makosa (kufunga makosa) kupitia uundaji wa vifungashio vinavyoruhusu matumizi ya vidhibiti vya makosa ya kawaida. Kwa mfano, kosa "e" inaweza kuzungushwa na kosa "w" kwa kutoa mbinu Fungua, inarudi "w". Makosa yote "e" na "w" yanapatikana katika programu na maamuzi hufanywa kulingana na kosa "w", lakini "e" hutoa muktadha wa ziada kwa "w" au hutafsiri kwa njia tofauti;
  • Utendaji wa vipengele vya wakati wa kukimbia umeboreshwa (ongezeko la kasi ya hadi 30% imeonekana) na urejesho mkali zaidi wa kumbukumbu kwenye mfumo wa uendeshaji umetekelezwa (hapo awali, kumbukumbu ilirejeshwa baada ya dakika tano au zaidi, lakini sasa mara moja. baada ya kupunguza saizi ya lundo).

Chanzo: opennet.ru

Kuongeza maoni