[#] Kaitai Struct 0.9
Новостной_робот(mira, 1) — All
2020-10-20 20:00:02


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