Сегодня команда Go рада объявить о выпуске Go 1.24! Вы можете скачать новую версию на странице загрузок.
Что нового в Go 1.24?
Go 1.24 предлагает множество улучшений по сравнению с версией 1.23. Вот некоторые из ключевых изменений (полный список доступен в примечаниях к релизу):
Изменения языка
Go 1.24 теперь полностью поддерживает обобщенные псевдонимы типов: псевдоним типа может быть параметризован так же, как определенный тип. Подробности можно найти в спецификации языка.
Улучшения производительности
Несколько улучшений в среде выполнения снизили среднюю нагрузку на CPU на 2–3% в наборе репрезентативных тестов. Эти улучшения включают:
- Новую встроенную реализацию карт на основе Swiss Tables.
- Более эффективное выделение памяти для небольших объектов.
- Новую внутреннюю реализацию мьютексов.
Улучшения инструментов
Команда go
теперь предоставляет механизм для отслеживания зависимостей инструментов для модуля. Используйте go get -tool
, чтобы добавить директиву инструмента в текущий модуль, и go tool [имя инструмента]
для запуска инструментов, объявленных через директиву tool
.
Новый анализатор тестов в подкоманде go vet
помогает находить распространенные ошибки в объявлениях тестов, фаззеров, бенчмарков и примеров. Подробнее читайте в примечаниях к релизу.
Добавления в стандартную библиотеку
Стандартная библиотека теперь включает новые механизмы для обеспечения соответствия стандарту FIPS 140-3. Приложениям не требуются изменения исходного кода для использования новых механизмов с одобренными алгоритмами. Кроме того, несколько пакетов из модуля x/crypto
теперь доступны в стандартной библиотеке.
Теперь бенчмарки могут использовать более быстрый и менее подверженный ошибкам метод testing.B.Loop
для выполнения итераций вместо традиционных циклов с b.N
.
Новый тип os.Root
позволяет выполнять операции с файловой системой, изолированные в определенной директории.
В runtime добавлен новый механизм финализации runtime.AddCleanup
, который более гибкий, эффективный и менее подвержен ошибкам по сравнению с runtime.SetFinalizer
.
Улучшенная поддержка WebAssembly
Go 1.24 добавляет новую директиву go:wasmexport
для экспорта функций в хост WebAssembly, а также поддерживает сборку программы Go как WASI реактора/библиотеки.
Благодарности
Мы благодарим всех, кто внес свой вклад в этот релиз: написал код и документацию, сообщил о багах, поделился обратной связью и протестировал кандидатов в релизы. Ваши усилия помогли сделать Go 1.24 максимально стабильным. Если вы заметите какие-либо проблемы, пожалуйста, сообщите о них через систему отслеживания проблем.