For ganske nylig blev den næste version af Kaitai Struct 0.9 frigivet - et beskrivelsessprog og værktøjer til at analysere forskellige binære formater (for eksempel netværkspakker, billed-/lyd-/videofiler, databaser, arkiver, containere osv.). På trods af det useriøst udseende versionsnummer 0.9 er dette en stor udgivelse, der inkluderer udviklinger over de seneste 2.5 år. I løbet af denne tid er sproget vokset til en hel familie af projekter:
- en compiler, der giver dig mulighed for at få en færdig parser-kildekode i en række forskellige programmeringssprog (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) fra et format specifikationsfil (.ksy), samt diagrammer i formatet GraphViz og menneskelæselige formatspecifikationer i HTML;
- værktøjer til bekvem udvikling af specifikationer med samtidig visuel kontrol: Web IDE, konsolvisualizer, plugin til Visual Studio Code, Hobbits, Veles, plugin til Hiew, plugin til binær ninja;
- moduler til at integrere Kaitai Struct i montageprocessen for Maven, for Gradle, til Python, til JavaScript/WebPack
- format bibliotek, som allerede har 156 beskrivelser i denne udgivelse (og 78 flere formater er i gang med gennemgang af pull request).
- bibliotek af plug-in komprimeringsalgoritmer Kaitai komprimere
- modul til FUSE - Kaitai FS, som giver dig mulighed for at montere en fil som et filsystem ved at bruge ksy-beskrivelsen af dens format
Sprog anerkendt af GitHub og bruges nu i mere end 400 gratis/open source-projekter til at analysere alle slags eksotiske dataformater, lige fra reverse engineering proprietære spildatafilerspidskommen analyse af satellitkommunikationsprotokoller.
Blandt de vigtigste nyskabelser i sprog 0.9 er det værd at fremhæve:
- understøttelse af nye målsprog (Python via Construct-biblioteket, Nim, generering af dokumentation i HTML)
- fuld understøttelse af moderne C++ (smarte pointers, ingen grund til manuelt at administrere hukommelse, retter alle kendte hukommelseslækager)
- understøttelse af adressering af indlejrede typer via syntaks som foo::bar::baz
- understøttelse af validering af læste data i henhold til de beskrevne betingelser (gyldig)
- beregning af størrelsen af statiske datastrukturer i bytes og bits (størrelse på og bitstørrelse på operatorer)
- formel beskrivelse af et sprog i formularen JSON skemaer, hvorfra nu dokumentation genereres
Kilde: linux.org.ru