豫言操作系统:让中文程序通行各处

豫言是一门中文编程语言;豫言操作系统是承载豫言程序的生态。 我们希望程序员用中文表达计算,也用统一的中文接口使用文件、网络、窗口和其他环境能力。程序编译为 WebAssembly 后,可以在提供相应能力的豫言操作系统宿主中运行。

这是一份愿景与路线图,不是现有平台支持范围的承诺。今天的浏览器、云端宿主和裸机原型已经各自具备部分能力;统一的豫言操作系统契约、完整图形界面与所有平台的同一程序验收仍在建设。

同一种程序模型,多种宿主

豫言操作系统不是只指装在硬盘上的系统。它定义 WebAssembly 程序如何启动、取得授权的系统能力、交换数据和释放资源;不同平台各自实现这套契约。裸机版本直接面对硬件,桌面版本借用现有操作系统,浏览器和边缘计算版本借用所在环境的接口。

豫言应用 .wasm 通过豫言操作系统统一程序模型与系统接口,运行于硬件或 QEMU、Windows、macOS、Linux、浏览器和 CF Worker。
这是目标架构;每个平台须满足程序所需的 WebAssembly 功能与系统能力。
宿主 可复用的基础 豫言操作系统需要补齐的部分
浏览器 已提供且符合目标功能基线的 WebAssembly 引擎、网页与图形接口 中文能力绑定、权限映射与一致的程序生命周期
云端 Worker WebAssembly 引擎、请求与平台服务 请求、存储等能力绑定;无窗口时明确其能力范围
Windows、macOS、Linux 系统调用、文件、网络及各自的窗口系统 WebAssembly 运行环境与统一的豫言能力接口
豫言裸机系统、QEMU 处理器与设备 引导、内存、驱动、调度、WebAssembly 执行及同一能力接口

平台已具备豫言程序所需的 WebAssembly 功能时,豫言操作系统复用现有引擎;缺少时,嵌入或实现执行器。macOS 与 Linux 可复用部分 POSIX 能力,Windows 使用其本机接口,裸机实现底层服务。这些实现路径不同,交给豫言程序的语义应当一致。

以中文使用宿主能力

宿主平台的 API 名称与调用方式各异。豫言操作系统在语言侧提供稳定的中文名称、类型、错误和权限模型,再把调用映射到实际宿主。它要统一可观察行为,而不只是翻译英文函数名。能力按需授予;没有窗口的 Worker 不会假装拥有桌面窗口,有窗口的宿主也不因此获得未授权的文件访问。

同一份 WebAssembly 程序可以在满足其 WebAssembly 功能基线、接口版本和所需能力 的宿主上运行。纯计算程序可以覆盖更多环境;图形程序要求窗口能力;服务程序要求请求处理能力。豫言操作系统应在装载时检查这些要求,并以一致的方式报告缺失。

图形界面属于豫言操作系统的能力之一。我们希望用豫言编写共用的布局、控件和绘制逻辑,由各宿主提供窗口、输入、字体与画面提交。浏览器可以作为豫言操作系统上的应用发展;标准网页仍遵循 HTML、CSS 与 JavaScript 的规范。

路线图

  1. 确定契约。 固定豫言程序所需的 WebAssembly 功能基线,定义版本化的基础能力、资源句柄、权限、错误和异步调用语义。
  2. 建立跨宿主验收。 用同一批真实豫言 WebAssembly 程序,核对浏览器、云端与桌面宿主的结果,并记录各自尚缺的能力。
  3. 接通图形程序。 定义窗口、输入、字体和绘图能力,完成共用的中文 GUI 库,先验证同一程序在已有桌面与浏览器环境中的行为。
  4. 发展裸机实现。 继续完善当前 ARM64、AMD64 的 QEMU 原型及 WebAssembly GC 执行能力,再接入窗口与设备;实体机适配按明确机型逐步验证。
  5. 形成可用生态。 在能力契约稳定后建设浏览器、开发工具、包与应用分发,并公开兼容性和性能结果。

当前裸机原型能在 QEMU 启动,具备命令壳、任务与文件操作,并能运行受支持的标准 WebAssembly 子集;它还不能运行完整的普通豫言 WebAssembly GC 程序,也未完成实体机安装。愿景的价值在于让这些已有的宿主工作逐步汇成同一个豫言操作系统,而不是将某一次原型验收写成目标已达成。

了解豫言语言 · 阅读语言源码 · 查看裸机原型说明