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

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

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

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

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

  • Նոր մոդուլային համակարգը «go» հրամանում հայտարարված է պատրաստ ընդհանուր օգտագործման համար, միացված է լռելյայն և խորհուրդ է տրվում GOPATH-ի փոխարեն կախվածության կառավարման համար: Նոր մոդուլային համակարգն ունի ինտեգրված տարբերակման աջակցություն, փաթեթների առաքման հնարավորություններ և կախվածության բարելավված կառավարում: Մոդուլների միջոցով ծրագրավորողներն այլևս կապված չեն GOPATH ծառի ներսում աշխատելու հետ, կարող են հստակորեն սահմանել տարբերակված կախվածություններ և ստեղծել կրկնվող կառուցումներ:
  • Ավելացված է աջակցություն ինտերֆեյսների ներդրման համար՝ համընկնող մեթոդների շարքով: Ներկառուցված ինտերֆեյսի մեթոդներն այժմ կարող են ունենալ նույն անուններն ու ստորագրությունները, ինչ մեթոդները գոյություն ունեցող ինտերֆեյսներում: Հստակորեն հայտարարված մեթոդները մնում են եզակի, ինչպես նախկինում:
  • Բարելավվել է «հետաձգել» արտահայտության կատարումը՝ դարձնելով այն գրեթե նույնքան արագ, որքան հետաձգված ֆունկցիան ուղղակիորեն կանչելը, ինչը թույլ է տալիս հետաձգված ֆունկցիայի կատարումը կատարողականության նկատմամբ զգայուն կոդով:
  • Տրամադրվում է կորուտինների (գորուտինների) ասինխրոն կանխարգելում. օղակները, որոնք չեն պարունակում ֆունկցիայի կանչեր, այժմ կարող են հանգեցնել ժամանակացույցի փակուղու կամ հետաձգել աղբահանության մեկնարկը:
  • Հիշողության էջերի տեղաբաշխման համակարգի արդյունավետությունը բարելավվել է, և այժմ զգալիորեն ավելի քիչ են կողպեքի վեճերը GOMAXPROCS մեծ արժեքներով կազմաձևերում: Արդյունքը կրճատվում է ուշացումով և ավելանում է թողունակությունը՝ միաժամանակ ինտենսիվորեն բաշխելով հիշողության մեծ բլոկները:
  • Կողպումը օպտիմիզացվել է, և համատեքստի անջատիչների թիվը կրճատվել է ժամանակին օգտագործվող ներքին ժմչփերի գործարկման ժամանակ: Հետո, time.Tick, net.Conn.SetDeadline գործառույթները:
  • Go հրամանում «-mod=vendor» դրոշը լռելյայն միացված է, եթե արմատում կա վաճառողի գրացուցակ, որը նախատեսված է որոշակի վաճառողի հետ կապված արտաքին կախվածություններ մատակարարելու համար: Ավելացրել է առանձին «-mod=mod» դրոշ՝ մոդուլները բեռնելու մոդուլի քեշից, այլ ոչ թե «վաճառող» գրացուցակից: Եթե ​​go.mod ֆայլը միայն կարդալու համար է, ապա «-mod=readonly» դրոշը սահմանվում է լռելյայն, եթե չկա վերին «վաճառող» գրացուցակ: Ավելացվեց «-modfile=file» դրոշը՝ մոդուլի արմատական ​​գրացուցակում գտնվող այլընտրանքային go.mod ֆայլը նշելու համար:
  • Ավելացվեց GOINSECURE միջավայրի փոփոխականը, երբ սահմանված է, go հրամանը չի պահանջում օգտագործել HTTPS և բաց է թողնում վկայագրի ստուգումը մոդուլներն ուղղակիորեն բեռնելիս:
  • Կոմպիլյատորն ավելացրել է «-d=checkptr» դրոշը, որը միացված է լռելյայնորեն, ստուգելու համար unsafe.Pointer-ի անվտանգ օգտագործման կանոններին համապատասխանությունը:
  • Առաքման մեջ ներառված է նոր փաթեթ հաշ/մաֆաշ ոչ գաղտնագրված հեշ ֆունկցիաներով՝ կամայական բայթերի հաջորդականությունների կամ տողերի համար հեշ աղյուսակներ ստեղծելու համար:
  • Ավելացվեց փորձնական աջակցություն Linux-ի 64-բիթանոց RISC-V պլատֆորմի համար:
  • Ավելացվել է FreeBSD-ի աջակցություն 64-բիթանոց ARM համակարգերում:

Source: opennet.ru

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