Hai pouco, lanzouse a seguinte versión de Kaitai Struct 0.9: unha linguaxe de descrición e ferramentas para analizar varios formatos binarios (por exemplo, paquetes de rede, ficheiros de imaxe/audio/vídeo, bases de datos, arquivos, contedores, etc.). A pesar do número de versión 0.9 de aspecto frívolo, esta é unha versión importante que inclúe desenvolvementos nos últimos 2.5 anos. Durante este tempo, a lingua converteuse en toda unha familia de proxectos:
- un compilador que permite obter un código fonte do analizador preparado nunha variedade de linguaxes de programación (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) desde un formato ficheiro de especificación (.ksy), así como diagramas no formato GraphViz e especificacións de formato lexible por humanos en HTML;
- Ferramentas para o desenvolvemento cómodo de especificacións con control visual simultáneo: IDE web, visualizador de consola, complemento para Visual Studio Code, hobbits, Veles, plugin para Hiew, complemento para Binary Ninja;
- módulos para integrar Kaitai Struct no proceso de montaxe para Maven, para Gradle, para Python, para JavaScript/WebPack
- biblioteca de formatos, que xa ten 156 descricións nesta versión (e 78 formatos máis están en proceso de revisión de solicitudes de extracción).
- biblioteca de algoritmos de compresión de complementos Compresa Kaitai
- módulo para FUSE - Kaitai FS, que permite montar un ficheiro como sistema de ficheiros, utilizando a descrición ksy do seu formato
Linguaxe recoñecido por GitHub e agora utilízase en máis de 400 proxectos gratuítos/de código aberto para analizar todo tipo de formatos de datos exóticos, que van desde ficheiros de datos de xogo propietarios de enxeñaría inversacorrendo análise de protocolos de comunicación por satélite.
Entre as principais novidades da linguaxe 0.9 cabe destacar:
- soporte para novas linguas de destino (Python a través da biblioteca Construct, Nim, xeración de documentación en HTML)
- Soporte completo para C++ moderno (punteiros intelixentes, sen necesidade de xestionar manualmente a memoria, corrixe todas as fugas de memoria coñecidas)
- soporte para abordar tipos anidados mediante sintaxe como foo::bar::baz
- soporte para validar os datos lidos segundo as condicións descritas (válido)
- calcular o tamaño das estruturas de datos estáticas en bytes e bits (operadores sizeof e bitsizeof)
- descrición formal dunha lingua na forma Esquemas JSON, de onde agora se xera documentación
Fonte: linux.org.ru