Search by

codinglombok / lombokecc

codinglombok

Reed-Solomon RS(255,239) error correction over GF(256) — PHP port of LombokECC

Package info

github.com/codinglombok/LombokECC

Language:TypeScript

pkg:composer/codinglombok/lombokecc

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

0.2.0 2026-08-29 16:13 UTC

This package is auto-updated.

Last update: 2026-08-29 23:31:47 UTC


README

Reed-Solomon error-correction codes over GF(256) — RS(255, 239), t = 8. Zero-dependency TypeScript library with ports in PHP, Python, Go, Rust, and C++. Licensed Apache-2.0.

GitHub

Stars Forks Issues Pull Requests Release License Last Commit Repo Size Downloads Latest Downloads

npm

npm version npm downloads npm total downloads

GitHub Packages

npm GPR

Packagist

Packagist version Packagist downloads

PyPI

PyPI version PyPI downloads

Quality

CI Tests Mutations Vectors Zero deps TypeScript Ports Conventional Commits

SourceForge

SF Downloads SF Monthly SF Weekly SourceForge

Community

Contributors Sponsors PRs Welcome

Lombok Ecosystem

LombokClarion LombokCSS LombokCharts LombokQRCode LombokTableSheet LombokAnimate LombokECC LombokPDF LombokUnram

Changes from v0.1.0

  • Multi-language ports added (PHP, Python, Go, Rust, C++)
  • Test vectors v1 (42 cases, JSON + flat text)
  • Root-level composer.json for Packagist auto-discovery
  • Root-level pyproject.toml for PyPI builds
  • ArticleEccCodec prototype (phase6)
  • Each port has its own README with usage examples

Parameters

Parameter Value
Codeword length (n) 255
Message length (k) 239
Parity bytes 16
Correctable errors (t) 8 bytes per block
Field GF(256), primitive polynomial 0x11D

Ports

All ports validate against the same test vector set (42 test cases).

Language Registry Package Install Status
TypeScript npm lombokecc npm install lombokecc ✅ 42/42
TypeScript GPR @codinglombok/lombokecc npm install @codinglombok/lombokecc ✅ 42/42
PHP Packagist codinglombok/lombokecc composer require codinglombok/lombokecc ✅ 42/42
Python PyPI lombokecc pip install lombokecc ✅ 42/42
Go Go LombokECC-go go get github.com/codinglombok/LombokECC-go ✅ 42/42
Rust crates.io lombokecc cargo add lombokecc ✅ 42/42
C++ Header-only Copy ports/cpp/include/lombok_ecc.hpp ✅ 42/42

Installation & Usage

TypeScript / JavaScript

npm install lombokecc
import { ReedSolomon } from 'lombokecc';
const rs = new ReedSolomon(255, 239);
const codeword = rs.encode(new Uint8Array([1, 2, 3, 4, 5]));
const decoded  = rs.decode(codeword);

PHP

composer require codinglombok/lombokecc
use CodingLombok\LombokEcc\ReedSolomon;
$rs = new ReedSolomon(255, 239);
$codeword = $rs->encode([1, 2, 3, 4, 5]);
$decoded  = $rs->decode($codeword);

Python

pip install lombokecc
from lombok_ecc import ReedSolomon
rs = ReedSolomon(255, 239)
codeword = rs.encode(bytes([1, 2, 3, 4, 5]))
decoded  = rs.decode(codeword)

Go

go get github.com/codinglombok/LombokECC-go
rs := lombokecc.New(255, 239)
codeword := rs.Encode([]byte{1, 2, 3, 4, 5})
decoded, _ := rs.Decode(codeword)

Rust

cargo add lombokecc
let rs = lombokecc::ReedSolomon::new(255, 239);
let codeword = rs.encode(&[1, 2, 3, 4, 5]);
let decoded = rs.decode(&codeword).unwrap();

C++

#include "lombok_ecc.hpp"
auto rs = lombokecc::ReedSolomon(255, 239);
auto codeword = rs.encode({1, 2, 3, 4, 5});
auto decoded = rs.decode(codeword);

Testing

# TypeScript
npm ci && npm run build && npm run test:full
bash mutate.sh            # mutation testing

# All ports
cd ports && bash run-all.sh

Project structure

├── package.json             ← npm (lombokecc)
├── composer.json            ← Packagist (codinglombok/lombokecc)
├── pyproject.toml           ← PyPI (lombokecc)
├── gf256.ts                 # GF(256) field arithmetic
├── reed-solomon.ts          # RS encoder + decoder
├── test-*.ts                # 5 test suites
├── bench.ts                 # benchmark
├── mutate.sh                # mutation testing
├── .github/workflows/
│   ├── ci.yml               # test + mutation + packaging + benchmark
│   └── publish-packages.yml # auto-publish on release
└── ports/
    ├── php/                 # Packagist (composer.json at root)
    ├── python/              # PyPI (pyproject.toml at root)
    ├── go/                  # Go module
    ├── rust/                # crates.io
    ├── cpp/                 # header-only
    └── vectors/             # 42 test cases (JSON + flat text)

License

Apache-2.0 — see LICENSE

Author: codinglombok Repository: github.com/codinglombok/LombokECC