Основная сфера применения подобного решения - разбор всевозможных существующих (зачастую закрытых и проприетарных) форматов (офисных, мультимедийных и т.д.) и протоколов. Благодаря наличию продвинутых инструментов отладки и визуализации, Kaitai Struct нашел свое применение и в быстром реверс-инжиниринге неизвестных форматов, а также в digital forensics. Ряд организаций, занимающийся хранением исторических цифровых архивов, взяли Kaitai Struct на вооружение как стандарт описания форматов данных. Компилятор Kaitai Struct распространяется под лицензией GPLv3, большая часть runtime - под MIT. Для желающих попробовать компилятор без установки подготовлен javascript-вариант компилятора KS с примерами.
Наиболее заметные изменения:
Поддержка новых целевых языков
Полная поддержка целевого языка C++ (на базе STL), а также новые целевые языки PHP и Perl:
Вывод описаний форматов в виде наглядных человеко-читаемых схем (через GraphViz). Подборка примеров визуализаций доступна в галерее;
title="Вышел язык спецификации бинарных форматов Kaitai Struct 0.5"
Многочисленные доработки и проверки для полноценной поддержки как Python 2, так и Python 3.
Как и раньше, кроме новых языков, все еще поддерживаются C#, Java, javascript, Python, Ruby.
Новые инструменты для разработки, отладки и визуализации
Консольный визуализатор ksv обновлен и теперь работает не только на UNIX-консолях (Linux, *BSD, OS X), но и под Windows:
-->



Switch-подобный механизм определения типов данных на основе условия позволяет отказаться от кучи однотипных if'ов:

- id: elements
type: s4
repeat: until
repeat-until: _ == -1
Более сложный пример — массив сегментов (тип segment - пользовательский, объявлен отдельно), заканчивающийся чтением сегмента с кодом "segment_code::end":
- id: segments
type: segment
repeat: until
repeat-until: _.code == segment_code::end
Каждое поле теперь может аннотироваться строчкой человеко-читаемой документации. Кроме видимости в .ksy-файле, эта документация будет выгружаться в doc-систему целевого языка (JavaDoc, JSDoc, YARD/RDoc и т.п.):

instances:
from_start: # 0x10 байт, начиная с 0x40 байта от начала
pos: 0x40
size: 0x10
from_end:
# 0x10 байт, начиная с 0x40 байта с конца
pos: _io.size - 0x40
size: 0x10
Или, например, удобно делать условные структуры, которые будут парситься, только если что-то еще осталось в потоке:
seq:
# основной элемент, присутствует всегда
- id: main_element
type: ...
# дополнительный элемент, будет зачитан, только в потоке еще что-то есть
- id: aux_element
type: ...
if: not _io.eof
Важные мелочи
Существенно улучшена диагностика ошибок, усилена строгость проверки исходных .ksy. При обнаружении ошибки компилятор теперь генерирует понятные ссылки на конкретные элементы, в которых проблема и предлагает варианты решения. При обнаружении ошибки с данными в runtime в debug-режиме теперь производится попытка оставить как можно больше данных в структуре (включая не полностью заполненные классы), чтобы легче было понять, где именно произошел сбой парсинга.
Стандартизация сборки: в дополнение к ранее собираемым runtime-модулям для Ruby в виде gem, появились доступные для инсталляции из соответствующих репозитариев пакеты для Python в PyPI и для Java-платформы. Авторы призывают помочь с упаковкой runtime-библиотек и для других языков.