نقشهراه توسعهی یکپارچه Wave + Whale نسخه ۲
مراحل کامل
پیش-آلفا → پیش-بتا → آلفا → بتا → نسخه کاندیدا → انتشار
مرحله پیش بتا
هدف: تکمیل قسمت جلویی زبان Wave + پیادهسازی کامل قابلیتها با استفاده از بکاند LLVM
ویژگیهای اصلی
-
فقط از LLVM استفاده میشود (بدون Whale)
-
افزودن نحو جدید وجود ندارد، تنها مشخصات موجود پیادهسازی میشود
-
پیامهای خطا، بررسی نوع، و دامنهی متغیرها و پایدارسازی ساختار مرکزی جلویی
دامنه پیادهسازی
-
اعلان متغیر، خروجی، عملیات
-
تعریف و فراخوانی تابع
-
if / else if / else
-
while / break / continue
-
خروجی قالب، تعیین نوع
-
طراحی اشارهگر (به شکل
ptr<T>
) -
طراحی آرایه (
array<T, N>
) -
بررسی تایپ و AST ساختاری
تکنولوژیهای استفادهشده
-
Rust (تمام کامپایلر Wave)
-
LLVM (تولید IR، اجرای AOT)
-
inkwell / llvm-sys
مرحله Alpha
هدف: شروع معرفی Wahle، استفاده همزمان با LLVM / شروع پیادهسازی بکاند مبتنی بر Whale
ویژگیهای اصلی
-
LLVM به عنوان بکا ند پیشفرض
-
Whale به عنوان بکاند انتخابی
-
امکان شاخهبندی با گزینه
--backend
در زمان اجرای کد Wave
wavec run main.wave --backend=whale
wavec run main.wave --backend=llvm
فعالیتهای مرتبط با Whale
-
طراحی و تعریف ساختار IR برای Whale (شامل Instruction، Value، Block و غیره)
-
پیادهسازی Generator IR برای Whale
-
ژنراتور کد Whale (اسمبلر ی یا باینری)
-
پیادهسازی تایپهایی که تنها با Whale ممکن است (مانند
i1024
، اشارهگرهای پیشرفته و غیره)
نقطه کنترل
-
چاپ Hello World با Whale
-
اعلان/انتساب متغیر در Whale
-
پیادهسازی ابزار دیباگ IR برای Whale
-
مدیریت تایپ اشارهگر در Whale
-
پیشبرد تبدیل Wave به IR برای Whale
مرحله Beta
هدف: انتقال کامل به Whale، حذف LLVM بهینهسازی ترکیب Whale و Wave
ویژگیهای اصلی
-
فقط استفاده از Whale
-
حذف کامل LLVM (وابستگیها و ماژولها)
-
تمرکز بر بهینهسازی کد
-
از IR تا اجرا سریع و کارآمد