The binary data library provides a domain-specific language for manipulation of binary data, or structured byte sequences, as they appear in everyday software such as networking tools or graphics file manipulation. The binary data domain-specific language uses the metaprogramming features of Dylan to a large extent.
The design goals are manifold: concise expressive syntax, efficient conversion between byte vectors and high level objects (in both directions, by using zerocopy and lazy parsing technology). The source code of this library is available under a MIT license at GitHub. A large body of implemented binary data formats using this library is also available at GitHub.
Inspiration for this library is taken among others from the defstorage system available as part of the Genera Common Lisp operating system and the swiss-army knife for interactive packet manipulation scapy.
For further information, you might want to read our published papers about a TCP/IP stack written entirely in Dylan:
- A domain-specific language for manipulation of binary data in Dylan (by Hannes Mehnert and Andreas Bogk at ILC 2007)
- Secure Networking (by Andreas Bogk and Hannes Mehnert in 2006)
- API Reference
- Class hierarchy
- Tool API
- Extension API
- Stretchy Vector Subsequences