
Go 1.24 là bản phát hành mới nhất của ngôn ngữ lập trình Go, ra mắt tháng 2/2025 sáu tháng sau Go 1.23. Bản release này tập trung cải tiến toolchain, runtime, và thư viện chuẩn — đồng thời duy trì lời hứa tương thích ngược (Go 1 compatibility promise) khiến hầu hết chương trình Go cũ vẫn compile và chạy bình thường.
Thay đổi ngôn ngữ: Generic Type Aliases
Tính năng ngôn ngữ lớn nhất trong Go 1.24 là hỗ trợ đầy đủ generic type aliases. Một type alias giờ có thể được tham số hóa giống như defined type:
type MyMap[K comparable, V any] = map[K]V
var m MyMap[string, int] // OK: map[string]int
Trước đây Go chỉ cho phép generic defined types, không phải aliases. Tính năng này có thể tạm thời vô hiệu hóa bằng setting GOEXPERIMENT=nogenericalias, nhưng cờ này sẽ bị loại bỏ ở Go 1.25.

Cải tiến Go Command: Tool Directives
Go modules giờ theo dõi được executable dependencies thông qua directive tool trong go.mod. Điều này loại bỏ workaround cũ dùng blank imports trong file tools.go:
module example.com/myproject
tool github.com/sqlc-dev/sqlc/cmd/sqlc v1.27.0
tool golang.org/x/tools/cmd/goimports v0.22.0
Lệnh go tool giờ chạy được cả tools từ directive và tools có sẵn trong Go distribution. Pattern tool meta-pattern (go get tool, go install tool) cho phép upgrade hoặc cài đặt tất cả tools cùng lúc.
Các executable tạo bởi go run và go tool giờ được cache trong build cache — lặp lại nhanh hơn nhưng cache lớn hơn. Xem issue #69290.

Cgo: Annotation cho Performance
Cgo hỗ trợ annotation mới cho C functions:
//go:cgo_noescape— bảo chứng memory passed to C function không escape//go:cgo_nocallback— bảo chứng C function không callback vào Go
Hai annotation này giúp compiler tối ưu runtime performance đáng kể khi gọi C code. Xem cgo documentation.
Vet: Analyzer Mới và Cải tiến
Analyzer tests mới báo cáo lỗi thường gặp trong khai báo tests, fuzzers, benchmarks, examples: tên sai format, signature sai, example tham chiếu identifier không tồn tại. Analyzer này chạy mặc định trong go vet.
Analyzer printf giờ cảnh báo calls dạng fmt.Printf(nonConstFormatString) — gần như luôn là bug vì format string có thể chứa %. Chỉ áp dụng khi language version ≥ Go 1.24.
Analyzer buildtag giờ kiểm tra invalid major version build constraint trong //go:build (ví dụ //go:build go1.24.1 sai, phải dùng //go:build go1.24).
Runtime: weak package và finalizers cải tiến
Package mới weak cung cấp weak.Pointer[T] — con trỏ yếu không ngăn garbage collection. Hữu ích cho caches, canonicalization tables, observer patterns.
Finalizers giờ chạy chính xác hơn nhờ cải tiến internal. Package testing/synctest (experimental) hỗ trợ test concurrent code deterministic bằng cách mô phỏng thời gian và scheduling.

Thư viện chuẩn: Crypto mới và FIPS 140-3
Các package crypto mới:
crypto/mlkem— ML-KEM (Kyber) post-quantum KEMcrypto/hkdf,crypto/pbkdf2,crypto/sha3— promoted từgolang.org/x/crypto
Go 1.24 hỗ trợ FIPS 140-3 compliance mode cho các môi trường yêu cầu chứng chỉ bảo mật chính phủ.
Filesystem Access Giới Hạn Thư Mục
Package os thêm os.OpenRoot và os.Root cho directory-limited filesystem access — mở file chỉ trong subtree được phép, tăng bảo mật cho ứng dụng xử lý input không tin cậy.
Benchmark Function Mới
testing.B.Loop thay thế pattern for i := 0; i < b.N; i++ cũ, tự động handle timer, iteration count, và cleanup:
func BenchmarkX(b *testing.B) {
for b.Loop() {
// benchmark code
}
}
Ports: LoongArch64, RISC-V, WebAssembly
Objdump tool hỗ trợ disassembly trên LoongArch64, RISC-V, S390X. WebAssembly port cải tiến tail calls, stack switching. Windows ARM64 support ổn định hơn.
GOCACHEPROG: External Build Cache
GOCACHEPROG cho phép custom build cache backend (remote cache, distributed cache) thông qua executable giao tiếp qua stdin/stdout JSON protocol. Tích hợp tốt với Bazel, Buck, remote build systems.
Kết luận
Go 1.24 là bản release “tools và library” điển hình — không breaking changes ngôn ngữ lớn, nhưng cải tiến chất lượng đời sống developer (tool directives, vet analyzers, weak package, benchmark loop) và bảo mật (FIPS 140-3, post-quantum crypto, directory-limited fs). Nâng cấp từ Go 1.23 thường nhẹ nhàng: chỉ cần go get [email protected] và chạy go mod tidy.
Đối với team đang maintain codebase lớn, go vet với analyzer tests mới sẽ bắt được nhiều bug tiềm ẩn trong test suite. Và tool directive cuối cùng cũng chuẩn hóa cách quản lý dev dependencies.
Nguồn: Go 1.24 Release Notes, Go 1.24 Wiki
