Build1 distinct publisher3 min readUpdated
A one-person project translates Go's scheduler, channels, net/http and crypto/tls into Rust with no GC, no glibc and no Tokio, and stamps every function with its Go source line.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
Chanwit Kaewkasi, a Thai engineer from Korat working under Cogentica AI, has released Goish, described on its own site as a port of Go 1.25's standard library and runtime into no_std Rust [1][2][3]. The interesting part is not that it compiles; it is that it forces a question Go users usually leave vague, which is how much of Go's value is the concurrency model and how much is the runtime underneath it.
According to the project, Goish depends on neither glibc, Rust's std, Tokio, nor a garbage collector, and ships everything itself from `_start` upward: page allocator, size-class heap, M:N scheduler, channels, `select!`, sync primitives, `net/http` and `crypto/tls` [3][4]. The output is a single static binary, and the post reports `ldd` answering "not a dynamic executable" [5]. The tagline is "A Rust runtime for Go people" [6].
The scheduler is not a lookalike. The post says `runtime/proc.go` from Go 1.25 was translated line by line, including per-P lock-free SPMC run queues of 256 entries with global overflow, coprime-permuted work stealing via `runqgrab`, `runqsteal` and `stealOrder`, async preemption through SIGURG, a `sysmon` handling the timer heap and forced preemption, and a per-P epoll netpoller that parks the goroutine rather than blocking the thread [12][13][14][15][16][17]. The allocator keeps Go's mheap to mcentral to per-P mcache shape and its 67 size classes, but deletes the collector and leaves reclamation to Rust ownership [18][19].
That deletion is the load-bearing bet, and stacks are where it shows. Each goroutine gets a 1 MiB virtual reservation with lazy commit, so a shallow goroutine costs roughly one 4 KiB page of real memory, and `go!(stack(2*KB), ...)` requests a 2 KiB stack from a pool for density work [20][21]. The demo table shows RSS of 44,800 KB at baseline and 2,406,528 KB with one million parked goroutines, with thread count unchanged at 13 and no drift by 30 seconds [22][23]. That works out to about 2.36 KiB of RSS per goroutine and roughly 77,000 goroutines per OS thread [24][25].
The stated motivation is not ergonomics but provenance. The argument in the post is that SLSA attestations and SBOMs describe how a binary was built, not whether translated code was translated faithfully, and that an SBOM entry reading "goish 0.1.0" cannot distinguish reviewed crypto from an approximation [7][8]. So each port carries a comment naming its origin, in the form `// go: sdk 1.25.5 crypto/internal/fips140/aes/gcm/gcm.go:31-46 newGCM`, and CI opens the Go tree on every commit to verify the cited line ranges still point where they claim [9][10]. The post frames this as a response to approaching legal deadlines, though the supplied text does not enumerate them [11]. The public API leans the same way, exposing lowercase `string` and `int`, multi-return and `if err != nil`, with `Vec<u8>` and `&str` kept out of signatures [26][27].
Things to watch: whether ownership-based reclamation holds up for the patterns Go programs actually lean on the collector for, such as long-lived channel graphs and escaping closures; whether the provenance CI survives Go 1.26 renumbering the files it cites; and whether the memory figures reproduce outside the author's demo. The project is newly launched and its author warns that details and versions may change [28].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The demo output shows: at 0s baseline vmsize 1,105,148 KB, vmrss 44,800 KB, vmpeak 1,108,444 KB, vmhwm 49,024 KB, 13 threads; at 2s with 1M parked vmsize 3,069,660 KB, vmrss 2,406,528 KB, vmpeak 3,069,660 KB, vmhwm 2,406,528 KB, 13 threads; at 30s steady-state the same figures and 13 threads.
The post summarises the demo as one million goroutines on just 13 OS threads, at roughly 2.4 KiB RSS per goroutine.
Goish is a project published at goish.cogentica.ai, covered in an August 2026 dev.to post.
Goish is the work of Chanwit Kaewkasi (@chanwit), a Thai engineer from Korat, under the company Cogentica AI.
Goish is described as a port of Go 1.25's standard library and runtime into no_std Rust, depending on neither glibc, Rust's std, Tokio, nor a garbage collector.
Goish ships its own components from _start onward: page allocator, size-class heap, M:N scheduler, channels, select!, sync primitives, net/http and crypto/tls.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Detailed but entirely self-reported
The cluster contains a single item authored around the project itself. Its technical description is unusually specific and falsifiable — named Go runtime symbols, size-class counts, provenance comment format, a memory table — which raises evidence quality above pure assertion. But nothing is corroborated: no second publisher, no third-party benchmark, no security or correctness audit of the verbatim-ported crypto/tls, and the only reported numbers come from the project's own example script.
Launch-stage, no users beyond the author
Observable adoption is limited to the artifact existing: a 0.1.0 release on GitHub, Rust 1.79+, a single Linux x86_64 target, and two in-repo examples (spawn_million and a goginx clone) run by the author. No downstream users, deployments, dependents, integrations or organisational usage are disclosed anywhere in the supplied material.
Ambition and compliance framing outrun verification
The framing is maximal — a whole Go runtime and standard library ported, TLS 1.3 running verbatim, provenance sufficient to prove compliance against named regimes — while the support underneath it is one self-published post at version 0.1.0 with an author-run memory demo and no external review or users. The regulatory urgency is asserted without citing the specific obligations or deadlines. The gap is not fabrication: the technical detail is concrete and the post itself flags its own immaturity, which keeps the overstatement moderate rather than severe.
Vendor-authored launch post with a demand thesis attached
The only source is a launch write-up describing the author's own project under his company, Cogentica AI, published to a developer platform. It simultaneously argues that existing supply-chain attestation is inadequate and that function-level provenance is about to be legally necessary — a framing that, if accepted, creates demand for exactly what Goish sells. That is a strong promotional incentive. It is partly offset by the visible just-launched caveat and by publishing checkable technical specifics rather than vague claims.
Clear on what was claimed, weak on what is true
We can state with high confidence what the project asserts, because the single source is explicit and technically detailed, and the derived arithmetic on its own table is sound. Confidence in the underlying reality — port fidelity, crypto correctness, reproducible density, and whether the compliance premise holds — is low, resting on one self-published item with no corroboration, no adopters and no independent measurement.
product
Docker pipes every agent policy decision into your SIEM, and the evidence burden lands on platform teams1 distinct publisher
build
Zero-Instrumentation Go Tracing Works, But You Are Now Maintaining ABI Offsets1 distinct publisher
product
Container security's cheapest control is shipping less software, not scanning faster1 distinct publisher
build
The guard that worked in tests and still wrote 2,684 live records1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 14, 2026