Выпуск Go 1.25 — DWARF5, более строгая семантика проверки nil, эксперимент с jsonv2 и изменения в инструментальной цепочке

GoИнструментыБэкэнд

Ключевое обновление

Go 1.25 (выпущен 12 августа 2025 года) является практическим релизом, который влияет на разработчиков, а не просто очередным незначительным обновлением. Релиз вводит вывод отладки DWARF-5 и параметры компоновщика, которые уменьшают размер бинарных файлов и время компоновки для больших программ, исправляет давнюю ошибку компилятора, которая теперь обеспечивает правильные проверки указателей nil (что может привести к панике в ранее работающем, но некорректном коде), завершает поддержку конкурентного тестирования synctest и предоставляет экспериментальную высокопроизводительную реализацию encoding/json/v2 под флагом GOEXPERIMENT=jsonv2. Инструментальная цепочка также изменяет некоторые значения по умолчанию: AddressSanitizer теперь по умолчанию включает обнаружение утечек при выходе из программы, команда go будет создавать меньше предустановленных вспомогательных бинарных файлов, а новые анализаторы vet (например, waitgroup и hostport) помогут выявить распространенные ошибки в конкурентности и сетевом взаимодействии.

Почему это важно

Исправление указателя nil является изменением с высоким риском в реальном мире: код, который некорректно использовал значения, полученные до проверки ошибки, теперь может вызвать панику; это требует запуска вашего набора тестов и CI под Go 1.25 для выявления регрессий и их исправления (переместите проверки ошибок на более ранние этапы или рефакторинг). DWARF-5 и параметры компоновщика значительно ускоряют сборки отладки и уменьшают размер символов для больших сервисов и монорепозиториев, улучшая время итерации разработчиков и стоимость CI. Эксперимент с jsonv2 обеспечивает значительно более быстрое декодирование во многих рабочих нагрузках; стоит попробовать в стадии тестирования для сервисов с большим объемом JSON, поскольку поведение немного отличается, и текст ошибок может измениться. Значение по умолчанию для обнаружения утечек ASAN может сломать тесты, которые зависят от того, что C-выделения не освобождаются; при необходимости настройте ASAN_OPTIONS в CI. Новые анализаторы vet и synctest упрощают выявление ошибок конкурентности на более ранних этапах. Действия: зафиксируйте инструментальную цепочку в CI, запускайте полные наборы тестов под Go 1.25 (и попробуйте GOEXPERIMENT=jsonv2 в контролируемой среде), включите новые анализаторы vet и проведите аудит кода, который зависит от хаков len/cap, шаблонов unsafe.Pointer или отложенных проверок ошибок.

Источник

Читать дальше