119просмотров
7 января 2026 г.
stats📷 ФотоScore: 131
👍 Обновление в Go версии 1.26! Хоть я и разработчик на Go, тема этого языка редко появляется в моём блоге, однако февральская премьера новой версии Go 1.26 заслуживает особого внимания благодаря ряду интересных и ценных новинок, о которых стоит поговорить подробнее. Полностью заметки о релизе доступны тут - официальные примечания к релизу / версия примечаний от Антона Жиянова (Более подробная) 🥴 Сборщик мусора Green Tea Новая реализация сборщика мусора направлена на оптимизацию работы именно с памятью, уделяя особое внимание её структуре. Традиционный подход к обработке отдельных объектов заменён последовательной обработкой непрерывных блоков памяти объёмом 8 КБ («спанов»). Основное внимание уделяется небольшим объектам (размером менее 512 байт), которые чаще всего встречаются и труднее всего оптимизировать. 😳 Оптимизация cgo и системных вызовов Ранее существовал специальный режим _Psyscall, активируемый при выполнении системных вызовов или обращений через cgo. Этот режим был исключён из Go 1.26. Вместо него система отслеживает непосредственно текущее состояние горутины, выполняемой конкретным процессором, чтобы определить, происходит ли сейчас выполнение системного вызова. 😱 Профайлинг утечек горутин Версия Go 1.26 вводит новый инструмент профилирования goroutineleak, позволяющий выявлять утечки горутин прямо в рабочей среде приложения. Рассмотрим пример его использования: func main() { prof := pprof.Lookup("goroutineleak") leak() time.Sleep(50 * time.Millisecond) prof.WriteTo(os.Stdout, 2) // … } Результатом будет вывод точного стектрейса, указывающего на причину возникшей утечки. Принцип работы профиля goroutineleak основан на анализе зависших горутин, оставшихся неиспользованными в ходе этапа маркировки сборщика мусора. Сначала учитываются активные горутины и все доступные синхронные объекты, далее добавляются зависшие горутины, ожидающие освобождения соответствующих ресурсов. Оставшиеся заблокированные горутины являются потенциальными источниками утечек. 😱 Обновление команды go fix Команда go fix, долгое время оставаясь практически бесполезной для устаревших версий языка, получила вторую жизнь. В Go 1.26 она была переработана и основана на новом фреймворке анализа Go code, аналогичном инструменту go vet. 🌹В заключение Здесь приведены лишь некоторые интересные изменения, которые меня привлекли, однако существует целый ряд других улучшений, повышающих удобство разработки на Go. Несмотря на многочисленные мелкие обновления последних лет, разработчики языка снова порадовали нас интересными нововведениями, показывая, что Go активно развивается и остаётся перспективным языком программирования
119
просмотров
2659
символов
Да
эмодзи
Да
медиа

Другие посты @devs_inc

Все посты канала →
👍 Обновление в Go версии 1.26! Хоть я и разработчик на Go, — @devs_inc | PostSniper