fix: 修复 shell 脚本可执行权限 (bin/moon-deny-warn, .githooks/pre-commit)
两个 #!/bin/bash 脚本缺少 +x 权限(mode 100644),改为 100755。 这可能导致 Git 镜像同步(如 GitLink)时因权限校验失败而中断。
Co-Authored-By: AtomCode (deepseek-v4-flash) noreply@atomgit.com
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
🔄 moon_collections
🏆 OSC 2026 — MoonBit 国产开源生态大赛 参赛项目
Deterministic Data Processing Framework for MoonBit / WASM
确定性数据处理框架 — 为 MoonBit / WASM 而生
📋 项目总览 · 🇨🇳 中文 · 🇬🇧 English · ⚡ Quick Start · 📊 API 能力矩阵 · 📈 质量报告 · 🎯 大赛验收核对
🆕 What’s New — v0.2.4
moon check --deny-warn✅ • 316 测试全部通过 ✅moon check --deny-warn✅ • 315 测试全部通过 ✅📋 项目总览
🏆 为什么选择 moon_collections?
问题:WASM 的不确定性危机
当代码编译到 WebAssembly,标准库的哈希集合会产生一个静默的、不可预测的、每次运行都不一样的输出:
remove()行为get()可能 trapOption(零 trap)ordered_eq()位置感知相等性跨语言生态对比
dictHashMapmapHashMapordered_eq()pub(open) traitmoon_collections 在确定性保证方面,超越了所有主流语言的对应标准库实现。
📦 快速数据
🇨🇳 中文介绍
WASM 世界中的不确定性危机
当代码编译到 WebAssembly,标准库的哈希集合会产生一个致命的、静默的不确定性:
这对以下场景是致命缺陷:
解决方案:三原则架构
三条设计原则:
🇬🇧 English Introduction
The Crisis: Nondeterminism in WASM
When compiling to WebAssembly, standard hash-based collections produce silently nondeterministic output — a correctness time bomb:
This is fatal for production systems:
The Solution: Three Principles
⚡ Quick Start
Installation (one line)
30-Second Demo
Run the full demo
📚 数据结构全家桶
12 种结构一览
CollectionDeterministicIndexMap[K, V]IndexSet[K]BitSetBitFlagsCounter[K]most_common(n)稳定排序DefaultMap[K, V]get()永不返回NoneCompactIntMap[V]SortedMap[K, V]floor()/ceil()搜索RingBuffer[T]SparseSet[V]DisjointSetDiff跨结构转换矩阵
IndexMap→SortedMap@convert.to_sorted_map(im)SortedMap→IndexMap@convert.to_index_map(sm)Array[(K,V)].to_array()Array[(K,V)]→IndexMapIndexMap::from_array(arr)Array[K]→IndexSetIndexSet::from_array(arr)API 方法覆盖度
new()len()/is_empty()insert()/addget()/contains()remove()shift_remove()clear()clone()from_array()to_array()each()/iter()reverse()retain()/filter()fingerprint()ordered_eq()🧬 Core Traits
📊 API 能力矩阵
IndexMap 完整 API
📈 质量报告
🧪 测试工程
moon check --deny-warn📐 代码度量
🛡️ CI/CD 流水线
每次 push 和 PR 强制通过 5 道门:
moon check --target all --deny-warnmoon fmt && git diff --exit-codemoon info && git diff --exit-codemoon test --target allmoon run cmd/main🔐 pre-commit 本地门禁
⚡ 指纹性能
fp_dirty标记跟踪ordered_eq()🎯 大赛验收核对
moon_collections 对照 OSC 2026 大赛验收标准逐条达标:
moon run cmd/main输出 6 段确定性证明moon add wqbcs/moon_collectionsmoon check --deny-warnmoon fmt && git diff --exit-codemoon info && git diff --exit-code🔒 Determinism Guarantee(确定性保证)
✅ 确定性保证清单
.keys_array()顺序moon run cmd/main.fingerprint()assert_eq(m1.fp(), m2.fp()).fingerprint()assert_ne!(m1.fp(), m3.fp())ordered_eq()位置感知m.ordered_eq(m2)remove()保序keys after remove@convert测试❌ 不保证(和原因)
🏗️ Architecture (项目架构)
架构设计原则
🏅 已完成里程碑
🤝 参与贡献
所有贡献必须维护确定性不变性(Determinism Invariant)。
📄 License
Apache 2.0 — 详见 LICENSE
moon_collections — Deterministic by design. Verifiable by fingerprint. Composable by construction.
确定性设计 · 指纹可验证 · 组合可保证
📦 GitHub · 🌙 mooncakes.io · 📘 MoonBit Docs
🏆 参赛 MoonBit 国产开源生态大赛 OSC 2026 · 用确定性改变 WASM 世界
Built with ❤️ for the MoonBit ecosystem