豫言操作系统总体架构
二〇二六年十月十三日修订。本篇书豫言操作系统今行之架构与既定之向。接口二层之逐条规范,以仓库根目录之 豫寓榫卯/ 与 豫寓底榫卯/ 为准;诸式之细,见篇末所列之提案与规范。白话本见汉语版。
一、要
- 豫言贯其始终。 编译器、执行器、内核、驱动、构建与验证之器,皆以豫言书之;自源码至机器码与可执行之文,皆豫言自为之。
- 豫汇为执行之通界。 编译器编程序为豫汇(豫言汇编):有回收之豫汇,与无回收之底层豫汇。诸后端皆自豫汇出。
- 树码为豫言之码统一之二进制表。 豫汇之模存为汇编树码(
。树码);编译器诸阶之中间所产与设计之作,共其外框。原生后端径读汇编树码而生机器码。 - 豫行为原生程序之式。 豫言操作系统上之程序、工具与开机程序,皆豫行之文(
。豫行),指令集有 ARM64 与 AMD64 二种。 - 网页汇编为向网页之所出。 浏览器与云工(Cloudflare Worker)二网页后端,行自豫汇所导之网页汇编(WasmGC);网页汇编与汇编树码一一相应。
- 接口二层,能即授。 应用用有回收之豫言操作系统接口;执行器内以无回收之豫言操作系统底层接口为束腰。应用所依之能皆必具,运行时资源之授另核之。
二、总览
| 层 | 原生(豫言操作系统与桌面之系统) | 网页(浏览器、云工) |
|---|---|---|
| 源程序 | 豫言程序(。豫) |
同左 |
| 编译器前端 | 析句、名之解、类型之核、类型之擦、跨模之优、闭包之转 | 同左 |
| 执行之通界 | 豫汇,存为汇编树码(。树码) |
豫汇 |
| 后端 | 裸机后端:预编二、寄存器降级(ARM64、AMD64)、书出器 | 网页汇编编码器 |
| 程序之形 | 豫言操作系统上为豫行(。豫行);macOS、Linux、轩窗上为编译器径出之 Mach-O、ELF、PE |
网页汇编之模(.wasm) |
| 运行时 | 执行器(客体二号):回收、原语、装载单元、平台之层 | 随模而生之回收运行时,加宿主之胶 |
| 入于系统 | 豫言内核之服务;libSystem;Linux 系统调用;kernel32 | 浏览器之接口;Worker 之接口 |
三、树码
树码(提案〇〇〇〇一)为豫言之码统一之二进制表。文以“树码”二字之 UTF-8 始,文首书其版与种,正文依其种之结构表编之。今行之种:
- 汇编树码:一豫汇之模。编译器之出径以
。树码终,则书之。执行器以执行器。树码随工具链而发,原生可执行之文与豫行之文,皆径生于汇编树码。 - 编译器之中间所产:诸阶之果存于构建之缓,以供增量之构与链接。
- 设计二进制(
。设计):设计之作袭树码之外框,播放器装时验之。
四、豫行
- 文:六十四字节之文首(魔数“豫行”、指令集、入口、栈顶)、段表与附录;段之内容依页而齐,装时径映之。
- 生:编译器自豫汇径书二指令集之豫行;常程、工具、开机程序与底层程序,共一段表之生器。
- 装:内核依段装开机程序;子程序者,父任务之执行器读其豫行,乃付内核“依段建任务”。
- 装载单元:脚本运行之式(提案〇〇〇〇三)袭豫行之外框,每模编为一单元,含模之元数、预编之机器码、重定位与符号。壳中每句豫言编为一组单元,装之即行。
- 系统中之工具链:
/工具之下豫构、编译器、豫言系统、格式化皆豫行,执行器。树码随盘而供。
五、编译与执行
源码 → 前端 → 豫汇(汇编树码)
├─ 预编二:有回收之函转为底层之函,并入执行器
│ → 寄存器降级(ARM64、AMD64)
│ → 书出器:豫行、Mach-O、ELF、PE、装载单元
└─ 网页汇编编码器 → .wasm(浏览器、云工)
- 执行器(客体二号)以底层豫言书之:回收、行豫言操作系统接口之原语、装载单元、诸平台之平台层。程序之码皆预编为机器码而行。
- 机器码以豫言中字段化之构造函径编之,逐项核寄存器之号、立即数之域与位域。macOS 上之可执行之文带特设之签。
六、接口二层
- 豫言操作系统接口(
豫寓榫卯/):应用之面,有回收,纯为规范:。接口。豫之函宿主供之,。应用接口。豫之函应用供之。宿主之函编为带型之导入,装时核接口之身、版与签名。 - 豫言操作系统底层接口(
豫寓底榫卯/):执行器内之束腰,无回收,值唯整数,每函返状码;豫言操作系统、macOS、Linux、轩窗各有一后端。 - 适配(
豫言操作系统/适配/):诸宿主上接口之实,以豫言书于宿主库之上,并附宿主支持之单。
七、豫言操作系统
- 内核与驱动:豫言内核以底层豫言书之,ARM64 与 AMD64 共之。驱动亦二构共一,及 NVMe、AHCI 与光驱、USB 之存储与键鼠、virtio 与英特尔千兆之网卡、声卡。
- 任务与内存:多核、多任务,每任务各有其址之空间;物理内存以二兆字节之块分之还之。
- 存储与网络:数据之盘为标准 ext4;网络之栈有 IPv4、TCP、UDP 与 DHCP。
- 壳:开机程序即豫构之交互之式,壳之语即豫言;
。脚本。豫与交互之入,同一运行器治之。全系统唯一壳:改状之动皆经壳命令而发,图形程序依状而显。 - 桌面:平铺桌面,每窗各为一任务。
- 系统内工具链:系统中能构程序、行脚本而造启动光盘,所造之盘与宿主所造者逐字节同。
- 引导与安装:自有 UEFI 之引导;启动光盘能装系统于内盘。
- 运行之境:QEMU(ARM64 可用 macOS 硬件之加速)、VMware Fusion 与 UTM。
八、诸宿主
| 宿主 | 程序之形 | 入于系统 |
|---|---|---|
| 豫言操作系统(ARM64、AMD64) | 豫行 | 豫言内核之服务 |
| macOS(arm64) | 编译器径出之 Mach-O,带特设之签 | libSystem |
| Linux(x86-64、arm64) | 编译器径出之静态 ELF | 系统调用 |
| 轩窗(x64、arm64) | 编译器径出之 PE | kernel32 |
| 浏览器 | 网页汇编 | 浏览器之接口与宿主之胶 |
| 云工(Cloudflare Worker) | 网页汇编 | Worker 之接口与宿主之胶 |
诸宿主于同一程序予同一接口之义,以一致之验保之。
九、工具链与自举
- 豫构为唯一构建之器:包之发现、检、构、类型之核、测与仓库之目;其自带编译器。
- 原生自举:一级原生豫构编出二级、三级,二者逐字节同则为定点,乃装为日用之工具链。
- 发行:每平台一原生工具链之包;豫言操作系统之启动光盘带豫行之工具链。
十、后版之事
- 同一豫行通于诸宿主(提案〇〇〇二一,议中):豫行之内核服务经服务门而呼;macOS、Linux、轩窗上之启动器于进程之内译其服务为宿主之系统调用;启动器可自带豫行,合为单一可执行之文。工具链随之以“豫行加启动器”发行与自举。
- 树码之新种:着色器树码;云端所存之签名与链接单元。
- 实机:依明定之机型,渐验驱动与安装。
延读
- 提案〇〇〇〇一 统一二进制表示:树码。
- 提案〇〇〇〇五 自有可执行格式与豫行格式:豫行。
- 提案〇〇〇〇三 脚本运行模式:装载单元与壳。
- 提案〇〇〇二一 豫行跨平台运行:服务门、启动器与单文之发。
- 豫言操作系统接口总纲与豫言操作系统底层接口总纲:接口二层。
- 豫言裸机说明:内核、执行器与验证。