Новости и события » Hi-Tech » Выпуск языка описания бинарных форматов Kaitai Struct 0.7

Выпуск языка описания бинарных форматов Kaitai Struct 0.7

Выпуск языка описания бинарных форматов Kaitai Struct 0.7

Доступен релиз декларативного языка описания бинарных форматов файлов и протоколов Kaitai Struct 0.7. Язык позволяет описывать произвольные бинарные форматы (сетевые пакеты, архивы, контейнерные форматы, файловые системы, форматы изображений, видео и т. д.) в декларативном виде. Полученное описание с помощью компилятора ksc можно:

  • Транслировать в готовый парсер на любом из 8 поддерживаемых целевых языков программирования (C++, C, Java, JavaScript, Perl, PHP, Python, Ruby),
  • Визуально исследовать с помощью предлагаемой IDE любой файл в описанном формате:
  • Представить в виде наглядной диаграммы

В новой версии языка доступны:

  • Импорт.ksy-файлов друг в друга для создания масштабных многофайловых проектов - см. "meta/import" - в том числе с обращением к атрибутам типов из других файлов. Используемый для этого ранее механизм opaque типов отключен по умолчанию (можно включить опцией "--opaque-types").

  • Структуры неопределенной длины, терминируемые байтом (ранее такое поддерживалось только для строк) - см. "terminator", "include", "consume".

  • "pad-right" для более удобной обработки структур с паддингом справа (например, строк, помещенных в область фиксированного размера и дополненных справа нулями или пробелами)

  • Гибкое управление отношением parent-child: с помощью "parent" можно форсировать родителя для дочернего объекта, отличного от текущего объекта по умолчанию

  • Вычислимые instances теперь могут использовать "_parent"

  • Новый атрибут "doc-ref" в типах и атрибутах может использоваться для представления ссылок на внешнюю документацию (удобно, если описание формата соответствует какому-то формальному документу)

  • Процесс компиляции четко разделен на 3 фазы: парсинг YAML, прекомпиляция (единая для всех целевых языков) и компиляция (в конкретный целевой язык); такое решение позволило унифицировать обработку ошибок и значительно упростить сами компиляторы.

  • Существенно переработан механизм определения ошибок: теперь все рапортуемые компилятором ошибки должны содержать четкое указание на место проявления ошибки; добавлено более 50 тестов с неверными.ksy-файлами специально для тестирования этого сообщений об ошибках.

  • Генерируемый код теперь содержит проверки на соответствие версии компилятора и runtime-библиотеки.

  • Переработана система логирования поведения компилятора ("--verbose"): теперь можно гибко включать логирование по отдельным подсистемам.

  • Новые возможности языка выражений: полноценная поддержка строк с двойными кавычками (с escape characters), type casting, методы для работы с массивами и различные преобразования типов.

Ввиду большого количества внутренних изменений, существенно изменен API runtime-библиотеки: код, сгенерированный ksc 0.7, будет работать только с runtime соответствующей версии. Благодаря введению механизма импорта, начаты работы по созданию библиотеки часто используемых структур данных и форматов. С версией 0.7 впервые эта библиотека поставляется в комплекте дистрибутива и на момент выпуска составляет 60 описаний.

Выпуск языка описания бинарных форматов Kaitai Struct 0.7

Выпуск языка описания бинарных форматов Kaitai Struct 0.7


Свежие новости Украины на сегодня и последние события в мире экономики и политики, культуры и спорта, технологий, здоровья, происшествий, авто и мото

Вверх