Hamba ulwimi lwenkqubo 1.18 ukukhululwa

Ukukhutshwa kolwimi lwenkqubo ye-Go 1.18 kubonisiwe, ephuhliswa nguGoogle ngokuthatha inxaxheba koluntu njengesisombululo esidibeneyo esidibanisa ukusebenza okuphezulu kweelwimi ezihlanganisiweyo kunye nezibonelelo zeelwimi zokubhala ngokulula ukubhala ikhowudi. , isantya sophuhliso kunye nokukhuselwa kwempazamo. Ikhowudi yeprojekthi ihanjiswa phantsi kwelayisensi ye-BSD.

Isivakalisi sikaGo sisekwe kwizinto eziqhelekileyo zolwimi lwe-C kunye nokubolekwa kulwimi lwePython. Ulwimi lufutshane, kodwa ikhowudi ifundeka lula kwaye iqondwe. Ikhowudi yeGo iqokelelwe kwiifayile ezisebenzayo ezizimeleyo ezisebenza ngokwendalo ngaphandle kokusebenzisa umatshini wenyani (iprofayili, iimodyuli zokulungisa iimpazamo, kunye nezinye iinkqubo ezisezantsi zokubona ingxaki zidityaniswe njengamacandelo exesha lokubaleka), evumela ukusebenza okuthelekiswa neenkqubo zeC.

Iprojekthi iqale iphuhliswe ngeso kwiprogram ye-multi-threaded kunye nokusebenza ngokufanelekileyo kwiinkqubo ezininzi ezingundoqo, kubandakanywa nokubonelela ngeendlela zomgangatho womqhubi wokuququzelela i-computing ehambelanayo kunye nokusebenzisana phakathi kweendlela eziqhutywe ngokuhambelanayo. Ulwimi lukwabonelela ngokhuseleko olwakhelwe ngaphakathi kwiibhloko zememori ezabiwe ngokugqithisileyo kwaye lubonelela ngokukwazi ukusebenzisa umqokeleli wenkunkuma.

Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΈΠΏΠΎΠ² (Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ²), ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ сразу с нСсколькими Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. Π’Π°ΠΊΠΆΠ΅ прСдоставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования интСрфСйсов для создания ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… нСсколько Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π±Π΅Π· Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. // Π‘ΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π°Π±ΠΎΡ€Π°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π΅ для Ρ‚ΠΈΠΏΠΎΠ² int64 ΠΈ float64 func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V { var s V for _, v := range m { s += v } return s } // Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ°: type Number interface { int64 | float64 } func SumNumbers[K comparable, V Number](m map[K]V) V { var s V for _, v := range m { s += v } return s }

Olunye uphuculo:

  • Π’ ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΉ инструмСнтарий ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для fuzzing-тСстирования ΠΊΠΎΠ΄Π°. Π’ Ρ…ΠΎΠ΄Π΅ fuzzing-тСстировании осущСствляСтся гСнСрация ΠΏΠΎΡ‚ΠΎΠΊΠ° всСвозмоТных случайных ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ фиксация Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… сбоСв Π² процСссС ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Если какая-Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΡ€Π°Ρ…Ρƒ ΠΈΠ»ΠΈ Π½Π΅ соотвСтствуСт ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ с высокой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎΠ± ошибкС ΠΈΠ»ΠΈ уязвимости.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠΎΠ³ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… пространств, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сразу для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… модулях.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ оптимизация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для систСм Π½Π° Π±Π°Π·Π΅ процСссоров Apple M1, ARM64 ΠΈ PowerPC64. Π’ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования рСгистров вмСсто стСка для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΎ inline-Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² компилятором. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² Π² компиляторС. Π’ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… тСстах ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ выпуском отмСчаСтся ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄Π° Π½Π° 20%, Π½ΠΎ сама компиляция стала Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 15% дольшС.
  • Π’ runtime ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ возвращСния освобоТдённой памяти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° сборщика мусора, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ стало Π±ΠΎΠ»Π΅Π΅ прСдсказуСмым.
  • Π’ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ net/netip ΠΈ debug/buildinfo. Π’ клиСнтском ΠΊΠΎΠ΄Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° TLS 1.0 ΠΈ 1.1. Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ crypto/x509 ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сСртификатов с подписью Π½Π° Π±Π°Π·Π΅ Ρ…ΡΡˆΠ° SHA-1.
  • ΠŸΠΎΠ΄Π½ΡΡ‚Ρ‹ трСбования ΠΊ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΡŽ Π² Linux, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ядра Linux ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ вСрсии 2.6.32. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ выпускС Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ измСнСния ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ΡΡ для FreeBSD (Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²Π΅Ρ‚ΠΊΠΈ FreeBSD 11.x) ΠΈ для Ρ€Π°Π±Ρ‚Ρ‹ потрСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ FreeBSD 12.2.

umthombo: opennet.ru

Yongeza izimvo