آشنایی با موج V0.0.6-PRE-BETA: تایپ قوی ، بازده عملکرد و ادامه پشتیبانی

سلام! من لوناستف ، توسعه دهنده موج هستم.
من از معرفی موج هیجان زده ام v0.0.6-pre-beta
، یک قدم اصلی به جلو در تکامل زبان.
این نسخه بر گسترش سیستم نوع ، تقویت پشتیبانی از عملکرد و ایجاد ویژگی های جدید قدرتمند مانند continue
بیانیه و حسابی شناور. با ساختار یافته WaveType
اکنون Enums جایگزین همه انواع مبتنی بر رشته ها ، Wave گامی قوی برای تبدیل شدن به یک زبان سیستم های تایپ شده است.
انواع بازده عملکرد اکنون کاملاً پشتیبانی می شوند و منطق بیان و قابل استفاده مجدد را قادر می سازند. شما می توانید توابع را با -> i32
، و مقادیر را با استفاده از return
کلمه کلیدی منطق نسل LLVM IR نیز به طور کامل آگاهانه به روز شده است ، و از تولید سطح پایین ایمن تر و دقیق تر اطمینان حاصل می شود.
موج به سرعت در حال رشد است – و من بسیار هیجان زده ام که موارد بعدی را به اشتراک بگذارم.
با تشکر از شما برای حمایت از این سفر
✅ ویژگی های اضافه شده
💬 پشتیبانی نظر
- از نظرات تک خطی با استفاده از
//
- از بلوک های اظهار نظر چند خطی با استفاده از
/* */
✅ پشتیبانی از بیانیه را ادامه دهید
- بسته به شرایط درون حلقه “در حالی که” می توان به تکرار بعدی پرش کرد
- نحو پشتیبانی شده برای 'if (شرط) {ادامه ؛ }
- در LLVM IR ، “ادامه” به عنوان یک بلوک بررسی شرایط برای حلقه مربوطه درمان می شود
🧠 تایپ قوی برای متغیرها و پارامترها
- انواع مبتنی بر رشته با ساختار یافته جایگزین شده است
WaveType
نماد در AST - کاملاً از انواع مانند پشتیبانی می کند
i32
باu64
باf32
برای هر دو متغیر و پارامتر - بررسی نوع استاتیک و تولید ایمن تر LLVM IR را فعال می کند
support پشتیبانی نوع شناور (f32
)
- حمایت
f32
تحت اللفظی (به عنوان مثال ،12.34
) - اجازه می دهد تا اعلامیه ، اولیه سازی و انتصاب مجدد
f32
متغیرها - استفاده از
f32
مقادیر در عملیات حسابی و مقایسه (به عنوان مثال ،if
باwhile
) - ترویج
float
بهdouble
با استفاده ازfpext
هنگام عبور بهprintf
برای مطابقت با C abi
چاپ فرمت شده (println("...", value)
)
- به طور خودکار انواع موج را به مشخصات مناسب فرمت C نقشه می کند (
%d
با%f
با%s
) - به درستی چاپ چاپ
f32
باi32
، و انواع رشته با استنتاج نوع
🌀 نوع آگاه LLVM IR
- LLVM
alloca
باstore
وتload
دستورالعمل ها بر اساس تولید می شوندWaveType
- از هر دو هدف اولیه و شناور پشتیبانی می کند
- کاربردهای
BasicTypeEnum
وتBasicValueEnum
برای متحد کردن ارزش گذاری ارزش - صحت در عبارات باینری از نوع مختلط و شرط ها را تضمین می کند
🧩 تعریف و تماس با عملکرد
- از توابع تعریف شده توسط کاربر با پارامترهای متعدد پشتیبانی می کند
- پارامترها از تایپ صریح پشتیبانی می کنند (به عنوان مثال ،
i32
باstr
) - توابع را می توان با لفظ یا متغیرها به عنوان آرگومان فراخوانی کرد
- LLVM IR به درستی پارامتر عبور با استفاده از
%0
با%1
، … سبک - مقادیر پارامتر به درستی هستند
store
د وload
ed از پشته - منطق ساخت و قابل استفاده مجدد را با ادغام کامل سطح IR امکان پذیر می کند
support پشتیبانی از نوع بازگشت عملکرد
- توابع اکنون می توانند انواع برگشتی را با استفاده از آن مشخص کنند
->
نحو (به عنوان مثال ،-> i32
) - انواع برگشتی پشتیبانی شده:
i32
باf32
باstr
(برنامه ریزی شده تر) - بیانیه های بازگشت (
return expr;
) LLVM مناسب را منتشر کنیدret
دستورالعمل - اگر هیچ برگشتی در یک عملکرد باطل مشخص نشده باشد ،
ret void
به طور خودکار درج شده است - تطبیق انواع بازده بین نسل Wave AST و LLVM IR را تضمین می کند
ویترین
با تشکر از شما برای استفاده از Wave! برای به روزرسانی ها و پیشرفت های آینده با ما در ارتباط باشید.
راهنمای نصب
برای لینوکس:
-
بارگیری و استخراج:
- بارگیری
wave-v0.0.6-pre-beta-linux.tar.gz
پرونده از منبع رسمی. - از دستور wget استفاده کنید:
wget https://github.com/LunaStev/Wave/releases/download/v0.0.6-pre-beta/wave-v0.0.6-pre-beta-linux.tar.gz
- بارگیری
-
تنظیم LLVMS
- یک ترمینال و نوع را باز کنید:
sudo apt-get update sudo apt-get install llvm-14 llvm-14-dev clang-14 libclang-14-dev lld-14 clang sudo ln -s /usr/lib/llvm-14/lib/libLLVM-14.so /usr/lib/libllvm-14.so export LLVM_SYS_140_PREFIX=/usr/lib/llvm-14 source ~/.bashrc
-
نصب را تأیید کنید:
- یک ترمینال و نوع را باز کنید:
wave --version
- اگر شماره نسخه نمایش داده شود ، نصب موفقیت آمیز بود.
همکار
lunastev | 🇰🇷
وب سایت
وب سایت
لوب