‹ BackHN Continuity

Thread

Platform-independent SIMD in Go

414 points · 152 comments · yurivish

  1. u8 · · focus · HN ↗
    This is why I love Go. Nobody was asking for this, but they took the time to do it right and continue to Push go as a memory safe, high-level systems language.
    1. physicsguy · · focus · HN ↗
      People were definitely asking for it.
      1. typical182 · · focus · HN ↗
        It's been discussed for a long time, and the related proposals were heavily upvoted, including various older proposals.

        As I understand it, part of the reason it took a while is that the core Go team was generally of the opinion that doing user-facing SIMD APIs the right way was to design a high-level, cross-platform API that would stand the test of time, and that was then punted a few times given its complexity and need to do other things.

        Part of what helped the current approach take off was switching to a philosophy of designing a lower-level architecture-dependent API first (the 'simd/archsimd' package), and then later doing a higher-level portable API (the 'simd' package, which is topic of this blog post).

        That two-level approach I think also gave some additional freedom for the design and implementation of the friendlier / high-level 'simd' package, including because the lower-level 'simd/archsimd' package is available for people who need or want to drop down.

        It's a nice design.

        1. senderista · · focus · HN ↗
          Layered API design is a great way to resolve ergonomics/performance tradeoffs.
Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.