Инструменты25 сентября 2026 г., 13:19 МСК🤖 Auto

Go 1.27+: Единый интерфейс SIMD для x86, ARM и WASM

В Go 1.27 представлен кроссплатформенный API для SIMD, основанный на Google Highway, а в планах на Go 1.28 — поддержка Arm SVE.

Баннер новости 8258

От экспериментов к стандартизации

Разработка высокопроизводительных вычислений в Go переходит на новый уровень. Начиная с версии Go 1.26, язык получил экспериментальные API для работы с SIMD-инструкциями, изначально сфокусированные на архитектуре x86_64 (поддержка AVX). Следующий релиз, Go 1.27, расширил эту поддержку на мир ARM, добавив инструкции NEON.

Ключевым нововведением Go 1.27 стал не просто набор инструкций, а создание полностью переносимого, независимого от платформы и размера вектора интерфейса. Этот API спроектирован по аналогии с библиотекой Google Highway, что позволяет разработчикам писать оптимизированный код, не задумываясь о специфике конкретного процессора.

Текущий и будущий охват архитектур

Сейчас пакет SIMD Go поддерживает широкий спектр инструкций, но архитектура процессоров диктует свои правила: различия в реализациях, фиксированных размерах векторов и поведении требуют абстракции. В ближайших планах команды Go — интеграция поддержки Arm SVE (Scalable Vector Extension) в версии Go 1.28.

Версия GoАрхитектура / ТехнологияКлючевые инструкцииСтатус
Go 1.26x86_64AVXЭкспериментальный API
Go 1.27ARM64NEONДобавлена поддержка
Go 1.27КроссплатформенныйUnified Interface (на базе Google Highway)Новый стандарт
Go 1.28 (план)ARMSVEВ разработке
ТекущийWebAssemblyWASM SIMDПоддерживается

Почему это важно для разработчиков

До появления единого интерфейса разработчикам приходилось писать раздельные реализации для x86 и ARM, что усложняло поддержку кода. Новый подход, моделируемый вокруг Google Highway, решает проблему «разнообразия реализаций» и «различий в поведении» между архитектурами. Это открывает путь к созданию высокопроизводительных библиотек (например, для криптографии или обработки изображений), которые будут работать одинаково быстро на серверах x86, мобильных устройствах ARM и в браузерах через WASM.

Источник: Phoronix ↗