في الآونة الأخيرة، تم إصدار الإصدار التالي من Kaitai Struct 0.9 - لغة وصف وأدوات لتحليل التنسيقات الثنائية المختلفة (على سبيل المثال، حزم الشبكة وملفات الصور/الصوت/الفيديو وقواعد البيانات والمحفوظات والحاويات وما إلى ذلك). على الرغم من أن الإصدار رقم 0.9 يبدو تافهًا، إلا أنه يعد إصدارًا رئيسيًا يتضمن تطورات على مدار العامين ونصف العام الماضيين. خلال هذا الوقت، تطورت اللغة إلى مجموعة كاملة من المشاريع:
- مترجم يسمح لك بالحصول على كود مصدر محلل جاهز بمجموعة متنوعة من لغات البرمجة (C++، C#، Construct، Go، Java، JavaScript، Lua، Nim، Perl، PHP، Python، Ruby) من التنسيق ملف المواصفات (.ksy)، بالإضافة إلى الرسوم البيانية بتنسيق GraphViz ومواصفات التنسيق التي يمكن قراءتها بواسطة الإنسان بتنسيق HTML؛
- أدوات للتطوير المريح للمواصفات مع التحكم البصري المتزامن: بيئة تطوير متكاملة للويب, متخيل وحدة التحكم, البرنامج المساعد لكود Visual Studio, الهوبيت, فيليس, البرنامج المساعد لـ Hiew, البرنامج المساعد لثنائي النينجا;
- وحدات لدمج Kaitai Struct في عملية التجميع لمافن, لجرادل, لبيثون, لجافا سكريبت/WebPack
- مكتبة التنسيق، والذي يحتوي بالفعل على 156 وصفًا في هذا الإصدار (و 78 تنسيقًا آخر هي في طور مراجعة طلب السحب).
- مكتبة خوارزميات ضغط المكونات الإضافية ضغط كايتاي
- وحدة FUSE - Kaitai FS، والذي يسمح لك بتحميل ملف كنظام ملفات، باستخدام وصف ksy لتنسيقه
لغة معترف بها من قبل جيثب ويستخدم الآن في أكثر من 400 مشروع مجاني/مفتوح المصدر لتحليل جميع أنواع تنسيقات البيانات الغريبة، بدءًا من ملفات بيانات اللعبة الخاصة بالهندسة العكسيةكومينغ تحليل بروتوكولات الاتصالات عبر الأقمار الصناعية.
من بين الابتكارات الرئيسية للغة 0.9 يجدر تسليط الضوء على:
- دعم اللغات المستهدفة الجديدة (Python عبر مكتبة Construct، Nim، إنشاء الوثائق بتنسيق HTML)
- الدعم الكامل لـ C++ الحديثة (المؤشرات الذكية، لا حاجة لإدارة الذاكرة يدويًا، وإصلاح جميع حالات تسرب الذاكرة المعروفة)
- دعم لمعالجة الأنواع المتداخلة عبر بناء الجملة مثل foo::bar::baz
- دعم التحقق من صحة بيانات القراءة وفقًا للشروط الموصوفة (صالحة)
- حساب أحجام هياكل البيانات الثابتة بالبايت والبت (حجم المشغلين وحجم البت)
- الوصف الرسمي للغة في النموذج مخططات JSON، منها الآن يتم إنشاء الوثائق
المصدر: linux.org.ru