Chuyển tới nội dung chính

Lộ Trình Phát Triển Tích Hợp Wave + Whale v2

Các Giai Đoạn Tổng Quan

pre-alpha → pre-beta → alpha → beta → rc → release

Giai Đoạn Pre-Beta

Mục tiêu: Hoàn thiện frontend của ngôn ngữ Wave + triển khai đầy đủ chức năng sử dụng backend LLVM

Đặc điểm chính

  • Chỉ sử dụng LLVM (chưa có Whale)

  • Không thêm cú pháp mới, chỉ triển khai theo đặc tả đã có

  • Ổn định cấu trúc tập trung vào frontend: thông báo lỗi, kiểm tra kiểu, phạm vi biến, v.v.

Phạm vi triển khai

  • Khai báo biến, xuất giá trị, toán tử

  • Định nghĩa và gọi hàm

  • if / else if / else

  • while / break / continue

  • In có định dạng, khai báo kiểu rõ ràng

  • Thiết kế con trỏ (ptr<T>)

  • Thiết kế mảng (array<T, N>)

  • Kiểm tra kiểu và cấu trúc AST

Công nghệ sử dụng

  • Rust (toàn bộ trình biên dịch Wave)

  • LLVM (tạo IR, thực thi AOT)

  • inkwell / llvm-sys


Giai Đoạn Alpha

Mục tiêu: Bắt đầu tích hợp Whale, sử dụng song song với LLVM / Bắt đầu triển khai backend Whale

Đặc điểm chính

  • LLVM là backend mặc định

  • Whale là backend tùy chọn

  • Có thể chọn backend bằng tuỳ chọn --backend khi chạy mã Wave

wavec run main.wave --backend=whale
wavec run main.wave --backend=llvm

Công việc liên quan đến Whale

  • Thiết kế và định nghĩa cấu trúc IR của Whale (Instruction, Value, Block, v.v.)

  • Triển khai trình tạo IR cho Whale

  • Tạo trình tạo mã Whale (assembly hoặc nhị phân)

  • Hỗ trợ các kiểu dữ liệu riêng cho Whale (như i1024, con trỏ nâng cao)

Cột mốc

  • In "Hello World" bằng Whale

  • Khai báo/gán biến trong Whale

  • Xây dựng công cụ gỡ lỗi IR Whale

  • Xử lý kiểu con trỏ trong Whale

  • Bắt đầu chuyển đổi Wave → Whale IR


Giai Đoạn Beta

Mục tiêu: Chuyển hoàn toàn sang Whale, loại bỏ LLVM. Tối ưu hóa sự kết hợp giữa Whale và Wave

Đặc điểm chính

  • Chỉ sử dụng Whale

  • Loại bỏ hoàn toàn LLVM (bao gồm cả phụ thuộc và mô-đun)

  • Tập trung vào tối ưu hóa mã

  • Chuyển từ IR sang thực thi nhanh chóng và hiệu quả

Phạm vi tối ưu hóa

  • Thiết kế các pass tối ưu hóa cho Whale IR

  • Cải thiện tốc độ tạo mã Whale

  • Hỗ trợ đầy đủ cú pháp Wave trên Whale

Kiểm thử

  • Kiểm thử đơn vị + toàn bộ bộ kiểm thử

  • Kiểm tra tương thích với WSON và thư viện chuẩn

  • Xác nhận khả năng build đa nền tảng bằng Whale


Giai Đoạn RC (Release Candidate)

Mục tiêu: Bắt đầu bootstrapping Wave — loại bỏ hoàn toàn mã Rust

Đặc điểm chính

  • Bắt đầu viết lại trình biên dịch Wave bằng chính ngôn ngữ Wave

  • Thực thi mã Wave dựa trên Whale

  • Whale bước vào giai đoạn tự biên dịch (self-hosting)

Phạm vi công việc

  • Viết lại trình tạo IR Wave sử dụng Whale

  • Xóa bỏ Rust và thay thế bằng mã Wave

  • Viết thư viện std và core bằng Wave

  • Khi bootstrapping thành công, trình biên dịch gốc Wave đầu tiên sẽ ra đời


Giai Đoạn Phát Hành (v0.0.1)

Mục tiêu: Phát hành chính thức / Cung cấp hệ sinh thái ngôn ngữ độc lập hoàn toàn dựa trên Whale

Thành phần

  • Wave (ngôn ngữ và thư viện chuẩn)

  • Whale (toolchain trình biên dịch)

  • Vex (trình quản lý gói)

  • WSON (định dạng dữ liệu)

Đặc điểm

  • Trình biên dịch hoàn toàn bằng Wave (bootstrapping thành công)

  • Whale được tối ưu hóa hoàn toàn

  • Hệ thống build và triển khai bằng Vex hoàn chỉnh

  • Bao gồm parser và serializer cho WSON

  • Hỗ trợ build đa hệ điều hành (vex build --windows v.v.)


Chiến Lược Meta Phát Triển

Chiến lượcMô tả
Chiến lược "tàu + đường ray"Phát triển Whale song song với việc xây dựng backend cho Wave
Chiến lược phân nhánh backendLựa chọn LLVM/Whale bằng tuỳ chọn --backend, quan trọng trong alpha
Kế hoạch đảo ngược cấu trúcTừ giai đoạn RC, Wave sẽ tự biên dịch chính nó thông qua Whale