ИздаванС на Go 1.22

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

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

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

Π‘Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² новия Ρ€Π΅Π»ΠΈΠΉΠ·:

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