Port Mortem / Repo pool
Recommended Repo Pool
A C → Rust 10
| Repository | Port | ~LOC | Size | License | What it does |
|---|---|---|---|---|---|
| DaveGamble/cJSON | C → Rust,Zig | 2000-3000 | Standard (2k–8k) | MIT | ANSI-C JSON parser/printer |
| lammertb/libcrc | C → Rust,Zig | 2000-3500 | Standard (2k–8k) | MIT | CRC16/32/64, CRC-CCITT, NMEA checksums |
| ludocode/mpack | C → Rust,Zig | 6000-8000 | Standard (2k–8k) | MIT | MessagePack encoder/decoder (tree parser + writer) |
| clwi/CWPack | C → Rust | 1000-1500 | Sprint (500–2k) | MIT | ANSI-C no-alloc MessagePack encoder/decoder |
| codeplea/tinyexpr | C → Rust,Zig | 600-900 | Sprint (500–2k) | zlib | Recursive-descent math expression evaluator |
| jserv/MathEX | C → Rust,Zig | 600-1000 | Sprint (500–2k) | MIT | String math-expression evaluator w/ vars & funcs |
| phoboslab/qoi | C → Rust,Zig | 600 | Sprint (500–2k) | MIT | Quite OK Image lossless codec (single header) |
| benhoyt/inih | C → Rust,Zig | 300-500 | Under 500 | BSD-3-Clause | Minimal embeddable INI parser |
| victoroliv2/quite-ok-image-format | C → Rust | 400-700 | Under 500 | check license | from-scratch C99 QOI reference |
| zserge/jsmn | C → Rust,Zig | ~200 | Under 500 | MIT | Minimal JSON tokenizer (embedded) |
B Zig → Rust 18
| Repository | Port | ~LOC | Size | License | What it does |
|---|---|---|---|---|---|
| frmdstryr/zig-datetime | Zig → Rust | 1800-2000 | Standard (2k–8k) | MIT | datetime/calendar arithmetic + formatting |
| kubkon/zig-yaml | Zig → Rust | 5000-8000 | Standard (2k–8k) | MIT | YAML 1.2 parser, untyped + typed mapping |
| mattyhall/tomlz | Zig → Rust | 1500-2500 | Standard (2k–8k) | MIT | well-tested TOML v1.0.0 parser/serializer |
| pblischak/zprob | Zig → Rust | 2000-4000 | Standard (2k–8k) | LGPL-3.0 | RNG distribution sampling + mass/density fns |
| sam701/zig-toml | Zig → Rust | 2000-2500 | Standard (2k–8k) | MIT | LL TOML v1.1 parser into Zig structs |
| tiehuis/zig-regex | Zig → Rust | 3000 | Standard (2k–8k) | MIT | regex engine: NFA compile + Pike/backtracking VM |
| euantorano/ip.zig | Zig → Rust | 500-900 | Sprint (500–2k) | BSD-3-Clause | IPv4/IPv6 address types and utilities |
| matthewtolman/zig_csv | Zig → Rust | 1500-2500 | Sprint (500–2k) | MIT | CSV writer + map/column/zero-alloc/stream parsers |
| ziglibs/s2s | Zig → Rust | 500-800 | Sprint (500–2k) | MIT | runtime binary serialize/deserialize for Zig types |
| beho/zig-csv | Zig → Rust | 300-600 | Under 500 | MIT | non-allocating CSV tokenizer with iterator API |
| daneelsan/brainfuckz | Zig → Rust | 300-600 | Under 500 | MIT | Brainfuck interpreter/CLI |
| dantecatalfamo/brainfuck-zig | Zig → Rust | 150-300 | Under 500 | MIT | embeddable Brainfuck interpreter |
| deatil/zig-md2 | Zig → Rust | 200-350 | Under 500 | Apache-2.0 | MD2 hash |
| deatil/zig-md4 | Zig → Rust | 200-350 | Under 500 | Apache-2.0 | MD4 hash |
| gernest/base32 | Zig → Rust | 300-500 | Under 500 | MIT | base32 encode/decode (std/hex/Crockford) |
| SasLuca/zig-nanoid | Zig → Rust | 200-400 | Under 500 | MIT | tiny URL-friendly unique ID generator |
| Vexu/zuri | Zig → Rust | 300-500 | Under 500 | MIT | URI parser |
| notCalle/parzig | Zig → Rust | unknown | unknown | check license | Parser-combinator library for Zig |
C TypeScript → Go 6
| Repository | Port | ~LOC | Size | License | What it does |
|---|---|---|---|---|---|
| harrisiirak/cron-parser | TypeScript → Go | Standard (est) | Standard (2k–8k) | MIT | cron expression parser/iterator with timezone |
| GoogleChromeLabs/jsbi | TypeScript → Go,Rust | 1892 | Sprint (500–2k) | Apache-2.0 | pure-JS ECMAScript BigInt implementation |
| thachnn/semver-ts | TypeScript → Go | 1500-2500 | Sprint (500–2k) | ISC (verify) | SemVer parser/comparator in TS |
| alexewerlof/micromustache | TypeScript → Go | <400 | Under 500 | MIT | fast small variable-interpolation Mustache subset |
| gregoranders/ts-csv | TypeScript → Go | 200-500 | Under 500 | check license | simple RFC-style CSV parser |
| ka-weihe/fastest-levenshtein | TypeScript → Go | 100-150 | Under 500 | MIT | Fastest Levenshtein (Myers bit-parallel) |
D Python → Rust 17
| Repository | Port | ~LOC | Size | License | What it does |
|---|---|---|---|---|---|
| jquast/wcwidth | Python → Rust | 5000-8000 | Standard (2k–8k) | MIT | POSIX wcwidth/wcswidth terminal char-width |
| kiorky/croniter | Python → Rust | 1500-2500 | Standard (2k–8k) | MIT | parse cron expr and iterate datetimes |
| life4/textdistance | Python → Rust | 2000-3500 | Standard (2k–8k) | MIT | 30+ string-distance algorithms, common interface |
| mdomke/schwifty | Python → Rust | 2000-4000 | Standard (2k–8k) | check license | IBAN parsing/validation and BIC handling |
| SethMMorton/natsort | Python → Rust | 2000-3000 | Standard (2k–8k) | MIT | natural (human) sort ordering of strings |
| byroot/pysrt | Python → Rust | 700-1200 | Sprint (500–2k) | GPL-3.0-only | SubRip (.srt) subtitle parser/manipulator |
| erikrose/parsimonious | Python → Rust | 1500-2500 | Sprint (500–2k) | MIT | Fast pure-Python PEG parser |
| jpvanhal/inflection | Python → Rust | 500-1000 | Sprint (500–2k) | MIT | pluralize/singularize/camelize/underscore English |
| oubiwann/metaphone | Python → Rust | 500-900 | Sprint (500–2k) | check license | Metaphone and Double Metaphone encoders |
| python-parsy/parsy | Python → Rust | <800 | Sprint (500–2k) | MIT | monadic parser-combinator library, stdlib-only |
| rbarrois/python-semanticversion | Python → Rust | 1000-1800 | Sprint (500–2k) | BSD-2-Clause | SemVer 2.0.0 parse/compare + npm-style specs |
| scrapinghub/price-parser | Python → Rust | 500-1000 | Sprint (500–2k) | BSD-3-Clause | extract price + currency from raw text |
| itsrainingmani/py-ulid | Python → Rust | 200-400 | Under 500 | MIT | ULID generation/parsing (Crockford base32) |
| Lilykos/pyphonetics | Python → Rust | 400-800 | Under 500 | check license | Soundex/Metaphone/RefinedSoundex/Lein/MRA phonetics |
| suminb/base62 | Python → Rust | 150-250 | Under 500 | BSD | base62 URL-safe encode/decode incl. bytes |
| toastdriven/pylev | Python → Rust | 150-300 | Under 500 | BSD (New) | Pure-Python Levenshtein distance |
| zopefoundation/roman | Python → Rust | <300 | Under 500 | ZPL (verify) | integer<->Roman numeral converter |
E Go → Rust 24
| Repository | Port | ~LOC | Size | License | What it does |
|---|---|---|---|---|---|
| BurntSushi/toml | Go → Rust | 3000-4500 | Standard (2k–8k) | MIT | Reflection-based TOML decoder/encoder (v1.0.0) |
| dustin/go-humanize | Go → Rust | 2000-3000 | Standard (2k–8k) | MIT | human-friendly formatting: bytes/SI/commas/ordinals/times |
| gobwas/glob | Go → Rust | 2000-3000 | Standard (2k–8k) | MIT | Compile-once glob matcher (lexer->compiler->matcher) |
| gocarina/gocsv | Go → Rust | 2000-3000 | Standard (2k–8k) | MIT | CSV <-> struct (de)serialization |
| gookit/ini | Go → Rust | 2000-3500 | Standard (2k–8k) | MIT | INI config mgmt, multi-file load, ENV parsing |
| gorhill/cronexpr | Go → Rust | 1500-2500 | Standard (2k–8k) | GPL-3.0 OR Apache-2.0 | cron expression parser + next-time computation |
| leekchan/accounting | Go → Rust | 2000-3000 | Standard (2k–8k) | MIT | money/number formatting with precision + separators |
| martinlindhe/unit | Go → Rust | 3000-4000 | Standard (2k–8k) | MIT | physical unit conversions (length/mass/temp/energy/speed) |
| robfig/cron | Go → Rust | 2000-3000 | Standard (2k–8k) | MIT | cron spec parser + job scheduler |
| araddon/dateparse | Go → Rust | 1500-2000 | Sprint (500–2k) | MIT | permissive date-string parsing via state machine |
| gosimple/slug | Go → Rust | 400-800 | Sprint (500–2k) | MPL-2.0 | URL-friendly slugify w/ transliteration |
| jacoelho/banking | Go → Rust | 1000-2000 | Sprint (500–2k) | check license | IBAN validate/generate + SEPA (ISO 3166-1) |
| martinlindhe/subtitles | Go → Rust | 800-1500 | Sprint (500–2k) | check license | subtitle library/CLI (.srt/.vtt/.ssa) |
| Masterminds/semver | Go → Rust | 1500-2500 | Sprint (500–2k) | MIT | Parse/compare/sort/constraint-check SemVer |
| mmcloughlin/geohash | Go → Rust | 800-1500 | Sprint (500–2k) | MIT | string + integer geohash encode/decode/neighbor |
| oklog/ulid | Go → Rust | 1000-1500 | Sprint (500–2k) | Apache-2.0 | ULID generation/parsing |
| spaolacci/murmur3 | Go → Rust | 1000-2500 | Sprint (500–2k) | BSD-3-Clause | MurmurHash3 32/64/128-bit |
| almerlucke/go-iban | Go → Rust | 300-700 | Under 500 | check license | IBAN validation |
| itchyny/base58-go | Go → Rust | 200-400 | Under 500 | MIT (verify) | base58 library + CLI (Flickr/Ripple/Bitcoin) |
| mr-tron/base58 | Go → Rust | 200-500 | Under 500 | MIT | fast base58 encode/decode |
| stefanovazzocell/bencode | Go → Rust | 400-800 | Under 500 | MIT | fast secure bencode parser/encoder, no deps |
| vaughan0/go-ini | Go → Rust | 100-200 | Under 500 | MIT | Line-by-line INI parser |
| zeebo/bencode | Go → Rust | 500-900 | Under 500 | MIT (verify) | struct-tag-based bencode encode/decode |
| sergi/go-diff | Go → Rust | 8000-12000 | Over 8k | MIT + Apache-2.0 | diff-match-patch: diff, fuzzy match, patch apply |
F JavaScript → Go / Rust 11
| Repository | Port | ~LOC | Size | License | What it does |
|---|---|---|---|---|---|
| micromatch/picomatch | JavaScript → Go,Rust | 2000-2500 | Standard (2k–8k) | MIT | zero-dep bash-style glob matcher |
| MikeMcl/bignumber.js | JavaScript → Go,Rust | 2520 | Standard (2k–8k) | MIT | arbitrary-precision decimal + non-decimal arithmetic |
| MikeMcl/decimal.js | JavaScript → Go,Rust | 4035 | Standard (2k–8k) | MIT | arbitrary-precision Decimal type |
| tnfe/bbo | JavaScript → Go,Rust | 2000-4000 | Standard (2k–8k) | MIT (verify) | Zero-dependency JS utility library |
| bgrins/TinyColor | JavaScript → Go,Rust | 1187 | Sprint (500–2k) | MIT | color parse/manipulate/convert (hex/rgb/hsl/hsv) |
| janl/mustache.js | JavaScript → Go,Rust | 764 | Sprint (500–2k) | MIT | logic-less Mustache templates (scanner/parser/render) |
| ljharb/qs | JavaScript → Go,Rust | 900-1100 | Sprint (500–2k) | BSD-3-Clause | query-string parser/serializer with nesting |
| omichelsen/compare-versions | JavaScript → Go,Rust | 200-400 | Under 500 | MIT | Semver-ish version comparison, zero deps |
| sindresorhus/slugify | JavaScript → Go,Rust | 300-700 | Under 500 | MIT | slugify a string with transliteration + counter |
| visionmedia/bytes.js | JavaScript → Go,Rust | <500 | Under 500 | MIT | human-readable byte-size format/parse |
| Yomguithereal/mnemonist | JavaScript → Go,Rust | 6000-9000 | Over 8k | MIT | ~50 classic/exotic data structures |
G C → Zig 17
| Repository | Port | ~LOC | Size | License | What it does |
|---|---|---|---|---|---|
| cktan/tomlc99 | C → Zig | 2400-2700 | Standard (2k–8k) | MIT | small TOML v1.0 parser in C99 |
| DaveGamble/cJSON | C → Rust,Zig | 2000-3000 | Standard (2k–8k) | MIT | ANSI-C JSON parser/printer |
| kgabis/parson | C → Zig | 2500-2700 | Standard (2k–8k) | MIT | lightweight C89 JSON parser/serializer, two files |
| lammertb/libcrc | C → Rust,Zig | 2000-3500 | Standard (2k–8k) | MIT | CRC16/32/64, CRC-CCITT, NMEA checksums |
| ludocode/mpack | C → Rust,Zig | 6000-8000 | Standard (2k–8k) | MIT | MessagePack encoder/decoder (tree parser + writer) |
| antirez/sds | C → Zig | 1400 | Sprint (500–2k) | BSD-2-Clause | binary-safe dynamic strings (Redis SDS) |
| cesanta/mjson | C → Zig | 1200-1500 | Sprint (500–2k) | MIT | no-alloc JSON parser/emitter + JSON-RPC state machine |
| codeplea/tinyexpr | C → Rust,Zig | 600-900 | Sprint (500–2k) | zlib | Recursive-descent math expression evaluator |
| cofyc/argparse | C → Zig | 520 | Sprint (500–2k) | MIT | command-line argument parser (bool/int/str/subcmd) |
| getdnsapi/yxml | C → Zig | 1240 | Sprint (500–2k) | MIT | small non-validating stream XML parser (FSM) |
| jserv/MathEX | C → Rust,Zig | 600-1000 | Sprint (500–2k) | MIT | String math-expression evaluator w/ vars & funcs |
| JuliaStrings/utf8proc | C → Zig | 782 core + big table | Sprint (500–2k) | MIT | UTF-8 Unicode processing (NF, case-fold, graphemes) |
| kokke/tiny-regex-c | C → Zig | 550 | Sprint (500–2k) | Unlicense (PD) | tiny regex engine, no malloc/recursion |
| phoboslab/qoi | C → Rust,Zig | 600 | Sprint (500–2k) | MIT | Quite OK Image lossless codec (single header) |
| skeeto/pdjson | C → Zig | 1030 | Sprint (500–2k) | Unlicense (PD) | streaming/pull JSON parser, full UTF-8 + surrogates |
| benhoyt/inih | C → Rust,Zig | 300-500 | Under 500 | BSD-3-Clause | Minimal embeddable INI parser |
| zserge/jsmn | C → Rust,Zig | ~200 | Under 500 | MIT | Minimal JSON tokenizer (embedded) |
H Open pair (X → Y) 19
| Repository | Port | ~LOC | Size | License | What it does |
|---|---|---|---|---|---|
| harrisiirak/cron-parser | TypeScript → Go | Standard (est) | Standard (2k–8k) | MIT | cron expression parser/iterator with timezone |
| java-diff-utils/java-diff-utils | Java → Rust,Go | 2500-4000 | Standard (2k–8k) | Apache-2.0 | diff/patch: Myers diff, patch apply, unified-diff parse |
| micromatch/picomatch | JavaScript → Go,Rust | 2000-2500 | Standard (2k–8k) | MIT | zero-dep bash-style glob matcher |
| MikeMcl/bignumber.js | JavaScript → Go,Rust | 2520 | Standard (2k–8k) | MIT | arbitrary-precision decimal + non-decimal arithmetic |
| MikeMcl/decimal.js | JavaScript → Go,Rust | 4035 | Standard (2k–8k) | MIT | arbitrary-precision Decimal type |
| olbrich/ruby-units | Ruby → Rust,Go | 2000-3000 | Standard (2k–8k) | MIT | units-of-measure: parse/convert/arithmetic |
| 0xd34df00d/hsqoi | Haskell → Rust | 500-1000 | Sprint (500–2k) | check license | Haskell QOI codec |
| bgrins/TinyColor | JavaScript → Go,Rust | 1187 | Sprint (500–2k) | MIT | color parse/manipulate/convert (hex/rgb/hsl/hsv) |
| canton7/sem_version | Ruby → Rust | 300-600 | Sprint (500–2k) | MIT (verify) | SemVer 2.0.0 parse/validate/compare |
| GoogleChromeLabs/jsbi | TypeScript → Go,Rust | 1892 | Sprint (500–2k) | Apache-2.0 | pure-JS ECMAScript BigInt implementation |
| HoldOffHunger/roman-numerals | PHP → Go | 500-1500 | Sprint (500–2k) | check license | Roman numerals extended (to trillions) |
| janl/mustache.js | JavaScript → Go,Rust | 764 | Sprint (500–2k) | MIT | logic-less Mustache templates (scanner/parser/render) |
| janlelis/paint | Ruby → Rust,Go | 500-800 | Sprint (500–2k) | MIT | terminal ANSI colorization (truecolor/256/16) |
| ljharb/qs | JavaScript → Go,Rust | 900-1100 | Sprint (500–2k) | BSD-3-Clause | query-string parser/serializer with nesting |
| yougov/fuzzy | Python → Rust | 500-1000 | Sprint (500–2k) | check license | fast phonetics (Soundex/NYSIIS/Double Metaphone, Cython/C) |
| jlindsey/semantic | Ruby → Rust | 200-400 | Under 500 | MIT | SemVer parse/compare class |
| machinateur/roman-numerals | PHP → Go | <300 | Under 500 | check license | Roman numeral converter (PHP) |
| visionmedia/bytes.js | JavaScript → Go,Rust | <500 | Under 500 | MIT | human-readable byte-size format/parse |
| Yomguithereal/mnemonist | JavaScript → Go,Rust | 6000-9000 | Over 8k | MIT | ~50 classic/exotic data structures |
104 repositories across 8 tracks. Again: use one of these or bring your own.