Blog Go
Go 1.23 được phát hành
Hôm nay đội ngũ Go vui mừng phát hành Go 1.23, mà bạn có thể nhận được bằng cách truy cập trang tải xuống.
Nếu bạn đã cài đặt Go 1.22 hoặc Go 1.21 trên máy của mình,
bạn cũng có thể thử go get [email protected] trong một module hiện có.
Lệnh này sẽ tải xuống toolchain mới và cho phép bạn bắt đầu sử dụng nó
trong module của mình ngay lập tức. Vào một thời điểm nào đó sau này, bạn có thể tiếp tục
với go get [email protected] khi sẵn sàng chuyển hoàn toàn sang Go 1.23
và để phiên bản đó trở thành phiên bản Go tối thiểu mà module của bạn yêu cầu.
Xem Quản lý yêu cầu phiên bản Go của module bằng go get
để biết thêm thông tin về chức năng này.
Go 1.23 đi kèm với nhiều cải tiến so với Go 1.22. Một số điểm nổi bật bao gồm:
Các thay đổi về ngôn ngữ
-
Biểu thức phạm vi trong vòng lặp “for-range” giờ đây có thể là các hàm iterator, chẳng hạn như
func(func(K) bool). Điều này hỗ trợ các iterator do người dùng định nghĩa trên các chuỗi tùy ý. Có một số bổ sung cho các gói chuẩnslicesvàmapshoạt động với iterator, cũng như một góiitermới. Ví dụ, nếu bạn muốn thu thập các khóa của một mapmvào một slice và sau đó sắp xếp các giá trị của nó, bạn có thể thực hiện điều đó trong Go 1.23 vớislices.Sorted(maps.Keys(m)).Go 1.23 cũng bao gồm hỗ trợ xem trước cho bí danh kiểu generic.
Đọc thêm về các thay đổi về ngôn ngữ và iterator trong ghi chú bản phát hành.
Các cải tiến về công cụ
- Bắt đầu từ Go 1.23, toolchain Go có thể thu thập thống kê về việc sử dụng và lỗi phá vỡ để giúp hiểu cách toolchain Go được sử dụng và mức độ hoạt động hiệu quả của nó. Đây là telemetry của Go, một hệ thống opt-in. Vui lòng cân nhắc tham gia để giúp chúng tôi duy trì Go hoạt động tốt và hiểu rõ hơn về cách sử dụng Go. Đọc thêm về telemetry của Go trong ghi chú bản phát hành.
- Lệnh
gocó các tiện ích mới. Ví dụ, chạygo env -changedgiúp dễ dàng hơn khi chỉ xem những cài đặt có giá trị hiệu dụng khác với giá trị mặc định, vàgo mod tidy -diffgiúp xác định các thay đổi cần thiết đối với các tệp go.mod và go.sum mà không sửa đổi chúng. Đọc thêm về lệnh Go trong ghi chú bản phát hành. - Tiểu lệnh
go vetgiờ đây báo cáo các ký hiệu quá mới so với phiên bản Go dự kiến. Đọc thêm về các công cụ trong ghi chú bản phát hành.
Cải tiến thư viện chuẩn
- Go 1.23 cải thiện việc triển khai
time.Timervàtime.Ticker. Đọc thêm về các thay đổi về bộ hẹn giờ trong ghi chú bản phát hành. - Có tổng cộng 3 gói mới trong thư viện chuẩn Go 1.23:
iter,structs, vàunique. Góiiterđược đề cập ở trên. Góistructsđịnh nghĩa các kiểu đánh dấu để thay đổi các thuộc tính của một struct. Góiuniquecung cấp các tiện ích để chuẩn hóa (“interning”) các giá trị có thể so sánh. Đọc thêm về các gói thư viện chuẩn mới trong ghi chú bản phát hành. - Có nhiều cải tiến và bổ sung cho thư viện chuẩn được liệt kê trong phần các thay đổi nhỏ đối với thư viện của ghi chú bản phát hành. Tài liệu “Go, Tương thích ngược, và GODEBUG” liệt kê các thiết lập GODEBUG mới trong Go 1.23.
-
Go 1.23 hỗ trợ chỉ thị
godebugmới trong các tệpgo.modvàgo.workđể cho phép kiểm soát riêng các GODEBUG mặc định và chỉ thị “go” củago.mod, bổ sung cho các chú thích chỉ thị//go:debugđã được cung cấp từ hai bản phát hành trước (Go 1.21). Xem tài liệu đã cập nhật về Giá trị GODEBUG mặc định.
Nhiều cải tiến và thay đổi hơn
- Go 1.23 bổ sung hỗ trợ thử nghiệm cho OpenBSD trên RISC-V 64-bit (
openbsd/riscv64). Có một số thay đổi nhỏ liên quan đến Linux, macOS, ARM64, RISC-V và WASI. Đọc thêm về các cổng trong ghi chú bản phát hành. - Thời gian xây dựng khi sử dụng tối ưu hóa dựa trên hồ sơ thực thi (PGO) được giảm xuống, và hiệu năng với PGO trên các kiến trúc 386 và amd64 được cải thiện. Đọc thêm về runtime, trình biên dịch và trình liên kết trong ghi chú bản phát hành.
Chúng tôi khuyến khích mọi người đọc ghi chú bản phát hành Go 1.23 để biết thông tin đầy đủ và chi tiết về những thay đổi này, cũng như mọi thứ khác đã được bổ sung trong Go 1.23.
Trong vài tuần tới, hãy đón đọc các bài đăng blog tiếp theo sẽ đi sâu hơn
vào một số chủ đề được đề cập ở đây, bao gồm “range-over-func”, gói unique mới,
các thay đổi trong triển khai bộ hẹn giờ của Go 1.23, và nhiều nội dung khác.
Cảm ơn tất cả mọi người đã đóng góp cho bản phát hành này bằng cách viết mã và tài liệu, báo cáo lỗi, chia sẻ phản hồi và thử nghiệm các bản ứng viên phát hành. Những nỗ lực của các bạn đã giúp đảm bảo rằng Go 1.23 ổn định nhất có thể. Như thường lệ, nếu bạn nhận thấy bất kỳ vấn đề nào, vui lòng tạo một issue.
Chúc bạn tận hưởng Go 1.23!
Bài tiếp theo: Range Qua Các Kiểu Hàm
Bài trước: Tính ngẫu nhiên an toàn trong Go 1.22
Mục lục blog