仓库目标。豫
yuyan · 436 行 · 25240 字节 · 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 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436
「:
文言:语言仓之构建目标,昔为独立之“仓库构建”程序,今并入豫构:自举、豫构、类型检查、测试、打包、清理。诸具皆为 Wasm 之模,行于 Node;豫构自行于 Node,其所启之 .wasm 子程,宿主自以 Node 行之。于仓根行之。
汉语:语言仓的构建目标(原先的独立程序“仓库构建”已并入豫构):自举链、构建豫构、类型检查、豫构测试与全树测试、Wasm 工具链打包、清理。所有工具都是 .wasm 模块,在 Node 上运行;豫构本身在 Node 上运行时,它启动的 .wasm 子程序由宿主自动用 Node 执行。交给构建编排并行调度,按输入修改时间跳过已最新的目标。在仓库根目录运行:yy豫构.wasm 自举|测试|打包|清理|全部 [-j 并发] [--强制] [--不连带] [--列出],或 yy豫构.wasm 目标 名… 运行任意目标。
:」
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「字符串术」之书。
寻观「标准库」之「数据结构」之「多态列」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「系统名称」之书。
寻观「标准库」之「操作系统」之「异步子进程」之书。
寻观「标准库」之「语言核心」之「异常」之书。
寻观「构建编排」之书。
「仓库命令们」乃「列」于「字符串」也。
「仓库命令们」者「列」【『自举』,『测试』,『打包』,『清理』,『全部』,『目标』】也。
「是仓库命令」乃化「字符串」而「爻」也。
「是仓库命令」者会「名」而
「含名」于「仓库命令们」于「名」
也。
「:文言:豫构之并发从命令行之 -j;未书则取处理器之数。汉语:传给子工具的并发数取自命令行的 -j;没写时用在线处理器数。:」
「命令行并发」乃化(「列」于「字符串」)而「整数」也。
「命令行并发」者会「参们」而
鉴「参们」而
有(「缀」于「参首」于「参余」)则
若「串相等」于「参首」于『-j』
则
(
鉴「参余」而
有(「缀」于「并发参」于「参再余」)则
「理解整数」于「并发参」
或有「罄」则「在线处理器数量」于「元」
)
否则
「命令行并发」于「参余」
或有「罄」则「在线处理器数量」于「元」
也。
「并发文」乃「字符串」也。
「并发文」者「整数表示」于(「命令行并发」于(「获取参数」于「元」))也。
「:文言:用编译缓存之步同入一独占组,免并发相扰。汉语:凡会用到编译缓存的步骤(豫构调用,以及内部再调用豫构的测试)都放进同一个独占组,避免同一缓存被并发使用。:」
「独占豫构」乃化「步骤」而「步骤」也。
「独占豫构」者会「某步」而
「独占」于『豫构缓存』于「某步」
也。
「:文言:稳定之具取自 Wasm 工具链之包,解于仓根。汉语:稳定工具来自解压到仓库根目录的 Wasm 工具链包:yy_bs_stable.wasm 与 yy豫构_stable.wasm(Node 宿主可用包内的 yy稳定节点宿主,也可用仓库里的)。:」
「稳定编译器」乃「字符串」也。
「稳定编译器」者『./yy_bs_stable.wasm』也。
「稳定豫构」乃「字符串」也。
「稳定豫构」者『./yy豫构_stable.wasm』也。
「:文言:编译器之源:三目录之豫言,除测试与文档。汉语:编译器源码:三个目录下的豫言源码,排除测试与文档。:」
「编译器源码输入们」乃「列」于「输入」也。
「编译器源码输入们」者
虑「后缀们」者(「列」于「字符串」)也(「列」【『。豫』】)而
虑「排除们」者(「列」于「字符串」)也(「列」【『/测试/』,『应用/豫言编译器/文档/』】)而
「列」【
(「目录输入」于『应用/豫言编译器』于「后缀们」于「排除们」),
(「目录输入」于『库』于「后缀们」于「排除们」),
(「目录输入」于『应用/豫构』于「后缀们」于「排除们」)
】
也。
「:文言:二级由稳定豫构造;三级以后由今豫构造,免旧器授已删之目标选项。汉语:二级编译器由稳定豫构构建;三级、四级改用当前源码的豫构,避免旧豫构向新编译器传已删除的 --target 选项。:」
「编译器级目标」乃
化「字符串」而
化(「列」于「字符串」)而
化「字符串」而
化「字符串」而
「构建目标」
也。
「编译器级目标」者会「目标名」而会「依赖们」而会「所用编译器」而会「产物」而
虑「驱动」者
若「串相等」于「所用编译器」于「稳定编译器」则「稳定豫构」否则『./yy豫构.wasm』
而
「目标」
于「目标名」
于(『用 』附「所用编译器」附『 构建豫言编译器,得 』附「产物」)
于「依赖们」
于(「列」【
(「独占豫构」
于(「命令步」
于「驱动」
于(「列」【
『构建』,
『豫言编译器』,
『--编译器』,
「所用编译器」,
『--输出』,
「产物」,
『-j』,
「并发文」】)))
】)
于(「附加」授以「输入」
于「编译器源码输入们」
于(「列」【(「文件输入」于「所用编译器」),(「文件输入」于「驱动」)】))
于(「列」【「产物」】)
也。
「:文言:构一测试而行之;二步皆独占(部分测试内复调豫构)。汉语:构建并运行一个测试程序的两个步骤;两步都独占编译缓存(部分测试运行时会再调用豫构)。:」
「测试两步」乃
化「字符串」而
化「字符串」而
化「字符串」而
化(「列」于「字符串」)而
(「列」于「步骤」)
也。
「测试两步」者会「包名」而会「入口段」而会「产物」而会「运行参数们」而
「列」【
(「独占豫构」
于(「命令步」
于『./yy豫构.wasm』
于(「列」【
『构建』,
「包名」,
「入口段」,
『--编译器』,
『./yy4_bs.wasm』,
『--输出』,
「产物」,
『-j』,
「并发文」
】))),
(「独占豫构」于(「限时命令步」于「一八零」于(『./』附「产物」)于「运行参数们」))
】
也。
「豫构测试步们」乃「列」于「步骤」也。
「豫构测试步们」者
「从左折叠」授以(「列」于「步骤」)授以(「列」于「步骤」)
于(会「两步」而会「已有」而「附加」授以「步骤」于「已有」于「两步」)
于(「罄」授以「步骤」)
于(「列」【
(「测试两步」于『包配置』于『语言服务。测试』于『yy包语言服务测试.wasm』于(「罄」授以「字符串」)),
(「测试两步」于『豫构』于『包资料。测试』于『yy豫构资料测试.wasm』于(「罄」授以「字符串」)),
(「测试两步」于『豫构』于『配置解析。测试』于『yy豫构配置测试.wasm』于(「罄」授以「字符串」)),
(「测试两步」
于『豫构』于『包系统。测试』于『yy豫构包测试.wasm』
于(「列」【『./yy豫构.wasm』,『./yy4_bs.wasm』】)),
(「测试两步」于『豫构』于『调度器。测试』于『yy豫构调度测试.wasm』于(「罄」授以「字符串」)),
(「测试两步」于『豫构』于『并行进度。测试』于『yy豫构进度测试.wasm』于(「罄」授以「字符串」)),
(「测试两步」于『豫构』于『命令行。测试』于『yy豫构命令行测试.wasm』于(「列」【『./yy豫构.wasm』】))
】)
也。
「:文言:Wasm 工具链之包:编译器、豫构皆为 WasmGC,名同稳定之具;值桥与 Node 宿主三文置于 yy稳定节点宿主。解于仓根即可起步。汉语:Wasm 工具链包:编译器与豫构的 WasmGC 模块(名为稳定工具名),值桥与 Node 宿主三个文件放在 yy稳定节点宿主;解压到仓库根目录即可起步,只需 Node.js。:」
「网页汇编工具链目录」者『yy网页汇编工具链』也。
「包内宿主目录」者「网页汇编工具链目录」附『/yy稳定节点宿主』也。
「节点宿主目录」者『豫言操作系统/宿主/节点』也。
「节点宿主文件们」乃「列」于「字符串」也。
「节点宿主文件们」者「列」【『宿主.cjs』,『进程桥接.cjs』,『编译线程.cjs』】也。
「:文言:值桥须与编译器同代,乃以 yy4_bs.wasm 构其生成之器而书之于宿主之旁;宿主先取之。汉语:值桥要和编译器同一版本(GC 类型须一致),所以用 yy4_bs.wasm 构建值桥生成程序,把值桥写到 Node 宿主文件旁;宿主找值桥时优先用这一份。:」
「宿主旁值桥」者「节点宿主目录」附『/yy节点值桥接.wasm』也。
「值桥步们」乃「列」于「步骤」也。
「值桥步们」者
「列」【
(「独占豫构」
于(「命令步」
于『./yy豫构.wasm』
于(「列」【
『构建』,
『值桥接生成』,
『--编译器』,
『./yy4_bs.wasm』,
『--输出』,
『yy值桥接生成.wasm』,
『-j』,
「并发文」
】))),
(「命令步」于『./yy值桥接生成.wasm』于(「列」【「宿主旁值桥」】))
】
也。
「打包步们」乃「列」于「步骤」也。
「打包步们」者
「附加」授以「步骤」
于(「列」【
(「建目录步」于「包内宿主目录」),
(「复制文件步」于『yy4_bs.wasm』于(「网页汇编工具链目录」附『/yy_bs_stable.wasm』)),
(「复制文件步」于『yy豫构.wasm』于(「网页汇编工具链目录」附『/yy豫构_stable.wasm』)),
(「复制文件步」于「宿主旁值桥」于(「包内宿主目录」附『/yy节点值桥接.wasm』))
】)
于(「态射」授以「字符串」授以「步骤」
于「节点宿主文件们」
于(会「名」而「复制文件步」于(「节点宿主目录」附『/』附「名」)于(「包内宿主目录」附『/』附「名」)))
也。
「仓库目标们」乃「列」于「构建目标」也。
「仓库目标们」者
「列」【
(「编译器级目标」于『编译器二级』于(「罄」授以「字符串」)于「稳定编译器」于『yy2_bs.wasm』),
(「编译器级目标」于『编译器三级』于(「列」【『编译器二级』】)于『./yy2_bs.wasm』于『yy3_bs.wasm』),
(「编译器级目标」于『编译器四级』于(「列」【『编译器三级』】)于『./yy3_bs.wasm』于『yy4_bs.wasm』),
(「目标」
于『自举』
于『连续自举并核对定点:yy3_bs.wasm 与 yy4_bs.wasm 须逐字节相同』
于(「列」【『编译器四级』】)
于(「列」【(「相同步」于『yy3_bs.wasm』于『yy4_bs.wasm』)】)
于(「罄」授以「输入」)
于(「罄」授以「字符串」)),
(「目标」
于『豫构』
于『用 yy4_bs.wasm 构建 yy豫构.wasm』
于(「列」【『编译器四级』】)
于(「列」【
(「独占豫构」
于(「命令步」
于『./yy豫构.wasm』
于(「列」【
『构建』,
『豫构』,
『--编译器』,
『./yy4_bs.wasm』,
『--输出』,
『yy豫构.wasm』,
『-j』,
「并发文」
】)))
】)
于(「附加」授以「输入」
于「编译器源码输入们」
于(「列」【(「文件输入」于『yy4_bs.wasm』),(「文件输入」于『yy豫构.wasm』)】))
于(「列」【『yy豫构.wasm』】)),
(「目标」
于『类型检查』
于『用 yy4_bs.wasm 类型检查豫言编译器』
于(「列」【『豫构』】)
于(「列」【
(「独占豫构」
于(「命令步」
于『./yy豫构.wasm』
于(「列」【『类型检查』,『豫言编译器』,『--编译器』,『./yy4_bs.wasm』,『-j』,「并发文」】)))
】)
于(「罄」授以「输入」)
于(「罄」授以「字符串」)),
(「目标」
于『豫构测试』
于『包配置与豫构的七项测试(同 CI)』
于(「列」【『豫构』】)
于「豫构测试步们」
于(「罄」授以「输入」)
于(「罄」授以「字符串」)),
(「目标」
于『全树测试工具』
于『构建 yy全树测试.wasm』
于(「列」【『豫构』】)
于(「列」【
(「独占豫构」
于(「命令步」
于『./yy豫构.wasm』
于(「列」【
『构建』,
『全树测试』,
『--编译器』,
『./yy4_bs.wasm』,
『--输出』,
『yy全树测试.wasm』,
『-j』,
「并发文」
】)))
】)
于(「列」【
(「目录输入」于『应用/开发工具/全树测试』于(「罄」授以「字符串」)于(「罄」授以「字符串」)),
(「目录输入」于『库/标准库』于(「列」【『。豫』】)于(「列」【『/测试/』】)),
(「文件输入」于『yy4_bs.wasm』)
】)
于(「列」【『yy全树测试.wasm』】)),
(「目标」
于『全树测试』
于『运行全仓测试(规则见 应用/开发工具/全树测试/测试规则.tsv)』
于(「列」【『全树测试工具』】)
于(「列」【(「独占豫构」于(「命令步」于『./yy全树测试.wasm』于(「罄」授以「字符串」)))】)
于(「罄」授以「输入」)
于(「罄」授以「字符串」)),
(「目标」
于『测试』
于『豫构测试与全树测试』
于(「列」【『豫构测试』,『全树测试』】)
于(「罄」授以「步骤」)
于(「罄」授以「输入」)
于(「罄」授以「字符串」)),
(「目标」
于『打包』
于(『Wasm 工具链包(解压到仓根即用,只需 Node.js):』附「网页汇编工具链目录」附『/』)
于(「列」【『自举』,『豫构』,『值桥』】)
于「打包步们」
于(「列」【
(「目录输入」于「节点宿主目录」于(「列」【『.cjs』】)于(「列」【『/测试/』】)),
(「文件输入」于『yy4_bs.wasm』),
(「文件输入」于『yy豫构.wasm』),
(「文件输入」于「宿主旁值桥」)
】)
于(「态射」授以「字符串」授以「字符串」
于(「列」【
『yy_bs_stable.wasm』,
『yy豫构_stable.wasm』,
『yy稳定节点宿主/yy节点值桥接.wasm』
】)
于(会「名」而「网页汇编工具链目录」附『/』附「名」))),
(「目标」
于『值桥』
于(『用 yy4_bs.wasm 生成与编译器同代的值桥:』附「宿主旁值桥」)
于(「列」【『编译器四级』,『豫构』】)
于「值桥步们」
于(「列」【
(「目录输入」
于『应用/网页汇编/值桥接生成』
于(「列」【『。豫』】)
于(「罄」授以「字符串」)),
(「文件输入」于『yy4_bs.wasm』)
】)
于(「列」【「宿主旁值桥」】)),
(「目标」
于『清理』
于『删除构建产物与缓存』
于(「罄」授以「字符串」)
于(「列」【
(「删除步」
于(「列」【
『.yybuild』,
『dist』,
『yy2_bs.wasm』,
『yy3_bs.wasm』,
『yy4_bs.wasm』,
「网页汇编工具链目录」,
『yy_parallel_deps.txt』,
『yy_parallel_log.txt』
】))
】)
于(「罄」授以「输入」)
于(「罄」授以「字符串」)),
(「目标」
于『全部』
于『自举并构建豫构与值桥(默认目标)』
于(「列」【『自举』,『豫构』,『值桥』】)
于(「罄」授以「步骤」)
于(「罄」授以「输入」)
于(「罄」授以「字符串」)),
(「目标」
于『模拟器冒烟』
于『构建普通豫言验证器并在 QEMU 双架构运行打印探针』
于(「罄」授以「字符串」)
于(「列」【
(「独占豫构」
于(「命令步」
于『./yy豫构.wasm』
于(「列」【
『文件』,
『豫言操作系统/裸机/普通豫言验证。豫』,
『--编译器』,
『./yy4_bs.wasm』,
『--输出』,
『yy普通豫言验证.wasm』,
『-j』,
「并发文」
】))),
(「独占豫构」
于(「限时命令步」
于「一二零」
于『env』
于(「列」【
『YY_GC_INITIAL_HEAP_SIZE_MB=1024』,
『node』,
『豫言操作系统/宿主/节点/宿主.cjs』,
『yy普通豫言验证.wasm』,
『--只验』,
『普通-打印-』
】)))
】)
于(「罄」授以「输入」)
于(「罄」授以「字符串」)),
(「目标」
于『快检』
于『快检:用现有 yy4_bs.wasm 类型检查豫言编译器(不重建工具链),并在 QEMU 双架构运行打印探针;本机约一分钟』
于(「列」【『模拟器冒烟』】)
于(「列」【
(「独占豫构」
于(「命令步」
于『./yy豫构.wasm』
于(「列」【
『类型检查』,
『豫言编译器』,
『--编译器』,
『./yy4_bs.wasm』,
『-j』,
「并发文」
】)))
】)
于(「罄」授以「输入」)
于(「罄」授以「字符串」))
】
也。
「:文言:行仓库之目标:首参为命令之名即目标之名;“目标”之后列任意目标。汉语:运行仓库目标:第一个参数(自举、测试、打包、清理、全部)本身就是目标名;“目标”之后可以列出任意目标名。其余选项同构建编排:-j 并发、--强制、--不连带、--列出。:」
「运行仓库目标」乃化(「列」于「字符串」)而「整数」也。
「运行仓库目标」者会「原参数们」而
虑「参数们」者
鉴「原参数们」而
有(「缀」于『目标』于「余」)则「余」
或有「其他」则
「原参数们」
而
若「非」于(「路径存在」于『应用/豫构/豫构。包。豫』)则
「发生事故」授以「整数」于『请在语言仓根目录运行豫构的仓库目标』
否则
虑「连带」者「非」于(「含名」于「参数们」于『--不连带』)而
虑「解」者
「解析参数」
于((「滤」授以「字符串」)于(会「某参」而「非」于(「串相等」于「某参」于『--不连带』))于「参数们」)
于((「罄」授以「字符串」)与(「在线处理器数量」于「元」)与「阴」与「阴」)
而
若「解」中「三」则
(「列出目标」于「仓库目标们」;
「零」)
否则
虑「所求们」者
若「等于」于(「长度」授以「字符串」于(「解」中「零」))于「零」则
「缀」授以「字符串」于『全部』于(「罄」授以「字符串」)
否则
「反转」授以「字符串」于(「解」中「零」)
而
「执行目标」于「仓库目标们」于「所求们」于(「解」中「一」)
于(「解」中「二」)于「连带」
也。