Pomerne nedávno bola vydaná ďalšia verzia Kaitai Struct 0.9 - popisný jazyk a nástroje na analýzu rôznych binárnych formátov (napríklad sieťové pakety, obrazové/audio/video súbory, databázy, archívy, kontajnery atď.). Napriek frivolne vyzerajúcej verzii 0.9 ide o hlavné vydanie, ktoré zahŕňa vývoj za posledných 2.5 roka. Počas tejto doby sa jazyk rozrástol na celú rodinu projektov:
- kompilátor, ktorý vám umožňuje získať hotový zdrojový kód syntaktického analyzátora v rôznych programovacích jazykoch (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) z formátu súbor špecifikácií (.ksy), ako aj diagramy vo formáte GraphViz a špecifikácie formátu čitateľného pre človeka v HTML;
- nástroje pre pohodlný vývoj špecifikácií so súčasnou vizuálnou kontrolou: Web IDE, konzolový vizualizér, plugin pre Visual Studio Code, hobiti, Veles, plugin pre Hiew, plugin pre Binary Ninja;
- moduly na integráciu Kaitai Struct do procesu montáže pre Mavena, pre Gradla, pre Python, pre JavaScript/WebPack
- knižnica formátov, ktorá už má v tomto vydaní 156 popisov (a 78 ďalších formátov sú v procese kontroly žiadosti o stiahnutie).
- knižnica doplnkových kompresných algoritmov Kaitai Compress
- modul pre FUSE - Kaitai FS, ktorý umožňuje pripojiť súbor ako súborový systém pomocou ksy popisu jeho formátu
Jazyk uznávaný GitHubom a teraz sa používa vo viac ako 400 bezplatných / open source projektoch na analýzu všetkých druhov exotických dátových formátov, od reverzné inžinierstvo proprietárne herné dátové súborycumming analýza protokolov satelitnej komunikácie.
Medzi hlavné inovácie jazyka 0.9 stojí za to zdôrazniť:
- podpora nových cieľových jazykov (Python cez knižnicu Construct, Nim, generovanie dokumentácie v HTML)
- plná podpora moderného C++ (inteligentné ukazovatele, nie je potrebné manuálne spravovať pamäť, opravuje všetky známe úniky pamäte)
- podpora adresovania vnorených typov prostredníctvom syntaxe ako foo::bar::baz
- podpora validácie prečítaných dát podľa opísaných podmienok (platné)
- výpočet veľkostí statických dátových štruktúr v bajtoch a bitoch (operátory sizeof a bitsizeof)
- formálny popis jazyka vo formulári schémy JSON, z ktorej teraz vygeneruje sa dokumentácia
Zdroj: linux.org.ru