豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 217 行 · 11141 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「字节串」之书。
寻观「癸象工具」之「总集」之书。
寻观「癸象工具」之「癸象访问」之书。
寻观「云工宿主」之「核心」之书。

「:
文言:输入、程序、名、算时之限,皆本公约。
汉语:接口规范里的各项限额:输入 JSON 至多 1572864 字节,程序 Base64 文字至多 4194304 个字符,运行器名与范围至多 128 字节,CPU 限额 1000 毫秒。
:」
「输入上限」乃「整数」也。
「输入上限」者「一五七二八六四」也。

「程序上限」乃「整数」也。
「程序上限」者「四一九四三零四」也。

「名上限」乃「整数」也。
「名上限」者「一二八」也。

「算时毫秒」乃「整数」也。
「算时毫秒」者「一零零零」也。

「失败消息上限」乃「整数」也。
「失败消息上限」者「三零零」也。

「:
文言:名中不得有控制之字(零至三十一及一百二十七)。
汉语:按字节检查字符串里没有控制字符(0 至 31 与 127);用于范围名。
:」
「无控制字符」乃化「字符串」而化「整数」而「爻」也。
「无控制字符」者会「文」而会「位」而
  若「非」于(「小于」于「位」于(「字节长度」于「文」))则
    「阳」
  否则
    虑「字节」者「字符转整数」于「文」于「位」
    而
    若「或者」于(「小于」于「字节」于「三二」)于(「等于」于「字节」于「一二七」)则
      「阴」
    否则
      「无控制字符」于「文」于(「加」于「位」于「一」)
也。

「名合法吗」乃化「字符串」而「爻」也。
「名合法吗」者会「文」而
  「且」
    于(「且」
      于(「大于」于(「字节长度」于「文」)于「零」)
      于(「非」于(「大于」于(「字节长度」于「文」)于「名上限」)))
      于(「无控制字符」于「文」于「零」)
也。

「小写十六位吗」乃化「字符串」而「爻」也。
「小写十六位吗」者会「文」而
  「且」
    于(「等于」于(「串长度」于「文」)于「六四」)
    于(「全部符合」授以「字符串」
      于(会「字」而「是子字符串吗」于「字」于『0123456789abcdef』)
      于(「获取字符」于「文」))
也。

「:
文言:入参先验,越限与格式之误皆以异告。
汉语:检查五个参数:运行器名与范围(1 至 128 字节,范围不含控制字符)、产物摘要(64 位小写十六进制)、程序 Base64 文字(1 至 4194304 个字符)、输入(至多 1572864 字节);违规抛出豫言异常。
:」
「验参数」乃
  化「字符串」而
  化「字符串」而
  化「字符串」而
  化「字符串」而
  化「字符串」而
  「有」
也。
「验参数」者会「运行器」而会「范围」而会「摘要」而会「程序」而会「输入」而
  若「非」于(「名合法吗」于「运行器」)则
    「发生事故」授以「有」于『运行器名无效』
  否则
    若「非」于(「名合法吗」于「范围」)则
      「发生事故」授以「有」于『隔离范围无效』
    否则
      若「非」于(「小写十六位吗」于「摘要」)则
        「发生事故」授以「有」于『产物摘要无效』
      否则
        若「或者」
          于(「等于」于(「字节长度」于「程序」)于「零」)
          于(「大于」于(「字节长度」于「程序」)于「程序上限」)则
          「发生事故」授以「有」于『运行产物无效』
        否则
          若「大于」于(「字节长度」于「输入」)于「输入上限」则
            「发生事故」授以「有」于『运行输入超过上限』
          否则
            「元」
也。

「:
文言:宿主诸句柄,用毕即释,免竭其表。
汉语:逐个释放宿主句柄,成败两条路径都要调用,避免单个事件里耗尽 4096 的句柄表。
:」
「释放们」乃化(「列」于「字符串」)而「有」也。
「释放们」者会「诸」而
  鉴「诸」而
    有「罄」则「元」
    或有(「缀」于「首」于「余」)则
      ((「云工释放句柄」于「首」);
        (「释放们」于「余」))
也。

「截失败文」乃化「字符串」而「字符串」也。
「截失败文」者会「文」而
  若「大于」于(「串长度」于「文」)于「失败消息上限」则
    「获取子字符串」于「零」于「失败消息上限」于「文」
  否则
    「文」
也。

「:
文言:验入而重算其摘,取绝缘之室(同范围同摘同室),转其请,返其文;室败与超限,皆异。
汉语:先验证参数,把程序的 Base64 解码为字节(非法则抛「运行产物无效」)并重算 SHA-256(不符抛「运行产物摘要不匹配」);用宿主原语 云工隔离运行客按号取安全 得到子 Worker(未授权的绑定名、绑定不存在等宿主失败转「隔离运行失败:…」)(标识为“范围:摘要”,CPU 限额 1000 毫秒、子请求 0);向其入口 POST 输入(请求体是输入的 UTF-8 原字节,不经 JSON 转义);状态 200 返回响应文字(子入口已验 args/files 并整理为 {ok,stdout,stderr,exitCode,files}),400 抛「隔离运行输入无效」,其余抛「隔离运行失败」。宿主异常也转为「隔离运行失败」。所有句柄用毕释放。
:」
「运行隔离程序」乃
  化「字符串」而
  化「字符串」而
  化「字符串」而
  化「字符串」而
  化「字符串」而
  「字符串」
也。
「运行隔离程序」者会「运行器」而会「范围」而会「摘要」而会「程序文」而会「输入」而
  虑「无」者
    「验参数」于「运行器」于「范围」于「摘要」于「程序文」于「输入」而
    虑「解码」者「云工解Base64安全」于「程序文」而
    若「非」于(「解码」中「零」)则
      「发生事故」授以「字符串」于『运行产物无效:不是有效的 Base64』
    否则
      虑「程序」者「解码」中「一」
      而
      若「或者」
        于(「等于」于(「字节串长度」于「程序」)于「零」)
        于(「大于」于(「字节串长度」于「程序」)于「三一四五七二八」)则
          「发生事故」授以「字符串」于『运行产物无效』
      否则
        虑「实摘」者
          「字节串转小写十六进制」于(「云工密码摘要」于『SHA-256』于「程序」)
        而
        若「非」于(「串相等」于「实摘」于「摘要」)则
          「发生事故」授以「字符串」于『运行产物摘要不匹配』
        否则
          虑「取器」者
            「云工隔离运行客按号取安全」
              于「运行器」
              于(「范围」附『:』附「摘要」)于「程序」于「算时毫秒」于「零」
          而
          若「非」于(「取器」中「零」)则
            「发生事故」授以「字符串」于(『隔离运行失败:』附(「截失败文」于(「取器」中「一」)))
          否则
            虑「客器」者「取器」中「一」
            而
            虑「入口」者「云工动态入口句柄」于「客器」
            而
            虑「体号」者
              「云工字节成句柄」于(「字符串转字节串」于「输入」)
            而
            虑「请求号」者
              「取云工句柄」于(「云工构造对象」
                于『Request』
                于(『["https://isolated/run",{"method":"POST","body":』附(「云工句柄引用文」于「体号」)附『}]』))
            而
            虑「转发」者
              「云工调用方法安全」
                于「入口」
                于『fetch』
                于(『[』附(「云工句柄引用文」于「请求号」)附『]』)
            而
            若「非」于(「转发」中「零」)则
              虑「无」者
                「释放们」于(「列」【「客器」,「入口」,「体号」,「请求号」】)
              而
              「发生事故」授以「字符串」
              于(『隔离运行失败:』附(「截失败文」
                于(「癸象字段字符串」于(「癸象解析」于(「转发」中「一」))于『消息』于『宿主调用失败』)))
            否则
              虑「回应号」者「取云工句柄」于(「转发」中「一」)
              而
              虑「状态」者
                「理解整数」于(「云工读取属性」于「回应号」于『status』)
              而
              虑「缓冲结果」者
                「云工调用方法安全」于「回应号」于『arrayBuffer』于『[]』
              而
              若「非」于(「缓冲结果」中「零」)则
                虑「无」者
                  「释放们」于(「列」【「客器」,「入口」,「体号」,「请求号」,「回应号」】)
                而
                「发生事故」授以「字符串」
                于(『隔离运行失败:读取响应失败:』附(「截失败文」
                  于(「癸象字段字符串」于(「癸象解析」于(「缓冲结果」中「一」))于『消息』于『宿主调用失败』)))
              否则
                虑「缓冲号」者「取云工句柄」于(「缓冲结果」中「一」)
                而
                虑「文」者
                  「云工解码文字」
                    于『utf-8』
                    于「阴」于「阳」
                    于(「云工句柄取字节」于「缓冲号」)
                而
                虑「无」者
                  「释放们」于(「列」【「客器」,「入口」,「体号」,「请求号」,「回应号」,「缓冲号」】)
                而
                若「等于」于「状态」于「二零零」则
                  「文」
                否则
                  若「等于」于「状态」于「四零零」则
                    「发生事故」授以「字符串」
                    于(『隔离运行输入无效:』附(「截失败文」于「文」))
                  否则
                    「发生事故」授以「字符串」
                    于(『隔离运行失败:』附(「整数表示」于「状态」)附『:』附(「截失败文」于「文」))
也。