fashex - fast hexadecimal encoding and decoding
Hexadecimal string encoding and decoding with best-effort SIMD acceleration.
Highlights
- Best-effort SIMD acceleration.
- Small, focused public APIs.
- APIs that work in const contexts.
- Unlike crates
const-hex,faster-hex, etc., this crate accepts uninitialized output buffers (MaybeUninit<u8>).
Performance
This crate offers performance comparable to const-hex or hex-simd on x86 / x86_64 architectures.
The following benchmarks were conducted on an AMD Ryzen 7 8845HS CPU, compiled with rustc 1.96.0-nightly (2972b5e59 2026-04-03) on x86_64-unknown-linux-gnu. You can run these benchmarks locally with RUSTFLAGS='-C target-cpu=x86-64-v4' cargo bench (assuming that your CPU supports the x86-64-v4 target, i.e., with basic AVX-512 support).
Disclaimer
Although all tests are passing and hours of fuzzing show no failures, latent bugs may still exist in the code.
- The SIMD-accelerated code paths for
x86/x86_64architecture are well tested and fuzzed. - The SIMD-accelerated code paths for
aarch64architecture are tested and fuzzed. - The SIMD-accelerated code paths for
loongarch64architecture have not been tested or fuzzed on real hardware.
If you find any bugs, please report them.
Acknowledgements
This crate is inspired by the following repositories:
const-hex, SPDX-License-Identifier: MIT OR Apache-2.0hex-simd, SPDX-License-Identifier: MITfaster-hex, SPDX-License-Identifier: MIT OR Apache-2.0