דלג לתוכן הראשי

ערכת הכלים של מהדר Whale

סקירה כללית

Whale היא ערכת כלים ייעודית למהדרים לשפת התכנות Wave. Whale אחראית על ניתוח, מיטוב והמרת קוד המקור שנכתב ב-Wave לקבצים בינאריים לפלטפורמות יעד. ערכת כלים זו תוכננה להיות ייעודית לשפת Wave ואין לקחת בחשבון תמיכה בשפות אחרות או אינטגרציה עם ערכות כלים חיצוניות.

מטרות עיצוב

המטרות העיקריות בעיצוב Whale הן:

  • תמיכה ייעודית ל-Wave: Whale תומכת רק בשפת Wave ולא לוקחת בחשבון אינטגרציה עם שפות אחרות.
  • מבנה מודולרי: כל פונקציה מורכבת כמודול עצמאי וניתן להוסיף או להסיר לפי הצורך.
  • שימוש ב-IR עצמאי: Whale לא משתמש ב-IR חיצוני כמו LLVM IR, אלא מגדיר ייצוג ביניים משל עצמו.
  • תמיכה בפלטפורמות מרובות יעד: ניתן לבנות עבור סביבות מגוונות ללא קשר למערכת ההפעלה ולארכיטקטורת החומרה.
  • שליטה מדויקת: תהליך הקומפילציה כולו בנוי כך שהמפתח יכול לשלוט בו בפירוט רב.
  • הסרת תלות חיצונית: Whale אינו תלוי בזמן ריצה או בקומפיילר חיצוניים של C/C++.

תמיכה ביעדים

Whale שואף לתמוך בסביבות היעד הבאות:

  • מערכות הפעלה:
    • לינוקס
    • חלונות
    • macOS
    • UEFI (למעט BIOS)
    • WaveOS (מערכת הפעלה עצמאית)
  • ארכיטקטורה:
    • x86_64 (AMD64)
    • ARM64
    • ניתן להרחבה באמצעות הוספת מודולים נוספים

אינטגרציה חיצונית (FFI)

Whale מתוכננת לתמיכה ב-FFI (ממשק פונקציות חיצוניות) מבחינה טכנולוגית, אך לפי הפילוסופיה של Wave, אינטגרציה עם שפות חיצוניות אינה מומלצת ולא מסופקת כברירת מחדל. Wave מתוכננת כך שניתן יהיה ליישם את כל הפונקציות בתוך השפה העצמאית שלה.

התרחבות

ניתן להרחיב את Whale בדרכים הבאות:

  • הוספת מודול עבור מערכת הפעלה או ארכיטקטורה חדשה
  • הוספת אלגוריתם אופטימיזציה מותאם אישית
  • התאמה אישית של פרופיל בנייה והגדרות מקשר
  • הגדרת פורמט הפעלה עצמי