Выпуск Go 1.22

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Ρ€Π΅Π»ΠΈΠ· языка программирования Go 1.22, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ развиваСтся ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Google ΠΏΡ€ΠΈ участии сообщСства ΠΊΠ°ΠΊ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков с Ρ‚Π°ΠΊΠΈΠΌΠΈ достоинствами скриптовых языков, ΠΊΠ°ΠΊ Π»Ρ‘Π³ΠΊΠΎΡΡ‚ΡŒ написания ΠΊΠΎΠ΄Π°, быстрота Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ ошибок. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD.

Бинтаксис Go основан Π½Π° ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… элСмСнтах языка Π‘ΠΈ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ заимствованиями ΠΈΠ· языка ΠžΠ±Π΅Ρ€ΠΎΠ½. Π―Π·Ρ‹ΠΊ достаточно Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π΅Π½, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ читаСтся ΠΈ воспринимаСтся. Код Π½Π° языкС Go компилируСтся Π² обособлСнныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, выполняСмыС Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ, Π±Π΅Π· использования Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ профилирования, ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ подсистСмы выявлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π° этапС выполнСния ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ runtime-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²), Ρ‡Ρ‚ΠΎ позволяСт Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, сопоставимой с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π½Π° языкС Π‘ΠΈ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ разрабатываСтся с оглядкой Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° многоядСрных систСмах, Π² Ρ‚ΠΎΠΌ числС прСдоставляя Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² срСдства для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний ΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ выполняСмыми ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Π―Π·Ρ‹ΠΊ Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт встроСнныС срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° допустимыС области Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² памяти ΠΈ обСспСчиваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования сборщика мусора.

Π‘Ρ€Π΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π½ΠΎΠ²ΠΎΠΌ выпускС:

  • Π’ Ρ†ΠΈΠΊΠ»Ρ‹ «for» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° опрСдСлСния Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² ΠΈΠ· Ρ†Π΅Π»Ρ‹Ρ… чисСл, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с 0 Π΄ΠΎ 9 Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» «for i := range 10 {…}».
  • Π’ Ρ†ΠΈΠΊΠ»Ρ‹ «for» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ (GOEXPERIMENT=rangefunc) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ опрСдСлСния Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² качСствС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. НапримСр, «for i, x := range slices.Backward(s) {…}»
  • РСшСна давняя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ «for», ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ²ΡˆΠ°Ρ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ сопрограмм (goroutine) ΠΊ совмСстному использованию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° Π² Ρ€Π°Π·Π½Ρ‹Ρ… итСрациях. НапримСр, ΠΊΠΎΠ΄ values := []string{"a", "b", "c"} for _, v := range values { go func() { fmt.Println(v) done <- true }() } Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ «a»,«b» ΠΈ «c», Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ «c», ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² runtime, которая ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° 1-3% ΠΈ сниТСнию потрСблСния памяти Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° 1%.
  • ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡŽ Π² компиляторС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Π½Π° основС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² профилирования ΠΊΠΎΠ΄Π° (PGO — Profile-guided optimization), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ особСнности, опрСдСляСмыС Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии Π² компиляторС задСйствованы срСдства Π΄Π΅Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для Π·Π°ΠΌΠ΅Π½Ρ‹ нСпрямых Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹Ρ… inline-Π±Π»ΠΎΠΊΠΎΠ².
  • ΠŸΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ PGO Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° 2-14%.
  • Π’ компилятор Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ (GOEXPERIMENT=newinliner) ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ рСализация ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° развёртывания (inlining) Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ эвристику для раздСлСния Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΈ второстСпСнных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
  • Π’ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ «math/rand/v2», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ цСлостный API ΠΈ задСйствованы Π±ΠΎΠ»Π΅Π΅ быстрыС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ псСвдо-случайных чисСл.
  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚ net/http.ServeMux Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ масок Π² ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, шаблон «GET /static/{id}/» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½ ΠΊ запросам с HTTP-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ «GET» ΠΈ сохранит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ сСгмСнта Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ «id».
  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚ database/sql Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚ΠΈΠΏΠ° Null[T], ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ столбцы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚ slices Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция Concat для слияния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… слайсов любого Ρ‚ΠΈΠΏΠ°.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ пространствами (коллСкциями ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ) прСдоставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° «vendor», содСрТащСго зависимости ΠΊ содСрТимому Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ пространства. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ создаётся ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «go work vendor» ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² сборочных ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… ΠΏΡ€ΠΈ выставлСнии ΠΎΠΏΡ†ΠΈΠΈ "-mod=vendor" (Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° vendor).

ИзмСнСния Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚.

  • go get большС Π½Π΅ поддСрТиваСтся Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ модуля Π² ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΌ GOPATH Ρ€Π΅ΠΆΠΈΠΌΠ΅ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с GO111MODULE=off). Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сборки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ go build ΠΈ go test, Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… GOPATH ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
  • go mod init большС Π½Π΅ пытаСтся ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ трСбования ΠΊ модулям ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… инструмСнтов поставщиков (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Gopkg.lock).
  • go test -cover Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сводныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ для ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ собствСнных тСстовых Ρ„Π°ΠΉΠ»ΠΎΠ². Π”ΠΎ Go 1.22 go test -cover для Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° сообщал Π±Ρ‹? mymod/mypack [no test files]

    ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ с Go 1.22 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΏΠΎΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ: mymod/mypack coverage: 0.0% of statements ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ссли ΠΏΠ°ΠΊΠ΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ содСрТит исполняСмого ΠΊΠΎΠ΄Π°, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π΅ покрытия; для Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² go test Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΎΠ± отсутствии тСстовых Ρ„Π°ΠΉΠ»ΠΎΠ².

  • Π’Π΅Π±-интСрфСйс инструмСнта trace Π±Ρ‹Π» слСгка ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ трассировщика, Ρ€Π΅ΡˆΠ΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… страниц. Π’Π΅Π±-интСрфСйс Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ трассировок Π² ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ прСдставлСнии. БрСдство просмотра трассировки Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ всСх систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π­Ρ‚ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для просмотра трассировок, созданных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, созданными Π½Π° Go 1.22 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ выпускС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ Π±ΡƒΠ΄ΡƒΡ‚ внСсСны Π² трассировки, создаваСмыС старой вСрсиСй Go.
  • Π‘Ρ€Π΅Π΄Π° выполнСния Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ сборки мусора Π½Π° основС Ρ‚ΠΈΠΏΠΎΠ² Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΊΡƒΡ‡ΠΈ. Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ сниТаСт Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ памяти Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Go ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 1% Π·Π° счСт Π΄Π΅Π΄ΡƒΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мСньшим, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ класса Ρ€Π°Π·ΠΌΠ΅Ρ€Π° распрСдСлитСля памяти, поэтому Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π½Π° класс Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Ρ‹ΡˆΠ΅. БлСдствиСм этого измСнСния являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ адрСса Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π½ΡŒΡˆΠ΅ всСгда Π±Ρ‹Π»ΠΈ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Ρ‹ ΠΏΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π΅ 16 Π±Π°ΠΉΡ‚ (ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅), Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π΅ 8 Π±Π°ΠΉΡ‚. НСкоторыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ инструкции ассСмблСра, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ адрСса памяти Π±Ρ‹Π»ΠΈ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Ρ‹ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π±ΠΎΠ»Π΅Π΅ 8 Π±Π°ΠΉΡ‚ ΠΈ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ выравнивания распрСдСлитСля памяти, ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· строя, Π½ΠΎ ΠΌΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π΄ΠΊΠΈ. Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы с GOEXPERIMENT=noallocheaders с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊ старой ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ восстановлСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ повСдСния выравнивания, Π½ΠΎ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² слСдуСт ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ свой ассСмблСрный ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ прСдполоТСния ΠΎ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ выпускС.
  • Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π² примСчаниях ΠΊ выпуску Go 1.20, Go 1.22 Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ вСрсии Go 1.20 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅ для Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ сборки. ΠœΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Go 1.24 ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ вСрсии Go 1.22 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ вСрсии для Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ сборки.
    ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» (go.dev)

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ