网络线
一门新语言如果只用玩具样例验证,说明不了什么。网络是一个好的压力面,因为它同时要求两样东西:字节级的精确契约(正好是 L0 单一真源要收掉的那类重复),和能力边界(正好是 capability 要表达的那类约束)。
四条结论先行
- 可行性已证 —— 用户态 Loment 经 syscall4/6 直接发 0x8A04–06,与 C demo 共用同一 ABI(m124-net 回归 PASS)。不需要改内核就能开工。
- 落点明确 —— FujoOS 没有网络栈,只有 virtio-net 裸驱动加每个 demo 各自手搓的 IP / UDP / TCP 头。那些手搓的头,正是 L0 要收掉的重复。
- 边界清楚 —— 范围是用 Loment / Potato 写用户态网络层(编解码、校验和、UDP 往返),不做内核协议栈的 Loment 化。
- 判据不软化 —— 任何声明为“完成”的东西,都必须给出可重放的命令与输出。
现状基线(实测事实)
| 面 | 现状 |
|---|---|
| 网卡 | 只有 virtio-net 裸驱动,无协议栈;3 个原语(info / tx / rx) |
| 用户 ABI | 原生 opcode 0x8A04–06(帧级 tx/rx ≤ 1514 B) |
| POSIX socket | 仅名字占位,dispatch 返回 -ENOSYS |
| 服务模型 | srv_net 只存在于文档里 |
| 端口 / socket 能力 | 无——现有能力表只管 AI 动作 |
| 回归 | UDP 回环 PASS;宿主→客体 TCP PASS;出向 TCP 响应被 slirp 丢弃(已记录) |
范围(明确写出不做什么)
| 在范围内 | 不在范围内 |
|---|---|
| 用户态网络层:编解码、校验和、UDP 往返 | 内核协议栈的 Loment 化(受阻,见网络线宪章) |
| 用 .lom 单源生成头部布局与常量 | 内核侧 net.rs 的改动(属既有独占范围) |
| 用 capability 声明的端口与目标域 | 完整 TCP 状态机与拥塞控制 |
一句话:
网络线是语言线的压力测试场,不是第二份内核工程。内核侧的网络现状另见 架构 · 网络栈。