Java 虚拟机上的 Reactive Extensions 实现,用可观察的数据序列编排异步和事件驱动程序。
p-org/P
一种基于状态机的编程语言,用于对分布式系统进行形式化建模并系统性检验其正确性。
- Star
- 3,721
- Fork
- 225
- 未关闭 Issue
- 34
- 最近提交
- 2个月前
这是什么?
P 允许开发者把系统设计建模为一组相互通信的状态机,再借助自动化推理后端检查设计是否满足正确性规约。它面向分布式和事件驱动系统,这类系统中消息交错和故障组合繁多,普通测试很难覆盖其中的隐蔽缺陷。
P Checker 会系统性地探索可能的消息顺序与故障场景,用于发现边界情况下的 bug。项目还包含 PEx 和 PVerifier 作为补充后端,编译器可一次报告多个类型错误。PObserve 可将生产环境的服务日志与 P 规约进行比对。PeasyAI 支持基于设计文档生成 P 状态机和测试驱动,并可通过 MCP 与 Cursor、Claude Code 集成。
P 由工业界与学术界合作维护,README 中提到 AWS 的多个团队在 S3、DynamoDB、EC2 等服务中使用它。可通过 NuGet 安装,也可使用包含 CLI 及依赖的 Docker 镜像。
核心功能
- 01以相互通信的状态机对系统建模,并定义安全性与活性规约。
- 02系统性探索消息交错与故障场景,发现深层次 bug。
- 03编译器默认一次报告所有类型错误,也可切换为遇到首个错误即终止的严格模式。
- 04PObserve 可在运行时用 P 规约校验服务日志。
- 05PeasyAI 可生成状态机和测试驱动,并通过 MCP 与 Cursor、Claude Code 集成。
适用场景
- 在实现之前验证分布式协议或微服务交互的设计。
- 发现集成测试难以覆盖的并发与故障处理缺陷。
- 将生产服务日志与已有的形式化规约进行比对。
- 借助 AI 工具从设计文档起草 P 模型。
快速上手
- 1
运行官方 Docker 镜像,其中已包含 P 命令行工具及其依赖
docker run --rm -it -v "$PWD":/workspace ghcr.io/p-org/p:latest - 2
如需本地安装,请按照项目网站上的安装指南操作
使用前须知
- 本地安装需要 .NET SDK、JDK、Maven 和 graphviz,使用 Docker 镜像更简单。
收录于专题
标签
常见问题
- P 是什么?
- 一种基于状态机的编程语言,用于对分布式系统进行形式化建模并系统性检验其正确性。 P 允许开发者把系统设计建模为一组相互通信的状态机,再借助自动化推理后端检查设计是否满足正确性规约。它面向分布式和事件驱动系统,这类系统中消息交错和故障组合繁多,普通测试很难覆盖其中的隐蔽缺陷。
- P 可以免费使用吗?用的什么许可证?
- P 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- P 还在维护吗?
- 半年内有更新。P 最近一次提交是在 2026年9月3日。
- P 适合用来做什么?
- 在实现之前验证分布式协议或微服务交互的设计。 发现集成测试难以覆盖的并发与故障处理缺陷。 将生产服务日志与已有的形式化规约进行比对。 借助 AI 工具从设计文档起草 P 模型。
- P 怎么安装和运行?
- 运行官方 Docker 镜像,其中已包含 P 命令行工具及其依赖: docker run --rm -it -v "$PWD":/workspace ghcr.io/p-org/p:latest 如需本地安装,请按照项目网站上的安装指南操作
- 在哪里获取 P?
- 源代码和安装说明在 GitHub 上:https://github.com/p-org/P
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一个可移植的运行时,通过 sidecar 为分布式应用和 AI 智能体提供持久化工作流、安全通信、状态管理和发布订阅。
受 Erlang/OTP 启发的 Go 参与者模型框架,用于构建可监督、网络透明的分布式系统。
Restate 是一个用于构建高可靠应用的平台,通过持久化执行、可靠通信和一致状态抵御基础设施故障。
一款对 Rust 代码进行形式化验证的工具,通过静态证明而非运行时检查来保证代码符合规约。
为 Godot 4 提供行为树与分层状态机的 C++ 插件,用于构建游戏 AI,附带编辑器和可视化调试器。