Recentemente è stata rilasciata una nuova versione di Kaitai Struct 0.9, un linguaggio di descrizione e strumento per il parsing di vari formati binari (come 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 aggiornamento che raccoglie i risultati degli ultimi 2,5 anni. Durante questo periodo, il linguaggio si è evoluto in una vera e propria famiglia di progetti:
- un compilatore che permette di generare il 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 diagrammi in formato GraphViz e specifiche umane leggibili in HTML;
- strumenti per lo sviluppo conveniente delle specifiche con controllo visivo simultaneo: Web IDE, visualizzatore da console, plugin per Visual Studio Code, permette di utilizzare una serie di plugin, che possono essere attivati o disattivati a seconda del compito attuale — analisi, elaborazione o visualizzazione di un file binario. Esistono plugin per la ricerca nei dati, l'analisi della loro struttura tramite espressioni regolari e l'estrazione di modelli tipici., Veles, plugin per Hiew, plugin per Binary Ninja;
- moduli per integrare Kaitai Struct nel processo di build per Maven, per Gradle, per Python, per JavaScript/WebPack
- una libreria di formati, che conta già 156 descrizioni in questa versione (e altri 78 formati sono attualmente in fase di revisione delle pull request).
- una libreria di algoritmi di compressione Kaitai Compress
- modulo per FUSE — Kaitai FS, che consente di montare un file come un file system utilizzando la descrizione del suo formato ksy
Linguaggio riconosciuto da GitHub e attualmente utilizzato in oltre 400 progetti free / open source per il parsing di vari formati di dati esotici, partendo da reverse engineering di file di giochi proprietari, fino a analisi dei protocolli di comunicazione satellitari.
Tra le principali novità del linguaggio 0.9 si possono evidenziare:
- supporto per nuovi linguaggi di destinazione (Python tramite la libreria Construct, Nim, generazione della documentazione in HTML)
- supporto completo per il moderno C++ (smart pointers, assenza della necessità di gestire manualmente la memoria, correzione di tutte le varianti note di perdite di memoria)
- supporto per l'indirizzamento di tipi annidati tramite la sintassi foo::bar::baz
- supporto per la validazione dei dati letti secondo le condizioni descritte (valid)
- calcolo delle dimensioni delle strutture dati statiche in byte e bit (operatori sizeof e bitsizeof)
- descrizione formale del linguaggio sotto forma di schema JSON, da cui ora viene generata la documentazione
Fonte: linux.org.ru

