Moonswim —— SWIM 集群成员管理纯核(带疑似中间态 + 反熵 piggyback,Bring Your Own Everything)
| 包 | 职责 | 入口 |
|---|---|---|
| thy1016/moonswim/core | 语义簇:成员表状态机纯核(Identity port 逐字节全序 / 四态成员账 incarnation 单调律 / 怀疑超窗确认 / 话术队列与降格契约) | Swim::new → Swim::apply / drain_rumors / Rumor::to_evidence |
| thy1016/moonswim/wire | 文法簇:Rumor 定长帧编解码(版本位/kind 封闭词表/逐字节金罐/负例全闸) | encode_rumor / decode_evidence |
| thy1016/moonswim/sim | 双节点对打宿主(emit/receive/deliver 三动程;拒旧账闸住宿主面;对打测试与演示的家) | Duet::new → deliver |
| thy1016/moonswim/probe | 探测引擎纯形宿主(注入钟周期轮转/截止窗升级间接/双败判嫌——终态两径,引擎只产嫌疑) | ProbeEngine::new → on_tick / on_frame |
| thy1016/moonswim/link | UDP 真缝(UdpPump 收发分离:后台收件永不取消+主环泵快照式结算;id↔Addr 装配面注册) | UdpPump::listen → pump |
moon add thy1016/moonswimlet table = @core.Swim::new(self_bytes=me, suspect_timeout_ticks=100L)
table.apply(
id_bytes=peer_id,
report=@core.MemberAliveEvidence({
tick: 0,
from_self: false,
claimed_incarnation: 0L,
}),
)
for rumor in table.drain_rumors(budget_bytes=512) {
send(@wire.encode_rumor(rumor)) // send = 消费方传输
}
let _ = table.confirm_suspects(tick=now) // 怀疑超窗坐实(本地之钟)fn feed(peer : @core.Swim, frame : Bytes, tick~ : Int64) -> Bool {
let rumor = @wire.decode_rumor(frame) catch { _ => return false }
let stale = match peer.get(rumor.id_bytes) {
Some(account) => rumor.stale_against(account)
None => false
}
if stale {
return false
}
peer.apply(id_bytes=rumor.id_bytes, report=rumor.to_evidence(tick~))
true
}moon check --deny-warn # 零错零警(缺省 native 档)
moon test # native 25 罐:core 7(守恒/话术/降格契约/序免疫锚)
# + wire 6(金罐 + 负例全闸)+ probe 6(行为罐)
# + sim 5(对打 + 探测联测)+ link 1(真 UDP 回环)
moon test --target wasm-gc # 纯包四件 24 罐(wasm / js 同)
moon fmt && moon info # 格式与接口面漂移门Install
Download zipMoonswim —— SWIM 集群成员管理纯核(带疑似中间态 + 反熵 piggyback,Bring Your Own Everything)