Releases: nyarime/GoFEC
Release list
v2.0.0 — GF(2¹⁶) + Leopard-RS + RaptorQ fountain
GoFEC v2.0.0
BREAKING: module path is now github.com/nyarime/gofec/v2.
go get github.com/nyarime/gofec/v2@v2.0.0Highlights
- Public
gf65536— GF(2¹⁶) field with amd64 SIMD region multiply leopard.Codec— high-level Reed–Solomon API (up to 65536 shards, O(n log n) FFT)raptorq.GenerateRepair— rateless / fountain parity extension- Root factory helpers +
Version = "2.0.0" - Still pure Go, no CGO (RaptorQ / LDPC / Leopard)
Migrate from v1
- import "github.com/nyarime/gofec/raptorq"
+ import "github.com/nyarime/gofec/v2/raptorq"NRUP already consumes this module as github.com/nyarime/gofec/v2 v2.0.0.
Verify
go test github.com/nyarime/gofec/v2/...v1.4.2 — cross-architecture build fix
internal/xor/xor.go declared Bytes with no body and no build constraint, while xor_generic.go provides the same function under !amd64 && !arm64. Every other architecture compiled both declarations and failed with Bytes redeclared in this block, which took the whole module down with it.
The assembly declaration is now constrained to the architectures whose .s files actually define the symbol, and the package comment moved to doc.go so it survives on the generic path.
Builds verified on 386, riscv64, ppc64le, s390x and mips64le, in addition to amd64 and arm64. No behaviour change on the two architectures that already worked — they use the same assembly as before.
Known issue, unrelated to this release: TestLeopardLarge fails on main and has done since v1.4.0 (shard 0 mismatch at byte 0 in the GF(2^16) Leopard-RS decode path). raptorq, ldpc, gf256 and gf65536 all pass.
v1.4.1: Leopard-RS + GF(2^16) + Multi-threaded FFT
GoFEC v1.4.1 — NyaEngine Edition
New: Leopard-RS Erasure Coding (65536 shards)
- O(n log n) encoding/decoding via additive FFT over GF(2^16)
- Max 65536 shards (vs 256 in RS GF(2^8))
- Multi-threaded butterfly operations (47-67x speedup)
New: GF(2^16) Finite Field
- 65536-element field with log/exp table acceleration
- Optimized MulAddRegion with precomputed tables
Performance (EPYC 9V33X 96-Core)
| Config | Encode | Decode |
|---|---|---|
| 100+10 | 439 MB/s | 72 MB/s |
| 1000+100 | 347 MB/s | 90 MB/s |
| 10000+1000 | 254 MB/s | — |
Full Stack
- RS GF(2^8): 256 shards, AVX2/GFNI (87 GB/s)
- Leopard GF(2^16): 65536 shards, O(n log n) NEW
- LDPC: sparse matrix, near-Shannon
- RaptorQ: fountain code, RFC 6330
Go community first: LDPC, RaptorQ, Leopard-RS, GFNI acceleration
v1.4.0: GF(2^16) + Leopard-RS Foundation
GoFEC v1.4.0
New: GF(2^16) Finite Field (internal/gf65536)
- 65536-element field, polynomial 0x1002B, generator 3
- Mul/Div/Inv via log/exp tables
- MulAddRegion for bulk operations
New: Leopard-RS (leopard/)
- Additive FFT (Walsh-Hadamard) over GF(2^16)
- O(n log n) encode/decode
- Max 65536 shards
- Cantor basis with precomputed skew factors
Tested: 4+2, 4+4, 100+50 shard configurations
v1.3.0
v1.2.0
v1.1.1
v1.1.0
v1.0.0
GoFEC首个正式版本
- LDPC低密度校验码 (PEG矩阵 + BP解码)
- RaptorQ喷泉码 (RFC 6330核心, 1-6块丢失恢复)
- GF(256)有限域 (Log/Exp查表 + 预计算Split Tables)
- AVX2 XOR加速 (31.6 GB/s)
- AVX2 VPSHUFB GF(256) (15 GB/s)
- ARM64 NEON XOR + GF(256) VTBL
- AVX512 GFNI运行时检测
- 统一SIMD Dispatch
性能:
- RaptorQ 32KB: 41μs
- LDPC: 18μs编码
- GF(256) MulAdd: 15 GB/s
- XOR: 31.6 GB/s