公告

FujoOS公布日延期,以仓库发布为准

文档 兼容

兼容层总览

“兼容”是最容易被含糊过去的词。所以在讲任何实现之前,先把口径写死——否则后面所有的进度汇报都可以靠重新定义词义变得好看。

四个口径

代号 口径
P1兼容 = 集合包含。说“能跑”时,要能说出跑的是哪个子集。
P2接口契约,而非容器模拟。不模拟操作系统,只履行接口。
P3边界可声明、可测量。说不清边界的兼容不算兼容。
P4兼容 = 回归矩阵覆盖的依赖闭包。“能跑”的证据是它在矩阵里。

原则与不做的事

  • clean-room —— 零专有代码。
  • 表驱动 —— SHIM_TABLE 加 .def 文件,而不是散落的 if。
  • 每个 API 有正例用例 —— 没有用例的 API 视为未实现。
  • 不做内核驱动 —— .sys / .ko / .kext 不实现,提供 hypervisor 兜底。
  • 不做完整 macOS GUI 等价 —— 兼容目标限定在加载器与垫片面。

现状基线(实测事实)

现状
加载器ELF / PE32+ / Mach-O / FUJR 四套齐备
Linux ABI一等公民:原生执行零垫片;命名表已同步为实现面 45 条
Windows 垫片SHIM_TABLE 97 条:kernel32 40 · msvcrt 45 · gdi32 10 · user32 2
Darwin8 个 BSD syscall + mach-trap 垫片
回归59 用例 / TCG 59-59
样本Linux demo 119 · Windows 样本 8 · Darwin 2

已识别的硬缺口

这份清单是兼容线规划的直接动机,也是对“Linux 二进制能在上面原生跑”这类说法最有效的边界声明。

  • user32 仅 2 条;无 ntdll 表,无 ws2_32 表
  • LoadLibraryA 返回假句柄;无真实动态 CRT
  • 无跨架构翻译器
  • compat_audit 目前只覆盖 Windows 面
  • 无真实世界程序矩阵;无签名与完整性容器
  • Linux 面:10 条命名表项无实现,已移入 C01 / C08 目标集
下一步: 四套加载器见 加载器;三套 ABI 各自的细节见 LinuxWindows;15 项规划见 C01–C15