Первый пост в этом году будет посвещен выходу Go 1.26!
Официальные релизноты довольно скудны на детализацию и приходится изучать глубже. Я в процессе последних правок статьи для habr к которой шел несколько месяцев! Изменения затрагивают runtime, компилятор, стандартную библиотеку и поддержку платформ. Команда Go сосредоточилась на производительности и удобстве разработки.
Главное изменение: Green Tea становится сборщиком мусора по умолчанию. Алгоритм разрабатывался с 2018 года и прошёл обкатку в Go 1.25. Благодаря этому улучшается работа с кэшем процессора, а нагрузка на CPU при сборке мусора снижается от 10% до 40% на реальных задачах.
На уровне языка функция
new() теперь теперь принимает произвольные выражения. Это означает, что больше не нужны вспомогательные функции вроде StringPtr() для создания указателей на примитивы.В стандартной библиотеке появились новые пакеты. Пакет
crypto/hpke реализует Hybrid Public Key Encryption по RFC 9180 с поддержкой постквантовых алгоритмов. Экспериментальный simd/archsimd открывает доступ к SIMD-инструкциям процессора. А runtime/secret обеспечивает гарантированное затирание секретных данных из памяти, что важно для безопасной работы с ключами и паролями.Криптографические пакеты также обновлены. Постквантовые key exchanges включены по умолчанию в TLS. Добавлены интерфейсы
Encapsulator и Decapsulator для работы с KEM-алгоритмами. Многие функции теперь используют детерминированную генерацию случайных чисел, что упрощает тестирование.Есть изменения, влияющие на совместимость. Удалён 32-битный порт Windows ARM, FreeBSD riscv64 помечен как broken, macOS 12 Monterey поддерживается последний раз. Кроме того, несколько GODEBUG-настроек будут удалены в Go 1.27, поэтому стоит проверить код на использование устаревших флагов.
Статья будет разбира на несколько основных групп, в которых рассмотрены все изменения с примерами кода и бенчмарками (где это было возможно и хватило сил и мотивации).
К этой статье я шел несколько месяцев, по этому надеюсь проделанный труд будет полезен сообществу. Выложу я её уже на этой неделе и в ТГ дам анонс!
Релиз ноты: https://go.dev/doc/go1.26
