豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 303 行 · 16625 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「字节串」之书。
寻观「标准库」之「数据结构」之「字符串术」之书。
寻观「编译器核心」之「网页汇编核心」之「状态模块」之书。
寻观「编译器核心」之「网页汇编核心」之「状态二进制」之书。
寻观「裸机后端」之「Linux可执行」之书。
寻观「裸机后端」之「苹果可执行」之书。
寻观「裸机后端」之「系统构造」之书。
寻观「裸机后端」之「预编转译」之书。

「:文言:原生一致性之验(路二,Linux):以真编译器造执行器与诸探针,嵌之为 Linux 之可执行文件,运行而与参照之出逐字相校;参照即裸机之验所用者,故过则 Linux 与裸机逐字一致。汉语:路二一致性验证(Linux):用真编译器构建执行器(客体二号)与各探针(普通探针下的 .豫 以及盘/文件-一、文件-二),把探针嵌进执行器生成 Linux 可执行文件(ARM64、AMD64),运行后与同名 .期望 逐字比较。.期望 就是普通豫言验证(QEMU 裸机)所用的参照输出,所以通过即表示 Linux 与裸机输出逐字一致。文件探针在同一个空工作目录里依次运行(文件-二 读 文件-一 写下的文件)。运行方式:在 Linux 上直接运行本机架构的可执行文件;在其他系统上加 --经 docker,用本地构建的 FROM scratch 镜像在 Docker 里运行两种架构(不拉取任何镜像;Apple 芯片上的 amd64 由 Rosetta 执行,镜像里放一个空 /tmp)。用法:yy原生一致性 [--系统 Linux|苹果] [--架构 臂六十四|兼容六十四|两者] [--经 直接|docker] [--豫构 ./yy豫构.wasm] [--编译器 ./yy4_bs.wasm]。--系统 苹果 时生成 macOS arm64 可执行文件并在本机直接运行(x86-64 macOS 尚未实现)。:」

「命令行值」乃化「字符串」而化「字符串」而「字符串」也。
「命令行值」者会「键」而
  会「缺省」而
    递归虑「找」其化(「列」于「字符串」)而「字符串」者会「们」而
      鉴「们」而
        有「罄」则「缺省」
        或有「缀」于「首」于「尾」则
          若「串相等」于「首」于「键」则(鉴「尾」而
          有「缀」于「值」于「后」则「值」
          或有「罄」则「缺省」)
          否则
            「找」于「尾」
    而
    「找」于(「命令行参数」之「获取参数」于「元」)
也。

「构令」乃「字符串」也。
「构令」者「命令行值」于『--豫构』于『./yy豫构.wasm』也。

「编令」乃「字符串」也。
「编令」者「命令行值」于『--编译器』于『./yy4_bs.wasm』也。

「经令」乃「字符串」也。
「经令」者「命令行值」于『--经』于『直接』也。

「系统令」乃「字符串」也。
「系统令」者「命令行值」于『--系统』于『Linux』也。

「:文言:预编之标:有之则客体之函数预编为机器码。汉语:--预编:探针的函数预编为机器码(路二乙档),执行器不再解释它们。:」
「是预编」乃「爻」也。
「是预编」者
  「存在吗」授以「字符串」
    于(会「项」而「串相等」于「项」于『--预编』)
    于(「命令行参数」之「获取参数」于「元」)
也。

「是苹果」乃「爻」也。
「是苹果」者「串相等」于「系统令」于『苹果』也。

「架构令」乃「字符串」也。
「架构令」者「命令行值」于『--架构』于『两者』也。

「:文言:只取名含所授字者;空则悉取,无合者报错。汉语:--只验 按探针名包含关系筛选;不提供时运行全部探针,无匹配时报错。:」
「只名」乃「字符串」也。
「只名」者「命令行值」于『--只验』于『』也。

「临时原文」乃「字符串」也。
「临时原文」者「运行工具」于『mktemp』于(「列」【『-d』,『/tmp/yy原生一致性.XXXXXX』】)也。

「目录」乃「字符串」也。
「目录」者「去除串结尾」于『「:换行:」』于「临时原文」也。

「路径」乃化「字符串」而「字符串」也。
「路径」者会「名」而
  「目录」附『/』附「名」
也。

「:文言:探针:普通探针之诸 .豫,继以盘中文件之二(须依序行于同一目录),再以原生探针之诸 .豫(唯原生与 Node 可行者,如自起其身之子进程)。汉语:探针表:普通探针目录下的全部 .豫(按名排序),再加 盘/文件-一、盘/文件-二(后者依赖前者写下的文件),最后是 原生探针 目录下的全部 .豫(只在 Node 与原生系统上能跑的探针,如把自己当子进程再启动;它们的 .期望 取自 Node 宿主的标准输出)。每项为(名,源路径,期望路径)。:」
「探针目录」乃「字符串」也。
「探针目录」者『豫言操作系统/裸机/普通探针』也。

「原生探针目录」乃「字符串」也。
「原生探针目录」者『豫言操作系统/裸机/原生探针』也。

「:文言:一目录之诸 .豫 为探针,名冠以前缀。汉语:把目录下的全部 .豫 做成探针项,名字加前缀。:」
「目录探针们」乃
  化「字符串」而
  化「字符串」而
  (「列」于(「字符串」合「字符串」合「字符串」))
也。
「目录探针们」者会「目」而会「前缀」而
  「态射」授以「字符串」授以(「字符串」合「字符串」合「字符串」)
  于(「态射」授以「字符串」授以「字符串」
    于(「滤」授以「字符串」于(会「名」而「串结尾是它吗」于『。豫』于「名」)于(「文件系统」之「读文件夹」于「目」))
    于(会「名」而「去除串结尾」于『。豫』于「名」))
    于(会「名」而(「前缀」附「名」)与(「目」附『/』附「名」附『。豫』)与(「目」附『/』附「名」附『.期望』))
也。

「探针们」乃(「列」于(「字符串」合「字符串」合「字符串」))也。
「探针们」者
  虑「普通」者
    「态射」授以「字符串」授以(「字符串」合「字符串」合「字符串」)
    于(「态射」授以「字符串」授以「字符串」
      于(「滤」授以「字符串」
        于(会「名」而「串结尾是它吗」于『。豫』于「名」)
        于(「文件系统」之「读文件夹」于「探针目录」))
        于(会「名」而「去除串结尾」于『。豫』于「名」))
        于(会「名」而「名」与(「探针目录」附『/』附「名」附『。豫』)与(「探针目录」附『/』附「名」附『.期望』))
  而
  「附加」授以(「字符串」合「字符串」合「字符串」)
  于(「附加」授以(「字符串」合「字符串」合「字符串」)
  于「普通」
  于(「列」【
    『盘-文件-一』与(「探针目录」附『/盘/文件-一。豫』)与(「探针目录」附『/盘/文件-一.期望』),
    『盘-文件-二』与(「探针目录」附『/盘/文件-二。豫』)与(「探针目录」附『/盘/文件-二.期望』)
  】))
  于(「目录探针们」于「原生探针目录」于『原生-』)
也。

「:文言:执行器之模,构一次而诸探针共用。汉语:执行器状态模块:构建一次,所有探针共用。:」
「执行器状态」乃「网页状态模块」也。
「执行器状态」者
  「读取状态二进制」
    于(「文件系统」之「读文件字节串」
      于(「构建豫言包」于「构令」于「编令」于『客体二号』于(「路径」于『yy客体二号.wasm』)))
也。

「:文言:造一探针之可执行文件。汉语:编译一个探针并生成它的 Linux 可执行文件,返回文件名(相对临时目录)。:」
「造探针」乃化「爻」而化(「字符串」合「字符串」合「字符串」)而「字符串」也。
「造探针」者会「臂」而会「项」而
  虑「模」者
    「编译豫言源」于「构令」于「编令」于(「项」中「一」)于(「路径」于((「项」中「零」)附『.wasm』))而
    虑「名」者(若「臂」则『a-』否则『x-』)附(「项」中「零」)而
    虑「无」者
      「文件系统」之「写文件字节串」
        于(「路径」于「名」)
        于(
          虑「客串」者「文件系统」之「读文件字节串」于「模」
          而
          虑「嵌」者「嵌入客体」于「执行器状态」于「客串」
          而
          虑「状」者
            (若「是预编」则「预编并入」于「嵌」于「客串」否则「嵌」)
          而
          若「是苹果」则
            「生成苹果可执行」于「臂」于「状」
          否则
            「生成Linux可执行」于「臂」于「状」
        )
    而
    虑「权」者
      「运行工具」于『chmod』于(「列」【『+x』,「路径」于「名」】)
    而
    「名」
也。

「:文言:Docker 之镜像:FROM scratch,载诸可执行文件于 /p,置空 /tmp。汉语:Docker 镜像:FROM scratch,把临时目录里的可执行文件放在 /p,另放一个空的 /tmp(Rosetta 需要)。本地构建,不拉取任何镜像。:」
「造镜像」乃化「爻」而「字符串」也。
「造镜像」者会「臂」而
  虑「标签」者
    (若「臂」则『yy-yuanshen-arm64』否则『yy-yuanshen-amd64』)而
    虑「无」者
      「运行工具」于『mkdir』于(「列」【『-p』,「路径」于『空tmp』】)
    而
    虑「无」者
      「文件系统」之「写文件」
        于(「路径」于『Dockerfile』)于『FROM scratch「:换行:」COPY . /p「:换行:」COPY 空tmp /tmp「:换行:」』
    而
    虑「无」者
      「运行工具」
        于『docker』
        于(「列」【
          『build』,
          『-q』,
          『--platform』,
          (若「臂」则『linux/arm64』否则『linux/amd64』),
          『-t』,
          「标签」,
          「目录」
        】)
    而
    「标签」
也。

「:文言:行一探针,取其标准出与退出之码。汉语:运行一个探针可执行文件:直接方式在工作目录里运行;docker 方式挂上同一个命名卷作工作目录。返回(是否退出码为零,标准输出)。:」
「运行探针」乃
  化「爻」而
  化「字符串」而
  化「字符串」而
  化「字符串」而
  (「爻」合「字符串」)
也。
「运行探针」者会「臂」而会「镜像」而会「卷」而会「名」而
  虑「果」者
    若「串相等」于「经令」于『docker』则
      「操作系统」之「子进程」之「获取输出」
        于『docker』
        于(「列」【
          『run』,
          『--rm』,
          『--platform』,
          (若「臂」则『linux/arm64』否则『linux/amd64』),
          『-v』,
          「卷」附『:/work』,
          『-w』,
          『/work』,
          『--entrypoint』,
          『/p/』附「名」,
          「镜像」
        】)
    否则
      「操作系统」之「子进程」之「获取输出」于『env』于(「列」【『-C』,「路径」于『工作』,「路径」于「名」】)
  而
  (「果」中「零」)与(「果」中「一」)
也。

「:文言:验一项:行之而较其出。汉语:运行一个探针并与期望输出比较,打印结果;符合返回 0,否则返回 1。:」
「验一项」乃
  化「爻」而
  化「字符串」而
  化「字符串」而
  化「字符串」而
  化(「字符串」合「字符串」合「字符串」)而
  「整数」
也。
「验一项」者会「臂」而会「镜像」而会「卷」而会「名」而会「项」而
  虑「运行」者「运行探针」于「臂」于「镜像」于「卷」于「名」而
  虑「期望」者「文件系统」之「读文件」于(「项」中「二」)而
  虑「符」者
    「且」于(「运行」中「零」)于(「串相等」于(「运行」中「一」)于「期望」)而
    虑「架名」者(若「臂」则『臂六十四』否则『兼容六十四』)而
    虑「无」者
      「打印行」于((若「符」则『原生一致性通过:』否则『原生一致性不符:』)附(「项」中「零」)附『-』附「架名」)
    而
    虑「无」者
      (若「符」则「元」否则「打印行」于(『实际输出:「:换行:」』附(「运行」中「一」)))
    而
    (若「符」则「零」否则「一」)
也。

「:文言:一架构之验:按名择探针,造所择之程序、(docker 则)造镜像、依次行之;返不符之数。汉语:验证一种架构:--只验 按名称包含关系选探针,仅构建并运行所选项;docker 方式仍造镜像并清空工作卷;返回不符的个数。文件二依赖文件一,应以“盘-文件”同时选取。:」
「验一架构」乃化「爻」而「整数」也。
「验一架构」者会「臂」而
  虑「项们」者
    「滤」授以(「字符串」合「字符串」合「字符串」)
    于(会「项」而「或者」于(「串相等」于「只名」于『』)于(「是子字符串吗」于「只名」于(「项」中「零」)))
    于「探针们」而
    虑「无」者
      (
        若「等于」于(「长度」授以(「字符串」合「字符串」合「字符串」)于「项们」)
        于「零」则
          「发生事故」于(『没有匹配的原生探针:』附「只名」)
        否则
          「元」
      )
    而
    虑「名们」者
      「态射」授以(「字符串」合「字符串」合「字符串」)授以「字符串」
        于「项们」
        于(会「项」而「造探针」于「臂」于「项」)
    而
    虑「经容器」者「串相等」于「经令」于『docker』而
    虑「镜像」者(若「经容器」则「造镜像」于「臂」否则『』)
    而
    虑「卷」者
      『yy-yuanshen-work-』附(
        若「臂」则『arm64』否则『amd64』)
    而
    虑「清」者
      (
        若「经容器」则
          「操作系统」之「子进程」之「获取输出」
            于『docker』
            于(「列」【『volume』,『rm』,『-f』,「卷」】)
        否则
          「操作系统」之「子进程」之「获取输出」
            于『mkdir』
            于(「列」【『-p』,「路径」于『工作』】)
      )
    而
    「从左折叠」授以「整数」授以「整数」
    于(会「序」而会「和」而
      「加」
        于「和」
        于(「验一项」
          于「臂」
          于「镜像」
          于「卷」
          于(「第N个」授以「字符串」于「序」于「名们」)
          于(「第N个」授以(「字符串」合「字符串」合「字符串」)于「序」于「项们」)))
          于「零」
          于(「整数范围」于「零」于(「长度」授以(「字符串」合「字符串」合「字符串」)于「项们」))
也。

「主」乃化「有」而「有」也。
「主」者会「无」而
  虑「败」者
    若「或者」于「是苹果」于(「串相等」于「架构令」于『臂六十四』)则
      「验一架构」于「阳」
    否则若「串相等」于「架构令」于『兼容六十四』则
      「验一架构」于「阴」
    否则
      「加」于(「验一架构」于「阳」)于(「验一架构」于「阴」)
  而
  若「等于」于「败」于「零」则
    「打印行」于『原生一致性全部通过』
  否则
    「发生事故」于(『原生一致性不符:』附(「整数表示」于「败」)附『 项』)
也。

「主」于「元」。