Poměrně nedávno byla vydána další verze Kaitai Struct 0.9 - popisný jazyk a nástroje pro analýzu různých binárních formátů (například síťové pakety, obrazové/audio/video soubory, databáze, archivy, kontejnery atd.). Navzdory frivolně vypadající verzi 0.9 se jedná o hlavní vydání, které zahrnuje vývoj za posledních 2.5 roku. Během této doby se jazyk rozrostl do celé rodiny projektů:
- kompilátor, který vám umožní získat hotový zdrojový kód parseru v různých programovacích jazycích (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) z formátu soubor specifikace (.ksy), dále diagramy ve formátu GraphViz a specifikace formátu čitelné pro člověka v HTML;
- nástroje pro pohodlný vývoj specifikací se současnou vizuální kontrolou: Web IDE, konzolový vizualizér, plugin pro Visual Studio Code, Hobity, Veles, plugin pro Hiew, plugin pro Binary Ninja;
- moduly pro integraci Kaitai Struct do procesu montáže pro Mavena, pro Gradla, pro Python, pro JavaScript/WebPack
- formátová knihovna, která má v tomto vydání již 156 popisů (a 78 dalších formátů jsou v procesu kontroly žádosti o stažení).
- knihovna plug-in kompresních algoritmů Kaitai Compress
- modul pro FUSE - Kaitai FS, který umožňuje připojit soubor jako souborový systém pomocí ksy popisu jeho formátu
jazyk uznává GitHub a nyní se používá ve více než 400 bezplatných / open source projektech pro analýzu všech druhů exotických datových formátů, od reverzní inženýrství proprietární herní datové souborycumming analýza protokolů satelitní komunikace.
Mezi hlavní inovace jazyka 0.9 stojí za to zdůraznit:
- podpora nových cílových jazyků (Python přes knihovnu Construct, Nim, generování dokumentace v HTML)
- plná podpora pro moderní C++ (inteligentní ukazatele, není třeba ručně spravovat paměť, opravuje všechny známé úniky paměti)
- podpora pro adresování vnořených typů pomocí syntaxe jako foo::bar::baz
- podpora validace načtených dat podle popsaných podmínek (platné)
- výpočet velikostí statických datových struktur v bytech a bitech (operátory sizeof a bitsizeof)
- formální popis jazyka ve formuláři schémata JSON, ze kterého nyní je generována dokumentace
Zdroj: linux.org.ru