Nedavno je objavljena nova verzija Kaitai Struct 0.9 — jezika za opisivanje i alate za parsiranje raznih binarnih formata (na primer, mrežnih paketa, datoteka sa slikama/audio/video, baza podataka, arhiva, kontejnera itd.). Iako broj verzije 0.9 izgleda neozbiljno, ovo je veliki izdanak koji obuhvata radove proteklih 2.5 godina. Tokom tog vremena, jezik je postao ceo porodica projekata:
- kompilator koji omogućava generisanje gotovog koda parsers 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 čitljive ljudske specifikacije formata u HTML;
- alatke za convenient development of specifications with simultaneous visual control: Web IDE, konzolni vizualizator, plugin za Visual Studio Code, Hobbits, Veles, plugin za Hiew, plugin za Binary Ninja;
- moduli za integraciju Kaitai Struct u proces gradnje za Maven, za Gradle, za Python, za JavaScript/WebPack
- biblioteka formata, koja u ovom izdanju već broji 156 opisa (i još 78 formata su u procesu pregleda pull request-a).
- biblioteka dodatnih algoritama kompresije Kaitai Compress
- modul za FUSE — Kaitai FS, omogućava montiranje datoteke kao datotečnog sistema, koristeći ksy opis njenog formata
Jezik priznat je od strane GitHub-a i trenutno se koristi u više od 400 free/open source projekata za parsiranje raznih egzotičnih formata podataka, počevši od obrnute inžinjeringa datoteka podataka iz vlasničkih igara, sve do parsiranja komunikacionih protokola satelita.
Od glavnih novosti jezika 0.9 treba istaći:
- podršku za nove ciljne jezike (Python preko biblioteke Construct, Nim, generaciju dokumentacije u HTML)
- potpunu podršku za moderne C++ (pametan pokazivači, nema potrebe za ručnim upravljanjem memorijom, ispravke 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 uslovima (valid)
- izračunavanje dimenzija statičnih struktura podataka u bajtovima i bitovima (operatori sizeof i bitsizeof)
- formalni opis jezika u obliku JSON-sheme, iz koje se sada generiše dokumentacija
Izvor: linux.org.ru

