От экспериментов к стандартизации
Разработка высокопроизводительных вычислений в 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.26 | x86_64 | AVX | Экспериментальный API |
| Go 1.27 | ARM64 | NEON | Добавлена поддержка |
| Go 1.27 | Кроссплатформенный | Unified Interface (на базе Google Highway) | Новый стандарт |
| Go 1.28 (план) | ARM | SVE | В разработке |
| Текущий | WebAssembly | WASM SIMD | Поддерживается |
Почему это важно для разработчиков
До появления единого интерфейса разработчикам приходилось писать раздельные реализации для x86 и ARM, что усложняло поддержку кода. Новый подход, моделируемый вокруг Google Highway, решает проблему «разнообразия реализаций» и «различий в поведении» между архитектурами. Это открывает путь к созданию высокопроизводительных библиотек (например, для криптографии или обработки изображений), которые будут работать одинаково быстро на серверах x86, мобильных устройствах ARM и в браузерах через WASM.
Источник: Phoronix ↗
