Nedavno je objavljena nova verzija Kaitai Struct 0.9 — jezika za opisivanje i alata za parsiranje raznih binarnih formata (poput mrežnih paketa, datoteka s slikama/audijem/videozapisima, baza podataka, arhiva, kontejnera itd.). Iako broj verzije 0.9 izgleda nesuvislo — to je veliki izdanje koje obuhvaća radove u posljednje 2.5 godine. Tijekom tog vremena, jezik je narastao u cijelu obitelj projekata:
- kompajler koji omogućuje generiranje gotovog izvornega koda parsiranja iz datoteke sa specifikacijom formata (.ksy) na mnogim programskim jezicima (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby), kao i dijagrame u GraphViz formatu i ljudski čitljive specifikacije formata u HTML-u;
- alatima za jednostavan razvoj specifikacija uz istovremeno vizualno praćenje: Web IDE, konzola vizualizator, plugin za Visual Studio Code, Hobbits, Veles, plugin za Hiew, plugin za Binary Ninja;
- moduli za integraciju Kaitai Struct u proces izgradnje za Maven, za Gradle, za Python, za JavaScript/WebPack
- biblioteka formata, koja u ovom izdanju ima već 156 opisa (i još 78 formata je u procesu pregleda pull request-a).
- biblioteka ugrađenih algoritama kompresije Kaitai Compress
- modul za FUSE — Kaitai FS, koji omogućuje montiranje datoteke kao datotečnog sustava koristeći ksy-opis njenog formata
Jezik priznao je GitHub i sada se koristi u više od 400 free/open source projekata za parsiranje raznih egzotičnih formata podataka, počevši od obrnute inženjering datoteka podataka iz proprietary igara, do parsing komunikacijskih protokola satelita.
Od glavnih noviteta u jeziku 0.9 treba istaknuti:
- podršku za nove ciljne jezike (Python preko Construct biblioteke, Nim, generiranje dokumentacije u HTML-u)
- potpunu podršku za moderne C++ (pametan pokazivači, nema potrebe ručno upravljati memorijom, ispravak svih poznatih varijanti curenja memorije)
- podršku za adresiranje ugniježdenih tipova kroz sintaksu poput foo::bar::baz
- podršku za validaciju pročitanih podataka prema opisanim uvjetima (valid)
- izračun veličina statičkih struktura podataka u bajtovima i bitovima (operatori sizeof i bitsizeof)
- formalni opis jezika u obliku JSON sheme, iz koje se sada generira dokumentacija
Izvor: linux.org.ru

