Kohët e fundit, u lëshua versioni tjetër i Kaitai Struct 0.9 - një gjuhë përshkrimi dhe mjete për analizimin e formateve të ndryshme binare (për shembull, paketat e rrjetit, skedarët e imazhit / audio / video, bazat e të dhënave, arkivat, kontejnerët, etj.). Pavarësisht nga versioni 0.9 me pamje joserioze, ky është një version i madh që përfshin zhvillimet gjatë 2.5 viteve të fundit. Gjatë kësaj kohe, gjuha është rritur në një familje të tërë projektesh:
- një përpilues që ju lejon të merrni një kod burimor analizues të gatshëm në një sërë gjuhësh programimi (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) nga një format skedar specifikimi (.ksy), si dhe diagrame në formatin GraphViz dhe specifikimet e formatit të lexueshëm nga njeriu në HTML;
- mjete për zhvillimin e përshtatshëm të specifikimeve me kontroll të njëkohshëm vizual: Web IDE, vizualizues i konsolës, plugin për Visual Studio Code, Hobbit, Veles, shtojcë për Hiew, shtojcë për Binary Ninja;
- modulet për integrimin e Kaitai Struct në procesin e montimit për Maven, për Gradle, për Python, për JavaScript/WebPack
- biblioteka e formatit, i cili tashmë ka 156 përshkrime në këtë version (dhe 78 formate të tjera janë në proces të shqyrtimit të kërkesës për tërheqje).
- biblioteka e algoritmeve të kompresimit plug-in Kompresa Kaitai
- modul për FUSE - Kaitai FS, i cili ju lejon të montoni një skedar si një sistem skedari, duke përdorur përshkrimin ksy të formatit të tij
Gjuhë njohur nga GitHub dhe tani përdoret në më shumë se 400 projekte falas / me burim të hapur për analizimin e të gjitha llojeve të formateve ekzotike të të dhënave, duke filluar nga Skedarët e të dhënave të lojës në pronësi të inxhinierisë së kundërtsperma analiza e protokolleve të komunikimit satelitor.
Ndër risitë kryesore të gjuhës 0.9 vlen të theksohen:
- mbështetje për gjuhët e reja të synuara (Python përmes bibliotekës Construct, Nim, gjenerimi i dokumentacionit në HTML)
- mbështetje e plotë për C++ moderne (tregues inteligjentë, nuk ka nevojë të menaxhohet manualisht memoria, rregullon të gjitha rrjedhjet e njohura të kujtesës)
- mbështetje për adresimin e llojeve të mbivendosur përmes sintaksës si foo::bar::baz
- mbështetje për vërtetimin e të dhënave të leximit sipas kushteve të përshkruara (e vlefshme)
- Llogaritja e madhësive të strukturave statike të të dhënave në bajt dhe bit (operatorët e madhësisë dhe madhësisë së bitave)
- përshkrimi formal i një gjuhe në formë Skemat JSON, nga e cila tani gjenerohet dokumentacioni
Burimi: linux.org.ru