直至正文豫言技术之文

豫言 / 技术规范

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

豫言独立实现技术规范

此书授未与豫言之作者,使自造编译器,所出之 WasmGC 模块能与既有豫言模块相施。所定为仓库 4cdeca11600fed16338793a494b6eecaae94485a,下称“本基线”,非拟未来之制。诸篇同号相应,依次读之:

  1. 词法与语法:扫描、成句、结合及化简。
  2. 类型与模块:名、验类、隐参、构造器与文件身份。
  3. 执行与编译:求值、异常、擦除、闭包、递归与生成。
  4. 网页汇编接口:WasmGC 之值、调用、模块、异常与宿主引用桥之约。
  5. 基线与实现依据:基线、源码所据、ABI 文例与审阅之则。
  6. 规约关系表:全表。
  7. 着色语言:以豫言常法书图形处理器之着色程序,检类而后译为 WGSL;着色之源之文缀、寻模、着色内建、译规与构建之合。
  8. 文件后缀:源文、文书、试料与构建所出之诸缀,各附仓中之例;导时依导者之类寻文之序。
  9. 子语言设计:诸子语言共守之则,及其于一程序中相配之道。
  10. 雅言之体:豫言源文之书法(提案〇〇〇二七换字):诸构之书、析之约、印之则与核。

总〇:何谓兼容

今语言所增之则,见标签函类。其篇定参标之语、型则、擦除及所行之界,并记今编译器已去 循□以〇。

整数定义域之类型构造器参数及闭合整数索引比较,见整数类型索引。依值之箭、隐值参数、含变量之整数索引相等、索引之细与依值模式匹配,见依值类型。

爻定义域之类型构造器参数、字面运算规约及闭合索引比较,见爻类型索引;其篇亦记运算身份、预算及验收所至。

字符串定义域之类型构造器参数、拼接规范形及闭合索引比较,见字符串类型索引;其篇亦记来源之检及接入所至。

列表定义域合法性之验、闭合元素规范值及附加之较,见列表类型索引;其篇亦记隐式元素类、声明身份与投影之规。

同目标、同模块身份、同定义序,新器之值与模块可为旧器所用,旧者亦可为新器所用;调用、返回、异常及回收而后皆无失,乃谓 ABI 兼容。仅同所印、仅能自举,皆未足证之。

层 所必同 所可异
源语言 接受与拒绝之界、运行轨迹、结果、可观失败类别 内树名、诊断全栈、编译之速
模块接口 值之表示、调用、导入导出、身份、回收之约 临名、优化术
逐字节复现 同工具链、路径、编号、选项、优化、调试之全部产物 非 ABI 同而必得

此集惟交技术文档,使陌生作者不待原作者口授,即明语言算法与模块之约。内树与优化可自择,不得暗改可观之怪异而仍称尽同。

总一:用语

“必须”为兼容之需,“可”为术之自由,“禁止”为不可作互通输入。“兼容缺陷”记实而限其域,非推崇其设计。未有稳定之义,不以猜测补之。整数溢出、越界、不安全转换、失效续延、签名错配,皆不入稳定行为集;欲使此等于万机尽同,无可行之约。

总二:实现之界

独立编译器须能读 UTF-8,析模块及有序定义,成语法、验类、生运行值、设入口、成带型宿主导入、闭包、递归、异常、提前返回,而出 WasmGC 模块。

标准库以豫言写,可由新器编译;系统原语经宿主引用桥(网页汇编接口网五)由宿主供之,不必重造文件与网络封装,亦不借旧编译器生成代码。

单得旧 Wasm 模块,不足知类型别名、隐参与构造器身份;尚须依赖源码或等价接口记录。运行标签不可代静态类型。

总三:最小记录

类型录内建、刚性变量、名义构造器、应用、连续箭头、隐式全称及元组。表达式录常量、局部与文件引用、显隐函数、调用脊、绑定、递归、条件、顺序、元组、投影、模式及标注。

文件接口项录原文件身份、名、序、类别、已检类型、透明体或名义身份。无类型值录单位、整数、小数、字节串、闭包、元组、构造器与引用;类型及隐参不占运行槽。控制录栈上未毕之尝试(Wasm 原生异常所承之域)、动态退出之标识与顶层未承之术。

局部可用唯一 ID 或一基 de Bruijn 索引;替换必避捕获,不可无域而换文。公共之名依模块与定义序,私有 ID 不可泄入其约。

总四:守基线

改源路、定义列、构造次序或目标,皆可能改 ABI。交付须附源提交、编译器 SHA-256、目标及所需引擎特性、选项、依赖解析及结果。

维护则核源码与双语条件。已明者详立其则,矛盾或无稳定义者明限其域,不无据而许之。