
Zig 0.17.0 يعيد بناء نظام البناء ويوسع دعم المنصات واللغات
حدّث Zig 0.17.0 نظام البناء بشكل جذري، وعزّز رابط ELF، ووسّع دعم المنصات المستهدفة وأدخل تغييرات على مستوى اللغة. خلال خمسة أشهر من العمل، عمل عليه 206 مساهمًا وتم تنفيذ 925 commit.
التغييرات الرئيسية في الإصدار
يتضمن Zig 0.17.0 عمل 206 مساهمًا على مدى خمسة أشهر، قاموا بتنفيذ 925 commit. يغيّر الإصدار نظام build بشكل كبير: فصل عملية maker عن عملية configurer، وإعادة عمل نظام cache، وإدخال configure cache poisoning وإضافة Build Server Protocol. كما يتم توسيع lazy dependency ومعلمات التنسيق.
تم تحسين رابط ELF لدرجة أن التجميع التدريجي على x86_64-linux يجب أن يعمل للجميع. تُضاف إلى إدارة الحزم تجاوزات المسار المحلية path overrides، بينما ينتقل تجميع موارد Windows إلى حزمة خارجية.
توسيع المنصات المستهدفة
تشمل أعمال المنصات اختبار CI أصلي لـ aarch64-openbsd وCI لـ pull request الخاص بـ aarch64-freebsd وaarch64-netbsd. يستخدم Zig تقوية الكود الإلزامية على aarch64-openbsd، ويتجاوز مشكلة LLVM التي تؤثر على معظم ملفات aarch64-windows الثنائية، ويوفر stack trace للأعطال وassertion الفاشلة على ARM 32-بت وSPARC. تُعالج الآن رموز تشغيل المؤشر Pointer authentication أثناء stack unwinding في AArch64.
تمت إضافة دعم أهداف loongarch32-linux-gnu، بينما حقق SPARC 64-بت حالة صالحة للاستخدام بشكل عام. أُضيفت معلومات الأهداف لـ aarch64-switch وarm-gba وmipsel-psx وpowerpc-wiiu. يتوفر دعم مبكر جدًا لـ xtensa-linux عبر C backend أو LLVM backend التجريبي. كما أُضيف دعم المكتبة القياسية لأهداف Linux ضيقة وOpenBSD وno-libc.
تغييرات اللغة والمكتبة
تم ربط القواعد النحوية الرسمية لـ Zig بالتنفيذ عبر محلل recursive descent مولّد، الذي يُستخدم كـ fuzzing oracle. الدالة المضمّنة @bitCast تُعرّف الآن التمثيل المنطقي للبتات بشكل جديد وتتصرف بنفس الطريقة بغض النظر عن endianness الهدف. تغيرت دلالاتها للمصفوفات والمتجهات، بينما لن يُسمح بعد الآن بالتحويل من extern struct أو union. توصي ملاحظات الإصدار بالتحقق من استخدام المصفوفات أو المتجهات، لأن بعض الأكواد قد تتعطل دون خطأ في التجميع.
تمت إزالة الدالة المضمّنة @cImport، بينما أُعلن عن std.Build.Step.TranslateC كمتقادم لصالح الاعتماد الواضح على حزمة ZSF translate-c الرسمية. الدالتان المضمّنتان الجديدتان @backingInt و@fromBackingInt تحلّان محل الدالتين المتقادمتين @intFromEnum و@enumFromInt. يضيف Zig 0.17.0 أيضًا @SpirvType، ويُقدم SafeAllocator ويعيد بناء StackFallbackAllocator.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.