# Getting explicit SIMD on stable Rust

**URL:** <https://internals.rust-lang.org/t/getting-explicit-simd-on-stable-rust/4380>\
**Category:** Uncategorized\
**Created:** [November 14, 2016, 1:26am UTC](https://internals.rust-lang.org/t/getting-explicit-simd-on-stable-rust/4380 "2016-11-14T01:26:36Z")\
**Posts on this page:** 1\
**Showing post:** 209

<div class="post-metadata">

**Author:** ![krdln](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/krdln/32/7081_2.png) [@krdln](https://internals.rust-lang.org/u/krdln)\
**Post date:** [December 1, 2016, 9:40pm UTC](https://internals.rust-lang.org/t/getting-explicit-simd-on-stable-rust/4380/209 "2016-12-01T21:40:56Z")

</div>

> [@burntsushi](#):
>
> What all of this means is that we can punt on the Rusty API for now and move forward only with the vendor defined intrinsic interfaces. The Rust API can **come later.**

I'm afraid that stabilizing vendor intrinsics first, and a Rustic cross-platform API later may lead to lots of non-cross-platform SIMD code being produced in the period when the only stable way to use SIMD in Rust is via platform-specific intrinsics. To make it harder for people to fall into that pit of non-cross-platform code, I think that Rust has to have a cross-platform SIMD API (at least for simple things like add, mul, cmd and shuffle) ready at the very moment of stabilising platform intrinsics.

> [@burntsushi](#):
>
> We are almost 2 years after Rust 1.0 without stable SIMD support precisely because nobody can agree on what that higher level API looks like in Rust. Actually, that's probably not quite accurate. Possibly the issue is that Rust the language doesn't quite have everything we need to make the "best" SIMD API.

The first Rust API doesn't have to be perfect. It should just allow simple cross-platform SIMD to be possible. It could be just a bunch of opaque types like `i32x4` with no public fields and all simd operations available through methods. It could be inside a `std::simd::v1` module, which could be just deprecated if the better SIMD abstraction comes up (eg. maybe when the type system evolves to have type-level integers).

---

_[View the full topic](https://internals.rust-lang.org/t/getting-explicit-simd-on-stable-rust/4380)._
