Join the UI Discussion: We're designing an enterprise-grade GUI toolkit for Go. Your input matters! GitHub Discussions
Happy New Year, Gophers!
As 2025 draws to a close, I want to share something that makes me incredibly proud: Go is entering 2026 with its first professional graphics ecosystem.
A month ago, this was just an idea. Today, it's 249,000 lines of Pure Go code — a complete GPU computing stack that requires nothing but go build.
No CGO. No Rust. No C. Just Go.
What We Accomplished in 2025
Everything we planned for 2025 — we delivered.
The Numbers
| Metric | Value |
|---|---|
| Total Lines of Code | 249K Pure Go |
| GPU Backends | 5 (Vulkan, DX12, Metal, GLES, Software) |
| Shader Targets | 4 (SPIR-V, MSL, GLSL, HLSL) |
| Platforms | Windows, Linux (X11 + Wayland), macOS |
| CGO Required | None |
The Ecosystem
| Project | Version | LOC | Status |
|---|---|---|---|
| gogpu/gg | v0.15.5 | ~104K | Production |
| gogpu/wgpu | v0.8.5 | ~87K | Production |
| gogpu/naga | v0.8.1 | ~32K | Production |
| gogpu/gogpu | v0.8.6 | ~26K | Production |
| gogpu/ui | — | — | 2026 Focus |
What's Working Right Now
Full Cross-Platform Support:
- Windows — Win32 windowing, Vulkan + DX12 + GLES backends
- Linux X11 — Pure Go X11 protocol, Vulkan + GLES backends
- Linux Wayland — Pure Go Wayland protocol, Vulkan + GLES backends
- macOS — Cocoa windowing, Metal backend
Complete Shader Pipeline:
- WGSL source code
- Compiles to SPIR-V (Vulkan), MSL (Metal), GLSL (OpenGL), HLSL (DirectX)
- Vertex, fragment, and compute shaders
- 50+ built-in functions, atomics, barriers
GPU-Accelerated 2D Graphics:
- Scene graph with dirty region tracking
- 29 blend modes (Porter-Duff + Advanced + HSL)
- Layers, alpha masks, GPU text rendering
- Sparse Strips algorithm (vello-inspired)
The Community Effect
Here's what I love most about open source: we're not alone.
When something doesn't work perfectly, we fix it together. In the past month alone:
- Community testers helped identify Metal backend issues on M1/M4 Macs
- Contributors suggested API improvements for Context naming
- Real-world shader testing exposed edge cases in naga
And if something still doesn't work? The Go community and Go Team are here. We'll fix it. Together.
2026: The Year of Polish and GUI
The rapid development phase is ending. 2026 is about maturity.
Q1 2026: Stabilization
| Focus | Description |
|---|---|
| Benchmarks | Comprehensive performance testing across all backends |
| Optimization | Memory allocations, GPU submission batching, shader compilation |
| Documentation | API references, tutorials, migration guides |
| Testing | Edge cases, stress tests, real-world validation |
Q2-Q3 2026: Enterprise GUI Toolkit
This is the big one. gogpu/ui — a professional GUI toolkit for Go.
What we're designing:
- Signals-based reactivity — Fine-grained updates, O(affected) not O(n)
- Tailwind-style API — Type-safe styling, AI-friendly, no context switching
- Enterprise features — Docking, virtualization, accessibility (AccessKit)
- Cross-platform — Desktop (gogpu), Web (WASM), Mobile (WebView)
// The API we're designing
Box(
Image(user.AvatarURL).Size(48, 48).Rounded(24),
Text(user.Name).Font(typography.Title).Color(theme.OnSurface),
).Padding(16).Gap(12).Background(theme.Surface).Rounded(12).Shadow(1)
Your voice matters. We're actively discussing architecture decisions:
- GitHub Discussions #18 — Share your ideas
- gogpu/ui Repository — Star and watch for updates
A Message to the Go Community
For years, the answer to "How do I do graphics in Go?" was:
"Just use Rust/C++."
That answer is no longer acceptable. Go deserves better.
Go 1.26 (February 2026) will bring us even more improvements. And now, Go finally has a graphics ecosystem to match its ambitions.
How You Can Help in 2026
Test on Your Hardware
git clone https://github.com/gogpu/gogpu
cd gogpu
go build -tags purego ./examples/triangle/
./triangle
Report issues: github.com/gogpu/gogpu/issues
Join the UI Discussion
We're making architectural decisions right now. Before v1.0.0 freezes the API.
Contribute
What we need:
- Cross-platform testing (especially macOS, Linux Wayland)
- Documentation and tutorials
- UI toolkit development (signals, widgets, layouts)
- Real-world usage examples
- Compute shader examples
Star the Repos
- gogpu/gogpu — Framework
- gogpu/gg — 2D Graphics
- gogpu/wgpu — Pure Go WebGPU
- gogpu/naga — Shader Compiler
- gogpu/ui — GUI Toolkit
Looking Forward
2025 was about proving it's possible.
2026 is about making it excellent.
Together, we're building the GPU ecosystem Go has always deserved. Not because we have to — but because we can.
Happy New Year, Gophers. Let's make 2026 the year Go graphics goes mainstream.
The GoGPU Series
All articles documenting the GoGPU journey in 2025:
- GoGPU: A Pure Go Graphics Library for GPU Programming — The beginning
- GoGPU: From Idea to 100K Lines in Two Weeks — The rapid development story
- Building a Shader Compiler in Pure Go: naga — WGSL to SPIR-V/MSL/GLSL/HLSL
- Pure Go 2D Graphics Library with GPU Acceleration: Introducing gogpu/gg — 2D graphics API
- GPU Compute Shaders in Pure Go: gogpu/gg v0.15.3 — Sparse Strips GPU compute
Related Pure Go Projects
Building GoGPU led to creating supporting libraries — all Pure Go, all zero-CGO:
- Pure-Go Race Detector — Race detection without CGO, used in GoGPU CI
- Go's Regexp is Slow. So I Built My Own — 3000x Faster — High-performance regex for text processing
Links
- Organization: github.com/gogpu
- Discussion: Join the conversation
- Latest Releases:
Questions? Drop them in the comments or join the discussion.
See you in 2026!
Top comments (0)