xtensor-stack

xtensor-stack/xsimd

C++ BSD-3-Clause Dev Tools

C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, AVX512, NEON, SVE, WebAssembly, VSX, RISC-V))

2.7k stars
304 forks
active
GitHub +3 / week

2.7k

Stars

304

Forks

55

Open issues

30

Contributors

AI Analysis

xsimd is a C++ library providing unified wrappers around SIMD intrinsics (SSE, AVX, AVX-512, NEON, SVE, WebAssembly, VSX, RISC-V), enabling developers to write portable vectorized code across architectures. It serves library and systems developers who need to optimize numerical computations with batch operations while maintaining cross-platform compatibility. It is not a general-purpose library for application developers but rather a specialized tool for those building performance-critical C+...

Dev Tools Library Discovery value: 5/10
Documentation 8/10
Activity 9/10
Community 8/10
Code quality 8/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

simd-optimization vectorization cross-platform c++ numerical-computing
Actively maintained Well documented Niche/specialized use case Production ready
Deep Analysis · Based on README and public signals
4d ago

Portable SIMD abstraction layer for C++, adopted by Firefox and Apache Arrow, maintains steady momentum

xsimd is a C++ header-only library providing unified wrappers for SIMD intrinsics (SSE, AVX, AVX512, NEON, SVE, WebAssembly, VSX, RISC-V). It abstracts away vendor-specific intrinsics and provides batched arithmetic and optimized math functions. Adoption includes Mozilla Firefox, Apache Arrow, Pythran, and Krita. It occupies the middle ground between low-level compiler intrinsics and higher-level frameworks, enabling library authors to write portable vectorized code without manual SIMD conditionals.

Origin

Started in 2016 as a series of blog posts by Johan Mabille on SIMD wrapper design. V8.0 (2021) marked a complete rewrite. The math function implementation derives from the deprecated boost.SIMD project. Hosted within the xtensor-stack ecosystem but independently usable.

Growth

Project gained modest but consistent traction since 2016. Recent activity (last push 2026-06-27) shows sustained maintenance. Stars plateaued around 2,700, which reflects its specialized niche rather than rapid user acquisition. Adoption by major projects (Firefox, Arrow) suggests production credibility exceeds raw star count. No evidence of explosive recent growth; instead reflects steady ecosystem integration.

In production

README explicitly names four major adoptions: Mozilla Firefox, Apache Arrow, Pythran, and Krita. These are credible, production-grade projects. However, README does not provide deployment scale, performance data, or user count. Adoption is verified but not quantified. Conda-forge and Spack availability indicate packaging maturity and accessibility to mainstream C++ developers.

Code analysis
Architecture

Appears to be a header-only C++ template library providing a unified API over diverse SIMD backends. Based on README, supports C++14+. Extensive CI matrix (Android, x86, ARM SVE, RISC-V, WebAssembly, PowerPC, s390x) suggests architecture is backend-agnostic with per-platform implementations. Likely uses preprocessor branching and template specialization to select target instruction sets at compile time.

Tests

Not documented in README. CI workflows listed (android, linux, macos, windows, cross-rvv, cross-sve, emscripten, cxx-no-exceptions, cxx-versions) suggest comprehensive platform testing, but test suite scope and coverage percentages not disclosed.

Maintenance

Last push 2026-06-27 (10 days before analysis date) indicates active maintenance. Multiple active CI workflows in action logs. Project appears to be under active stewardship, not stagnant. Growth is slow but deliberate; compatible with a mature, stable library model rather than abandonment.

Honest verdict

ADOPT IF: you are writing a C++ library that must vectorize computation and target multiple ISA families (x86, ARM, RISC-V, WebAssembly) without manual intrinsic branching. ADOPT IF your team values broad compiler/platform support (C++14+, MSVC, gcc, clang) and vendor adoption signals (Firefox, Arrow). AVOID IF you need cutting-edge C++ features (C++20+ coroutines, concepts) or are locked into a single vendor ecosystem. AVOID IF your bottleneck is a specialized domain (e.g., sorting, ML ops) with libraries already optimized at lower levels. MONITOR IF you are evaluating between xsimd, Highway, and Eve; all three are maturing concurrently and ecosystem preference may shift.

Independent dimensions

Mainstream potential

4/10

Technical importance

7/10

Adoption evidence

6/10

Risks
  • Header-only libraries can increase compile times and binary size; not always documented.
  • Performance portability across ISAs is difficult; xsimd abstracts but does not guarantee equivalent performance per platform.
  • Adoption by Firefox and Arrow is credible but limited to those specific projects; widespread adoption across C++ ecosystem not evident.
  • Math function implementations are described as 'lightweight'; performance may lag domain-specific libraries (e.g., MKL, BLAS).
  • C++14 floor may become a liability as industry migrates to C++17/20; xsimd's position relative to modern C++ SIMD abstractions unclear.
Prediction

xsimd likely remains a stable, niche-but-important library for C++ library authors needing portable SIMD. It will neither dominate (mainstream adoption signals are weak) nor decline (production use by major projects sustains it). Slow growth and incremental releases are sustainable for its use case. Risk: modern SIMD abstractions (C++20, std::simd) may eventually reduce demand.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

C++
98%
CMake
0.9%
Shell
0.8%
Jupyter Notebook
0.2%
Python
0.1%
HTML
0%

Information

Language
C++
License
BSD-3-Clause
Last updated
17h ago
Created
126mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Recent releases

No releases published yet.

Similar repos

ermig1979

ermig1979/Simd

Simd Library is a high-performance C/C++ image processing and machine learning...

2.3k C++ AI & ML
VcDevel

VcDevel/Vc

Vc is a C++ library providing SIMD vector types for explicit data-parallel...

1.5k C++ Dev Tools
google

google/highway

Highway is a C++ library providing performance-portable SIMD/vector intrinsics...

5.7k C++ Dev Tools
jfalcou

jfalcou/eve

EVE is a C++20 header-only SIMD library providing type-safe, expressive...

1.4k C++ Dev Tools
numpy

numpy/x86-simd-sort

A C++ template library providing high-performance SIMD-accelerated sorting...

vs. alternatives
google/highway

Higher star count (5656 vs 2718); same problem domain. Highway is newer, backed by Google, and may have broader ecosystem visibility. xsimd has longer history and deeper ARM/exotic architecture support. Both are viable; choice depends on feature set and integration preferences.

jfalcou/eve

Eve (1353 stars) is another portable SIMD abstraction. Eve appears to target C++20+ and may lean more toward modern C++ idioms. xsimd targets C++14+, broader compiler support. Eve's adoption surface not documented in public analysis; xsimd's is.

ermig1979/Simd

Simd (2256 stars) is a C++ SIMD library with lower-level focus and fewer platform targets listed. xsimd appears to have broader architecture support (SVE, RISC-V, s390x) and tighter library-author ergonomics.

numpy/x86-simd-sort

Specialized for sorting; not a general SIMD abstraction. Complementary rather than competitive.

Low-level compiler intrinsics (hand-written SSE/AVX code)

xsimd eliminates tedious platform branching and provides portability. Hand-coding remains necessary for extreme performance tuning but is labor-intensive and error-prone. xsimd is the abstraction layer above this.