rustfft
Library Featured
High-performance FFT library written in pure Rust.
- Downloads
- 4,266,035
- Dependents
- 571
- Stars
- 963
- Forks
- 63
- Contributors
- 19
- Commits
- 479
- Latest release
- 6.4.1 ·
About
RustFFT is a high-performance, SIMD-accelerated FFT library written in pure Rust. It can compute FFTs of any size, including prime-number sizes, in O(nlogn) time.
Usage
// Perform a forward FFT of size 1234
use rustfft::{FftPlanner, num_complex::Complex};
let mut planner = FftPlanner::<f32>::new();
let fft = planner.plan_fft_forward(1234);
let mut buffer = vec![Complex{ re: 0.0, im: 0.0 }; 1234];
fft.process(&mut buffer);
SIMD acceleration
x86_64 Targets
RustFFT supports the AVX instruction set for increased performance. No special code is needed to activate AVX: Simply plan a FFT using the FftPlanner on a machine that supports the avx and fma CPU features, and RustFFT will automatically switch to faster AVX-accelerated algorithms.
For machines that do not have AVX, RustFFT also supports the SSE4.1 instruction set. As for AVX, this is enabled automatically when using the FftPlanner. If both AVX and SSE4.1 support are enabled, the planner will automatically choose the fastest available instruction set.
Read the full README
AArch64 Targets
RustFFT supports the NEON instruction set in 64-bit Arm, AArch64. As with AVX and SSE, no special code is needed to activate NEON-accelerated code paths: Simply plan a FFT using the FftPlanner on an AArch64 target, and RustFFT will automatically switch to faster NEON-accelerated algorithms.
WebAssembly Targets
RustFFT supports the fixed-width SIMD extension for WebAssembly. Just like AVX, SSE, and NEON, no special code is needed to take advantage of this code path: All you need to do is plan a FFT using the FftPlanner.
Note: There is an important caveat when compiling WASM SIMD accelerated code: Unlike AVX, SSE, and NEON, WASM does not allow dynamic feature detection. Because of this limitation, RustFFT cannot detect CPU features and automatically switch to WASM SIMD accelerated algorithms. Instead, it unconditionally uses the SIMD code path if the wasm_simd crate feature is enabled. Read more about this limitation in the official Rust docs.
Feature Flags
x86_64 Targets
The features avx and sse are enabled by default. On x86_64, these features enable compilation of AVX and SSE accelerated code.
Disabling them reduces compile time and binary size.
On other platforms than x86_64, these features do nothing and RustFFT will behave like they are not set.
AArch64 Targets
The neon is enabled by default. On AArch64, this feature enables compilation of Neon-accelerated code.
Disabling it reduces compile time and binary size.
On other platforms than AArch64, this feature does nothing and RustFFT will behave like it is not set.
WebAssembly Targets
The feature wasm_simd is disabled by default. On the WASM platform, this feature enables compilation of WASM SIMD accelerated code.
To execute binaries compiled with wasm_simd, you need a target browser or runtime which supports fixed-width SIMD.
If you run your SIMD accelerated code on an unsupported platform, WebAssembly will specify a trap leading to immediate execution cancelation.
On other platforms than WASM, this feature does nothing and RustFFT will behave like it is not set.
Stability/Future Breaking Changes
The latest version is 6.2 - Version 5.0 was released at the beginning of 2022 and contains several breaking API changes from previous versions. For users on very old version of RustFFT, check out the Upgrade Guide for a walkthrough of the changes RustFFT 5.0 requires to upgrade. In the interest of stability, we're committing to making no more breaking changes for 3 years, aka until 2024.
This policy has one exception: We currently re-export pre-1.0 versions of the num-complex and num-traits crates. In the interest of avoiding ecosystem fragmentation, we will keep up with these crates even if it requires major version bumps. When those crates release new major versions, we will upgrade as soon as possible, which will require a major version change of our own. In these situations, the version increase of num-complex/num-traits will be the only breaking change in the release.
Supported Rust Version
RustFFT requires rustc 1.88 or newer. Minor releases of RustFFT may upgrade the MSRV(minimum supported Rust version) to a newer version of rustc. However, if we need to increase the MSRV, the new Rust version must have been released at least six months ago.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Before submitting a PR, please make sure to run cargo fmt.
Compatibility
- Runs on
- GPU support unknown
What shows it
- no dependency or feature matches a backend row
- Native code
- None found
- No native code found
- Python bindings
- No Python binding crate found
- License
- Apache-2.0 OR MIT
Compare with similar projects
Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days. ML Rust runs this catalogue, so its closest project always gets a row.
| Project | Downloads | Dependents | Stars | Latest release | Runs on (GPU) | Native code | License |
|---|---|---|---|---|---|---|---|
|
High-performance FFT library written in pure Rust. |
4,266,035 downloads over 30 days | 571 | 963 | 6.4.1 | GPU support unknown | No native code found | Apache-2.0 OR MIT |
|
statrs Featured
Statistical computing library for Rust |
4,515,476 downloads over 30 days | 444 | 839 | 0.19.1 | GPU support unknown | No native code found | MIT |
|
argmin Featured
Numerical optimization in pure Rust |
310,783 downloads over 30 days | 98 | 1,278 | 0.11.0 | GPU support unknown | Binds native code: lapack-sys (feature ndarray_v0_15) | Apache-2.0 OR MIT |
|
Pure-Rust implementation of linear algebra routines for ndarray |
198,623 downloads over 30 days | 20 | 39 | 0.2.1 | GPU support unknown | No native code found | Apache-2.0 OR MIT |
|
peroxide Listed
Rust comprehensive scientific computation library contains linear algebra, numerical analysis, statistics and machine learning tools with familiar syntax Python bindings |
56,548 downloads over 30 days | 9 | 732 | 0.43.1 | GPU support unknown | Binds native code: openblas-src (feature O3-openblas-system), blas-sys (feature O3), hdf5-metno-sys (feature nc), lapack-sys (feature O3), libz-sys (feature nc) and 1 more | Apache-2.0 OR MIT |
|
numr Listed
The base for numerical code in Rust, in the role NumPy has in Python: n-dimensional tensors, linear algebra, FFT, statistics and autograd on CPU, CUDA and WebGPU. The backends use native kernels, with no cuBLAS, MKL or other vendor math library. |
1,673 downloads over 30 days | 7 | 59 | 0.15.2 | CUDA, WebGPU | Binds native code: ring (feature distributed) | Apache-2.0 |
Why FeaturedIt passes every Featured gate.
What it meets
- It has 309 active dependents and 258 new dependents in 365 days. Featured needs 11 active dependents or 9 new dependents in 365 days.
- Active dependents are at 100% of their peak. Featured needs at least 50%.
- Docs are present. The release commit or a manifest ties the crate to the repository.
- No vulnerability advisory stays unpatched past the grace window. At least one version is neither a prerelease nor 0.0.x.
- The last activity is on 29 Oct 2026, 11 days ago. The rules expect an update within 1200 days. Dormancy rule
Exact rules: Featured library. The check on applied thresholds version 9.
Every rule outcome, as the check records it
expected-interval: version 6.4.1 base 300, doubled for 4266035 downloads per month, doubled for 309 active users: E = 1200 daysdormancy: last activity 2026-10-29, 11 days ago, E = 1200: activefeatured: featured: active_users 309, new_adopters 258, former_glory 1
Measurements and sources
Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.
Sources6 sources
- Description: the crates.io description
- crates.io database dump, fetched
- RustSec advisory database, fetched
- GitHub repository, fetched
- crates.io package, fetched
- GitHub contributors, fetched
Adoption309 active dependents, 258 new dependents in 365 days1 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Active dependents | 309 | crates.io database dump | Yes | |
| New dependents (365 days) | 258 | crates.io database dump | Yes | |
| Peak active dependents | 304.5 | crates.io database dump | Yes | |
| Active dependents as a share of the peak | 1 | crates.io database dump | Yes | |
| Binary downloads per release | Not measured | Yes |
MaintenanceLatest human commit: 11 days ago3 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Latest human commit | 2026-10-29 | GitHub repository | Yes | |
| Latest release | 2025-09-18 | crates.io database dump | Yes | |
| First release | 2015-01-25 | crates.io database dump | Yes | |
| Latest version | 6.4.1 | crates.io database dump | Yes | |
| Days the oldest outside issue waits for a reply | 51 | GitHub repository | Yes | |
| Maintainer replies over 365 days | 69 | GitHub repository | Yes | |
| Repository archived | false | GitHub repository | Yes | |
| Repository gone | false | GitHub repository | Yes | |
| Release commit or manifest in the repo | true | crates.io package | Yes | |
| Published docs | true | crates.io database dump | Yes | |
| Latest release fails cargo check | Not measured | Yes | ||
| Build check date | Not measured | Yes | ||
| Build check toolchain | Not measured | Yes |
SecurityUnpatched vulnerabilities: none
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Unpatched vulnerabilities past the grace window | none | RustSec advisory database | Yes | |
| RustSec unmaintained advisory | none | RustSec advisory database | Yes | |
| Deprecation notice | none | crates.io database dump | Yes | |
| Deprecated requirement | none | crates.io database dump | Yes |
Distribution25 releases, 4,266,035 downloads over 30 days5 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Releases | 25 | crates.io database dump | Yes | |
| Downloads over 30 days | 4266035 | crates.io database dump | Yes | |
| Binary downloads over the last 3 releases | Not measured | Yes | ||
| Homebrew installs on request over 365 days | Not measured | Yes | ||
| Repology repository families | Not measured | Yes | ||
| Docker pull growth over 90 days | Not measured | Yes | ||
| Docker pulls at the growth baseline | Not measured | Yes | ||
| Every version a prerelease | false | crates.io database dump | Yes | |
| Every version 0.0.x | false | crates.io database dump | Yes | |
| Every version yanked | false | crates.io database dump | Yes | |
| Crate deleted from crates.io | false | crates.io database dump | Yes |
Repository963 stars, 63 forks, 19 contributors, 479 commits. Stars alone never qualify a project.
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| GitHub stars | 963 | GitHub repository | Yes — one part of the repository route | |
| GitHub forks | 63 | GitHub repository | Yes — one part of the repository route | |
| Contributors with a GitHub account | 19 | GitHub contributors | Yes — one part of the repository route | |
| Commits on the default branch | 479 | GitHub repository | No | |
| Repository's main crate left out of the entry | none | crates.io database dump | Yes |
Facts that never count
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| License | Apache-2.0 OR MIT | crates.io database dump | No | |
| Runs on, from listed crates and their direct dependencies | GPU support unknown | crates.io database dump | No | |
| What shows each backend | no dependency or feature matches a backend row | crates.io database dump | No | |
| Native code, from listed crates and their dependencies | No native code found | crates.io database dump | No | |
| Python bindings, from direct dependencies of listed crates | No Python binding crate found | crates.io database dump | No | |
| Crates that depend on a listed crate directly | 571 | crates.io database dump | No |
Corrections and review history
No correction applies to this entry.
Judgments
A judgment enters only through an approved issue and a merged pull request.
No judgment applies to this entry.