1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2017 年 8 月 3 日 |
---|
#159 在 #consensus
28KB
568 行(不包括注释)
crack ⚡
通过符号执行验证分布式和无锁算法
附录:可靠工程哲学
对于大型有状态系统,提前进行额外规范可以节省大量努力
- TLA+ 很有用,但学习成本很高。我们使用它来填补这个差距
- 清洁室方法:指定所有非平凡块的预期行为
- 通过在测试环境中按时间顺序、延迟或永不发送消息来模拟异步网络条件,该测试环境探索不同的路径(生成式或全状态枚举),具体取决于测试计算时间预算
行动中
- 在编码之前,在 TLA+ 中建模核心通信算法
- 使所有消息可插件
- 使所有时间来源可插件
- 依靠时间类型概念来减少消息交付延迟状态空间的爆炸性增长
- 对所有非平凡块大量使用
debug_assert!
依赖项
~18MB
~348K SLoC