Вышел go 1.25
1. GOMAXPROCS стал «умнее» в контейнерах
Теперь GOMAXPROCS (количество потоков, используемых рантаймом) автоматически учитывает ограничения CPU в cgroup.
Например, если контейнер в Kubernetes получил лимит в 2 CPU, Go сам подстроится, даже если на узле 64 ядра.
Плюс, если лимиты или доступные ядра изменятся на лету, Go сможет обновить GOMAXPROCS без перезапуска.
2. Новый экспериментальный сборщик мусора
Добавили greenteagc — переработанный GC, который лучше работает с мелкими объектами и масштабируется на многоядерных системах.
В реальных проектах можно ожидать -10–40% накладных расходов на сборку мусора. Включается через:
GOEXPERIMENT=greenteagc
3. «Чёрный ящик» для редких багов
Появился Flight Recorder для трассировки исполнения. (можно записать в файл последние пару секунд runtime execution trace)
4. Новая JSON-библиотека (эксперимент)
Появился encoding/json/v2, в котором:
Декодирование стало заметно быстрее.
Есть новые опции настройки маршалинга/анмаршалинга.
Поведение при маршалинге совместимо с текущим пакетом, но тексты ошибок могут отличаться.
Включается так:
GOEXPERIMENT=jsonv2 (тогда encoding/json будет работать по-новому)
5. Инструменты разработки стали удобнее
go build -asan теперь по умолчанию ищет утечки памяти, выделенной через C.
Новый флаг go doc -http поднимет локальный сервер документации и откроет его в браузере.
Появилась директива ignore в go.mod для исключения каталогов из сборки.
go vet научился ловить ошибки в sync.WaitGroup и неправильно собранные адреса для IPv6.
6. Улучшения в тестировании конкурентного кода
Пакет testing/synctest теперь доступен без экспериментов — можно писать тесты для многопоточного кода с виртуальным временем, без ожидания в реальном времени.
А sync.WaitGroup получил метод .Go, который упрощает запуск горутин с подсчётом.
И многое другое
🫥 Cross Join - канал о разработке
Post #515
3.78K
- 🔥 13
- ❤ 1