Recentemente è stata rilasciata una nuova versione di Kaitai Struct 0.9, un linguaggio di descrizione e strumenti per il parsing di vari formati binari (ad esempio, pacchetti di rete, file di immagini/audio/video, database, archivi, contenitori, ecc.). Nonostante il numero di versione 0.9 possa sembrare poco serio, si tratta di un'importante release che raccoglie i risultati degli ultimi 2,5 anni. Durante questo tempo, il linguaggio si è evoluto fino a diventare una vera e propria famiglia di progetti:
- un compilatore che consente di generare codice sorgente di un parser in vari linguaggi di programmazione (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) a partire da un file di specifica del formato (.ksy), oltre a grafici in formato GraphViz e specifiche di formati leggibili da esseri umani in HTML;
- strumenti per lo sviluppo semplificato delle specifiche con controllo visivo simultaneo: Web IDE, visualizzatore a console, plugin per Visual Studio Code, consente di utilizzare un insieme di plugin che possono essere attivati o disattivati in base al compito attuale — analisi, elaborazione o visualizzazione di un file binario. Esistono plugin per la ricerca di dati, analisi della loro struttura tramite espressioni regolari, estrazione di modelli tipici., Veles, plugin per Hiew, plugin per Binary Ninja;
- moduli per l'integrazione di Kaitai Struct nel processo di build per Maven, per Gradle, per Python, per JavaScript/WebPack
- una libreria di formati, che in questa versione include già 156 descrizioni (e altri 78 formati sono in fase di revisione per pull request).
- una libreria di algoritmi di compressione Kaitai Compress
- un modulo per FUSE — Kaitai FS, che consente di montare un file come filesystem utilizzando la descrizione del formato ksy
Lingua è riconosciuto da GitHub ed è attualmente utilizzato in più di 400 progetti free/open source per il parsing di vari formati di dati esotici, che vanno da reverse engineering di file di dati di giochi proprietari, fino a analisi dei protocolli di comunicazione satellitare.
Tra le principali novità del linguaggio 0.9 spiccano:
- supporto per nuovi linguaggi di destinazione (Python attraverso la libreria Construct, Nim, generazione di documentazione in HTML)
- supporto completo per il moderno C++ (smart pointers, assenza della necessità di gestire manualmente la memoria, correzione di tutte le note vulnerabilità di memory leak)
- supporto per l'indirizzamento di tipi annidati attraverso una sintassi del tipo foo::bar::baz
- supporto per la validazione dei dati letti in base ai criteri descritti (validi)
- calcolo delle dimensioni delle strutture dati statiche in byte e bit (operatori sizeof e bitsizeof)
- descrizione formale del linguaggio in forma di schema JSON, da cui ora viene generata la documentazione
Fonte: linux.org.ru

