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

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

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

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

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

  • Істотна палепшана праца кампаноўніка, як у вобласці падвышэння хуткасці працы і скарачэнні спажывання памяці, так і ў кірунку спрашчэння суправаджэння кода. Пры тэставанні ў аперацыйных сістэмах, выкарыстоўвалых фармат выкананых файлаў ELF (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), кампаноўка тыпавога набору буйных Go-прыкладанняў стала выконвацца на 20% хутчэй, а спажыванне памяці ў сярэднім паменшылася на 30%. Павышэнне прадукцыйнасці стала магчымым дзякуючы пераходу на новы фармат аб'ектных файлаў і перапрацоўцы ўнутраных стадый для павышэння ўзроўню распаралельвання работ. Уласны кампаноўнік зараз выкарыстоўваецца па змаўчанні на сістэмах linux/amd64 і linux/arm64 у рэжыме "-buildmode=pie", у якім зараз не патрабуецца ўжыванні Сі-кампаноўніка.
  • У runtime значна палепшана размеркаванне дробных аб'ектаў на сістэмах з вялікай колькасцю ядраў CPU і скарочаны затрымкі. Пры збоях забяспечаны вывад значэнняў з лікавымі і радковымі тыпамі, замест паказу адраса. Пры адпраўцы Go-дадатку сігналаў SIGSEGV, SIGBUS і SIGFPE, у выпадку адсутнасці апрацоўшчыка os/signal.Notify, прыкладанне будзе завершана з высновай трасіроўкі стэка (раней паводзіны было непрадказальным).
  • Праведзена аптымізацыя кампілятара, якая дазволіла скараціць памер генераваных выкананых файлаў у сярэднім на 5% за кошт спынення ўключэння некаторых метададзеных для зборшчыка смецця і больш агрэсіўнай чыстцы невыкарыстоўваных метададзеных.
  • У кампілятар і асэмблер дададзены сцяг "-spectre" для ўключэння абароны ад нападаў класа Spectre (для большасці праграм не патрабуецца, уключэнне опцыі можа быць апраўдана толькі для асобных вельмі спецыфічных выпадкаў).
  • У сертыфікатах X.509 абвешчана састарэлым поле CommonName, якое зараз не тлумачыцца як імя хаста ў выпадку адсутнасці поля Subject Alternative Names.
  • У камандзе «go» у зменнай асяроддзі GOPROXY зараз можна пералічваць некалькі проксі, падзеленых коскай або сімвалам «|». Калі першы проксі ў спісе верне памылку (404 ці 410), то будзе зроблена спроба абарачэння праз другі проксі і г.д.
  • Ва ўтыліце vet дададзена папярэджанне аб спробе пераўтварэння з string(x), калі «x» з'яўляецца цэлалікім тыпам, адрозным ад rune або byte.
  • Ва ўтыліту objdump дададзены сцяг "-gnu" для падтрымкі дызасэмблявання сінтаксісу GNU assembler.
  • Дададзены новы пакет time/tzdata, які дазваляе ўбудаваць у праграму БД з дадзенымі аб гадзінных паясах.
  • З зыходных тэкстаў і дакументацыі прыбраныя фразы whitelist/blacklist і master/slave, замест якіх зараз выкарыстоўваюцца "allowlist", "blocklist", "process", "pty", "proc" і "control".
  • Унесена вялікая порцыя нязначных паляпшэнняў у стандартную бібліятэку.
  • Дададзена падтрымка OpenBSD 6.7 у рэжымах GOARCH=arm і GOARCH=arm64 (раней падтрымліваліся толькі GOARCH=386 і GOARCH=amd64).
  • Працягнута развіццё 64-разраднай платформы RISC-V (GOOS=linux, GOARCH=riscv64).
  • Для 32-разрадных сістэм x86 у наступным выпуску будуць паднятыя мінімальныя патрабаванні да сістэмы – працягнуць падтрымлівацца толькі працэсары з SSE2. Для зборкі ў рэжыме GOARCH=386 запатрабуецца прынамсі Intel Pentium 4 (выпушчаны ў 2000 году) або AMD Opteron/Athlon 64 (выпушчаны ў 2003 году).

Крыніца: opennet.ru

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