You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _posts/2020-10-16-kaitai-struct-v0.9-released.md
+27-17Lines changed: 27 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,41 +13,43 @@ categories: news
13
13
After a lot of time and effort, Kaitai project is happy to announce
14
14
release of new major version of Kaitai Struct, declarative markup
15
15
language to describe various binary data structures — binary file
16
-
formats, network stream packets, etc.
16
+
formats, network packets, etc.
17
17
18
18
The basic idea of Kaitai Struct is that a particular format can be
19
-
described using Kaitai Struct language (in a `.ksy` file), which then
20
-
can be compiled using `kaitai-struct-compiler` into source files in
21
-
one of the supported programming languages. These modules will include
22
-
a generated code for a parser that can read described data structure
23
-
from a file / stream and provide access to its contents in a nice,
19
+
described using Kaitai Struct language (in a `.ksy` file, that stands
20
+
for Kaitai Struct YAML), which then can be compiled using
21
+
`kaitai-struct-compiler` into source files in one of the supported
22
+
programming languages. These modules will include a generated
23
+
code for a parser that can read described data structure from a
24
+
file / stream and provide access to its contents in a nice,
24
25
easy-to-comprehend API.
25
26
26
27
With the previous 0.8 release, Kaitai project celebrated 1000 stars on GitHub,
27
28
and until 0.9 version, it has collected more than [2000 stars](https://github.com/kaitai-io/kaitai_struct/stargazers).
28
29
Thank you all for your support!
29
30
30
31
This version introduces C++11 target (which uses smart pointers),
31
-
several handy features (like `valid`ations and little-endian bit integers),
32
-
fixes a lot of bugs and includes quite a few infrastructure improvements.
32
+
several handy features (like `valid`ations and little-endian "bit-sized
33
+
types"), fixes a lot of bugs and includes quite a few infrastructure
34
+
improvements.
33
35
34
36
## Release highlights
35
37
36
38
* New targets support:
37
-
* Python with [Construct](https://construct.readthedocs.io) library
38
-
* HTML - intended for documentation, preliminary support
39
-
* Nim - entry-level support (51% tests pass score)
40
-
* New KSY language features:
39
+
* Python with [Construct](https://construct.readthedocs.io) library ([#377](https://github.com/kaitai-io/kaitai_struct/issues/377))
40
+
* HTML - intended for documentation, preliminary support ([ec21b](https://github.com/kaitai-io/kaitai_struct_compiler/commit/ec21bdf62bcc9211e514dd8413ed5f6714a8e6bc))
41
+
* Nim - entry-level support (51% tests pass score) ([#619](https://github.com/kaitai-io/kaitai_struct/issues/619))
42
+
* New KS language features:
41
43
*`doc-ref` supports list of references ([#269](https://github.com/kaitai-io/kaitai_struct/issues/269))
42
44
*`meta/tags` allows specification of multiple tags to allow better navigation in the format gallery ([#572](https://github.com/kaitai-io/kaitai_struct/issues/572))
43
45
* Allow accessing nested types using `::` syntax: `foo::bar` ([#275](https://github.com/kaitai-io/kaitai_struct/issues/275))
44
46
* Implement parsed data validations using `valid` key ([#435](https://github.com/kaitai-io/kaitai_struct/issues/435))
45
47
* Implement compile-time `sizeof` and `bitsizeof` operators ([#84](https://github.com/kaitai-io/kaitai_struct/issues/84))
* uses `std::unique_ptr<foo>` for owning pointers, raw pointers `foo*` for non-owning
68
70
* supports array literals
69
71
*`--no-auto-read` implemented for C++
@@ -72,6 +74,7 @@ fixes a lot of bugs and includes quite a few infrastructure improvements.
72
74
* Runtime API changes:
73
75
* Add exceptions `Validation{Not{Equal,AnyOf},{Less,Greater}Than,Expr}Error` inheriting from common ancestor `ValidationFailedError` - thrown on failed validations defined with `valid` or `contents` key ([#435](https://github.com/kaitai-io/kaitai_struct/issues/435))
74
76
* Add method `read_bits_int_le` for parsing little-endian bit-sized integers ([docs](https://doc.kaitai.io/user_guide.html#bit-ints-le))
77
+
* Allow third-party `process`ors to be used ([#457](https://github.com/kaitai-io/kaitai_struct/issues/457)).
75
78
* Deprecated classes and methods:
76
79
*~~`ensure_fixed_contents`~~⟶ explicit `if` that asserts `readBytes(n)` to be equal to the expected `n`-byte array (throwing `ValidationNotEqualError` if it fails)
* Unstable binary builds are available for all platforms after every CI build at Bintray ([#63](https://github.com/kaitai-io/kaitai_struct/issues/63))
102
-
*KSY language reference replaced with [documentation](https://doc.kaitai.io/ksy_diagram.html) generated from JSON schema
105
+
*KS language reference replaced with [documentation](https://doc.kaitai.io/ksy_diagram.html) generated from [the JSONSchema](https://github.com/kaitai-io/ksy_schema)
103
106
*[https://formats.kaitai.io/](https://formats.kaitai.io/) is rebuilt automatically with CI/CD
104
107
* Brand new modular CI/CD system for compiler, underlying
105
108
CI-agnostic, working on multiple different OSes in parallel
106
109
(Linux, Windows, macOS) and showing status at [https://ci.kaitai.io/](https://ci.kaitai.io/)
107
110
* Generate test assertion specs from language-agnostic [KST specs](https://doc.kaitai.io/kst.html)
111
+
* Related projects:
112
+
* Added an [official library of compression algorithms](https://github.com/kaitai-io/kaitai_compress) to be used in `process`.
113
+
* Created [a list of  projects related to Kaitai Struct](https://github.com/kaitai-io/awesome-kaitai)
114
+
* Alternative compiler implementations specific for target languages, intended for easier integration into them, have been started:
115
+
*[ksc-rs](https://github.com/Mingun/ksc-rs) for Rust
116
+
*[kaitaigo](https://github.com/cugu/kaitaigo) for Go
117
+
*[nimitai](https://github.com/sealmove/nimitai) for nim
0 commit comments