Go ծրագրավորման լեզվի թողարկում 1.13

Ներկայացվել է ծրագրավորման լեզվի թողարկում Գնացեք 1.13, որը մշակվում է Google-ի կողմից համայնքի մասնակցությամբ՝ որպես հիբրիդային լուծում, որը համատեղում է կոմպիլյատոր լեզուների բարձր կատարողականությունը սկրիպտային լեզուների առավելությունների հետ, ինչպիսիք են կոդ գրելու հեշտությունը, մշակման արագությունը և սխալներից պաշտպանվածությունը։ Ծրագրի կոդը տարածվում է BSD լիցենզիայի ներքո:

Go-ի շարահյուսությունը հիմնված է C լեզվի ծանոթ տարրերի վրա՝ Python լեզվից որոշ փոխառություններով: Լեզուն բավականին հակիրճ է, բայց կոդը հեշտ է կարդալ և հասկանալ: Go կոդը կազմվում է առանձին երկուական գործարկվող սարքերի մեջ, որոնք աշխատում են առանց վիրտուալ մեքենայի օգտագործման (պրոֆիլավորումը, վրիպազերծումը և գործարկման ժամանակի խնդիրների հայտնաբերման այլ ենթահամակարգերը ինտեգրված են որպես գործարկման ժամանակի բաղադրիչներ), որը թույլ է տալիս հասնել C ծրագրերի հետ համեմատելի կատարողականության:

Ծրագիրն ի սկզբանե մշակվել է բազմաշերտ ծրագրավորման և բազմաբնույթ համակարգերի վրա արդյունավետ շահագործման համար, ներառյալ օպերատորի մակարդակի միջոցներ տրամադրելով զուգահեռ հաշվարկների կազմակերպման և զուգահեռ կատարվող մեթոդների միջև փոխազդեցության համար: Լեզուն ապահովում է նաև ներկառուցված պաշտպանություն գերբաշխված հիշողության բլոկներից և ապահովում է աղբահանող սարք օգտագործելու հնարավորություն:

Հիմնական նորամուծություններներկայացվել է Go 1.13 թողարկման մեջ.

  • Ծպտյալ/tls փաթեթն ունի արձանագրային աջակցություն լռելյայն միացված TLS 1.3. Ավելացվեց նոր փաթեթ «crypto/ed25519»՝ Ed25519 թվային ստորագրությունների աջակցությամբ;
  • Ավելացվեց նոր թվային բառացի նախածանցների աջակցություն՝ երկուական թվեր (օրինակ՝ 0b101), օկտալ (0o377), երևակայական (2.71828i) և տասնվեցական լողացող կետ (0x1p-1021) սահմանելու համար և «_» նիշն օգտագործելու հնարավորություն՝ թվանշանները տեսողականորեն առանձնացնելու համար։ մեծ թվով (1_000_000);
  • Հերթափոխային գործառնություններում միայն անստորագիր հաշվիչներ օգտագործելու սահմանափակումը հանվել է, ինչը խուսափում է անհարկի փոխարկումներից uint տեսակի նախքան «‹‹» և «››» օպերատորները օգտագործելը.
  • Ավելացվել է աջակցություն Illumos պլատֆորմի համար (GOOS=illumos): Համատեղելիությունը Android 10 պլատֆորմի հետ ապահովված է, ավելացվել են FreeBSD-ի (11.2) և macOS-ի (10.11 «El Capitan») նվազագույն տարբերակների պահանջները։
  • Նոր մոդուլային համակարգի շարունակական զարգացումը, որը կարող է օգտագործվել որպես GOPATH-ի այլընտրանք: Հակառակ Go 1.13-ում նախապես հայտարարված պլանների, այս համակարգը լռելյայն միացված չէ և պահանջում է ակտիվացում GO111MODULE=on փոփոխականի կամ համատեքստի օգտագործման միջոցով, որտեղ մոդուլներն ինքնաբերաբար կիրառվում են: Նոր մոդուլային համակարգն ունի ինտեգրված տարբերակման աջակցություն, փաթեթների առաքման հնարավորություններ և կախվածության բարելավված կառավարում: Մոդուլների միջոցով ծրագրավորողներն այլևս կապված չեն GOPATH ծառի ներսում աշխատելու հետ, կարող են հստակորեն սահմանել տարբերակված կախվածություններ և ստեղծել կրկնվող կառուցումներ:

    Ի տարբերություն նախորդ թողարկումների, նոր համակարգի ավտոմատ կիրառումն այժմ աշխատում է, երբ go.mod ֆայլը առկա է ընթացիկ աշխատանքային գրացուցակում կամ ծնող գրացուցակում, երբ գործարկում է go հրամանը, ներառյալ, երբ այն գտնվում է GOPATH/src գրացուցակում: Ավելացվել են շրջակա միջավայրի նոր փոփոխականներ. GOPRIVATE, որը սահմանում է հանրությանը հասանելի մոդուլների ուղիները, և GOSUMDB, որը սահմանում է մուտքի պարամետրեր դեպի checksum տվյալների բազա մոդուլների համար, որոնք նշված չեն go.sum ֆայլում;

  • «Գնա» հրամանը լռելյայնորեն բեռնում է մոդուլները և ստուգում դրանց ամբողջականությունը՝ օգտագործելով Google-ի կողմից պահպանվող մոդուլի հայելային և checksum տվյալների բազան (proxy.golang.org, sum.golang.org և index.golang.org);
  • Միայն երկուական փաթեթների աջակցությունը դադարեցվել է, «//go:binary-only-package» ռեժիմում փաթեթ ստեղծելն այժմ հանգեցնում է սխալի.
  • Ավելացվեց «@patch» վերջածանցի աջակցությունը «go get» հրամանին, ինչը ցույց է տալիս, որ մոդուլը պետք է թարմացվի սպասարկման վերջին թողարկմանը, բայց առանց ընթացիկ հիմնական կամ փոքր տարբերակը փոխելու.
  • Աղբյուրի կառավարման համակարգերից մոդուլներ ստանալիս «go» հրամանն այժմ լրացուցիչ ստուգում է կատարում տարբերակի տողի վրա՝ փորձելով համապատասխանեցնել կեղծ տարբերակի համարները պահեստի մետատվյալների հետ;
  • Ավելացված աջակցություն սխալի ստուգում (սխալների փաթեթավորում) փաթաթաների ստեղծման միջոցով, որոնք թույլ են տալիս օգտագործել ստանդարտ սխալների մշակիչներ: Օրինակ, սխալ «e»-ն կարելի է փաթաթել «w» սխալի շուրջ՝ տրամադրելով մեթոդ Ապամոնտաժել, վերադառնալով «W»: Երկու «e» և «w» սխալները հասանելի են ծրագրում, և որոշումները կայացվում են «w» սխալի հիման վրա, սակայն «e»-ն լրացուցիչ ենթատեքստ է տալիս «w»-ին կամ այն ​​այլ կերպ է մեկնաբանում.
  • Գործարկման ժամանակի բաղադրիչների աշխատանքը օպտիմիզացվել է (նշվել է արագության աճ մինչև 30%) և իրականացվել է հիշողության ավելի ագրեսիվ վերադարձ օպերացիոն համակարգ (նախկինում հիշողությունը վերադարձվում էր հինգ և ավելի րոպեից հետո, բայց հիմա անմիջապես կույտի չափը նվազեցնելուց հետո):

Source: opennet.ru

Добавить комментарий