Baru-baru ini, versi Kaitai Struct 0.9 berikutnya dirilis - bahasa deskripsi dan alat untuk mengurai berbagai format biner (misalnya, paket jaringan, file gambar/audio/video, database, arsip, wadah, dll.). Meskipun versi nomor 0.9 tampak remeh, ini adalah rilis besar yang mencakup pengembangan selama 2.5 tahun terakhir. Selama waktu ini, bahasa tersebut telah berkembang menjadi serangkaian proyek:
- kompiler yang memungkinkan Anda memperoleh kode sumber parser siap pakai dalam berbagai bahasa pemrograman (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) dari suatu format file spesifikasi (.ksy), serta diagram dalam format GraphViz dan spesifikasi format yang dapat dibaca manusia dalam HTML;
- alat untuk pengembangan spesifikasi yang mudah dengan kontrol visual simultan: IDE Web, visualisator konsol, plugin untuk Kode Visual Studio, Hobbit, Veles, plugin untuk Hiew, plugin untuk Biner Ninja;
- modul untuk mengintegrasikan Kaitai Struct ke dalam proses perakitan untuk Maven, untuk Gradle, untuk Python, untuk JavaScript/WebPack
- perpustakaan format, yang sudah memiliki 156 deskripsi dalam rilis ini (dan 78 format lainnya sedang dalam proses peninjauan permintaan tarik).
- perpustakaan algoritma kompresi plug-in Kompres Kaitai
- modul untuk FUSE - Kaitai FS, yang memungkinkan Anda memasang file sebagai sistem file, menggunakan deskripsi ksy tentang formatnya
Bahasa diakui oleh GitHub dan sekarang digunakan di lebih dari 400 proyek sumber terbuka/gratis untuk mengurai semua jenis format data eksotik, mulai dari merekayasa balik file data game berpemilikejakulasi analisis protokol komunikasi satelit.
Di antara inovasi utama bahasa 0.9 yang patut disoroti:
- dukungan untuk bahasa target baru (Python melalui perpustakaan Construct, Nim, pembuatan dokumentasi dalam HTML)
- dukungan penuh untuk C++ modern (petunjuk cerdas, tidak perlu mengelola memori secara manual, memperbaiki semua kebocoran memori yang diketahui)
- dukungan untuk menangani tipe bersarang melalui sintaks seperti foo::bar::baz
- dukungan untuk memvalidasi data yang dibaca sesuai dengan kondisi yang dijelaskan (valid)
- menghitung ukuran struktur data statis dalam byte dan bit (operator sizeof dan bitsizeof)
- deskripsi formal suatu bahasa dalam bentuk skema JSON, dari mana sekarang dokumentasi dihasilkan
Sumber: linux.org.ru