После почти 8 месяцев разработки, состоялся очередной релиз Kaitai Struct 0.8 — языка описания и инструментария парсинга всевозможных бинарных форматов (например, сетевых пакетов, файлов с изображениями/аудио/видео, баз данных, архивов, контейнеров и т. д.). Как всегда, в комплекте:
- компилятор, позволяющий из файла спецификации формата (.ksy) получить готовый исходник парсера на языках C++, C#, Java, JavaScript, Lua, Perl, PHP, Python, Ruby, а также диаграмму в формате GraphViz;
- Web IDE для удобной разработки спецификаций с одновременным визуальным контролем;
- библиотека форматов, насчитывающая в этом релизе уже 110 описаний
Список новшеств 0.8 довольно длинный, из основных достижений стоит отметить:
- поддержку Lua (почти 100%), начальную поддержку Go (~15% тестов проходит);
- поддержку переключения endianness по результатам вычислимого выражения (сильно упрощает поддержку форматов типа ELF, TIFF и т.п., которые встречаются в двух вариантах endianness)
- параметрические типы — например, одной такой спецификацией BCD можно пользоваться самых разнообразных BCD, передавая при вызове типа параметрами число цифр, битность одной цифры и порядок их следования;
- поддержка произвольных кастомных методов процессинга данных (расшифровка, декомпрессия и т.д.) путем подключения модуля на целевом языке программирования; в будущем планируется создание стандартных библиотек для распространенных алгоритмов сжатия, шифрования и обфускации данных;
- возможность обращаться к индексу итерации в циклах —
_index
; - расширенные возможности документации enum'ов и кросс-ссылок;
- у проекта появился логотип благодаря сотрудничеству с финским дизайнером Verneri Kontto
Релиз приурочен к пересечению проектом морального рубежа в 1000 stars на GitHub. Команда Kaitai благодарит всех пользующихся за доверие и поддержку и обещает, что дальше будет еще интереснее.
>>> Подробности