The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Kaitai Struct запустил веб-версию компилятора

28.07.2016 10:58

Проект Kaitai Struct, позволяющий описывать бинарные форматы структур данных с помощью декларативного языка, а затем исследовать файлы с помощью визуализатора и компилировать этим описания в готовый код парсера на поддерживаемых языках программирования, запустил веб-версию компилятора. Веб-версия компилятора работает целиком на стороне клиента (т.е. исполняется на JavaScript, а не просто отсылает код на сервер и получает готовый результат).

Благодаря технологии ScalaJS, JavaScript-версия компилятора использует тот же код, что и обычный компилятор ksc, вызываемый из командной строки. В качестве примеров в веб-версии доступны разборы форматов DOS MZ .exe, Doom .wad, пакетов IPv4, изображений GIF и архивов ZIP. В репозитории форматов доступны еще около десятка примеров .ksy-описаний.

  1. Главная ссылка к новости (http://kaitai.io/repl...)
  2. OpenNews: Декларативная спецификация парсинга бинарных файлов Kaitai Struct
Автор новости: GreyCat
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44864-kaitai
Ключевые слова: kaitai, parser, binary
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (10) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним84701 (?), 13:18, 28/07/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Проект Kaitai Struct, позволяющий описывать бинарные

    Как было в той новости "ожидается поддержка С и С++", так  и осталось:
    ---
    Supported languages

    Official Kaitai Struct compiler now supports compiling .ksy into source modules for the following languages:

    Java
    JavaScript
    Python
    Ruby
    ---

     
     
  • 2.3, Аноним (-), 14:43, 28/07/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Парсер бинарного формата не компилируется в сишку? Максимум ненужно.
     
     
  • 3.6, Аноним (-), 17:48, 28/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ты не понимаешь, работа с бинарными форматами в этом скриптовом крапе редкостное порево. Особенно в JavaScript. Хотя отдельные экспонаты умудряются парсить ни много ни мало а OSM'ный PBF на стороне клиента, из яваскрипта. И даже типизированные массивы эмулируют для гуано (в основном микрософтовского) которое их не умеет.
     
     
  • 4.11, angra (ok), 22:37, 28/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    В таком "скриптовом крапе" как perl существуют встроенные pack/unpack. В других скриптовых языках они есть в виде либ, в том числе и для js. Так что особых проблем с парсингом бинарных форматов нет. Ну по крайней мере для тех, кто смог осилить эти функции.
     
  • 2.4, GreyCat (ok), 16:27, 28/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Поддержка C++ - work in progress. В этой JavaScript-версии, опубликованной сегодня, она есть, как несложно убедиться, посмотрев на комбобокс выбора языков. На дня выпустим v0.4 - будет ровно такая же в обычном command line компиляторе. Другой вопрос, что там далеко не все еще работает: http://kaitai.io/ci/
     
     
  • 3.7, Аноним (-), 17:53, 28/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Поддержка C++ - work in progress.

    А просто си - не того, чтобы везде подцепить можно было? Ruby и прочий JS это замечательно, но они - вещи в себе. Их interop с остальными равен нулю. На JS не больно сделаешь библиотеку котрую потом из Ruby вызвать можно будет. Плюсы в этом плане не сильно лучше - на плюсах сделать реюзабельную из других мест библиотеку не то чтобы совсем невозможно, но - изврат и все-равно потребует использовать наружу сишные интерфейсы, потому что с плюсовыми в этом плане не задалось.

     
     
  • 4.10, GreyCat (ok), 20:51, 28/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Поддержка C++ - work in progress.
    > А просто си - не того, чтобы везде подцепить можно было? Ruby
    > и прочий JS это замечательно, но они - вещи в себе.
    > Их interop с остальными равен нулю.

    Да проблема в том, что с C interop по таким вопросам тоже сам по себе никому не нужен. Ну, будет какая-то штука, которая умеет парсить входящий поток и раскладывать по struct'ам в памяти - дальше-то что? Для подключения такого в любой другой язык по сути придется вручную переописать эти структуры на этом языке - а какой в этом смысл, если суть проекта как раз в том, чтобы не делать этого, а получить готовый результат на любом языке?

    Кроме того, с чистым C на самом деле есть несколько принципиальных вопросов: например, там будет совсем ручной memory management (и разным потребителям он нужен иногда сильно разный), или, например, это будет первый язык, который не укладывается в концепцию "все можно сделать выражением".

     
  • 2.5, _ (??), 17:12, 28/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    На сайте первые две строки в дроп-боксе выбора языка - cpp_stl и csharp  ...
    А ты - Ъ?
     
     
  • 3.8, Аноним84701 (?), 18:23, 28/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> поддержка С и С++
    > На сайте первые две строки в дроп-боксе выбора языка - cpp_stl и csharp
    > csharp

    Казалось бы, причем тут шарп?
    Хотя да, мне интересно было бы для сей, а вот про плюсы с той новости я скопипастил возможно зря.


    > На сайте первые две строки в дроп-боксе выбора языка

    На главном сайте:
    ---
    Language-neutral: write once, use in all supported languages:

    Java
    JavaScript
    Python
    Ruby
    ---
    А копипастил вообще с  гитхаба (с которого и брал информацию, т.к. мало ли что может не попасть на основной):
    https://github.com/kaitai-io/kaitai_struct

    > А ты - Ъ?

    Не, куда уж мне до си-шарповиков (

     

  • 1.9, Аноним (-), 20:32, 28/07/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    C++ STD для моральных  … реверсеров!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру