Phát hành ngôn ngữ lập trình Go 1.13

giới thiệu phát hành ngôn ngữ lập trình Go 1.13, đang được Google phát triển với sự tham gia của cộng đồng như một giải pháp kết hợp kết hợp hiệu suất cao của các ngôn ngữ được biên dịch với các ưu điểm của ngôn ngữ kịch bản như dễ viết mã, tốc độ phát triển và bảo vệ lỗi. Mã số dự án phân phối bởi theo giấy phép BSD.

Cú pháp của Go dựa trên các yếu tố quen thuộc của ngôn ngữ C với một số vay mượn từ ngôn ngữ Python. Ngôn ngữ khá ngắn gọn nhưng mã rất dễ đọc và dễ hiểu. Mã Go được biên dịch thành các tệp thực thi nhị phân độc lập chạy tự nhiên mà không cần sử dụng máy ảo (lập hồ sơ, gỡ lỗi và các hệ thống con phát hiện sự cố thời gian chạy khác được tích hợp dưới dạng thành phần thời gian chạy), cho phép bạn đạt được hiệu suất tương đương với các chương trình C.

Dự án ban đầu được phát triển với mục tiêu lập trình đa luồng và vận hành hiệu quả trên các hệ thống đa lõi, bao gồm việc cung cấp các phương tiện ở cấp độ người vận hành để tổ chức tính toán song song và tương tác giữa các phương pháp thực hiện song song. Ngôn ngữ này cũng cung cấp khả năng bảo vệ tích hợp chống lại các khối bộ nhớ được phân bổ quá mức và cung cấp khả năng sử dụng trình thu gom rác.

Chính đổi mớiđược giới thiệu trong bản phát hành Go 1.13:

  • Gói crypto/tls có hỗ trợ giao thức được bật theo mặc định TLS 1.3. Đã thêm gói mới "crypto/ed25519" có hỗ trợ chữ ký số Ed25519;
  • Đã thêm hỗ trợ cho các tiền tố chữ số mới để xác định số nhị phân (ví dụ 0b101), bát phân (0o377), ảo (2.71828i) và dấu phẩy động thập lục phân (0x1p-1021) và khả năng sử dụng ký tự "_" để phân tách các chữ số một cách trực quan với số lượng lớn (1_000_000);
  • Hạn chế về việc chỉ sử dụng các bộ đếm không dấu trong các thao tác dịch chuyển đã bị loại bỏ, điều này tránh được các chuyển đổi không cần thiết sang loại uint trước khi sử dụng toán tử “‹‹” và “atured”;
  • Đã thêm hỗ trợ cho nền tảng Illumos (GOOS=illumos). Khả năng tương thích với nền tảng Android 10 đã được đảm bảo. Yêu cầu đối với các phiên bản tối thiểu của FreeBSD (11.2) và macOS (10.11 “El Capitan”) đã được tăng lên.
  • Tiếp tục phát triển hệ thống mô-đun mới, có thể được sử dụng thay thế cho GOPATH. Trái ngược với các kế hoạch đã công bố trước đó trong Go 1.13, hệ thống này không được bật theo mặc định và yêu cầu kích hoạt thông qua biến GO111MODULE=on hoặc sử dụng ngữ cảnh trong đó các mô-đun được áp dụng tự động. Hệ thống mô-đun mới có tính năng hỗ trợ phiên bản tích hợp, khả năng phân phối gói và quản lý phụ thuộc được cải thiện. Với các mô-đun, nhà phát triển không còn bị ràng buộc phải làm việc trong cây GOPATH nữa mà có thể xác định rõ ràng các phần phụ thuộc được phiên bản và tạo các bản dựng có thể lặp lại.

    Không giống như các bản phát hành trước, ứng dụng tự động của hệ thống mới hiện hoạt động khi có tệp go.mod trong thư mục làm việc hiện tại hoặc thư mục mẹ khi chạy lệnh go, kể cả khi nó nằm trong thư mục GOPATH/src. Các biến môi trường mới đã được thêm vào: GOPRIVATE, xác định đường dẫn của các mô-đun có thể truy cập công khai và GOSUMDB, chỉ định các tham số truy cập vào cơ sở dữ liệu tổng kiểm tra cho các mô-đun không được liệt kê trong tệp go.sum;

  • Lệnh "go" theo mặc định sẽ tải các mô-đun và kiểm tra tính toàn vẹn của chúng bằng cách sử dụng cơ sở dữ liệu tổng kiểm tra và nhân bản mô-đun do Google duy trì (proxy.golang.org, sum.golang.org và index.golang.org);
  • Việc hỗ trợ chỉ dành cho các gói nhị phân đã bị ngừng; việc xây dựng một gói ở chế độ “//go:binary-only-package” hiện dẫn đến lỗi;
  • Đã thêm hỗ trợ cho hậu tố "@patch" vào lệnh "go get", cho biết rằng mô-đun phải được cập nhật lên bản phát hành bảo trì mới nhất nhưng không thay đổi phiên bản chính hoặc phụ hiện tại;
  • Khi truy xuất các mô-đun từ hệ thống kiểm soát phiên bản, lệnh "go" hiện thực hiện kiểm tra bổ sung trên chuỗi phiên bản, cố gắng khớp số phiên bản giả với siêu dữ liệu từ kho lưu trữ;
  • Đã thêm hỗ trợ kiểm tra lỗi (gói lỗi) thông qua việc tạo các trình bao bọc cho phép sử dụng các trình xử lý lỗi tiêu chuẩn. Ví dụ, lôi "e" có thể được khắc phục lỗi "w" bằng cách cung cấp một phương thức mở gói, trả về "w". Cả hai lỗi "e" và "w" đều có trong chương trình và các quyết định được đưa ra dựa trên lỗi "w", nhưng "e" cung cấp ngữ cảnh bổ sung cho "w" hoặc diễn giải nó theo cách khác;
  • Hiệu suất của các thành phần thời gian chạy đã được tối ưu hóa (tốc độ tăng lên tới 30% đã được ghi nhận) và việc trả lại bộ nhớ mạnh mẽ hơn cho hệ điều hành đã được triển khai (trước đây, bộ nhớ được trả lại sau năm phút trở lên, nhưng bây giờ ngay lập tức sau khi giảm kích thước heap).

Nguồn: opennet.ru

Thêm một lời nhận xét