Kaitai Struct, a declarative binary format parser generator, released v0.4

Previous Topic Next Topic
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Kaitai Struct, a declarative binary format parser generator, released v0.4

Mikhail Yakshin

Kaitai project team is pleased to announce release of Kaitai Struct v0.4.

Kaitai Struct is a declarative markup language to describe various binary data structures — binary file formats, network stream packets, etc. The basic idea is that a particular format can be described using Kaitai Struct language (in a .ksy file), which then can be compiled using ksc into source files in one of the supported programming languages. These modules will include a generated code for a parser that can read described data structure from a file / stream and provide access to its contents in a nice, easy-to-comprehend API.

KS compiler is written in Scala and currently targets C++, C#, Java, JavaScript, Python, Ruby (Scala itself is supported via Java and/or JavaScript).

Homepage: http://kaitai.io/
Web-based compiler (thanks to ScalaJS): http://kaitai.io/repl/

Release highlights:
  • Languages support:
    • New target language, fully supported: C# (modules should be usable all across the .NET platform, i.e. from C++/CLI, VB.NET, F#, etc.
    • Preliminary support for C++ (with STL containers / IO implementation) — note that not all features are implemented.
    • Existing support: Java, JavaScript, Python, Ruby.
  • Data types:
    • Floating point data types support (available as f4 and f8 for single and double precision IEEE754 floats)
    • Separate data type for byte arrays (including support for literal byte arrays)
  • Expressions language:
    • Added new testing framework for expression translators
    • Added .first and .last for arrays (getting first and last element of array)
    • Added .to_i for strings (string -> int conversion)
    • Support for accessing _io object (IO stream) to access current stream's size (_io.size)
  • Processing: extended "xor" processing to support XORing with multi-byte keys
  • Runtime libraries:
    • Lots of cleanup - now all libraries try to follow the same strict standard (with method naming, parameters, order of methods, etc).
    • JavaScript: implemented full streaming API (both signed & unsigned integer, ensuring fixed contents fields, approximated 64-bit integers, etc).

WBR, Mikhail Yakshin

You received this message because you are subscribed to the Google Groups "scala-announce" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.