Ganska nyligen släpptes nästa version av Kaitai Struct 0.9 - ett beskrivningsspråk och verktyg för att analysera olika binära format (till exempel nätverkspaket, bild-/ljud-/videofiler, databaser, arkiv, behållare, etc.). Trots det oseriösa versionsnummer 0.9 är detta en stor utgåva som inkluderar utvecklingar under de senaste 2.5 åren. Under denna tid har språket vuxit till en hel familj av projekt:
- en kompilator som låter dig få en färdig parserkällkod i en mängd olika programmeringsspråk (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) från ett format specifikationsfil (.ksy), samt diagram i formatet GraphViz och läsbara formatspecifikationer i HTML;
- verktyg för bekväm utveckling av specifikationer med samtidig visuell kontroll: Webb-IDE, konsolvisualiserare, plugin för Visual Studio Code, Hober, Veles, plugin för Hiew, plugin för Binary Ninja;
- moduler för att integrera Kaitai Struct i monteringsprocessen för Maven, för Gradle, för Python, för JavaScript/WebPack
- formatbibliotek, som redan har 156 beskrivningar i den här utgåvan (och 78 fler format håller på att granska pull-begäran).
- bibliotek med plug-in komprimeringsalgoritmer Kaitai komprimera
- modul för FUSE - Kaitai FS, som låter dig montera en fil som ett filsystem med hjälp av ksy-beskrivningen av dess format
språk igenkänd av GitHub och används nu i mer än 400 gratis/open source-projekt för att analysera alla typer av exotiska dataformat, allt från omvänd ingenjörsskyddade speldatafilerkumning analys av satellitkommunikationsprotokoll.
Bland de viktigaste innovationerna i språk 0.9 är det värt att lyfta fram:
- stöd för nya målspråk (Python via Construct-biblioteket, Nim, generering av dokumentation i HTML)
- fullt stöd för modern C++ (smarta pekare, inget behov av att hantera minne manuellt, fixar alla kända minnesläckor)
- stöd för att adressera kapslade typer via syntax som foo::bar::baz
- stöd för validering av läst data enligt de beskrivna villkoren (giltig)
- beräkna storleken på statiska datastrukturer i byte och bitar (storlek på och bitstorlek på operatorer)
- formell beskrivning av ett språk i formuläret JSON-scheman, varifrån nu dokumentation genereras
Källa: linux.org.ru