For nylig blev den seneste version af Kaitai Struct 0.9 udgivet — et sprog til beskrivelse og værktøjer til parsing af forskellige binære formater (f.eks. netværkspakker, filer med billeder/audiovideo, databaser, arkiver, containere osv.). På trods af det umiddelbart useriøse versionsnummer 0.9 — er dette en stor udgivelse, der inkluderer arbejdet fra de sidste 2,5 år. I løbet af denne tid er sproget vokset til en hel familie af projekter:
- en kompilator, der gør det muligt at få en færdig parserkilde fra en format specificationsfil (.ksy) på mange programmeringssprog (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby), samt diagrammer i GraphViz-format og menneskelæselige format specifikationer i HTML;
- værktøjer til nem udvikling af specifikationer med samtidig visuel kontrol: Web IDE, kommandolinje visualizer, plugin til Visual Studio Code, Hobbits, Veles, plugin til Hiew, plugin til Binary Ninja;
- moduler til integration af Kaitai Struct i byggeprocessen til Maven, til Gradle, til Python, til JavaScript/WebPack
- formatbiblioteket, der i denne udgivelse allerede indeholder 156 beskrivelser (og yderligere 78 formater er under review af pull requests).
- bibliotek over plug-in komprimeringsalgoritmer Kaitai Compress
- modul til FUSE — Kaitai FS, som gør det muligt at montere en fil som et filsystem ved hjælp af ksy-beskrivelsen af dens format
Sprog erkendt af GitHub og bruges nu i mere end 400 gratis / open-source projekter til at parse forskellige eksotiske dataformater, fra reverse engineering af datafiler fra proprietære spil, til parsing af kommunikationsprotokoller for satellitter.
Blandt de vigtigste nyheder i sprogversion 0.9 er:
- understøttelse af nye mål sprog (Python via Construct-biblioteket, Nim, generering af dokumentation i HTML)
- fuld understøttelse af moderne C++ (smart pointers, ingen behov for manuelt at håndtere hukommelsen, rettelse af alle kendte hukommelseslækager)
- understøttelse af adressering af indlejrede typer gennem syntaksen foo::bar::baz
- understøttelse af validering af læste data ifølge de beskrevne betingelser (valid)
- beregning af størrelsen af statiske datakonstruktioner i byte og bit (operatørerne sizeof og bitsizeof)
- formel beskrivelse af sproget i form af en JSON-skema, ud fra hvilken dokumentationen nu genereres
Kilde: linux.org.ru

