Tập 50: Runtime viết bằng DUY

Dấu mốc cuối cùng để rũ bỏ hoàn toàn giàn giáo của thế giới cũ là runtime của ngôn ngữ. Khi viết user program freestanding ở các sprint trước, chúng tôi vẫn còn dựa vào một file helper viết bằng C là user_runtime.c để làm cầu nối syscall.

Sprint 76-80 (Phase L) hoàn thành lời hứa: tự viết runtime và stdlib của DUY bằng chính nó.

Chúng tôi tạo ra stdlib/core/mod.duy, stdlib/result.duy, stdlib/option.duy và đặc biệt là runtime/duy_rt.duy. File duy_rt.duy định nghĩa điểm vào hệ thống _start, tự động khởi tạo bộ nhớ region, thiết lập ngắt và gọi hàm main của người dùng.

// runtime/duy_rt.duy
fn _start()
  effect unsafe, io
{
  // Khởi tạo stack, region runtime mặc định
  let code = main();
  sys_exit(code);
}

File user_runtime.c bị khai tử hoàn toàn. Mọi lời gọi syscall, mọi cấu trúc Result/Option dùng trong chương trình từ nay đều đi qua thư viện chuẩn viết bằng 100% code DUY.

Khi compile một chương trình freestanding với runtime mới và kiểm tra bảng ký hiệu (symbol table) của tệp ELF đầu ra, không còn bất kỳ dấu vết nào của C. Chỉ còn lại các biểu tượng của DUY và các đoạn assembly tối thiểu để giao tiếp phần cứng.

Ngôn ngữ đã có trọng lực thật sự. Nó không còn là một bộ lọc cú pháp chạy trên nền tảng khác; nó đã tự định nghĩa cách nó sống và tương tác với máy tính từ hạt bụi đầu tiên. Nhìn đứa con tinh thần của mình hoàn toàn rũ bỏ giàn giáo của C để tự do giao lưu trực tiếp với CPU là phần thưởng lớn nhất sau những đêm trắng đầy mồ hôi.


Tập 50: Runtime viết bằng DUY

Bình luận (0)

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