Зусім нядаўна выйшла чарговая версія Kaitai Struct 0.9 – мовы апісання і інструментара парсінгу разнастайных бінарных фарматаў (напрыклад, сеткавых пакетаў, файлаў з выявамі/аўдыё/відэа, баз дадзеных, архіваў, кантэйнераў і т. д.). Нягледзячы на несур'ёзна які выглядае нумар версіі 0.9 - гэта буйны рэліз, улучальны ў сябе напрацоўкі за апошнія 2.5 гады. За гэты час мова вырасла да цэлага сямейства праектаў:
- кампілятар, які дазваляе з файла спецыфікацыі фармату (.ksy) атрымаць гатовы зыходнік парсера на мностве моў праграмавання (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby), а таксама дыяграмы ў фармаце GraphViz і чалавека-чытаныя спецыфікацыі фарматаў у HTML;
- інструменты для зручнай распрацоўкі спецыфікацый з адначасовым візуальным кантролем: Web IDE, кансольны візуалізатар, убудова для Visual Studio Code, хобіты, Veles, убудова для Hiew, убудова для Binary Ninja;
- модулі для інтэграцыі Kaitai Struct у працэс зборкі для Maven, для Gradle, для Python, для JavaScript/WebPack
- бібліятэка фарматаў, якая налічвае ў гэтым рэлізе ўжо 156 апісанняў (і яшчэ 78 фарматаў знаходзяцца ў працэсе pull request review).
- бібліятэка падключаюцца алгарытмаў кампрэсіі Kaitai Compress
- модуль для FUSE - Kaitai FS, які дазваляе замантаваць файл, як файлавую сістэму, выкарыстоўваючы ksy-апісанне яго фармату
Мова прызнаны GitHub і выкарыстоўваецца зараз у больш, чым 400 free / open source праектах для парсінгу разнастайных экзатычных фарматаў дадзеных, пачынаючы ад рэверс-інжынірынгу файлаў дадзеных прапрыетарных гульняў, канчаючы разборам пратаколаў сувязі спадарожнікаў.
З асноўных навін мовы 0.9 варта вылучыць:
- падтрымка новых мэтавых моў (Python праз бібліятэку Construct, Nim, генерацыю дакументацыі ў HTML)
- паўнавартасную падтрымку сучасных C++ (smart pointers, адсутнасць неабходнасці ўручную кіраваць памяццю, выпраўленне ўсіх вядомых варыянтаў уцечак памяці)
- падтрымку адрасацыі ўкладзеных тыпаў праз сінтаксіс выгляду foo::bar::baz
- падтрымку валідацыі прачытаных дадзеных па апісаных умовах (valid)
- вылічэнне памераў статычных структур дадзеных у байтах і бітах (аператары sizeof і bitsizeof)
- фармальнае апісанне мовы ў выглядзе JSON-схемы, з якой цяпер генеруецца дакументацыя
Крыніца: linux.org.ru