
Zig 0.17.0 מעצב מחדש את מערכת הבנייה ומרחיב תמיכה בפלטפורמות ובשפה
גרסת Zig 0.17.0 מגיעה עם מערכת בנייה מעוצבת מחדש, מקשר ELF משופר, תמיכה רחבה יותר בפלטפורמות ועדכוני שפה — תוצאה של חמישה חודשי עבודה של 206 תורמים ו-925 commit.
התוכן המרכזי של המהדורה
Zig 0.17.0 כולל חמישה חודשי עבודה, שבהם ביצעו 206 תורמים 925 commit. המהדורה משנה באופן משמעותי את מערכת הבנייה: מפרידה את תהליך maker מתהליך configurer, מעצבת מחדש את מערכת המטמון, מוסיפה configure cache poisoning ומוסיפה Build Server Protocol. היא גם מרחיבה את אפשרויות lazy dependency ועיצוב הקוד.
מקשר ELF שופר עד כדי כך שהידור אינקרמנטלי ב-x86_64-linux אמור לעבוד עבור כולם. לניהול החבילות נוספו עקיפות path מקומיות, והידור המשאבים של Windows עבר לחבילה חיצונית.
תמיכה רחבה יותר במטרות
העבודה על פלטפורמה כוללת בדיקות CI טבעיות עבור aarch64-openbsd ו-CI של pull request עבור aarch64-freebsd ו-aarch64-netbsd. Zig מיישם הצמדה מחייבת של קוד עבור aarch64-openbsd, עובר על בעיית LLVM שמשפיעה על רוב בינריי aarch64-windows, ומציג stack trace עבור קריסות ו-assertion כושלים ב-ARM ו-SPARC של 32 ביט. אופקודים של אימות מצביעים (Pointer authentication) מטופלים כעת בזמן stack unwinding של AArch64.
נוספה תמיכה במטרות loongarch32-linux-gnu, ו-SPARC של 64 ביט הגיעה באופן כללי לסטטוס של ניתן לשימוש. מידע על מטרות נוסף עבור aarch64-switch, arm-gba, mipsel-psx ו-powerpc-wiiu. תמיכה מוקדמת מאוד ב-xtensa-linux זמינה באמצעות C או באמצעות LLVM backend ניסיוני. הספרייה הסטנדרטית קיבלה גם תמיכה למספר מטרות ספציפיות של Linux, OpenBSD ו-no-libc.
שינויים בשפה ובספרייה
הדקדוק הפורמלי של Zig והיישום שלה הותאמו זה לזה באמצעות מפענח רקורסיבי יורד שנוצר, שמשמש כ-fuzzing oracle. כעת @bitCast builtin מפרש מחדש את הייצוג הלוגי של ביטים של הערך ומתנהג באופן זהה ללא קשר ל-endianness של המטרה. הסמנטיקה שלו השתנתה עבור מערכים ווקטורים, ו-cast מ-extern struct או מ-union אינו מותר עוד. הערות המהדורה ממליצות לבדוק שימוש במערכים או וקטורים, כי חלק מהקוד עשוי להיכשל בלי שגיאת הידור.
@cImport builtin הוסר, ו-std.Build.Step.TranslateC הוכרז כמיושן, ומומלץ במקום תלות מפורשת בחבילת ZSF translate-c הרשמית. ה-builtin-ים החדשים @backingInt ו-@fromBackingInt מחליפים את @intFromEnum ו-@enumFromInt המיושנים. Zig 0.17.0 מוסיף גם את @SpirvType, מציג SafeAllocator ומעצב מחדש את StackFallbackAllocator.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.