Tập 79: Methods và traits: DUY biết nói `impl`

Vượt qua Phase S, chúng tôi bước vào Phase T (Sprint 137-139) — giai đoạn nới rộng khả năng biểu đạt của ngôn ngữ để chuẩn bị cho các workload lớn hơn.

Đầu tiên là sự xuất hiện của Methods và Traits V0.

Trước đó, DUY chỉ là một ngôn ngữ thủ tục phẳng (procedural language). Khi muốn thao tác trên struct, người dùng phải viết buffer_write(buf, val). Giờ đây, chúng tôi hỗ trợ cú pháp hướng đối tượng nhẹ nhàng: buf.write(val).

struct Buffer {
  data: view[u8]
}
impl Buffer {
  fn write(mut ref self, val: u8)
    effect mut
}

Checker phân giải cú pháp này thông qua cơ chế UFCS (Universal Function Call Syntax) — hạ đường buf.write(val) thành lời gọi hàm tĩnh Buffer::write(buf, val) ở tầng IR. Không có dynamic dispatch ngầm, không có vtable ẩn, chi phí thực thi hoàn toàn bằng 0.

Traits V0 giới thiệu static interface validation và coherence rules tối thiểu. Lập trình viên có thể khai báo các ràng buộc giao tiếp và bắt các struct phải tuân thủ. Nếu một struct khai báo impl một trait mà thiếu hàm, checker sẽ reject lập tức. Ngôn ngữ bắt đầu bớt đi hình ảnh của một bộ khung thô sơ và khoác lên mình hình hài của một công cụ lập trình hiện đại, có tiếng nói cấu trúc riêng.


Bình luận (0)

Đang tải bình luận...