SIMD Viterbi Decoder in Rust
Details
- External ID
- 49176212
- Source
- HN
- Company
- —
- Product
- SIMD Viterbi Decoder in Rust
- Website domain
- github.com
- Launched
- Aug. 4, 2026
- Cohort
- —
- Upvotes
- 64
- Upvotes percentile
- 0.885752688172043
- Tags
- —
- Fetched at
- Sept. 10, 2026, 5:32 a.m.
- Updated at
- Sept. 10, 2026, 5:32 a.m.
Description
I wrote libcorrect in C in 2016 and wanted to revisit it in Rust. Instead of doing just a direct conversion, I went down the rabbit hole of making Rust's std::simd work for me. I ended up with a templated, generic Viterbi decoder for convolutional codes that dispatches the decode at runtime depending on which instruction sets are available. For small rates and orders, the entire decode lives in registers. Larger codes work through memory but take advantage of some acceleration structures.I also spent some time building a tool to find optimal (max d_free) conv codes for a given rate and order. Of course, there are better mechanisms available today, but I'm happy to talk through anything I learned in the process.
Enrichment
- Theme
- lightweight and on-device AI runtimes
- Vertical
- Horizontal
- Function
- Dev tools
- Audience
- Developer
- AI stance
- Not AI
- Project type
- Hobby / open-source project
- Normalized one-liner
- simd viterbi decoder library
- Manually corrected
- False
Could you build this?
No Developing a generic SIMD-accelerated Viterbi decoder in Rust requires advanced digital communications domain knowledge, low-level DSP mathematics, and manual vectorized assembly/intrinsics programming.
What it would actually take: Written in modern Rust using std::simd / target-specific vector intrinsics (AVX-512, NEON) implementing the Add-Compare-Select (ACS) loop of the Viterbi algorithm for convolutional error correction. The hard part is eliminating branch mispredictions, maintaining optimal register allocation for trellis metrics, and ensuring numerical stability and bit-exact decoding across multiple CPU architectures.
Discussion
11 comments analyzed.
Competitors mentioned: libfec, libcorrect, goestools
Concerns raised: Rust adoption barrier for teams unfamiliar with the language, Potential performance trade-offs of Rust vs C++
Feature requests: LDPC codes implementation, Turbo codes implementation
Competitors
Other products that read as similar to this one — 112 launches clear the similarity bar, closest 8 shown.
Attention rank: #21 of 113 (itself plus its competitors, highest first — normalized so YC and Product Hunt are compared fairly).
Launched 274 days after the earliest competitor.
- 18KB ls alternative in no_std rust and Libc · hn · 2026-07-15 · 23 upvotes · similarity 0.42
- vla.simd · github · 2026-09-21 · 11 upvotes · similarity 0.41
- Glyd · github · 2026-09-19 · 164 upvotes · similarity 0.41
- I built a CSV parser to try Go 1.26's new SIMD package · hn · 2026-01-27 · 8 upvotes · similarity 0.41
- Lockstep · hn · 2026-03-16 · 8 upvotes · similarity 0.39
- Micron: a high performance C++23 (re)implementation of Libc and the STL · hn · 2026-06-05 · 6 upvotes · similarity 0.39
- rust-learning-lab · github · 2026-09-25 · 49 upvotes · similarity 0.39
- Hybrid-Transpiler · hn · 2025-12-26 · 8 upvotes · similarity 0.39
Other launches for this product
- No other launches for this product.
Same idea, different domain
Nobody's really built a dev tools tool for Sales yet.