ИзданиС Go 1.22

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

Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π½Π° Go Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ Π΅Π·ΠΈΠΊΠ° C с ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ заимствания ΠΎΡ‚ Π΅Π·ΠΈΠΊΠ° ΠžΠ±Π΅Ρ€ΠΎΠ½. Π•Π·ΠΈΠΊΡŠΡ‚ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π΅Π½, Π½ΠΎ ΠΊΠΎΠ΄ΡŠΡ‚ Π΅ лСсно Ρ‡Π΅Ρ‚ΠΈΠΌ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° Go сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΈ изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ, Π±Π΅Π· Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина (ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅, отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ подсистСми Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° изпълнСниС сС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ runtime-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ), ΠΊΠΎΠ΅Ρ‚ΠΎ позволява постиганС Π½Π° производитСлност, сравнима с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° C.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ създадСн с ΠΎΠ³Π»Π΅Π΄ Π½Π° многопоточност ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° многоядрСни систСми, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ прСдоставяйки Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ срСдства Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ изчислСния ΠΈ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅, изпълнявани ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ. Π•Π·ΠΈΠΊΡŠΡ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΈ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ срСдства Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ извън допустимитС области Π½Π° Π·Π°Π΄Π΅Π»Π΅Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ осигурява Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡŠΠ±ΠΈΡ€Π°Ρ‡ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ.

Π‘Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:

  • Π’ Ρ†ΠΈΠΊΠ»ΠΈ Β«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 β€” оптимизация, Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄Π΅Π½Π° ΠΎΡ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅), ΠΊΠΎΠΈΡ‚ΠΎ позволяват Π΄Π° сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ характСристикитС, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°. Π’ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π²Π° срСдства Π·Π° дСвиртуализация, ΠΊΠΎΠΈΡ‚ΠΎ замСнят Π½Π΅ΠΏΡ€Π΅ΠΊΠΈΡ‚Π΅ извиквания Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ с ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ ΠΈΠ½Π»Π°ΠΉΠ½-Π±Π»ΠΎΠΊΠΎΠ²Π΅.
  • Π‘ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° 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% ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π°ΠΊΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ изпълняСм ΠΊΠΎΠ΄, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠΊΠ»Π°Π΄Π²Π°ΠΌΠ΅ Π·Π° Π·Π½Π°Ρ‡ΠΈΠΌ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅; Π·Π° Ρ‚Π°ΠΊΠΈΠ²Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster