Вышел Go 1.24
обеспечена полная поддержка обобщённых псевдонимов типов (generic type alias) — псевдоним типа может быть параметризирован, как и впервые определяемый тип (при определении псевдонима типа теперь допускается указание параметров типа);
внесены оптимизации в runtime, которые привели к снижению нагрузки на процессор на 2–3% при проведении типовых тестов производительности. Среди внесённых оптимизаций: новая встроенная реализация операции map, основанная на использовании хэш‑таблиц Swiss Table; повышение эффективности использования памяти при размещении мелких объектов; новая реализация mutex, встроенная в runtime;
в команду go для Go‑модулей добавлен механизм отслеживания исполняемых зависимостей (вспомогательных инструментов, написанных на языке Go и используемых при разработке модуля, например, linter‑ов или утилит для форматирования кода). Определение утилит в файле go.mod производится через директиву tool, для добавления которой в текущий модуль предложена команда go get ‑tool (например, go get ‑tool golang.org/x/tools/cmd/stringer). Для запуска утилиты, указанной в директиве tool, добавлена команда «go tool имя_утилиты»;
в команды go build и go install добавлена опция ‑json для вывода в формате JSON;
добавлена переменная окружения GOAUTH для задания параметров аутентификации, необходимых для извлечения модулей, доступ к которым ограничен.
в команде go vet реализован новый анализатор тестов (test analyzer), выявляющий типовые ошибки при включении тестов, fuzzing‑инструментов, утилит проверки производительности и примеров приложений;
в стандартную библиотеку включены реализации криптоалгоритмов, одобренных в стандарте безопасности FIPS 140–3;
в пакет testing добавлен метод B.Loop для выполнения тестов производительности. Применение for b.Loop() {... } вместо обычных циклов позволяет исключить выполнение компилятором полной оптимизации тела цикла и вынести из цикла стадии настройки и очистки теста;
добавлен тип os.Root, позволяющий изолировать операции с файловой системой заданным каталогом;
в runtime добавлен новый механизм финализации runtime.AddCleanup, более гибкий и эффективный, чем runtime.SetFinalizer;
добавлен пакет weak c реализацией слабых указателей, которые не владеют объектом, не увеличивают счётчик ссылок и не препятствуют освобождению объекта;
добавлены пакеты crypto/mlkem с реализацией криптоалгортимов ML‑KEM-768 и ML‑KEM-1024 (Kyber), стойких для подбора на квантовом компьютере; crypto/hkdf c реализацией функции формирования ключа на базе HMAC (RFC 5869); crypto/pbkdf2 c реализацией функции формирования ключа на базе пароля (PBKDF2, RFC 8018); crypto/sha3 c реализацией хэшей SHA-3;
добавлен экспериментальный пакет testing/synctest с функциями для тестирования многопоточности;
улучшена поддержка WebAssembly. Добавлена возможность сборки Go‑приложений в форме библиотеки или обработчика WASI (WebAssembly System Interface). Реализована директива go:wasmexport для экспорта функций для использования в WebAssembly;
в утилиту objdump добавлена поддержка дизассемблирования для архитектур LoongArch (GOARCH=loong64), RISC‑V (GOARCH=riscv64) и S390X (GOARCH=s390x).