豫言操作系统:让中文程序通行各处
豫言是一门中文编程语言;豫言操作系统是承载豫言程序的生态。 我们希望程序员用中文表达计算,也用统一的中文接口使用文件、网络、窗口和其他环境能力。程序先编成豫汇,存为树码;原生程序由此生成豫行文件,在豫言操作系统上运行;网页程序导出网页汇编,在浏览器与云端运行。
这是一份愿景与路线图,各平台今天的支持范围以豫言操作系统总体架构为准。
同一种程序模型,多种宿主
豫言操作系统定义豫言程序如何启动、取得授权的系统能力、交换数据和释放资源;不同平台各自实现这套契约。裸机版本直接面对硬件,桌面版本借用现有操作系统,浏览器和边缘计算版本借用所在环境的接口。
| 宿主 | 程序形式 | 豫言操作系统提供的部分 |
|---|---|---|
| 豫言操作系统(ARM64、AMD64) | 豫行 | 引导、内存、驱动、调度、文件系统、网络、壳与桌面 |
| macOS、Linux、Windows | 编译器直出的本机程序;以后经启动器运行同一个豫行 | 执行器、平台层与统一的中文接口 |
| 浏览器 | 网页汇编 | 中文能力绑定、权限映射与一致的程序生命周期 |
| 云端 Worker | 网页汇编 | 请求、存储等能力绑定,并明确无窗口环境的能力范围 |
这些实现路径各不相同,交给豫言程序的语义一致。
以中文使用宿主能力
宿主平台的 API 名称与调用方式各异。豫言操作系统在语言侧提供稳定的中文名称、类型、错误和权限模型,再把调用映射到实际宿主;它统一的是可观察的行为。能力按需授予:每个宿主只报告自己真有的能力,有窗口的宿主访问文件同样要经授权。
同一份程序可以在满足其接口版本和所需能力的宿主上运行。纯计算程序可以覆盖更多环境;图形程序要求窗口能力;服务程序要求请求处理能力。豫言操作系统在装载时检查这些要求,并以一致的方式报告缺失。
图形界面属于豫言操作系统的能力之一。我们用豫言编写共用的布局、控件和绘制逻辑,由各宿主提供窗口、输入、字体与画面提交。浏览器可以作为豫言操作系统上的应用发展;标准网页照旧遵循 HTML、CSS 与 JavaScript 的规范。
路线图
- 一种二进制,各处运行。 同一个豫行经启动器在 macOS、Linux、Windows 上运行;启动器可以自带豫行,合成单个可执行文件(提案 00021)。
- 固定契约。 版本化的接口、资源句柄、权限、错误与异步语义,以及由豫行格式与内核服务组成的豫言内核 ABI。
- 跨宿主验收。 用同一批豫言程序核对豫言操作系统、桌面系统、浏览器与云端的结果,记录各自尚缺的能力。
- 图形程序。 窗口、输入、字体和绘图能力,共用的中文界面库与平铺桌面。
- 实机。 按明确的机型逐步验证驱动与安装。
- 生态。 开发工具、包与应用分发,公开兼容性与性能结果。
今天的豫言操作系统能在 QEMU、VMware Fusion 与 UTM 里启动:内核与驱动用豫言写成,数据盘是标准 ext4,开机就是豫言壳,带平铺桌面,系统里能运行豫言工具链、构建程序并造出启动光盘。愿景的价值在于让这些已有的工作逐步汇成同一个豫言操作系统。