Trình biên dịch ngôn ngữ D phiên bản 2.100

Các nhà phát triển ngôn ngữ lập trình D đã giới thiệu việc phát hành trình biên dịch tham chiếu chính DMD 2.100.0, hỗ trợ các hệ thống GNU/Linux, Windows, macOS và FreeBSD. Mã trình biên dịch được phân phối theo BSL (Giấy phép phần mềm tăng cường) miễn phí.

D được gõ tĩnh, có cú pháp tương tự như C/C++ và cung cấp hiệu suất của các ngôn ngữ được biên dịch, đồng thời mượn một số lợi ích bảo mật và hiệu quả phát triển của ngôn ngữ động. Ví dụ: nó cung cấp hỗ trợ cho mảng kết hợp, suy luận kiểu, quản lý bộ nhớ tự động, lập trình song song, trình thu gom rác tùy chọn, hệ thống mẫu, thành phần siêu lập trình, khả năng sử dụng thư viện C và một số thư viện C++ và Objective-C.

Trong số những thay đổi trong bản phát hành mới:

  • Kiểu nạp chồng toán tử cũ được sử dụng trong nhánh D1 đã bị ngừng sử dụng. Thay thế opNeg, opAdd_r, opAddAssign, v.v. đã xuất hiện opUnary, opBinary, opBinaryRight và opOpAssign. Kiểu nạp chồng toán tử cũ không được dùng nữa vào năm 2019 và sẽ gây ra lỗi kể từ bản phát hành 2.100.
  • Từ khóa xóa đã không được dùng nữa kể từ năm 2018. Thay vì xóa, bạn nên sử dụng hàm destroy hoặc core.memory.__delete.
  • Một thuộc tính @mustuse mới đã được triển khai có thể được áp dụng cho các kiểu cấu trúc và kết hợp như một phương pháp xử lý lỗi thay thế khi mã không thể xử lý các ngoại lệ (ví dụ: trong các khối @nogc). Nếu một biểu thức được đánh dấu bằng thuộc tính @mustuse không được sử dụng trong mã, trình biên dịch sẽ phát sinh lỗi.
  • Đối với mảng tĩnh, việc sử dụng thuộc tính ".tupleof" được phép lấy chuỗi giá trị (lvalue) của từng phần tử của mảng. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // tương tự foo(1, 2, 3); float[3] fa; fa.tupleof = ia.tupleof; // phép gán đơn giản fa = ia dẫn đến lỗi confirm(fa == [1F, 2F, 3F]);

Nguồn: opennet.ru

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