Blog Go
Go 1.5 đã được phát hành
Hôm nay dự án Go tự hào phát hành Go 1.5, bản phát hành ổn định lớn thứ sáu của Go.
Bản phát hành này bao gồm những thay đổi đáng kể đối với việc triển khai. Toolchain của trình biên dịch đã được dịch từ C sang Go, loại bỏ dấu vết cuối cùng của code C khỏi codebase Go. Bộ gom rác đã được thiết kế lại hoàn toàn, mang lại sự giảm đáng kể trong thời gian tạm dừng thu gom rác. Các cải tiến liên quan đến bộ lập lịch cho phép chúng tôi thay đổi giá trị mặc định GOMAXPROCS (số goroutine thực thi đồng thời) từ 1 thành số lượng CPU logic. Các thay đổi đối với trình liên kết cho phép phân phối các gói Go như thư viện chia sẻ để liên kết vào các chương trình Go, và build các gói Go thành archive hoặc thư viện chia sẻ có thể được liên kết vào hoặc tải bởi các chương trình C (tài liệu thiết kế).
Bản phát hành cũng bao gồm cải tiến cho các công cụ lập trình viên. Hỗ trợ cho gói “internal” cho phép chia sẻ chi tiết triển khai giữa các gói. Hỗ trợ thử nghiệm cho “vendoring” các dependency bên ngoài là một bước tiến tới một cơ chế chuẩn để quản lý dependency trong các chương trình Go. Lệnh “go tool trace” mới cho phép trực quan hóa các trace chương trình được tạo ra bởi cơ sở hạ tầng tracing mới trong runtime. Lệnh “go doc” mới cung cấp giao diện dòng lệnh cải tiến để xem tài liệu gói Go.
Cũng có thêm cổng hệ điều hành và kiến trúc mới. Các cổng mới trưởng thành hơn là darwin/arm, darwin/arm64 (thiết bị iPhone và iPad của Apple), và linux/arm64. Ngoài ra còn có hỗ trợ thử nghiệm cho ppc64 và ppc64le (IBM 64-bit PowerPC, big và little endian).
Cổng darwin/arm64 mới và tính năng external linking cung cấp nền tảng cho dự án Go mobile, một thử nghiệm để xem Go có thể được dùng như thế nào để build ứng dụng trên thiết bị Android và iOS. (Bản thân công việc Go mobile không phải là một phần của bản phát hành này.)
Thay đổi ngôn ngữ duy nhất rất nhỏ, nới lỏng một hạn chế trong cú pháp map literal để làm cho chúng súc tích và nhất quán hơn với slice literal.
Thư viện chuẩn cũng có nhiều bổ sung và cải tiến. Gói flag nay hiển thị thông báo sử dụng gọn hơn. Gói math/big nay cung cấp kiểu Float để tính toán với số dấu phẩy động có độ chính xác tùy ý. Cải tiến đối với trình phân giải DNS trên hệ thống Linux và BSD đã loại bỏ yêu cầu cgo cho các chương trình tra cứu tên. Gói go/types đã được chuyển vào thư viện chuẩn từ kho lưu trữ golang.org/x/tools. (Các gói go/constant và go/importer mới cũng là kết quả của việc chuyển này.) Gói reflect đã thêm các hàm ArrayOf và FuncOf, tương tự như hàm SliceOf hiện có. Và tất nhiên, có danh sách thông thường về các sửa lỗi và cải tiến nhỏ hơn.
Để xem toàn bộ câu chuyện, xem ghi chú phát hành chi tiết. Hoặc nếu bạn không thể chờ để bắt đầu, hãy đến trang download để tải Go 1.5 ngay bây giờ.
Bài tiếp theo: Go GC: Ưu tiên độ trễ thấp và sự đơn giản
Bài trước: Tổng kết GopherCon 2015
Mục lục blog