Nylig ble den nyeste versjonen av Kaitai Struct 0.9 — et beskrivelsesspråk og verktøy for parsing av forskjellige binære formater (for eksempel nettverkspakker, filer med bilder/audiodata/video, databaser, arkiver, containere osv.) — lansert. Til tross for det tilsynelatende umodne versjonsnummeret 0.9, er dette en stor utgivelse som inkluderer endringer fra de siste 2,5 årene. I løpet av denne tiden har språket utviklet seg til en hel familie av prosjekter:
- en kompilator som lar deg generere en parsingskildekode fra en formatspesifikasjonsfil (.ksy) i mange programmeringsspråk (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby), samt diagrammer i GraphViz-format og menneskelig lesbare formatspesifikasjoner i HTML;
- verktøy for enkel utvikling av spesifikasjoner med samtidig visuell kontroll: Web IDE, konsollvisualiserer, plugin for Visual Studio Code, Hobbits, Veles, plugin for Hiew, plugin for Binary Ninja;
- moduler for integrering av Kaitai Struct i byggeprosessen for Maven, for Gradle, for Python, for JavaScript/WebPack
- biblioformat, som i denne utgivelsen har 156 beskrivelser (og tillegg til 78 formater er under vurdering av pull request).
- bibliotek for komprimeringsalgoritmer Kaitai Compress
- modul for FUSE — Kaitai FS, som lar deg montere en fil som et filsystem ved hjelp av ksy-beskrivelsen av formatet
Språk er anerkjent av GitHub og brukes nå i mer enn 400 gratis / åpen kildekode-prosjekter for parsing av forskjellige eksotiske dataformater, fra reverse engineering av datafiler fra proprietære spill, til analyse av kommunikasjonsprotokoller for satellitter..
Blant de viktigste nyhetene i språkversjon 0.9 er:
- støtte for nye målrettede språk (Python via Construct-biblioteket, Nim, dokumentasjonsgenerering i HTML)
- full støtte for moderne C++ (smart pointers, ingen behov for manuell minnehåndtering, fiksing av alle kjente varianter av minnelekkasjer)
- støtte for adressering av innebygde typer gjennom syntaks som foo::bar::baz
- støtte for validering av leste data mot beskrivelsebetingelsene (gyldig)
- beregning av størrelser på statiske datatyper i byte og biter (operatører sizeof og bitsizeof)
- formell beskrivelse av språket i form av JSON-skjema, fra hvilken nå dokumentasjonen genereres
Kilde: linux.org.ru

