Recent, a fost lansată următoarea versiune a Kaitai Struct 0.9 - un limbaj pentru descrierea și analizarea diferitelor formate binare (de exemplu, pachete de rețea, fișiere imagine/audio/video, baze de date, arhive, containere etc.). În ciuda versiunii cu aspect frivol numărul 0.9, aceasta este o versiune majoră care include evoluții din ultimii 2.5 ani. În acest timp, limba a crescut la o întreagă familie de proiecte:
- un compilator care vă permite să obțineți un cod sursă de parser gata făcut dintr-un fișier cu specificații de format (.ksy) în multe limbaje de programare (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby), precum și diagrame în formatul GraphViz și specificații de format care pot fi citite de om în HTML;
- instrumente pentru dezvoltarea comodă a specificațiilor cu control vizual simultan: IDE web, randamentul consolei, Plugin pentru Visual Studio Code, hobbiţi, Veles, Hiew plugin, plugin pentru Binary Ninja;
- module pentru integrarea Kaitai Struct în procesul de asamblare pentru maven, pentru gradle, pentru Python, pentru JavaScript/Webpack
- biblioteca de format, care are deja 156 de descrieri în această versiune (și Încă 78 de formate sunt în proces de revizuire a cererii de extragere).
- biblioteca de algoritmi de compresie conectabili Compresa Kaitai
- modul pentru FUSE - Kaitai FS, care vă permite să montați un fișier ca sistem de fișiere folosind descrierea ksy a formatului său
Limbă recunoscut de GitHub și este acum utilizat în peste 400 de proiecte gratuite/open source pentru a analiza tot felul de formate de date exotice, de la inginerie inversă a fișierelor de date de joc proprietarefinal analiza protocoalelor de comunicații prin satelit.
Dintre principalele inovații ale limbajului 0.9, merită evidențiate:
- suport pentru noi limbi țintă (Python prin biblioteca Construct, Nim, generarea de documentație HTML)
- suport complet pentru C++ modern (indicatoare inteligente, nu este nevoie să gestionați manual memoria, remedieri pentru toate scurgerile de memorie cunoscute)
- suport pentru adresarea tipurilor imbricate prin sintaxa foo::bar::baz
- suport pentru validarea datelor citite conform condițiilor descrise (valid)
- calcularea dimensiunilor structurilor de date statice în octeți și biți (operatorii sizeof și bitsizeof)
- descrierea formală a limbii în formă Scheme JSON, din care acum se generează documentația
Sursa: linux.org.ru