1# Packet Description Language (PDL) 2 3PDL is a domain specific language for writing the definition of binary protocol 4packets. Parsing and validating packets from raw bytes is tedious and error 5prone in any language. PDL generates memory safe and tailored backends for 6mulitple target languages: 7 8 - Rust 9 - C++ 10 - Python 11 12## How to use PDL 13 141. Write the protocol definition 151. `cargo run my-protocol.pdl --output-format rust > my-protocol.rs` 16 17Language specific instructions are provided in another section. 18 19## Supported Features 20 21[Full reference documentation](#doc/reference.md) 22- Scalar values 23- Enumerators 24- Arrays 25- Nested packets 26- Conditional packet derivation 27- Custom field definitions 28 29## Similar projects 30 31* [Kaitai](https://kaitai.io) 32* [EMBOSS](https://github.com/kimrutherford/EMBOSS) 33* [P4](https://p4.org/p4-spec/docs/P4-16-v1.0.0-spec.html) 34