Состоялся релиз Kaitai Struct 0.7 — языка и набора программ, предназначенных для описания и разбора всевозможных бинарных форматов (например, сетевых пакетов, файлов с изображениями/аудио/видео, баз данных, архивов, контейнеров и т. д.).
Предлагаемый комплект позволяет:
- разработать описание формата с помощью IDE, попутно проверяя соответствие формата какому-нибудь разбираемому файлу (это, в том числе, удобно использовать);
- скомпилировать разработанное описание с помощью компилятора в готовую библиотеку на одном из поддерживаемых целевых языков (C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby);
- получить наглядную документацию формата в виде диаграмм.
Версия 0.7 содержит масштабные изменения, в том числе:
- Добавлена поддержка многофайловых проектов, теперь можно полноценно импортировать одни .ksy в другие с помощью
meta/imports
(в том числе будет работать доступ к атрибутам классов и т. п.); - Любые типы данных теперь можно объявить размером «до байта-терминатора» с помощью
terminator
(ранее так можно было делать только со строками), а в случае заранее заданного размера также можно «обрезать» отступы справа, если это нужно (pad-right
). - Для пользовательских типов данных теперь можно указывать явно значение
parent
(и тем самым гибко регулировать формирование дерева объектов). - К типам и атрибутам теперь можно добавлять ссылку на пункты оригинальной документации формата с помощью
doc-ref
. - Существенно переработан процесс компиляции, который теперь делится на 3 этапа: парсинг YAML, прекомпиляция (единая для всех языков) и компиляция (индивидуальным компилятором конкретного целевого языка); это позволило упростить и сильно улучшить обработку ошибок — отныне все сообщения компилятора содержат указание на конкретное проблемное место; введено более 50 тестов, проверяющих сообщения на ошибочных входных ksy-файлах.
- Генерируемый код теперь следит за тем, чтобы runtime-библиотека была совместимой версии и отказывается работать со слишком старой библиотекой.
- Множество новшеств в языке выражений: type casting, строковые литералы в одинарных и двойных кавычках, новые методы преобразования типов.
- Как всегда, исправлено несколько десятков ошибок, проведены оптимизации, внутренний рефакторинг компилятора и др.
Отдельно стоит отметить, что так как теперь можно подключать ksy-файлы как модули к своему проекту, начиная с версии 0.7 вместе с компилятором поставляется библиотека форматов (на момент релиза насчитывающая 60 штук), в том числе с такими распространенными структурами, как VLQ, ULEB128 и т. д.
>>> Подробности