✨В Купер.тех язык разработки Go — один из ключевых: на нём работают десятки наших сервисов, а количество разработчиков в компании постоянно растёт. Поэтому мы внимательно следим за обновлениями экосистемы.
Август принёс новую версию Go 1.25. Релиз в этот раз оказался богат на эксперименты: JSON v2, пакет для тестирования конкурентного кода, новый сборщик мусора. Как всегда много улучшений для инструментов и рантайма.
Наш разработчик Всеволод Охрин уже разобрался, что нового завезли — и делится самым интересным.
🟢JSON 2.0
Новый взгляд на работу json c разделением на семантический и синтаксический API.
Выставляйте переменную GOEXPERIMENT=jsonv2 при сборке и пользуйтесь двумя новыми пакетами стандартной библиотеки (encoding/json/v2 и encoding/json/jsontext)
Для подробностей читайте официальный proposal, либо смотрите запись доклада с GopherCon.
🟢Тecтирование времени
Новый пакет testing/synctest содержит функцию Test, создающую «временной пузырь», возвращающий назад в 2000-й год (жаль, что не 2007-й). Внутри время движется, только если все горутины заблокированы, что позволяет наконец явно тестировать конкурентный код. Примеры можно посмотреть по ссылке.
🟢FlightRecorder для трейсов
Новый runtime/trace.FlightRecorder API позволяет «на лету» осуществлять трассировку в памяти и сохранять данные, только когда это действительно нужно — что значительно снижает затраты на отладку событий, происходящих редко.
🟢GOMAXPROCS умеет в контейнеры
В Linux рантайм теперь учитывает CPU-лимиты, заданные в cgroup при вычислении дефолтного значения GOMAXPROCS, а также обновляет значение прямо во время работы.
🟢Green Tea
Новый экспериментальный сборщик мусора. Под переменной GOEXPERIMENT=greenteagc. Подробности тут.
🟢Make Go Great Again
Обновление в The Go Programming Language Specification.
Полностью исключили концепцию Core Types, теперь осталось только убрать дженерики😁