Команда Go объявила о релизе версии 1.26. Обновление затрагивает синтаксис языка, систему типов, сборщик мусора, компилятор и стандартную библиотеку.

Изменения в языке

В Go 1.26 переработана встроенная функция new. Теперь в неё можно передавать выражение, задающее начальное значение переменной.

Ранее код выглядел так:

x := int64(300)
ptr := &x

Теперь его можно сократить до:

ptr := new(int64(300))

Кроме того, обобщённые типы получили возможность ссылаться на самих себя в списке параметров типа. Это упрощает реализацию сложных структур данных и интерфейсов без обходных конструкций.

Производительность

Экспериментальный ранее сборщик мусора Green Tea включён по умолчанию.

Базовые накладные расходы cgo снижены примерно на 30%.

Компилятор чаще размещает backing store для срезов на стеке, что уменьшает давление на GC и ускоряет выполнение.

Инструменты

Команда go fix полностью переписана на базе Go analysis framework. В неё добавлены несколько десятков «modernizers» — анализаторов, предлагающих безопасные правки для использования новых возможностей языка и стандартной библиотеки.

Также появился анализатор inline. Он пытается инлайнить вызовы функций, помеченных директивой //go:fix inline.

Стандартная библиотека и экспериментальные возможности

В стандартную библиотеку добавлены новые пакеты:

  • crypto/hpke

  • crypto/mlkem/mlkemtest

  • testing/cryptotest

Часть нововведений доступна только при явном включении:

  • simd/archsimd — экспериментальный пакет для операций SIMD.

  • runtime/secret — механизм безопасного затирания временных данных, используемых при работе с секретной информацией.

  • профиль goroutineleak в runtime/pprof — отчёт об «утёкших» горутинах.

Эти функции находятся в экспериментальной стадии и могут измениться в следующих релизах.

Релиз 1.26 также включает изменения в рантайме, компиляторе, линкере, портах под разные платформы и обновления переменных GODEBUG. Полный список доступен в официальных release notes.

Русскоязычное Go сообщество

Друзья! Эту статью подготовила команда «Go for Devs» — сообщества, где мы делимся практическими кейсами, инструментами для разработчиков и свежими новостями из мира Go. Подписывайтесь, чтобы быть в курсе и ничего не упустить!