เมื่อไม่นานมานี้ Kaitai Struct 0.9 เวอร์ชันถัดไปได้เปิดตัว - ภาษาคำอธิบายและเครื่องมือสำหรับการแยกวิเคราะห์รูปแบบไบนารี่ต่างๆ (เช่น แพ็กเก็ตเครือข่าย ไฟล์รูปภาพ/เสียง/วิดีโอ ฐานข้อมูล ไฟล์เก็บถาวร คอนเทนเนอร์ ฯลฯ) แม้ว่าเวอร์ชัน 0.9 จะดูไร้สาระ แต่นี่เป็นเวอร์ชันหลักที่มีการพัฒนาตลอด 2.5 ปีที่ผ่านมา ในช่วงเวลานี้ ภาษาได้เติบโตขึ้นเป็นโครงการทั้งครอบครัว:
- คอมไพเลอร์ที่ช่วยให้คุณได้รับซอร์สโค้ด parser สำเร็จรูปในภาษาการเขียนโปรแกรมที่หลากหลาย (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) จากรูปแบบ ไฟล์ข้อกำหนด (.ksy) รวมถึงไดอะแกรมในรูปแบบ GraphViz และข้อกำหนดรูปแบบที่มนุษย์อ่านได้ใน HTML
- เครื่องมือสำหรับการพัฒนาข้อมูลจำเพาะที่สะดวกพร้อมการควบคุมด้วยภาพพร้อมกัน: เว็บ IDE, โปรแกรมสร้างภาพคอนโซล, ปลั๊กอินสำหรับรหัส Visual Studio, ฮอบบิท, Veles, ปลั๊กอินสำหรับ Hiew, ปลั๊กอินสำหรับ Binary Ninja;
- โมดูลสำหรับบูรณาการ Kaitai Struct เข้ากับกระบวนการประกอบ สำหรับมาเวน, สำหรับเกรเดิล, สำหรับหลาม, สำหรับจาวาสคริปต์/WebPack
- ไลบรารีรูปแบบซึ่งมีคำอธิบายอยู่แล้ว 156 รายการในรุ่นนี้ (และ อีก 78 รูปแบบ อยู่ระหว่างการตรวจสอบคำขอดึงข้อมูล)
- ไลบรารีของอัลกอริธึมการบีบอัดปลั๊กอิน ไคไต คอมเพรส
- โมดูลสำหรับ FUSE - Kaitai FSซึ่งอนุญาตให้คุณเมาท์ไฟล์เป็นระบบไฟล์ โดยใช้คำอธิบาย ksy ของรูปแบบไฟล์
Язык ได้รับการยอมรับจาก GitHub และตอนนี้ถูกใช้ในโครงการฟรี / โอเพ่นซอร์สมากกว่า 400 โครงการเพื่อแยกวิเคราะห์รูปแบบข้อมูลที่แปลกใหม่ทุกประเภท ตั้งแต่ ไฟล์ข้อมูลเกมที่เป็นกรรมสิทธิ์ของวิศวกรรมย้อนกลับคัมมิง การวิเคราะห์โปรโตคอลการสื่อสารผ่านดาวเทียม.
ในบรรดานวัตกรรมหลักของภาษา 0.9 เป็นสิ่งที่ควรค่าแก่การเน้น:
- รองรับภาษาเป้าหมายใหม่ (Python ผ่านไลบรารี Construct, Nim, การสร้างเอกสารประกอบในรูปแบบ HTML)
- รองรับ C++ สมัยใหม่อย่างเต็มรูปแบบ (พอยน์เตอร์อัจฉริยะ ไม่จำเป็นต้องจัดการหน่วยความจำด้วยตนเอง แก้ไขการรั่วไหลของหน่วยความจำที่ทราบทั้งหมด)
- รองรับการระบุประเภทที่ซ้อนกันผ่านไวยากรณ์เช่น foo::bar::baz
- รองรับการตรวจสอบข้อมูลการอ่านตามเงื่อนไขที่อธิบายไว้ (ถูกต้อง)
- การคำนวณขนาดของโครงสร้างข้อมูลคงที่เป็นไบต์และบิต (ขนาดของตัวดำเนินการขนาดและบิต)
- คำอธิบายอย่างเป็นทางการของภาษาในรูปแบบ สคีมา JSONซึ่งตอนนี้ เอกสารถูกสร้างขึ้น
ที่มา: linux.org.ru