Kısa bir süre önce, Kaitai Struct 0.9'un bir sonraki sürümü yayınlandı - çeşitli ikili formatları (örneğin, ağ paketleri, görüntü/ses/video dosyaları, veritabanları, arşivler, kapsayıcılar vb.) ayrıştırmaya yönelik bir açıklama dili ve araçlar. 0.9 numaralı anlamsız görünümlü sürüme rağmen bu, son 2.5 yıldaki gelişmeleri içeren büyük bir sürüm. Bu süre zarfında dil, bütün bir proje ailesine dönüştü:
- çeşitli programlama dillerinde (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) hazır ayrıştırıcı kaynak kodunu bir formattan almanızı sağlayan bir derleyici spesifikasyon dosyası (.ksy) ve ayrıca GraphViz formatındaki diyagramlar ve HTML'deki insan tarafından okunabilir format spesifikasyonları;
- Eş zamanlı görsel kontrolle özelliklerin uygun şekilde geliştirilmesine yönelik araçlar: Web IDE'si, konsol görselleştiricisi, Visual Studio Code için eklenti, Hobbitler, Veles, Hiew için eklenti, İkili Ninja için eklenti;
- Kaitai Struct'ı montaj sürecine entegre etmek için modüller Maven için, Gradle için, Python için, JavaScript/WebPack için
- biçim kitaplığıBu sürümde zaten 156 açıklama bulunan (ve 78 format daha çekme isteği incelemesi sürecindedir).
- eklenti sıkıştırma algoritmaları kütüphanesi Kaitai Sıkıştırması
- SİGORTA modülü - Kaitai FS, bir dosyayı, biçiminin ksy açıklamasını kullanarak bir dosya sistemi olarak bağlamanıza olanak tanır
Dil GitHub tarafından tanındı ve şu anda her türlü egzotik veri formatını ayrıştırmak için 400'den fazla ücretsiz / açık kaynak projede kullanılıyor. tersine mühendislik tescilli oyun veri dosyalarısağladım uydu iletişim protokollerinin analizi.
0.9 dilinin ana yenilikleri arasında vurgulanmaya değer:
- yeni hedef diller için destek (Construct kütüphanesi aracılığıyla Python, Nim, HTML'de belge oluşturma)
- modern C++ için tam destek (akıllı işaretçiler, belleği manuel olarak yönetmeye gerek yoktur, bilinen tüm bellek sızıntılarını düzeltir)
- foo::bar::baz gibi söz dizimi yoluyla iç içe geçmiş türleri adresleme desteği
- açıklanan koşullara göre okuma verilerinin doğrulanması desteği (geçerli)
- Bayt ve bit cinsinden statik veri yapılarının boyutlarının hesaplanması (sizeof ve bitsizeof operatörleri)
- Bir dilin formdaki resmi açıklaması JSON şemaları, şimdi nereden dokümantasyon oluşturulur
Kaynak: linux.org.ru