Google-ը թողարկել է Go ծրագրավորման լեզվի նոր տարբերակի նախադիտումը։ 1.18 տարբերակն ավելացնում է ֆունկցիոնալություն «ընդհանուր» ծրագրավորման համար, այսպես կոչված, «պարամետրացված» տեսակներով:
Նրանց խոսքերով, դա Go 1 տարբերակի թողարկումից ի վեր ծրագրավորման լեզվի ամենակարևոր և ամենամեծ փոփոխությունն է: Գեներիկայի գաղափարն այն է, որ այն այժմ թույլ է տալիս գործառույթներ ներկայացնելու գործառույթները և տվյալների կառուցվածքները՝ փոփոխելով տեսակները: Սա բացառում է «ընդհանուրությունը», որը թույլատրվում է ինտերֆեյսի տիպի սահմանմամբ՝ որպես ֆունկցիա բերվող փաստացի տվյալների վերացականացման միջոց:
Google-ը նշում է, որ Go մշակողները պետք է գիտակցեն, որ ֆունկցիոնալությունը, անկասկած, կհանգեցնի նոր սխալների: Ուստի նրանք պետք է զգուշությամբ մոտենան այս «գեներիկներին»:
Go 1.18 Beta-ի այլ գործառույթներ
Բացի վերը նշված ֆունկցիոնալությունից, նոր նախադիտումն ունի նաև ներկառուցված աջակցություն fuzzing-ի վրա հիմնված թեստեր գրելու համար: Այս թեստերը կարող են ավտոմատ կերպով գտնել մուտքագրումներ, որոնք հանգեցնում են ծրագրերի խափանման կամ անվավեր պատասխանների: Go 1.18 Beta-ն առաջարկում է նաև նոր «Գնալ աշխատանքային տարածքի ռեժիմ»: Սա թույլ է տալիս ծրագրավորողներին աշխատել մի քանի Go մոդուլների հետ միաժամանակ: Սա հատկապես օգտակար է խոշոր նախագծերի համար, ըստ Google-ի:
Ավելին, 1.18 Բետա տարբերակը ավելացնում է ֆունկցիոնալությունը ընդլայնված go version -m հրամանով: Այս հրամանն այժմ պահում է մանրամասները որպես կոմպիլյատորի դրոշներ: Ծրագիրն այժմ կարող է հարցումներ կատարել իր սեփական կառուցման մանրամասներին debug.ReadBuildInfo հրամանով:
Նաև նախադիտման մեջ ավելացվել է ավելի շատ ռեգիստրի վրա հիմնված զանգերի կոնվենցիա, որը հասանելի է Go 1.17-ից: Այն դեպքում, երբ նախորդ տարբերակում այս ֆունկցիոնալությունը հարմար էր միայն x86 և x64 համակարգերում Go կոդի արագացման համար, այժմ այն հարմար է նաև ARM64 և PPC64 համակարգերի համար: Սա պետք է ապահովի մինչև 20 տոկոս ավելի արագություն: