Goish: พอร์ตรันไทม์ของ Go ทั้งตัวลงใน no_std Rust
📅 เขียนเมื่อ: สิงหาคม 2026 | Goish (goish.cogentica.ai) ⚠️ โปรเจกต์เพิ่งเปิดตัว — รายละเอียด/เวอร์ชันอาจเปลี่ยนแปลง ตรวจสอบจาก GitHub ก่อนใช้งาน ถ้าคุณเขียน Go มาสักพัก คุณน่าจะเคยอยากได้สองอย่างพร้อมกัน — concurrency model ของ Go (goroutine, channel, select ) กับ ความปลอดภัยด้าน memory ของ Rust (ownership, ไม่มี GC) ปกติแล้วสองอย่างนี้อยู่คนละโลก: Go ให้ runtime มาให้แต่มี garbage collector,…
Goish is a Rust runtime for Go programmers that aims to provide a single binary static executable with all the features of Go 1.25. It ports the standard library and runtime of Go to Rust, without relying on any external libraries or the Rust standard library, including no_std, glibc, std, Tokio, and garbage collection. The project was inspired by the need to port Go code to Rust due to memory safety concerns or corporate policies.
Goish achieves this by porting Go code line-by-line and then refactoring modules into Rust idioms as the team becomes more comfortable. It includes a memory allocator and 67 size classes, but no garbage collector. Rust ownership is used to reclaim memory instead of a garbage collector. The scheduler is a verbatim port of the Go runtime/proc.go, using a lock-free Per-P run queue, work stealing, async preemption through SIGURG, and a per-P sysmon for timer management.
The crypto/tls package is fully ported with 100% coverage and includes all 1722 declarations. The result is a single binary static executable, reducing the attack surface to just the binary itself, making it suitable for scratch/distribeless containers, confidential VMs, and appliance images.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.