Cовсем недавно вышла очередная версия Kaitai Struct 0.9 — языка описания и инструментария парсинга всевозможных бинарных форматов (например, сетевых пакетов, файлов с изображениями/аудио/видео, баз данных, архивов, контейнеров и т. д.). Несмотря на несерьезно выглядящий номер версии 0.9 — это крупный релиз, включающий в себя наработки за последние 2.5 года. За это время язык вырос до целого семейства проектов: компилятор, позволяющий из файла спецификации формата (.ksy) получить готовый исходник парсера на множестве языков программирования (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby), а также диаграммы в формате GraphViz и человеко-читаемые спецификации форматов в HTML; инструменты для удобной разработки спецификаций с одновременным визуальным контролем: [ Web IDE ](
https://ide.kaitai.io/ ) , [ консольный визуализатор ](
https://github.com/kaitai-io/kaitai_struct_visualizer ) , [ плагин для Visual Studio Code ](
https://marketplace.visualstudio.com/items?itemName=fudgepops.kaitai-struct-vscode ) , [ Hobbits ](
https://github.com/Mahlet-Inc/hobbits ) , [ Veles ](
https://veles.io/ ) , [ плагин для Hiew ](
https://github.com/taviso/kiewtai ) , [ плагин для Binary Ninja ](
https://github.com/Vector35/kaitai ) ; модули для интеграции Kaitai Struct в процесс сборки [ для Maven ](
https://github.com/valery1707/kaitai-maven-plugin ) , [ для Gradle ](
https://github.com/valery1707/kaitai-gradle-plugin ) , [ для Python ](
https://github.com/kaitaiStructCompile/kaitaiStructCompile.setuptools ) , [ для JavaScript/WebPack ](
https://www.npmjs.com/package/kaitai-struct-loader ) [ библиотека форматов ](
https://formats.kaitai.io/ ) , насчитывающая в этом релизе уже 156 описаний (и [ еще 78 форматов ](
https://github.com/kaitai-io/kaitai_struct_formats/pulls ) находятся в процессе pull request review). библиотека подключаемых алгоритмов компрессии [ Kaitai Compress ](
https://github.com/kaitai-io/kaitai_compress ) [ модуль для FUSE - Kaitai FS ](
https://github.com/kaitai-io/kaitai_fs ) , позволяющий замонтировать файл, как файловую систему, используя ksy-описание его формата Язык [ признан GitHub ](
https://github.com/search?l=Kaitai+Struct&q=filename%3Aksy&type=Code ) и используется сейчас в более, чем 400 free / open source проектах для парсинга всевозможных экзотических форматов данных, начиная от [ реверс-инжиниринга файлов данных проприетарных игр ](
https://github.com/HiveWorkshop/Formats ) , кончая [ разбором протоколов связи спутников ](
https://gitlab.com/librespacefoundation/satnogs/satnogs-decoders ) . Из основных новшеств языка 0.9 стоит выделить: поддержка новых целевых языков (Python через библиотеку Construct, Nim, генерацию документации в HTML) полноценную поддержку современных C++ (smart pointers, отсутствие необходимости вручную управлять памятью, исправление всех известных вариантов утечек памяти) поддержку адресации вложенных типов через синтаксис вида foo::bar::baz поддержку валидации прочитанных данных по описанным условиям (valid) вычисление размеров статических структур данных в байтах и битах (операторы sizeof и bitsizeof) формальное описание языка в виде [ JSON-схемы ](
https://github.com/kaitai-io/ksy_schema ) , из которой теперь [ генерируется документация ](
https://doc.kaitai.io/ksy_diagram.html )
Ссылка:
https://www.linux.org.ru/news/opensource/15955935