Onlangs is de nieuwste versie van Kaitai Struct 0.9 uitgebracht - een beschrijvings- en parsertool voor verschillende binaire formaten (bijvoorbeeld netwerkpakketten, afbeeldings-/audio-/video-bestanden, databases, archieven, containers, enz.). Ondanks het schijnbaar onschuldige versienummer 0.9 is dit een belangrijke release, die de ontwikkelingen van de afgelopen 2,5 jaar omvat. In deze tijd is de taal uitgegroeid tot een hele reeks projecten:
- een compiler die het mogelijk maakt om uit een specificatiebestand van het formaat (.ksy) een functionele parserbroncode in meerdere programmeertalen (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) te genereren, evenals diagrammen in GraphViz-formaat en menselijk leesbare formaat-specificaties in HTML;
- tools voor het comfortabel ontwikkelen van specificaties met gelijktijdige visuele controle: Web IDE, console visualizer, plugin voor Visual Studio Code, Hobbits, Veles, plugin voor Hiew, plugin voor Binary Ninja;
- modules voor integratie van Kaitai Struct in het bouwproces voor Maven, voor Gradle, voor Python, voor JavaScript/WebPack
- formatenbibliotheek, bestaande uit al 156 beschrijvingen (en nog eens 78 formaten zijn in behandeling voor pull request review).
- bibliotheek van inplugbare compressie-algoritmen Kaitai Compress
- module voor FUSE - Kaitai FS, die het mogelijk maakt om een bestand als bestandssysteem te monteren, gebruikmakend van de ksy-beschrijving van zijn formaat
Taal erkend door GitHub en nu gebruikt in meer dan 400 gratis / open source projecten voor het parseren van verschillende exotische datatypes, variƫrend van reverse engineering van gegevensbestanden van eigendom spellen, tot het analyseren van communicatiemethoden van satellieten.
Under de belangrijkste nieuws van de taal 0.9 valt:
- ondersteuning voor nieuwe doeltalen (Python via de Construct-bibliotheek, Nim, generatie van documentatie in HTML)
- volledige ondersteuning van modern C++ (smart pointers, geen handmatige geheugenbeheer nodig, oplossing van alle bekende geheugenlekproblemen)
- ondersteuning voor adressering van geneste types met syntaxis zoals foo::bar::baz
- ondersteuning voor validatie van gelezen gegevens aan de beschreven voorwaarden (valid)
- berekening van de afmetingen van statische datastructuren in bytes en bits (de operators sizeof en bitsizeof)
- formeel beschrijvend van de taal in de vorm van een JSON-schema, waaruit nu documentatie wordt gegenereerd
Bron: linux.org.ru

