豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 247 行 · 16022 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「特殊字符」之书。
寻观「标准库」之「数据结构」之「字节串」之书。
寻观「标准库」之「数据结构」之「多态列工具」之书。
寻观「标准库」之「操作系统」之「异步子进程」之书。
寻观「编译器核心」之「网页汇编核心」之「回收编码」之书。
寻观「编译器核心」之「编译步骤」之「代码生成」之「回收值桥接」之书。
寻观「双宿主构建」之「文本工具」之书。
寻观「双宿主构建」之「接口适配」之书。
寻观「双宿主构建」之「宿主构建」之书。

「:文言:路一之发行包:程序.wasm、单一启动文件 启动.mjs、发行清单 清单.json。前半纯函数,后半涉磁盘与子进程。汉语:节点模式的发行包只有三个文件:应用的 程序.wasm、单个 JS 启动文件 启动.mjs(Node 宿主,内联共用模块并嵌入值桥与宿主支持清单)、发行清单 清单.json(应用要求的接口清单与程序摘要)。本篇前半是纯函数,后半做磁盘与子进程的事。:」

「节点宿主目录」者『豫言操作系统/宿主/节点/』也。

「节点支持表路径」者『豫言操作系统/宿主/节点/宿主支持清单.tsv』也。

「:文言:工具先取 .wasm 之版,无则取旧名。汉语:构建根里的外部工具先用同名加 .wasm 的版本(在 Node 上运行的 WasmGC 程序),没有时用不带后缀的旧名。:」
「工具路径」乃化「字符串」而「字符串」也。
「工具路径」者会「名」而
  若「文件系统」之「路径存在」于(『./』附「名」附『.wasm』)则
    『./』附「名」附『.wasm』
  否则
    『./』附「名」
也。

「:文言:去各行首之 export,使模可内联于一函之中。汉语:去掉每行开头的「export 」,让 ES 模块源码能放进一个函数体里内联。:」
「去导出前缀」乃化「字符串」而「字符串」也。
「去导出前缀」者会「文」而
  「间合」
    于「新行」
    于(「态射」授以「字符串」授以「字符串」
      于(「按字切分」于「新行」于「文」)
      于(会「行」而若「串开头是它吗」于『export 』于「行」则「去除串开头」于『export 』于「行」否则「行」))
也。

「:文言:一模内联为一立即之函,出其所列之名;诸模之私名各居其域,不相扰。汉语:把一个共用 ES 模块内联成立即执行的函数,只取出列出的导出名;各模块的私有名字留在各自的函数作用域里,互不冲突。:」
「内联模块文」乃化「字符串」而化(「列」于「字符串」)而「字符串」也。
「内联模块文」者会「源」而会「导出名们」而
  虑「名表」者「间合」于『, 』于「导出名们」而
  『const {』附「名表」附『} = (() => {』附「新行」附(「去导出前缀」于「源」)附「新行」附『return {』附「名表」附
    『};』附「新行」附
    『})();』
也。

「:文言:以新段代起标至止标之文,二标并去。汉语:把文字里从起始标记开头到结束标记结尾的一段(含两个标记)换成新段;缺少标记时抛出中文事故。:」
「替换标记区段」乃
  化「字符串」而
  化「字符串」而
  化「字符串」而
  化「字符串」而
  「字符串」
也。
「替换标记区段」者会「文」而会「起标」而会「止标」而会「新段」而
  鉴「串从左搜索单个」于「起标」于「文」而
    有「可无」则
      「发生事故」授以「字符串」于(『启动文件源码缺少标记:』附「起标」)
    或有(「可有」于「起位」)则(
      鉴「串从左搜索单个」于「止标」于「文」而
        有「可无」则
          「发生事故」授以「字符串」于(『启动文件源码缺少标记:』附「止标」)
        或有(「可有」于「止位」)则
          (「获取子字符串」于「零」于「起位」于「文」)附「新段」附(「获取子字符串」
            于(「加」于「止位」于(「串长度」于「止标」))
            于(「串长度」于「文」)
            于「文」)
    )
也。

「:文言:字节书为十进制之列,逗号隔之。汉语:把字节串写成逗号分隔的十进制数(JS 数组字面量的内容)。:」
「字节数组文」乃化「字节串」而「字符串」也。
「字节数组文」者会「字节」而
  「间合」
    于『,』
    于(「态射」授以「整数」授以「字符串」
      于(「整数范围」于「零」于(「字节串长度」于「字节」))
      于(会「序」而「整数表示」于(「字节串取字节」于「字节」于「序」)))
也。

「:文言:取一组清单之文,逗号隔之。汉语:取出宿主支持清单里“是否应用提供”等于给定值的一组清单原文,用逗号连接。:」
「支持组文」乃化(「列」于(「爻」合「字符串」))而化「爻」而「字符串」也。
「支持组文」者会「项们」而会「应用乎」而
  「间合」
    于『,』
    于(「态射」授以(「爻」合「字符串」)授以「字符串」
      于(「滤」授以(「爻」合「字符串」)于(会「项」而「爻相等」于(「项」中「零」)于「应用乎」)于「项们」)
      于(会「项」而「项」中「一」))
也。

「:文言:宿主支持之文:宿主所供与应用所供二列,皆原清单之文。汉语:把宿主支持清单写成 JSON:宿主提供与应用提供两组,元素是各接口清单文件的原文。参数是(是否应用提供,清单原文)列表。:」
「宿主支持文」乃化(「列」于(「爻」合「字符串」))而「字符串」也。
「宿主支持文」者会「项们」而
  『{"宿主提供":[』附(「支持组文」于「项们」于「阴」)附『],"应用提供":[』附(「支持组文」于「项们」于「阳」)附『]}』
也。

「:文言:发行清单:式、版、程序名、程序摘要、应用所需与所供。汉语:发行清单 清单.json 的全文:格式名与版本、程序文件名、程序 SHA-256 摘要、应用要求的接口清单组(装载包工具所出)、应用提供的接口清单。:」
「发行清单文」乃
  化「字符串」而
  化「字符串」而
  化(「列」于「字符串」)而
  「字符串」
也。
「发行清单文」者会「摘要」而会「要求文」而会「提供文们」而
  『{"格式":"豫言节点发行清单","格式版本":1,"程序":"程序.wasm","程序摘要":"』附「摘要」附『","接口要求":』附「要求文」附
    『,"应用提供":[』附(「间合」于『,』于「提供文们」)附『]}』附「新行」
也。

「:文言:组启动文件:内联共用之模,嵌值桥与宿主支持。汉语:组装启动文件:在 Node 宿主源码的两个标记区段里分别放入内联的共用模块和嵌入常量,并加上“生成文件勿改”的注释。:」
「组启动文件」乃化「字符串」而化「字符串」而化「字符串」而「字符串」也。
「组启动文件」者会「宿主源」而会「内联段」而会「内嵌段」而
  『// 文言:此文由 yy双宿主构建 节点模式所生,勿手改。汉语:本文件由 yy双宿主构建 --自动 节点 生成,是路一的单文件 Node 宿主;不要手改,改 豫言操作系统/宿主/节点/应用宿主.mjs 后重新构建。』
    附
    「新行」附
      (「替换标记区段」
        于(「替换标记区段」于「宿主源」于『// 〔内联起〕』于『// 〔内联止〕』于「内联段」)
        于『// 〔内嵌起〕』
        于『// 〔内嵌止〕』
        于「内嵌段」)
也。

「:文言:行命而取其出;非零则告码、令与误出。汉语:运行外部命令并返回标准输出;退出码非零时抛出带命令行、退出码与错误输出的中文事故。:」
「取命令输出」乃化「字符串」而化(「列」于「字符串」)而「字符串」也。
「取命令输出」者会「程序」而会「参数们」而
  虑「果」者
    「异步」之「等待」授以「子进程结果」
    于(「异步获取输出」于「程序」于「参数们」)而
  若「等于」于(「果」中「一」)于「零」则
    「果」中「二」
  否则
    「发生事故」授以「字符串」于(『命令执行失败(退出码 』附(「整数表示」于(「果」中「一」))附『):』附(「间合」
      于『 』
      于(「缀」于「程序」于「参数们」))附「新行」附(「果」中「三」))
也。

「:文言:程序之摘要,以 shasum 取之,同接口检查器。汉语:用 shasum -a 256 求 程序.wasm 的摘要(接口检查器生成清单时同样用它)。:」
「程序摘要」乃化「字符串」而「字符串」也。
「程序摘要」者会「文件」而
  「获取子字符串」于「零」于「六四」于(「取命令输出」于『shasum』于(「列」【『-a』,『256』,「文件」】))
也。

「:文言:生成启动文件:读宿主源与三共用模,析支持表,嵌同代值桥。汉语:生成 启动.mjs:读 Node 宿主源码与三个共用模块(云工值桥、句柄表、接口核对),按宿主支持清单读入各接口清单,并嵌入本工具生成的同代值桥。:」
「生成节点启动文件」乃化「有」而「字符串」也。
「生成节点启动文件」者会「无」而
  虑「宿主源」者
    「文件系统」之「读文件」于(「节点宿主目录」附『应用宿主.mjs』)而
    虑「内联段」者
      (「内联模块文」
        于(「文件系统」之「读文件」于『豫言操作系统/宿主/云工/值桥.mjs』)
        于(「列」【『创建值桥』,『文字』】))附「新行」
          附
          (「内联模块文」
            于(「文件系统」之「读文件」于『豫言操作系统/宿主/云工/句柄.mjs』)
            于(「列」【『创建句柄表』】))附「新行」附
              (「内联模块文」
                于(「文件系统」之「读文件」于『豫言操作系统/装载/接口核对.mjs』)
                于(「列」【『核对接口装载』】))
    而
    虑「支持表」者
      「解析节点支持表」于(「文件系统」之「读文件」于「节点支持表路径」)而
      虑「支持文」者
        「宿主支持文」
          于(「态射」授以「节点支持项」授以(「爻」合「字符串」)
          于「支持表」
          于(会「项」而(「应用提供支持吗」于「项」)与(「文件系统」之「读文件」于(「项」中「二」))))
      而
      虑「内嵌段」者
        『const 内嵌 = {值桥: [』附(「字节数组文」于(「回收模块编码带名」于「回收值桥接」))附『], 宿主支持: 』附
          「支持文」附
            『};』
      而
      「组启动文件」于「宿主源」于「内联段」于「内嵌段」
也。

「:文言:应用所供之接口:先核入口之实现,后生其清单。汉语:应用提供的接口(如启动):先用接口检查器按“应用”角色核对应用入口源码里的实现(应用目录须有 实现接口。豫),再生成该接口的清单原文。:」
「应用提供清单」乃化「字符串」而化「字符串」而化「字符串」而「字符串」也。
「应用提供清单」者会「应用入口」而会「输出目录」而会「接口名」而
  虑「接口包」者
    『豫言操作系统接口/』附「接口名」附『/豫言操作系统』附「接口名」附『。包。豫』而
    虑「检查器」者「工具路径」于『yy豫言操作系统接口检查』而
    虑「无」者
      「成功运行带码」于「检查器」于(「列」【「接口包」,「应用入口」,『应用』】)而
      虑「临时」者「输出目录」附『/.应用提供清单.json』而
      虑「无」者
        「成功运行带码」于「检查器」于(「列」【『--清单』,「接口包」,「临时」】)而
        虑「文」者「文件系统」之「读文件」于「临时」而
        虑「无」者
          「子进程」之「成功运行」于『rm』于(「列」【『-f』,「临时」】)
        而
        「文」
也。

「:文言:造节点发行包:编程序,集客需之簿,核应用所供,书清单与启动文件。汉语:构建节点发行包:编译应用为 程序.wasm;用装载包工具重验各接口绑定并取得应用要求清单组;核对应用提供的接口;写 清单.json(含程序摘要)与 启动.mjs。输出目录最后只有这三个文件。参数:应用入口、输出目录、编译器、包上下文、绑定目录列表、应用提供的接口名列表。:」
「构建节点发行包」乃
  化「字符串」而
  化「字符串」而
  化「字符串」而
  化「字符串」而
  化(「列」于「字符串」)而
  化(「列」于「字符串」)而
  「有」
也。
「构建节点发行包」者会「应用入口」而会「输出目录」而会「编译器」而会「包上下文」而会「绑定目录们」而会「应用提供们」而
  虑「无」者
    「子进程」之「成功运行」于『mkdir』于(「列」【『-p』,「输出目录」】)而
    虑「程序」者「输出目录」附『/程序.wasm』而
    「:文言:构建恒并行二十四路。汉语:与云工、浏览器模式相同,编译器以并行模式、二十四路调度运行。:」
虑「无」者
  「成功运行带码」
    于「编译器」
    于(「列」【
      「应用入口」,
      『--package-context』,
      「包上下文」,
      『--do-not-load-cache』,
      『--parallel』,
      『-j』,
      『24』,
      『-o』,
      「程序」
    】)而
    虑「无」者
      「成功运行带码」于(「工具路径」于『yy豫言操作系统装载包』)
      于(「缀」于「输出目录」于「绑定目录们」)
    而
    虑「要求文」者
      「文件系统」之「读文件」于(「输出目录」附『/接口要求组.json』)而
      虑「无」者
        「子进程」之「成功运行」
          于『rm』
          于(「列」【『-f』,(「输出目录」附『/接口要求组.json』),(「输出目录」附『/宿主提供组.json』)】)
      而
      虑「提供文们」者
        「态射」授以「字符串」授以「字符串」
        于「应用提供们」
        于(会「名」而「应用提供清单」于「应用入口」于「输出目录」于「名」)
      而
      虑「无」者
        「文件系统」之「写文件」
          于(「输出目录」附『/清单.json』)
          于(「发行清单文」于(「程序摘要」于「程序」)于「要求文」于「提供文们」)
      而
      虑「无」者
        「文件系统」之「写文件」于(「输出目录」附『/启动.mjs』)
        于(「生成节点启动文件」于「元」)
      而
      「打印行」于(『豫言节点发行包已生成:』附「输出目录」附『(程序.wasm、启动.mjs、清单.json)』)
也。