Blog Go

Release Candidate Go 1.21

Eli Bendersky, on behalf of the Go team
21 June 2023

Release Candidate (RC) đầu tiên của Go 1.21 có mặt hôm nay trên trang download! Go 1.21 chứa đầy tính năng và cải tiến mới. Tải RC (release candidate) cho phép bạn thử nghiệm sớm, kiểm thử trên workload của mình, và báo cáo bất kỳ vấn đề nào trước khi phát hành chính thức (dự kiến vào tháng 8). Dưới đây là một số thay đổi và tính năng đáng chú ý trong Go 1.21; để xem danh sách đầy đủ, tham khảo ghi chú phát hành đầy đủ.

(Xin lưu ý rằng RC đầu tiên của Go 1.21 có tên go1.21rc2 vì một lỗi được tìm thấy và sửa sau khi tag go1.21rc1)

Cải tiến công cụ

  • Tính năng Profile Guided Optimization (PGO) chúng tôi thông báo xem trước trong 1.20 nay đã chính thức sẵn dùng! Nếu có file tên default.pgo trong thư mục gói main, lệnh go sẽ dùng nó để bật PGO build. Xem tài liệu PGO để biết thêm chi tiết. Chúng tôi đã đo tác động của PGO trên nhiều chương trình Go và thấy cải tiến hiệu năng từ 2-7%.
  • Công cụ go nay hỗ trợ tương thích ngôn ngữ ngượcxuôi.

Thay đổi ngôn ngữ

  • Các hàm built-in mới: min, maxclear.
  • Một số cải tiến cho suy luận kiểu với hàm generic. Mô tả về suy luận kiểu trong đặc tả đã được mở rộng và làm rõ.
  • Trong phiên bản Go tương lai, chúng tôi đang lên kế hoạch giải quyết một trong những lỗi phổ biến nhất trong lập trình Go: bắt giữ biến vòng lặp. Go 1.21 đi kèm với bản xem trước của tính năng này mà bạn có thể bật trong code bằng cách dùng biến môi trường. Xem trang wiki LoopvarExperiment để biết thêm chi tiết.

Bổ sung thư viện chuẩn

  • Gói log/slog mới cho structured logging.
  • Gói slices mới cho các thao tác phổ biến trên slice của bất kỳ kiểu phần tử nào. Bao gồm các hàm sắp xếp thường nhanh hơn và tiện lợi hơn gói sort.
  • Gói maps mới cho các thao tác phổ biến trên map của bất kỳ kiểu khóa hay phần tử nào.
  • Gói cmp mới với các tiện ích mới để so sánh các giá trị có thứ tự.

Cải thiện hiệu năng

Ngoài các cải tiến hiệu năng khi bật PGO:

  • Trình biên dịch Go đã được rebuild với PGO bật cho 1.21, và kết quả là nó build các chương trình Go nhanh hơn 2-4%, tùy thuộc vào kiến trúc host.
  • Do điều chỉnh bộ gom rác, một số ứng dụng có thể thấy giảm tới 40% tail latency.
  • Thu thập trace với runtime/trace nay tốn ít chi phí CPU hơn đáng kể trên amd64 và arm64.

Cổng mới đến WASI

Go 1.21 thêm cổng thử nghiệm cho WebAssembly System Interface (WASI), Preview 1 (GOOS=wasip1, GOARCH=wasm).

Để hỗ trợ viết code WebAssembly (WASM) tổng quát hơn, trình biên dịch cũng hỗ trợ một chỉ thị mới để import hàm từ WASM host: go:wasmimport.

Hãy tải Go 1.21 RC và thử xem! Nếu bạn phát hiện bất kỳ vấn đề nào, hãy tạo issue.

Bài tiếp theo: Govulncheck v1.0.0 đã được phát hành!
Bài trước: Kết quả Khảo sát Nhà phát triển Go 2023 Q1
Mục lục blog