Gần đây, phiên bản tiếp theo của Kaitai Struct 0.9 đã được phát hành - một ngôn ngữ mô tả và các công cụ để phân tích các định dạng nhị phân khác nhau (ví dụ: gói mạng, tệp hình ảnh/âm thanh/video, cơ sở dữ liệu, kho lưu trữ, vùng chứa, v.v.). Mặc dù phiên bản số 0.9 trông có vẻ phù phiếm nhưng đây là phiên bản chính bao gồm những phát triển trong 2.5 năm qua. Trong thời gian này, ngôn ngữ đã phát triển thành một nhóm dự án:
- một trình biên dịch cho phép bạn lấy mã nguồn trình phân tích cú pháp được tạo sẵn bằng nhiều ngôn ngữ lập trình (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) từ một định dạng tệp đặc tả (.ksy), cũng như các sơ đồ ở định dạng GraphViz và các đặc tả định dạng mà con người có thể đọc được trong HTML;
- các công cụ để phát triển các thông số kỹ thuật một cách thuận tiện với khả năng kiểm soát trực quan đồng thời: IDE Web, trình hiển thị bảng điều khiển, plugin cho Visual Studio Code, Sở thích, Veles, plugin cho Hiew, plugin cho Ninja nhị phân;
- module để tích hợp Kaitai Struct vào quá trình lắp ráp cho Maven, cho Gradle, cho Python, cho JavaScript/WebPack
- thư viện định dạng, đã có 156 mô tả trong bản phát hành này (và 78 định dạng khác đang trong quá trình xem xét yêu cầu kéo).
- thư viện thuật toán nén plug-in Nén Kaitai
- mô-đun cho CẦU CHÌ - Kaitai FS, cho phép bạn gắn tệp dưới dạng hệ thống tệp, sử dụng mô tả ksy về định dạng của nó
Ngôn ngư được GitHub công nhận và hiện được sử dụng trong hơn 400 dự án nguồn mở/miễn phí để phân tích tất cả các loại định dạng dữ liệu kỳ lạ, từ kỹ thuật đảo ngược các tập tin dữ liệu trò chơi độc quyềnxuất tinh phân tích các giao thức truyền thông vệ tinh.
Trong số những đổi mới chính của ngôn ngữ 0.9, điều đáng chú ý là:
- hỗ trợ cho các ngôn ngữ mục tiêu mới (Python thông qua thư viện Xây dựng, Nim, tạo tài liệu bằng HTML)
- hỗ trợ đầy đủ cho C++ hiện đại (con trỏ thông minh, không cần quản lý bộ nhớ theo cách thủ công, khắc phục tất cả các rò rỉ bộ nhớ đã biết)
- hỗ trợ giải quyết các kiểu lồng nhau thông qua cú pháp như foo::bar::baz
- hỗ trợ xác thực dữ liệu đã đọc theo các điều kiện được mô tả (hợp lệ)
- tính toán kích thước của cấu trúc dữ liệu tĩnh theo byte và bit (toán tử sizeof và bitsizeof)
- mô tả chính thức của một ngôn ngữ ở dạng Lược đồ JSON, từ đó bây giờ tài liệu được tạo ra
Nguồn: linux.org.ru