Recentemente, foi lançada a nova versão do Kaitai Struct 0.9 — uma linguagem de descrição e ferramentas de parsing para diversos formatos binários (por exemplo, pacotes de rede, arquivos de imagem/áudio/vídeo, bancos de dados, arquivos compactados, contêineres, etc.). Apesar do número da versão 0.9 parecer pouco sério, este é um grande lançamento, que inclui desenvolvimentos dos últimos 2,5 anos. Durante esse período, a linguagem cresceu para se tornar uma verdadeira família de projetos:
- um compilador que permite gerar o código-fonte de um parser em várias linguagens de programação (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) a partir de um arquivo de especificação de formato (.ksy), além de diagramas no formato GraphViz e especificações de formatos legíveis em HTML;
- ferramentas para desenvolvimento prático de especificações com controle visual simultâneo: Web IDE, visualizador de console, plugin para Visual Studio Code, Hobbits, Veles, plugin para Hiew, plugin para Binary Ninja;
- módulos para integração do Kaitai Struct no processo de compilação para Maven, para Gradle, para Python, para JavaScript/WebPack
- biblioteca de formatos, que já possui neste lançamento 156 descrições (e mais 78 formatos estão em revisão de pull request).
- biblioteca de algoritmos de compressão intercambiáveis Kaitai Compress
- módulo para FUSE — Kaitai FS, que permite montar um arquivo como um sistema de arquivos, utilizando a descrição ksy de seu formato
Linguagem reconhecido pelo GitHub e atualmente utilizado em mais de 400 projetos free/open source para parsing de diversos formatos de dados exóticos, desde engenharia reversa de arquivos de jogos proprietários, até análise de protocolos de comunicação via satélite.
Entre as principais novidades da linguagem 0.9, destacam-se:
- suporte a novas linguagens-alvo (Python através da biblioteca Construct, Nim, geração de documentação em HTML)
- suporte completo às versões modernas do C++ (smart pointers, sem necessidade de gerenciar a memória manualmente, correção de todas as variantes conhecidas de vazamentos de memória)
- suporte à endereçamento de tipos aninhados através de sintaxe como foo::bar::baz
- suporte à validação de dados lidos com base nas condições descritas (valid)
- cálculo dos tamanhos de estruturas de dados estáticas em bytes e bits (operadores sizeof e bitsizeof)
- descrição formal da linguagem na forma de um esquema JSON, do qual agora a documentação é gerada
Fonte: linux.org.ru

