پرش به مطلب اصلی

Whale زنجیره ابزار کامپایلر

خلاصه

Whale زنجیره ابزار کامپایلر اختصاصی برای زبان برنامه نویسی Wave است. Whale کل فرآیند تجزیه و تحلیل، بهینه‌سازی و تبدیل کد منبع نوشته شده با Wave به باینری برای پلتفرم هدف را بر عهده دارد. این زنجیره ابزار به طور اختصاصی برای زبان Wave طراحی شده و پشتیبانی از سایر زبان‌ها یا ادغام با زنجیره ابزار خارجی را در نظر نمی‌گیرد.

اهداف طراحی

اهداف اصلی طراحی Whale به شرح زیر است:

  • پشتیبانی اختصاصی Wave: Whale فقط از زبان Wave پشتیبانی می‌کند و ادغام با سایر زبان‌ها را در نظر ندارد.
  • ساختار ماژولار: هر عملکرد به عنوان یک ماژول مستقل تشکیل شده و می‌تواند در صورت نیاز اضافه یا حذف شود.
  • استفاده از IR مستقل: Whale از IR خارجی مانند LLVM IR استفاده نمی‌کند و یک نمایش میانی خاص خود را تعریف می‌کند.
  • پشتیبانی از چندین پلتفرم هدف: می‌توان برای محیط‌های متنوع بدون توجه به سیستم‌عامل و معماری سخت‌افزاری هدف ساخت.
  • کنترل دقیق: کل فرآیند کامپایل به گونه‌ای طراحی شده که توسعه‌دهنده بتواند آن را به طور جزئی کنترل کند.
  • حذف وابستگی‌های خارجی: Whale به رانتایم یا کامپایلر خارجی C/C++ وابسته نیست.

پشتیبانی هدف

Whale هدف پشتیبانی از محیط‌های زیر را دارد:

  • سیستم‌عامل:
    • لینوکس
    • ویندوز
    • مک‌او‌اس
    • UEFI (به جز BIOS)
    • WaveOS (سیستم‌عامل مخصوص)
  • معماری:
    • x86_64 (AMD64)
    • ARM64
    • سایر موارد با افزودن ماژول قابل گسترش است.

ادغام خارجی (FFI)

Whale به‌طور فنی برای پشتیبانی از FFI (رابط تابع خارجی) طراحی شده‌است، اما از نظر فلسفه Wave، ادغام با زبان‌های خارجی توصیه نمی‌شود و به‌طور استاندارد ارائه نمی‌شود. Wave به گونه‌ای طراحی شده که تمامی قابلیت‌ها را بتوان در خود زبان پیاده‌سازی کرد.

قابلیت توسعه

Whale می‌تواند به روش‌های زیر توسعه یابد:

  • افزودن ماژول برای سیستم‌عامل یا معماری جدید
  • درج الگوریتم‌های بهینه‌سازی سفارشی
  • سفارشی‌سازی تنظیمات پروفایل ساخت و لینک‌کننده
  • تعریف فرمت اجرایی خاص