Inside Radix
Radix compiler#
Radix là trình biên dịch Faber. Đây là một crate riêng tư (radix/) triển khai toàn bộ quy trình biên dịch, từ văn bản mã nguồn đến các back-end đích.
Quy trình#
Radix hạ cấp mã nguồn Faber qua ba dạng biểu diễn trung gian:
- HIR (IR cấp cao) — lõi ngữ nghĩa. Tích hợp locale đọc, kiểm tra kiểu và các back-end trực tiếp trên HIR hoạt động tại đây.
- MIR (IR cấp trung) — IR có hình dạng phù hợp với quá trình thực thi. Đây là ranh giới sở hữu ngữ nghĩa, nơi diễn ra phân tích mượn và phân tích hiệu ứng.
- AIR (IR tự động vi phân) — phép biến đổi thuần hàm cho việc tự động vi phân và hợp nhất, được các lane đích GPU sử dụng.
Các lane đích#
| Lane | IR | Đầu ra | Trạng thái |
|---|---|---|---|
| Runtime CPU | MIR | FMIR (runtime Rust) | Đang phát hành |
| LLVM | MIR | Văn bản LLVM | Thử nghiệm |
| WASM | MIR | Văn bản WebAssembly | Thử nghiệm |
| TypeScript | HIR | Mã nguồn TypeScript | Thử nghiệm |
| Go | HIR | Mã nguồn Go | Thử nghiệm |
| GPU/WGSL | AIR | WGSL qua WGPU | Thử nghiệm |
Kiến trúc#
Radix sử dụng cách tiếp cận phát sinh văn bản thay vì nhúng LLVM. Các back-end đích tạo văn bản bằng ngôn ngữ tương ứng, sau đó văn bản này được biên dịch bằng toolchain riêng của đích. Cách này giữ cho trình biên dịch độc lập và giúp đầu ra của đích dễ đọc đối với con người.
Chẩn đoán#
Radix phát ra các mã chẩn đoán có cấu trúc với mã định danh ổn định:
LEX0xx— lỗi lexerPARSE0xx— lỗi parserSEM0xx— lỗi phân tích ngữ nghĩaDEFER0xx— tính năng trì hoãn (cú pháp hợp lệ nhưng chưa được triển khai)
Bạn có thể giải thích mọi chẩn đoán bằng faber explain <code>.
Radix compiler architecture#
Translation status: This page is currently available in English.