
Zig: מערכת הבנייה עברה עיצוב מחדש — ההגדרה הופרדה מההרצה
ב-devlog של Zig מתואר שינוי רחב שמפריד בין הגדרת build.zig לבין הרצת גרף הבנייה. זמן ההרצה של zig build -h ירד בכ-90%, וגרסה 0.17.0 צפויה בתוך שבועות ספורים, עם מקום לתיקונים גם ב-0.17.1.
פרויקט Zig ביצע שינוי רחב במערכת הבנייה: תהליך הגדרת הבנייה הופרד מהתהליך שמריץ אותה. אנדרו קלי, יוצר השפה, מתאר את הענף ב-devlog של הפרויקט כתצוגה מקדימה של הערות הגרסה הקרובה וכהתראה מוקדמת למי שרוצה לבחון את השינוי לפני יציאת Zig 0.17.0.
configurer ו-maker
בעבר קבצי build.zig ומימוש מערכת הבנייה הודרו לתהליך אחד מנופח במצב Debug; לאחר שהסקריפט בנה גרף בנייה בזיכרון, הריץ אותו קוד ה-build runner. כעת הסקריפט מהודר לתהליך קטן — ה-configurer — שעדיין רץ במצב Debug. כשהגרף מוכן הוא עובר סריאליזציה לקובץ הגדרות בינארי, שתהליך zig build האב שומר במטמון. במקביל מהודר באופן אסינכרוני תהליך הרצת הגרף — ה-maker — עם אופטימיזציות, והוא מריץ את הגרף המסוריאלי.
בזכות המטמון הגלובלי יש להדר את ה-maker פעם אחת בלבד לכל גרסת Zig. שלושה יעדים הניעו את הפיצול: בכל שינוי מהודרת רק הלוגיקה של build.zig ולא כל מערכת הבנייה, מה שחשוב יותר כעת כשיש --watch, --fuzz ו--webui; המערכת יכולה לדלג לגמרי על הרצת הסקריפט כשהיא יודעת שדבר לא ישתנה; ותהליך הרצת הגרף נבנה עם אופטימיזציות.
בנצ'מרקים: 150 מ"ש מול 14 מ"ש
האפקט הנמדד חד. הפקודה zig build -h ארכה בממוצע 150 מ"ש לפני השינוי ו-14.3 מ"ש אחריו — ירידה של כ-90.4% בזמן הריצה. מחזורי CPU ירדו ב-95.9%, ההוראות ב-95.6% והזיכרון בשיא ב-7.4%. הסיבה היא שימוש חוזר בהגדרות המסוריאלות שבמטמון במקום הרצת סקריפט הבנייה בכל קריאה.
מה נשבר ומה הלאה
מעבר לביצועים, המחבר מצפה שכלים חיצוניים כמו ZLS ירוויחו מקריאת קובץ ההגדרות המסוריאלי במקום לתחזק fork של ה-build runner. השינוי מעבד מחדש את המנגנונים הפנימיים, אך ברמת ה-API הוא כמעט לא שובר תאימות; החריגים מפורטים ב-pull request. הבולט שבהם: סקריפטים כבר לא יכולים לקרוא ארגומנטים של שורת הפקודה דרך b.args, ובמקום זאת מעבירים אותם עם run_cmd.addPassthruArgs(), מה שמסיר יכולת אחת אך מונע הידור מחדש של הסקריפט כשמשתנים הארגומנטים האלה.
Zig 0.17.0 צפויה בתוך שבועות ספורים, וגם ב-0.17.1 יימצא מקום לתיקונים.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.