运行。豫
yuyan · 217 行 · 11141 字节 · UTF-8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「字节串」之书。
寻观「癸象工具」之「总集」之书。
寻观「癸象工具」之「癸象访问」之书。
寻观「云工宿主」之「核心」之书。
「:
文言:输入、程序、名、算时之限,皆本公约。
汉语:接口规范里的各项限额:输入 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』
于「阴」于「阳」
于(「云工句柄取字节」于「缓冲号」)
而
虑「无」者
「释放们」于(「列」【「客器」,「入口」,「体号」,「请求号」,「回应号」,「缓冲号」】)
而
若「等于」于「状态」于「二零零」则
「文」
否则
若「等于」于「状态」于「四零零」则
「发生事故」授以「字符串」
于(『隔离运行输入无效:』附(「截失败文」于「文」))
否则
「发生事故」授以「字符串」
于(『隔离运行失败:』附(「整数表示」于「状态」)附『:』附(「截失败文」于「文」))
也。