豫言 / 技术规范

此篇据 4cdeca1 之实现。所据及适用之界,见基线之篇。

子语言设计

豫言以一法书诸子语言:高级之豫言、脚本、试、宿主接口与应用接口、内建之声、着色语言、底层豫言、包描述,及书为常库之嵌入子语言(如界面布局语言)。此篇述诸子语言共守之设计之则,及其于一程序中相配之道。诸缀之条见文件后缀,着色语言之细见着色语言,底层豫言之细见 应用/豫言编译器/文档/底层模式.文言.md。

诸条以“则”编号。

则一:一法之语,一前端

诸子语言皆以豫言之常法书之,同一析文之器读之,同一解名、检类之法验之(见词法与语法、类型与模块)。子语言以既有之语法表其构:定义 「名」者…也、签 「名」乃…也、列 「头」【项,项】、典 「典」【「键」者值也,…】。

故排版、高亮与语言之服(补全、跳至定义),诸子语言皆得用之;人与 AI 既习豫言,则诸子语言皆能读能书。

则二:缀定其类

文属何子语言,以 。豫 前之类段定之,如 入口。豫、基准。脚本。豫、逐元。着色器。豫、入口。底层。豫、标准库。包。豫。类段定四事:文中可书者何,无体之声谁供之,编为何代,导时得何模。

类者,文之性也:一包之中可兼置高级之文、底层之文与着色之源,包之层级与类无涉。程序依入口之文之类择编译之管:入口为底层之文,则全程行底层之管;余程行高级之管,编为 WasmGC。

则三:子语言者,豫言之子集也

诸子语言全用豫言之语法与类型检查,各自之限在后端:后端受本子语言所能表者,余则编译之时报错,并明其故。

  • 底层豫言书整数、爻、小数、单精度、长整数、向量、一阶之函、递归与尾调、可变之格,径读写线性之内存;闭包、构造器、字串之值与异常,编译之时报错。故底层之程恒无垃圾回收,可入内核与驱动。
  • 着色语言书着色内建所供之标量、向量、矩阵与算;着色之的所无之类组,译时报错。
  • 宿主接口、应用接口与内建之声,唯书类型与 乃 之签。
  • 包描述唯书字段之静数,豫构唯析之;以包描述为模而导之,则报错。
  • 数据之文唯书导入、签名与 「名」者 值 也。;值为字面、「列」与构造之书,构造之首与独书之名为值之构造器(立)。函、算与余呼,检类之时报错,并明其故。

则四:一类型之系

检类成于共用之前端,而后付诸子语言之后端,故类型之则于诸子语言皆同:

  • 参数之标签,检类之后擦之;高级之文、底层之文与接口之签皆可用(见标签函数类型)。
  • 依值类型依同一之则检之,隐式值参随类型而擦(见依值类型);着色语言以整数索引书标量之宽,如「定长小数」于「三二」即 f32。
  • 接口之签以豫言之类书之,Wasm 层之签乃其下投之影:宿主接口投为 WasmGC 带型之导入,底层接口投为整数、长整数、单精度、小数与向量之数值之签。

则五:导有其向

编译器依导者之类寻模(见文件后缀缀二),子语言由是分层:

导者 可导
高级之文 高级之模、宿主接口、应用接口、内建之声、着色之源、数据之文
着色之文 着色之源、着色内建之声
底层之文 底层之模、底层接口、底层内建之声

试唯试与脚本可导之;导脚本或包描述则报错;数据之文唯供导,以为程之入口则报错。分层而得三果:垃圾回收唯见于高级之程,底层之代可入内核与驱动;着色之源唯依着色内建,全译为图形处理器之代;高级之代用底层之代与着色之源者,皆经则六所言之缝。

则六:层与层以无体之声相接

子语言相接之缝,无体之声也:声者唯书类型与 乃 之签,实之者在彼,缀明其供者。

缀 实之者 编为
。接口。豫 宿主,或构建时所绑之适配 带型之 Wasm 导入,导入之模名为所在包之短名
。应用接口。豫 应用或库 导出
。内建。豫 编译器 语言之原语,其签依原语表校之
。底层接口。豫 宿主、平台后端或操作系统 Wasm 导入,导入之模名为接口之文名
。底层内建。豫 编译器 就地所生之一 Wasm 之令
。着色器。接口。豫 着色之的 WGSL、MSL 之算符与内建之函,PTX 之令

高级之程与底层之程,相接于宿主接口。高级之程召 。接口。豫 所声之函;于原生与裸机,构建时所绑之适配与执行器实之;执行器以底层豫言书之,复经豫言操作系统底层接口(豫寓底榫卯/)或内核之服入于操作系统。以印一行为例:应用召标准库之印,落于宿主接口带型之导入;执行器中之宿主原语转之为底层接口之「写」;平台后端发系统之召 write。

着色之源与高级之代,相接于构建之时。高级之文导着色之源,得编译器构时所生之模(虚径 名。着色生成。豫),其中为 WGSL、MSL、PTX 之文与诸入口名之字串常量;高级之代以此诸字串付图形处理器,编之而派之。

则七:执行之界唯一

凡生代之子语言,皆编至豫汇:高级之文编为豫汇(与 WasmGC 一一相应),底层之文编为底层豫汇(与无垃圾回收之 Wasm 一一相应),二层共一豫汇之模型与二进制之编码器。原生、裸机、诺驿、浏览器、云工诸后端并列,皆自豫汇出:编译器可出豫汇为标准 Wasm,原生之机器码由裸机后端(豫言操作系统/裸机/库/冶铸)自底层豫汇生之。豫汇之模可存为汇编树码(名。树码),树码亦编译器诸阶中间所出之编码也(提案〇〇〇〇一)。

着色语言之的,图形处理器也:着色之源构时译为 WGSL、MSL 与 PTX 之文,以字串常量入高级之程,随高级之程同编为豫汇。

则八:配置、命令与数据亦以豫言书之

述配置、命令、界面与数据,径用豫言:

  • 包描述 。包。豫,以豫言书之静数也;名称、版本、类型、依赖皆豫言之值。
  • 数据之文 。数据。豫(提案〇〇〇二八),以豫言书之静数也:其顶惟置 「名」者 值 也。,记以构造之书 「头」【「字段」者 值 也,…】。高级之文导数据之文,得有类之顶层数据,字段依记之签检之;运行时所下所读之数据之文,库「数据文件」惟析而不编以读书之。工具与 CI 相授之清单、软件目录与工具链钉皆书为数据之文。
  • 壳之命令之语即豫言(提案〇〇〇〇三):壳中所入每句即豫言一句;命令者,召库函之句也,参以「于」引之而带标签,如 「设分辨率」于「宽」曰「1920」于「高」曰「1080」;同句书于 。脚本。豫 即为脚本。脚本之行与编而后行,共前端与生代之法,所受之程同,求值之迹与所出亦同。
  • 界面布局语言,常豫言之库也(库/门面):元素之函当 HTML,类为「样式」之值当 CSS;界面之树可译为 HTML 与 CSS,亦可付自绘后端排而绘之。
  • 试书为豫言之源(。测试。豫、黄金之例 名其编号。豫),试之数据书为豫言之值。

此诸子语言,与常代同受检类、排版与语言之服。

例:张量内核之相配

「算阵」包(库/算阵)一包之中用四子语言:

  1. 包描述 张量内核。包。豫 书包名、版本与依赖(「豫章」「点染」)。
  2. 图形处理器之核书为着色之源,如 逐元。着色器。豫、矩阵乘。着色器。豫,导「点染」之着色内建之声 着色内建。着色器。接口。豫。
  3. 高级之文 内核表。豫 以 寻「算阵」之「逐元」之书。 导着色之源,取 (「逐元」之「着色源」)(WGSL)与 (「逐元」之「金属源」)(MSL)以造核之述,后端据之以一法召任一核。
  4. 试书于 测试/ 下之 。测试。豫,全树测试得而行之。

中央处理器上同类之核书为底层豫言,置于「中枢算阵」包(库/底层库/中枢算阵)。

设计组件与源境

设计组件以普通豫言函书之。编译器遇用户单态函归场景节点或文档块,则以实参之值、函之定义及展开之果记组件实例。常调与构造之调用同裹函体。整数、小数、字符串、爻、小数信号及字符串信号可藏而复之,还原存普通函之定义与调用。设计源之文档作品并藏全规范源码之境,还原则复文档之构造而再分页。泛型、闭包之参及异模同名之组件留后版。

后续之版

下二事已有提案,依此篇之则设之:

  • 文本子语言(提案〇〇〇一〇):列之头可为用户之函(自定之列宏),结构之文以既有列之写法书之,配以新库「文本」。
  • 证明层(提案〇〇〇一六):每实现之文可配一 。证明。豫 证明之文,书精化类型与一般依值类型;精化擦除擦证明层为无证之程,所擦之果须与实现层合。