Baru-baru ini, versi Kaitai Struct 0.9 yang seterusnya telah dikeluarkan - bahasa penerangan dan alatan untuk menghuraikan pelbagai format binari (contohnya, paket rangkaian, fail imej/audio/video, pangkalan data, arkib, bekas, dll.). Walaupun versi nombor 0.9 yang kelihatan remeh, ini adalah keluaran utama yang merangkumi perkembangan sepanjang 2.5 tahun yang lalu. Pada masa ini, bahasa telah berkembang menjadi satu keluarga keseluruhan projek:
- pengkompil yang membolehkan anda mendapatkan kod sumber parser siap sedia dalam pelbagai bahasa pengaturcaraan (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) daripada format fail spesifikasi (.ksy), serta gambar rajah dalam format GraphViz dan spesifikasi format boleh dibaca manusia dalam HTML;
- alat untuk pembangunan spesifikasi yang mudah dengan kawalan visual serentak: IDE Web, visualizer konsol, pemalam untuk Visual Studio Code, Hobi, Veles, pemalam untuk Hiew, pemalam untuk Binary Ninja;
- modul untuk menyepadukan Struktur Kaitai ke dalam proses pemasangan untuk Maven, untuk Gradle, untuk Python, untuk JavaScript/WebPack
- perpustakaan format, yang sudah mempunyai 156 perihalan dalam keluaran ini (dan 78 lagi format sedang dalam proses semakan permintaan tarik).
- perpustakaan algoritma pemampatan pemalam Kaitai Compress
- modul untuk FUSE - Kaitai FS, yang membolehkan anda melekapkan fail sebagai sistem fail, menggunakan perihalan ksy formatnya
Bahasa diiktiraf oleh GitHub dan kini digunakan dalam lebih daripada 400 projek percuma/sumber terbuka untuk menghuraikan semua jenis format data eksotik, mulai daripada fail data permainan proprietari kejuruteraan songsangmerangkap analisis protokol komunikasi satelit.
Antara inovasi utama bahasa 0.9 patut diketengahkan:
- sokongan untuk bahasa sasaran baharu (Python melalui perpustakaan Construct, Nim, penjanaan dokumentasi dalam HTML)
- sokongan penuh untuk C++ moden (petunjuk pintar, tidak perlu mengurus memori secara manual, membetulkan semua kebocoran memori yang diketahui)
- sokongan untuk menangani jenis bersarang melalui sintaks seperti foo::bar::baz
- sokongan untuk mengesahkan data baca mengikut syarat yang diterangkan (sah)
- mengira saiz struktur data statik dalam bait dan bit (pengendali saiz dan saiz bit)
- huraian formal sesuatu bahasa dalam bentuk Skema JSON, dari mana sekarang dokumentasi dihasilkan
Sumber: linux.org.ru