
יוצר Valen מחבר שפות חדשות ל-Rust בלי C ABI
Evan Ovadia, יוצר שפת התכנות Valen ולשעבר מהנדס ב-Google, הציג דרך ניסיונית לקרוא לקוד גנרי של Rust ישירות, בהרצת מהדר Rust כספרייה במקום לעבור דרך ממשק C ABI, ובכך לעקוף את מגבלות C.
Evan Ovadia, המפתח שמאחורי שפת התכנות Valen, פרסם שיטה ניסיונית לחבר שפה חדשה ישירות ל-Rust בלי להעביר קריאות דרך ממשק C (C ABI). The Register דיווח על העבודה ב-25 בספטמבר 2026.
Ovadia, מהנדס לשעבר ב-Google ואחד התורמים המרכזיים ל-Mojo, הציג את הפרויקט בפוסט בבלוג מ-17 בספטמבר 2026. את השם "Golden Spike" הוא שאל מטקס מ-1869 ביוטה, שבו מסמר זהב במשקל 17.6 קראט השלים את מסילת הברזל הטרנס-יבשתית הראשונה בארה"ב.

למה C ABI נעצר בגנריות
ספריות חוצות בדרך כלל גבולות בין שפות בתור C: קרייט של Rust חושף פונקציות כ-extern "C" וטיפוסים כ-repr(C), ושפות אחרות קוראות להן דרך ממשק פונקציות חוץ. אבל ל-C אין גנריות, ולכן פונקציה גנרית ב-Rust אינה ניתנת לקריאה מבחוץ כלל; גם ל-Rust אין ABI יציב משל עצמו.
Ovadia רצה ש-Valen יהיה חלופה מהירה ונוחה יותר ל-Rust, ועדיין ישתמש בספריות של Rust, כולל ספריית הגרפיקה שלו מבוססת wgpu. "השאלה המרכזית, התעלומה המרכזית שצריך לפתור, היא איך עושים גנריות בין שפות?" כתב.
שני מהדרים, ריקוד אחד
במקום לייצר מעטפות C, מהדר Valen מפעיל כעת את rustc ישירות. הוא קורא את ה-import-ים של Valen, מייצר קובץ lib.rs קטן ב-Rust עם הצהרות use מקבילות, ומעביר אותו ל-rustc_driver::run_compiler, שמאפשר להריץ את מהדר Rust כספרייה; callback מודיע מתי התלויות הנדרשות נטענו.
החלק הקשה הוא יצירת המופעים (instantiation): מכיוון ששני הצדדים גנריים, שני המהדרים צריכים לגלות יחד אילו גרסאות קונקרטיות של פונקציה נקראות בפועל. Ovadia מכנה זאת "הריקוד": כשנחוצה ל-rustc פונקציה שנכתבה ב-Valen, הממומורפייזר של Valen מייצר אותה. לשם כך הוא הוסיף ל-rustc כ-100 שורות של callback-ים; אלה נשענים על API פרטי ולא יציב ואינם ניתנים למיזוג ל-upstream, הוא מזהיר.
הרינדור הראשון ומה שחסר
ההוכחה הגיעה כשהתוכנית ב-Valen פתחה חלון Rust, העבירה closure של Valen שמממש trait של Rust ללופ גנרי ב-Rust, ורינדרה פריים מספריית הגרפיקה שלו. "המסמר הזהוב ננעץ במקום, והמהדר הטרנס-יבשתי נולד", כתב.
היעד הבא הוא בטיחות זיכרון בגבול. ב-Valen משתמשים ב-group borrowing, גישה בזמן הידור שמאפשרת הפניות משותפות וברות-שינוי; האב-טיפוס כבר מבצע בדיקות borrow חלקיות מעבר לגבול ל-Rust. נותרו קצוות חדים: מבנים בגבול חייבים להיות בגודל אפס, generational references מושבתים, וטיפוס Rust קיים עדיין לא ניתן להצהיר כליניארי. המאגר פורסם תחת רישיון Apache 2.0 והוא עדיין אב-טיפוס.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.