Сегодня команда 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 максимально стабильным. Если вы заметите какие-либо проблемы, пожалуйста, сообщите о них через систему отслеживания проблем.