7 个版本

0.3.1 2024年7月15日
0.3.0 2024年5月24日
0.2.3 2023年11月13日
0.2.2 2023年10月30日
0.1.7 2023年8月31日

#231解析器工具

Download history • Rust 包仓库 348/week @ 2024-04-15 • Rust 包仓库 172/week @ 2024-04-22 • Rust 包仓库 405/week @ 2024-04-29 • Rust 包仓库 213/week @ 2024-05-06 • Rust 包仓库 114/week @ 2024-05-13 • Rust 包仓库 289/week @ 2024-05-20 • Rust 包仓库 96/week @ 2024-05-27 • Rust 包仓库 176/week @ 2024-06-03 • Rust 包仓库 123/week @ 2024-06-10 • Rust 包仓库 60/week @ 2024-06-17 • Rust 包仓库 48/week @ 2024-06-24 • Rust 包仓库 2/week @ 2024-07-01 • Rust 包仓库 307/week @ 2024-07-08 • Rust 包仓库 326/week @ 2024-07-15 • Rust 包仓库 79/week @ 2024-07-22 • Rust 包仓库 158/week @ 2024-07-29 • Rust 包仓库

870 每月下载量
bumble 中使用

Apache-2.0

735KB
16K SLoC

Rust 13K SLoC // 0.1% comments • Rust 包仓库 Python 3K SLoC // 0.2% comments • Rust 包仓库 Pest 108 SLoC • Rust 包仓库

数据包描述语言 (PDL)

Crate Build workflow GitHub contributors GitHub stars

PDL 是一种特定领域的语言,用于编写二进制协议数据包的定义。在所有语言中,从原始字节解析和验证数据包都是繁琐且易出错的。PDL 为多种目标语言生成内存安全且定制的后端

- Rust
- C++
- Python

历史上,PDL 是作为 Android 蓝牙堆栈(bluetooth_packetgen)的一部分开发的,作为一种生成蓝牙数据包解析器和序列化器的方式,以减少操作和验证原始数据时出现的内存安全问题。

如何使用 PDL

  1. 编写协议定义
  2. cargo run my-protocol.pdl --output-format rust > my-protocol.rs

为所有支持的后端提供了特定语言的说明

  1. Rust 生成代码指南
  2. Python 生成代码指南
  3. C++ 生成代码指南

支持的功能

完整参考文档

  • 标量值
  • 枚举
  • 数组
  • 可选字段
  • 嵌套数据包
  • 条件数据包推导
  • 自定义字段定义

类似项目

依赖

~3–11MB
~120K SLoC