跳到正文豫言

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

豫言是一门中文编程语言;豫言操作系统是承载豫言程序的生态。 我们希望程序员用中文表达计算,也用统一的中文接口使用文件、网络、窗口和其他环境能力。程序先编成豫汇,存为树码;原生程序由此生成豫行文件,在豫言操作系统上运行;网页程序导出网页汇编,在浏览器与云端运行。

这是一份愿景与路线图,各平台今天的支持范围以豫言操作系统总体架构为准。

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

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

豫言程序经自托管编译器编成豫汇,存为汇编树码。原生一侧由裸机后端生成机器码,写成豫行文件在豫言操作系统上运行,或写成 Mach-O、ELF、PE 在 macOS、Linux、Windows 上运行;网页一侧导出网页汇编,在浏览器与云工上运行。
程序编成豫汇、存为汇编树码;原生一侧写成豫行或宿主可执行文件,网页一侧导出网页汇编。各部分的现状见总体架构。
宿主 程序形式 豫言操作系统提供的部分
豫言操作系统(ARM64、AMD64) 豫行 引导、内存、驱动、调度、文件系统、网络、壳与桌面
macOS、Linux、Windows 编译器直出的本机程序;以后经启动器运行同一个豫行 执行器、平台层与统一的中文接口
浏览器 网页汇编 中文能力绑定、权限映射与一致的程序生命周期
云端 Worker 网页汇编 请求、存储等能力绑定,并明确无窗口环境的能力范围

这些实现路径各不相同,交给豫言程序的语义一致。

以中文使用宿主能力

宿主平台的 API 名称与调用方式各异。豫言操作系统在语言侧提供稳定的中文名称、类型、错误和权限模型,再把调用映射到实际宿主;它统一的是可观察的行为。能力按需授予:每个宿主只报告自己真有的能力,有窗口的宿主访问文件同样要经授权。

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

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

路线图

  1. 一种二进制,各处运行。 同一个豫行经启动器在 macOS、Linux、Windows 上运行;启动器可以自带豫行,合成单个可执行文件(提案 00021)。
  2. 固定契约。 版本化的接口、资源句柄、权限、错误与异步语义,以及由豫行格式与内核服务组成的豫言内核 ABI。
  3. 跨宿主验收。 用同一批豫言程序核对豫言操作系统、桌面系统、浏览器与云端的结果,记录各自尚缺的能力。
  4. 图形程序。 窗口、输入、字体和绘图能力,共用的中文界面库与平铺桌面。
  5. 实机。 按明确的机型逐步验证驱动与安装。
  6. 生态。 开发工具、包与应用分发,公开兼容性与性能结果。

今天的豫言操作系统能在 QEMU、VMware Fusion 与 UTM 里启动:内核与驱动用豫言写成,数据盘是标准 ext4,开机就是豫言壳,带平铺桌面,系统里能运行豫言工具链、构建程序并造出启动光盘。愿景的价值在于让这些已有的工作逐步汇成同一个豫言操作系统。

了解豫言语言 · 林纳命令对照 · 阅读总体架构 · 阅读语言源码 · 查看豫言裸机说明