Рэліз мовы праграмавання Go 1.13

Прадстаўлены рэліз мовы праграмавання перайсці 1.13, Які развіваецца кампаніяй Google пры ўдзеле супольнасці як гібрыднае рашэнне, якое спалучае высокую прадукцыйнасць кампіляваных моў з такімі добрымі якасцямі скрыптовых моў, як лёгкасць напісання кода, хуткасць распрацоўкі і абароненасць ад памылак. Код праекту распаўсюджваецца пад ліцэнзіяй BSD.

Сінтаксіс Go заснаваны на звыклых элементах мовы Сі з асобнымі запазычаннямі з мовы Python. Мова дастаткова лаканічны, але пры гэтым код лёгка чытаецца і ўспрымаецца. Код на мове Go кампілюецца ў адасобленыя бінарныя выкананыя файлы, якія выконваюцца натыўна без выкарыстання віртуальнай машыны (модулі прафілявання, адладкі і іншыя падсістэмы выяўлення праблем на этапе выканання інтэгруюцца ў выглядзе runtime-кампанентаў), што дазваляе дамагчыся прадукцыйнасці, супастаўнай з праграмамі на мове Сі.

Праект першапачаткова распрацоўваецца з аглядкай на шматструменнае праграмаванне і эфектыўную работу на шмат'ядравых сістэмах, у тым ліку даючы рэалізаваныя на ўзроўні аператараў сродкі для арганізацыі паралельных вылічэнняў і ўзаемадзеяння паміж метадамі, якія паралельна выконваюцца. Мова таксама дае ўбудаваныя сродкі абароны ад выхаду за дапушчальныя вобласці выдзеленых блокаў памяці і забяспечвае магчымасць выкарыстання зборшчыка смецця.

Асноўныя навіны, прадстаўленыя ў выпуску Go 1.13:

  • У пакеце crypto/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/10.11) і macOS (XNUMX/XNUMX «El Capitan»)
  • Прадоўжана ўдасканаленне новай сістэмы модуляў, якую можна прымяняць у якасці альтэрнатывы GOPATH. Насуперак раней агучаным планам у Go 1.13 дадзеная сістэма так і не ўключаная па змаўчанні і патрабуе актывацыі праз зменную GO111MODULE=on ці выкарыстанні кантэксту, у якім модулі ўжываюцца аўтаматычна. Новая сістэма модуляў адрозніваецца інтэграванай падтрымкай версіявання, сродкамі дастаўкі пакетаў і палепшанай сістэмай кіравання залежнасцямі. Пры дапамозе модуляў распрацоўнікі больш не прывязаныя да працы ўсярэдзіне дрэва GOPATH, могуць відавочна вызначаць залежнасці з улікам версій і ствараць паўтаральныя зборкі.

    У адрозненне ад мінулых выпускаў аўтаматычнае ўжыванне новай сістэмы зараз спрацоўвае, калі пры выкананні каманды go у бягучым працоўным каталогу ці бацькоўскім каталогу прысутнічае файл go.mod, у тым ліку пры знаходжанні ў каталогу GOPATH/src. Дададзены новыя зменныя асяроддзі: GOPRIVATE, вызначальная шляхі публічна недаступных модуляў, і GOSUMDB, якая задае параметры доступу да базы кантрольных сум модуляў, не пералічаных у файле go.sum;

  • У камандзе "go" па змаўчанні забяспечана загрузка модуляў і праверка іх цэласнасці, выкарыстоўваючы люстэрка модуляў і базу кантрольных сум, якія падтрымліваюцца кампаніяй Google (proxy.golang.org, sum.golang.org і index.golang.org);
  • Спыненая падтрымка толькі бінарных пакетаў, зборка пакета ў рэжыме ///go:binary-only-package зараз прыводзіць да высновы памылкі;
  • У каманду "go get" дададзена падтрымка суфікса "@patch", які паказвае, што модуль павінен быць абноўлены да апошняга які карэктуе выпуску, але без змены бягучай значнай ці прамежкавай версіі;
  • Пры выманні модуляў з сістэм кантролю версій каманда «go» зараз выконвае дадатковую праверку радка з нумарам версіі, спрабуючы супаставіць нумары псеўда-версій з метададзеным з рэпазітара;
  • Дададзена падтрымка інспектавання памылак (error wrapping) праз стварэнне абгортак, якія дазваляюць выкарыстоўваць тыпавыя апрацоўшчыкі памылак. Напрыклад, памылка "e" можа быць абгорнута над памылкай "w" праз прадастаўленне метаду Разгарнуць, які вяртае «w». Абедзве памылкі "e" і "w" даступныя ў праграме і рашэнні прымаюцца на падставе памылкі "w", але "e" падае дадатковы кантэкст да "w" ці інтэрпрэтуе яго па іншым;
  • Праведзена аптымізацыя прадукцыйнасці runtime-кампанентаў (адзначаецца прырост хуткасці да 30%) і задзейнічана больш агрэсіўнае вяртанне памяці ў аперацыйную сістэму (раней памяць вярталася праз пяць і больш хвілін, а зараз адразу пасля ўразання памеру кучы).

Крыніца: opennet.ru

Дадаць каментар