Weekly open source: Go libraries for goro
Week of March 30 – April 5. A cluster of new pure-Go libraries, and they're all motivated by the same thing: goro. PHP is a big language, and making it work in pure Go means closing gaps in what Go can do without cgo or external deps.
Pure-Go libraries for goro
- gopcre2 — PCRE2 in
pure Go, no cgo. Backreferences, lookahead / lookbehind, atomic
groups, recursive patterns, Unicode properties. Go's stdlib
regexpuses RE2 for guaranteed linear time and deliberately omits these features — but PHP'spreg_*family relies on them, so goro needs them too. - gobzip2 — pure-Go
bzip2 compression as well as decompression. The standard library's
compress/bzip2is decompression-only; goro needs PHP'sbzcompressto work, hence both directions implemented from the bzip2 1.0.8 reference. - gomailparse —
streaming MIME parser. Reads from an
io.Readerin a single pass and stores only headers and byte offsets, no body buffering. Backs the PHP mail-handling surface in goro, and is designed to stay efficient when the messages it's indexing are very large. - gotz — raw IANA timezone
data access in Go: transitions, zone types, POSIX TZ rules,
embedded
tzdata. Deliberately under the standardtimepackage's abstraction, because goro's date/timezone machinery needs the underlying data directly to match PHP's semantics.
Also seeded this week
- pktkit — zero-copy
L2/L3 packet handling.
FrameandPacketare[]bytealiases with typed header accessors — no wrapper allocation, no copies on the hot path. Seeded on April 4 and ran up 35 commits by the end of the week laying down IPv4 + IPv6 primitives. Separate thread from goro, but fits the same "pure Go, no cgo" rule. - aipencil — 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, not sizes and coordinates. Same input always produces the same image. No GPU. First full week of activity after seeding on April 2 — 18 commits.
Sandboxing + networking
Two networking-adjacent projects that fit together more than the topic suggests:
bnpm — "Bubble NPM" —
sandboxes package-manager commands inside Linux namespaces. Mount
namespace with pivot_root restricts the filesystem to the project
directory (read-write) plus read-only system paths. An empty network
namespace gives build/test commands zero network access; install
commands go through a userspace TAP proxy that filters DNS and IPs
to allowed registries only. No root required — unprivileged user
namespaces do the work. The goal is to make a malicious install
script physically unable to reach outside the project tree.
slirp — user-mode NAT
and IP stack in Go, 28 commits this week. Same intent as the
original SLIRP: give a process TCP/IP connectivity without root,
CAP_NET_ADMIN, or a TUN device. Useful for VM networking,
containers, network testing, and anything that wants a protocol
stack that runs fully in userspace.
PHP in Go, PHP in Rust
goro got 128 commits and the parallel Rust port goro-rs got 50. Both continuing the slow grind toward full PHP test-suite conformance.
Also this week
- libwallet — 13 commits, steady incremental work on the multi-chain mobile wallet.
- unixshells/mobile — 13 commits on the mobile SSH / Mosh / SFTP client for iOS and Android.
- teamclaude — 11 commits on the multi-account Claude proxy with quota-based rotation.
- squashfs — 8 commits on the pure-Go SquashFS implementation (read / write).