MoonSim 是专为 MoonBit 语言设计的确定性离散事件仿真(Discrete-Event Simulation, DES)与分布式网络并发测试框架。在复杂分布式系统、并发排队优化及供应链调度开发中,物理环境下的时间成本高昂且多线程竞态条件极难复现。MoonSim 将物理时钟彻底重构为纯函数式、毫秒级执行且 100% 确定性运行的虚拟事件驱动内核(Clock)。
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
MoonSim
MoonSim 是一个使用 MoonBit 编写的确定性离散事件仿真框架,面向排队系统、资源竞争、分布式网络故障注入和调度策略验证。它用虚拟时间替代墙钟时间,让同一输入在不同运行中得到相同的事件顺序和统计结果。
项目价值与边界
MoonSim 适合以下实际验证任务:
项目不替代真实网络压测、硬件性能测试或生产监控;它提供的是可复现的模型级验证环境。随机行为使用固定种子,模型参数和业务假设应在 README 或实验记录中明确说明。
目录
moonsim.mbtSimulation顶层门面core/clockcore/eventresourceschedulernetworkstatstracebenchmarksexamples快速开始
需要 MoonBit 0.10.3 或更新版本。
克隆与依赖
仓库本身不依赖 Python、Node.js 或其他第三方运行库;只需要安装 MoonBit CLI。CI 会额外安装 Node.js 20,以便验证 JS 后端。
PowerShell 用户可以执行:
moon update用于同步 MoonBit 模块依赖;当前仓库没有额外的第三方包需要手工安装。验收基准会运行 10,000 个事件、2,000 个网络包和 1,000 个调度任务,并输出完成数、丢失数、截止期违约数、虚拟耗时、平均等待时间和 P95 延迟。基准代码在
benchmarks/suite.mbt,边界测试在benchmarks/suite_test.mbt。当前可复现基线
在本地 MoonBit 0.1.20260703 / Moonc 0.10.3 上运行
moon run examples/acceptance_benchmark的结果为:这些数字是固定种子和固定输入下的模型基线,不应被解读为任何真实硬件或公网链路的性能承诺。修改算法后应重新运行并记录差异。
最小示例
工程与验收检查
本地推荐按以下顺序执行:
仓库 CI 位于
.github/workflows/test.yml,覆盖 Ubuntu、macOS、Windows,并执行检查、格式、接口生成、构建和测试。JS 目标需要本机安装node;没有 Node.js 时,MoonBit 的 JS 测试无法启动,但不影响 wasm/wasm-gc 检查。开源合规
本项目源代码采用 Apache License 2.0,完整文本见 LICENSE。项目没有将第三方项目的源代码复制进仓库;SimPy、ns-3、Raft 等名称仅用于说明建模场景和设计对照,不表示代码派生关系。若未来引入外部代码、数据集或生成文件,应在提交前补充来源、版本、许可证和再分发说明,见 THIRD_PARTY.md。
参考项目与差异范围
参考项目的许可证、链接和独立实现范围也登记在 THIRD_PARTY.md。
项目元数据
wcx789ll/moonsimLicense
Licensed under the Apache License, Version 2.0. See LICENSE for details.