conv.

All stories
TechQuiet 47h · day 3

Go 1.27 adds platform-independent SIMD API

Go introduces experimental portable SIMD interface supporting multiple architectures with near-assembly performance and fallback emulation.

What to know

  • Go 1.27 introduces an experimental portable SIMD package that abstracts CPU architecture differences (amd64 AVX/AVX2/AVX512, arm64 NEON/SVE, wasm), allowing write-once code that runs across platforms with near-assembly performance.
  • The portable API accepts ~11% performance penalty versus architecture-specific intrinsics but still delivers ~5x speedup over scalar computation and includes efficient emulation for platforms without native SIMD.
  • Developers report practical gains: speech-to-text/text-to-speech models show measurable improvements, and the API handles both fixed-size vectors (128–512 bits) and variable-size architectures like RISC-V and Arm SVE.
  • The feature addresses a longstanding gap in Go—previously only assembly offered SIMD access—and positions Go competitively alongside recent C++ std::simd and Mojo implementations for performance-critical workloads.
most voices

This is a major win for Go's ecosystem that opens doors for database and performance-critical workloads.

  • “This will welcome more database/warehouses to be written in Go.”

    vira28 · Hacker News ↗
many voices

Portable SIMD (with ~11% penalty) is practical for real work and fills a long-standing gap in language support.

  • “I can anecdotally say the SIMD work made a measurable improvement in the performance of the calculations vs. just plain Go.”

    sixdimensional · Hacker News ↗
some voices

Go's SIMD complements existing low-level work and existing high-performance solutions.

  • “I am using Go assembly for SIMD very heavily in [project], this is just icing on the cake.”

    rcarmo · Hacker News ↗

Go team Language maintainers

Go 1.27 adds platform-independent SIMD API
go.dev

How it unfolded 2 developments, newest first · click a bar or a number to jump articlespostscomments

Peak 4 pieces in one hour at Sep 25, 7 AM; 20 pieces over 3 days (3 articles · 5 posts · 12 comments) Sep 24, 4 PM — 1 piece · 1 post — Lobsters 1Sep 24, 5 PM — 1 piece · 1 post — Hacker News 1Sep 24, 6 PM — quietSep 24, 7 PM — quietSep 24, 8 PM — quietSep 24, 9 PM — quietSep 24, 10 PM — quietSep 24, 11 PM — quietSep 25, 12 AM — quietSep 25, 1 AM — quietSep 25, 2 AM — quietSep 25, 3 AM — quietSep 25, 4 AM — quietSep 25, 5 AM — 1 piece · 1 article — Newswires 1Sep 25, 6 AM — quietSep 25, 7 AM — 4 pieces · 2 articles · 1 post · 1 comment — Newswires 2, Hacker News 2Sep 25, 8 AM — quietSep 25, 9 AM — 1 piece · 1 comment — Hacker News 1Sep 25, 10 AM — 4 pieces · 1 post · 3 comments — Hacker News 3, Mastodon 1Sep 25, 11 AM — quietSep 25, 12 PM — 4 pieces · 1 post · 3 comments — Hacker News 3, Mastodon 1Sep 25, 1 PM — 2 pieces · 2 comments — Hacker News 2Sep 25, 2 PM — quietSep 25, 3 PM — 1 piece · 1 comment — Hacker News 1Sep 25, 4 PM — quietSep 25, 5 PM — quietSep 25, 6 PM — 1 piece · 1 comment — Hacker News 1Sep 25, 7 PM — quietSep 25, 8 PM — quietSep 25, 9 PM — quietSep 25, 10 PM — quietSep 25, 11 PM — quietYesterday, 12 AM — quietYesterday, 1 AM — quietYesterday, 2 AM — quietYesterday, 3 AM — quietYesterday, 4 AM — quietYesterday, 5 AM — quietYesterday, 6 AM — quietYesterday, 7 AM — quietYesterday, 8 AM — quietYesterday, 9 AM — quietYesterday, 10 AM — quietYesterday, 11 AM — quietYesterday, 12 PM — quietYesterday, 1 PM — quietYesterday, 2 PM — quietYesterday, 3 PM — quietYesterday, 4 PM — quietYesterday, 5 PM — quietYesterday, 6 PM — quietYesterday, 7 PM — quietYesterday, 8 PM — quietYesterday, 9 PM — quietYesterday, 10 PM — quietYesterday, 11 PM — quietToday, 12 AM — quietToday, 1 AM — quietToday, 2 AM — quietToday, 3 AM — quietToday, 4 AM — quietToday, 5 AM — quietToday, 6 AM — quietToday, 7 AM — quietToday, 8 AM — quietToday, 9 AM — quietToday, 10 AM — quietToday, 11 AM — quietToday, 12 PM — quietToday, 1 PM — quietToday, 2 PM — quietToday, 3 PM — quietToday, 4 PM — quietToday, 5 PM — quiet 12
Sep 25yesterdaytodaynow · 6:30 PM ET
  1. background

    Go blog publishes platform-independent SIMD design — The Go team publishes a blog post detailing experimental SIMD APIs introduced in Go 1.26 and 1.27. Go 1.26 added amd64 SIMD support; Go 1.27 extends this with arm64 (NEON) and wasm APIs, plus a new portable simd package that abstracts platform differences and works across fixed-size and variable-size vector architectures.

  2. 2

    Developer reports measurable SIMD performance gains in speech model project

    A developer shares experience testing experimental SIMD on speech-to-text and text-to-speech models running natively in Go, reporting measurable performance improvements from SIMD versus plain Go.

    “I don't have formal benchmarks for that, but I can anecdotally say the SIMD work made a measurable improvement in the performance of the calculations vs. just plain Go.”
    — sixdimensional
    • Very neat, and comes pretty close to how Mojo handles portable SIMD.It's great to see two of my favorite languages finally making SIMD easy to use. It's such low-hanging fruit for performance, yet somehow languages have ignored it for years. Portable SIMD, even with some performance penalty, still beats scalar computation whenever vector…

      melodyogonnaHacker News2d agoview on Hacker News ↗
    2 more of the top 3 · 7 posts in this stretch
    • I did some testing with the experimental SIMD on a project I was doing to make speech-to-text and text-to-speech models run natively in Go (with CGO_ENABLED=0, so no C depenencies), and testing non-SIMD w/ SIMD.I don't have formal benchmarks for that, but I can anecdotally say the SIMD work made a measurable improvement in the performance of the…

      sixdimensionalHacker News2d agoview on Hacker News ↗
    • > The new simd package hides these differences by removing fixed-size vectors from the type system, and by only supporting those operations that are in the intersection of all the different platforms, and fills gaps in the intersection with efficient emulation in terms of other SIMD instructions.The intersection would be the operations supported…

      ghusbandsHacker News2d agoview on Hacker News ↗
    all of them →
  3. 1

    ImJasonH benchmarks portable SIMD performance

    A developer releases a wasm-based image palette-swap tool demonstrating portable SIMD versus architecture-specific and non-SIMD implementations, showing portable SIMD is ~11% slower than non-portable but ~5x faster than scalar operations.

    “Portable SIMD is ~11% slower than non-portable SIMD in this case, but both are ~5x faster than non-SIMD.”
    — ImJasonH
    • https://imjasonh.github.io/playground/palette-swap/ swaps colors in a provided image in wasm, entirely locally in your browser, to benchmark portable SIMD vs non-portable archsimd vs non-SIMD.Portable SIMD is ~11% slower than non-portable SIMD in this case, but both are ~5x faster than non-SIMD.

      ImJasonHHacker News2d agoview on Hacker News ↗
    2 more of the top 3 · 5 posts in this stretch
    • This feature opens many doors for optimizing low-level performance in Go projects, that are already running multicore. IIRC there aren’t a lot of languages with built-in std lib support for SIMD and variants. Love the way Go is trying new stuff lately.

      qprofyehHacker News2d agoview on Hacker News ↗
    • This will welcome more database/warehouses to be written in Go.Personally I will implement it in

      vira28Hacker News2d agoview on Hacker News ↗
    all of them →

Also covered reported alongside — the timeline has no entry for these yet

  1. first by Phoronix, 2d ago · also HN Best, HN Frontpage

    1 more headline

What people are saying 6 voices from 1 site · best of 12 · verbatim