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

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

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

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

Go 1.16-ում ներկայացված հիմնական նոր առանձնահատկությունները.

  • Ավելացվեց ներկառուցված փաթեթը, որն ապահովում է ծրագրում կամայական ֆայլեր և գրացուցակներ ներկառուցելու գործիքներ: Տրվում է նոր «//go:embed» դիրեկտիվ՝ կոմպիլյացիայի պահին ներկառուցվող ֆայլերը նշելու համար: Օրինակ, կոդի մեկնաբանության մեջ նշելով «//go:embed test.txt» և այնուհետև «var f embed.FS» փոփոխականը հայտարարելը կհանգեցնի test.txt ֆայլի ներկառուցմանը և դրան մուտք գործելու հնարավորությանը «» զ» նկարագրիչ: Նմանապես, դուք կարող եք ներդնել ֆայլեր ռեսուրսներով կամ աշխատանքի համար անհրաժեշտ որոշակի տեսակի առանձին արժեքներով, օրինակ՝ version.txt ֆայլից լարային «s» փոփոխականը ստանալու համար կարող եք նշել՝ import _ «embed»: ” //go:embed version.txt var s տողերի տպում (ներ)
  • Լռելյայնորեն, այժմ պահանջվում է նոր մոդուլային համակարգը՝ ինտեգրված տարբերակների աջակցությամբ, որը փոխարինում է GOPATH-ի վրա հիմնված կախվածության կառավարմանը: GO111MODULE միջավայրի փոփոխականն այժմ դրված է լռելյայն «միացված» վրա, և մոդուլների ռեժիմն օգտագործվում է անկախ աշխատանքային կամ ծնող գրացուցակում go.mod ֆայլի առկայությունից: Նոր ռեժիմում build հրամանները, ինչպիսիք են «go build» և «go test» չեն փոխում go.mod-ի և go.sum-ի բովանդակությունը, իսկ «go install» հրամանը մշակում է տարբերակի փաստարկները («go install example.com/[էլեկտրոնային փոստով պաշտպանված]»): Հին վարքագիծը վերադարձնելու համար փոխեք GO111MODULE-ը «auto»-ի: Նշվում է, որ մշակողների 96%-ն արդեն անցել է նոր մոդուլային համակարգին։
  • Կապակցիչը օպտիմիզացված է: Խոշոր նախագծերի համար դասավորությունն այժմ 20-25%-ով ավելի արագ է և պահանջում է 5-15%-ով պակաս հիշողություն:
  • Կազմողն ավելացրել է գործառույթների ներգծային ընդլայնման աջակցություն՝ «for» հանգույցների, մեթոդի արժեքների և «տիպի անջատիչի» կառուցվածքների կրճատ սահմանումներով:
  • Ավելացվել է Apple համակարգերի աջակցություն, որոնք հագեցած են նոր Apple M1 ARM չիպով: Ավելացվել են netbsd/arm64 և openbsd/mips64 պորտեր՝ NetBSD-ի աջակցությամբ 64-բիթանոց ARM-ում և OpenBSD-ին MIPS64 համակարգերում: Ավելացվեց cgo-ի և «-buildmode=pie» ռեժիմի աջակցությունը linux/riscv64 պորտին:
  • x87 կոմպիլյացիայի ռեժիմի աջակցությունը դադարեցվել է (GO386=387): SSE2 առանց հրահանգների պրոցեսորների աջակցությունն այժմ հասանելի է «GO386=softfloat» ծրագրային ռեժիմի միջոցով:

Բացի այդ, մենք կարող ենք նշել Dart 2.12 լեզվի բետա թողարկման փորձարկման սկիզբը, որում կայունացվել է «Null» արժեքի (null անվտանգությունը) օգտագործման անվտանգ ռեժիմը, ինչը կօգնի խուսափել փոփոխականներ օգտագործելու փորձերից առաջացած վթարներից։ արժեքը որոշված ​​չէ և դրված է «Null»: Ռեժիմը ենթադրում է, որ փոփոխականները չեն կարող ունենալ զրոյական արժեքներ, քանի դեռ նրանց բացահայտորեն չի նշանակվել null արժեքը: Ռեժիմը խստորեն հարգում է փոփոխականների տեսակները, ինչը թույլ է տալիս կոմպիլյատորին կիրառել լրացուցիչ օպտիմալացումներ։ Տիպի համապատասխանությունը ստուգվում է կոմպիլյացիայի ժամանակ, օրինակ, եթե փորձեք «Null» արժեքը վերագրել փոփոխականին այնպիսի տիպով, որը չի ենթադրում չսահմանված վիճակ, օրինակ՝ «int», կցուցադրվի սխալ:

Source: opennet.ru

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