Πολύ πρόσφατα, κυκλοφόρησε η επόμενη έκδοση του Kaitai Struct 0.9 - μια γλώσσα περιγραφής και εργαλεία για την ανάλυση διαφόρων δυαδικών μορφών (για παράδειγμα, πακέτα δικτύου, αρχεία εικόνας/ήχου/βίντεο, βάσεις δεδομένων, αρχεία, κοντέινερ κ.λπ.). Παρά την επιπόλαιη εμφάνιση με αριθμό έκδοσης 0.9, αυτή είναι μια σημαντική έκδοση που περιλαμβάνει εξελίξεις τα τελευταία 2.5 χρόνια. Κατά τη διάρκεια αυτής της περιόδου, η γλώσσα έχει εξελιχθεί σε μια ολόκληρη οικογένεια έργων:
- ένας μεταγλωττιστής που σας επιτρέπει να αποκτήσετε έναν έτοιμο πηγαίο κώδικα ανάλυσης σε μια ποικιλία γλωσσών προγραμματισμού (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) από μια μορφή αρχείο προδιαγραφών (.ksy), καθώς και διαγράμματα σε μορφή GraphViz και προδιαγραφές μορφής αναγνώσιμης από τον άνθρωπο σε HTML.
- εργαλεία για εύκολη ανάπτυξη προδιαγραφών με ταυτόχρονο οπτικό έλεγχο: Web IDE, οπτικοποιητής κονσόλας, πρόσθετο για τον κώδικα του Visual Studio, Χόμπιτς, Veles, πρόσθετο για Hiew, plugin για Binary Ninja;
- ενότητες για την ενσωμάτωση της Kaitai Struct στη διαδικασία συναρμολόγησης για τον Maven, για τον Γκραντλ, για Python, για JavaScript/WebPack
- βιβλιοθήκη μορφής, το οποίο έχει ήδη 156 περιγραφές σε αυτήν την έκδοση (και 78 ακόμη μορφές βρίσκονται στη διαδικασία εξέτασης του αιτήματος έλξης).
- βιβλιοθήκη αλγορίθμων συμπίεσης plug-in Συμπίεση Kaitai
- μονάδα για FUSE - Kaitai FS, το οποίο σας επιτρέπει να προσαρτήσετε ένα αρχείο ως σύστημα αρχείων, χρησιμοποιώντας την περιγραφή ksy της μορφής του
Γλώσσα αναγνωρισμένο από το GitHub και χρησιμοποιείται τώρα σε περισσότερα από 400 έργα δωρεάν / ανοιχτού κώδικα για την ανάλυση όλων των ειδών εξωτικών μορφών δεδομένων, που κυμαίνονται από ιδιόκτητα αρχεία δεδομένων παιχνιδιών αντίστροφης μηχανικήςτελειώνοντας ανάλυση πρωτοκόλλων δορυφορικής επικοινωνίας.
Μεταξύ των βασικών καινοτομιών της γλώσσας 0.9 αξίζει να επισημανθούν:
- υποστήριξη για νέες γλώσσες-στόχους (Python μέσω της βιβλιοθήκης Construct, Nim, δημιουργία τεκμηρίωσης σε HTML)
- πλήρης υποστήριξη για τη σύγχρονη C++ (έξυπνοι δείκτες, δεν χρειάζεται χειροκίνητη διαχείριση της μνήμης, διορθώνει όλες τις γνωστές διαρροές μνήμης)
- υποστήριξη για τη διευθυνσιοδότηση ένθετων τύπων μέσω σύνταξης όπως foo::bar::baz
- υποστήριξη για επικύρωση δεδομένων ανάγνωσης σύμφωνα με τις περιγραφόμενες συνθήκες (έγκυρο)
- υπολογισμός των μεγεθών των στατικών δομών δεδομένων σε byte και bit (τελεστές sizeof και bitsizeof)
- επίσημη περιγραφή μιας γλώσσας στη μορφή Σχήματα JSON, από το οποίο τώρα δημιουργείται τεκμηρίωση
Πηγή: linux.org.ru