

Introduction
Go 1.25 landed with a handful of under‑the‑hood improvements and two developer‑friendly additions that you can start using today: the go doc -http documentation server and the new hash.XOF interface for extendable‑output hashes. In this post we give you a concise release‑notes snapshot, then dive straight into hands‑on examples you can copy‑paste into your own projects.
What’s New in Go 1.25? (Release‑Notes Snapshot)
| Feature | What’s new | Why it matters | Quick takeaway |
|---|---|---|---|
| DWARF v5 debug information | Compiler & linker now emit DWARF 5 instead of DWARF 4. | Smaller debug sections → faster link times and lower binary size, especially for large monoliths. | Most debuggers already support DWARF 5; just verify your toolchain if symbols look odd. |
go doc -http |
New flag launches a local HTTP server that renders Go documentation as HTML. | No more copy‑pasting go doc output; browse the entire standard library (or any module) from a browser. |
go doc -http=:6060 → open . |
| XOF (extendable‑output function) interface | New hash.XOF interface in crypto, implemented by SHA‑3’s shake128 and shake256. |
Uniform API for hash functions that produce arbitrary‑length output (KDFs, random‑oracle constructions, etc.). | Use shake.NewShake128() → Read(buf) for any length you need. |
| Other notable tweaks |
|
Incremental quality‑of‑life improvements for everyday Go work. | Small tweaks, but they add up to smoother CI pipelines and safer code. |
For a deeper dive, check the official Go 1.25 release notes.
Hands‑On: go doc -http – Instant Local Docs
Running go doc -http turns your terminal into a tiny web server that serves fully rendered Go documentation.
# From any directory inside a module (or $GOPATH)
go doc -http=:6060
Open your browser and point it at . You’ll see three main sections:http://localhost:6060
- /pkg/std – the whole standard library.
- /src/<module>/… – your own packages.
- /pkg/mod/… – third‑party modules listed in
go.mod.
Quick workflow
# 1️⃣ Start the server (background is optional)
go doc -http=:6060 &
# 2️⃣ Open a tab in your favorite browser
open http://localhost:6060/pkg/net/http/
# 3️⃣ Search – e.g., type "ServeMux" and get the full GoDoc with examples.
Tips & Gotchas
| Tip | Details |
|---|---|
| Port conflicts | If :6060 is busy, pick another port (e.g., :8080). |
| Security | Bind to localhost for local use only – avoid exposing the server on a public interface. |
| Custom docs | Set GOFLAGS="-mod=mod" or adjust GOROOT/GOPATH to view vendored or replaced modules. |
Hands‑On: XOF – The New hash.XOF Interface
The new hash.XOF interface makes extendable‑output hashes behave like ordinary hash.Hash objects. It implements io.Reader for arbitrary‑length reads, Write to absorb input, and Reset to start over.
type XOF interface {
io.Reader // Read arbitrary‑length output
Write(p []byte) (n int, err error)
Reset()
Size() int // Security strength in bits
}
Example: Deriving a 64‑byte key with SHAKE‑128
package main
import (
"crypto/sha3"
"fmt"
"io"
)
func main() {
// 1️⃣ Create the XOF instance
xof := sha3.NewShake128()
// 2️⃣ Absorb the message
msg := []byte("Go 1.25 XOF demo")
if _, err := xof.Write(msg); err != nil {
panic(err)
}
// 3️⃣ Read any number of bytes – here 64 bytes for a symmetric key
key := make([]byte, 64)
if _, err := io.ReadFull(xof, key); err != nil {
panic(err)
}
fmt.Printf("Derived key (hex): %x\n", key)
}
This replaces the older pattern of calling shake.Sum256 (fixed size) or manually looping over Read. Because XOF implements the same methods as hash.Hash, you can drop it into existing APIs that expect a hash.
Real‑World Use‑Case: Simple KDF
func DeriveKey(secret, salt []byte, outLen int) []byte {
xof := sha3.NewShake256()
// Mix secret and salt – similar to HKDF's extract phase
xof.Write(secret)
xof.Write(salt)
out := make([]byte, outLen)
io.ReadFull(xof, out)
return out
}
// Example usage
key := DeriveKey([]byte("my‑secret"), []byte("my‑salt"), 48) // 48‑byte key
The outLen can be any size, making XOF perfect for generating long nonces, domain‑separated keys, or even stream‑cipher keystreams.
Quick‑Start Cheat Sheet
- Start local docs:
go doc -http=:6060 & - View docs: Open
in a browser.http://localhost:6060 - Create a SHAKE‑128 XOF:
sha3.NewShake128() - Read arbitrary bytes:
io.ReadFull(xof, buf) - Reset XOF:
xof.Reset()
Conclusion
Go 1.25’s new features are a blend of behind‑the‑scenes improvements (DWARF v5, better vet checks) and instantly useful tools (go doc -http and hash.XOF). Give the documentation server a spin to browse code faster, and experiment with XOF for flexible key‑derivation or random‑oracle needs. Upgrading today means you can start reaping these productivity gains right away.
Ready to upgrade? Run go get golang.org/dl/go1.25@latest && go1.25 download and test your code base with go test -run=^$ -bench=. -count=1 to confirm everything works.
Meta Description: Discover Go 1.25’s top new features, including the go doc -http local docs server and the new hash.XOF interface, with hands‑on examples and a quick‑start cheat sheet.
Focus Keywords: Go 1.25 new features, go doc http, Go XOF, DWARF v5 Go, SHAKE128 Go, Go 1.25 release notes
Related: Build AIoT Predictive Line: Pharma Digital Twin Guide.
Related: Google AI Ads 2026: Smart Bidding Infrastructure Guide.
Discover more from Susiloharjo
Subscribe to get the latest posts sent to your email.