Weekly open source: goro CI push, two new Go libs, one shelved experiment
Week of April 6–12. Quality push on the PHP-in-Go runtime, two new Go libraries, and one project I shelved honestly rather than dragged on.
goro: closing the CI gap
KarpelesLab/goro is a
reimplementation of PHP in pure Go, tested against PHP's own test suite.
This week it went from roughly 256 failing tests to ~199, across
82 commits: $arr[] .= … compound-assignment double-append bug,
readonly-property error messages matching upstream exactly, DateTime
serialisation rejecting >4-digit years, createFromFormat null-byte
handling, multibyte-UTF-8 in EXPECTF regex fixtures, and a proper
SKIPIF → skipTest path in the test runner.
A lot of it is error-message text and edge-case conformance rather than "big features", but that's what narrows the gap with real-world PHP — the whole point is to get PHP code to run on goro without noticing. The parallel Rust port, goro-rs, got 35 commits the same week.
litertlm-ios: shelved
I started litertlm-ios
on the 6th and shelved it by the 10th. The goal was running Google's
LiteRT-LM on iPhone with Metal GPU acceleration. It compiles, it runs,
it produces a working LiteRTLM.xcframework — but Google's GPU
accelerator for LiteRT-LM is proprietary, and the open-source path only
exists if you bridge LiteRT-LM's accelerator-plugin interface to
TFLite's Metal delegate. It works as a workaround, not as a foundation
for production.
The repo README has a full post-mortem and a comparison table pointing to the runtimes you should probably use instead today — MLX Swift, SwiftLM, llama.cpp, MLC-LLM. If Google ever open-sources the real LiteRT-LM GPU path (there's an upstream issue), the build infrastructure here is ready to pick back up. Until then: better to write down what I learned and move on.
Two new Go libraries
anyhash — a Go hashing
library that selects from 60 algorithms by name, not by import.
New("sha256") instead of sha256.New(). Case-insensitive name
matching, Clone() to snapshot hash state mid-computation, continue
writing after Sum(), HMAC and HKDF, and PHP-compatible state
serialisation — a hash started in PHP can finish in Go and vice
versa. No external dependencies; all algorithms use only the Go
standard library.
pktkit — zero-copy L2/L3
packet handling for Go. Frame and Packet are []byte aliases with
typed header accessors — no wrapper allocation, no copies on the hot
path. Building block for virtual network topologies: devices, hubs,
adapters, tunnels, with IPv4 + IPv6 support throughout. Nine commits
this week filling out the API surface. (The repo itself is from
April 4; this was its first full week.)
Also this week
- strtotime — 17 commits warming up the PHP-compatible date parser ahead of its finishing push.
- libwallet — 12 commits of incremental work on the multi-chain mobile wallet.
- aipencil — early work on a CLI that renders structured JSON scene descriptions to SVG and PNG. The idea: give AI systems a deterministic, cheap way to produce images by declaring content and relationships rather than sizes and coordinates.
- smokenrg — mirrored an old utility from sed.free.fr for extracting audio from Nero NRG files. Pure preservation; free hosting doesn't last forever.