节点引擎自举之验
入口以豫言行,JavaScript 唯接引擎与系统;值桥(yy值桥接生成 依编译器核心之结构书之)以同型 GC 读写,线性内存但供字节往来。串并两途皆可行,任务图仍以豫言治之;未知原语则止。包上下文预由豫构作,此器但寻同文,不自造号而乱锁约。
客居工作线程,主线程受启工与候毕之请,候二出之管俱阖而告毕。子 Wasm 仍由 V8 行,不偷换原生编译器。多路等待惟识本器之执行句柄,非通用网络与文件之轮询。参数各传,不托 shell 拼文;每流二百五十六 MiB 为限,未收句柄至多四千〇九十六。收毕释籍,客毕止未完之直属子工;语言任务自存其果,可再候。
常制 YY_NODE_COMPILER_WORKERS=threads:惟同一编译器自派、首参 --mode=worker 者,共其已编之模块码。工限四事,闲过四分之一秒则退,闲工不逾可用处理器之数;欲换工,待真退乃释任务槽。任务图及并发数仍以豫言治之。
每事新立客实例、值桥、全局、入参与宿主状态,工之 GC 堆容量或暂留,不藏编译结果、文件与数组内容。新 Node 进程重备其码,无跨程预热。模块以文件诸识及双时戳验之,每事重取。设 YY_NODE_COMPILER_REUSE=0 则每事独立线程与堆;不设或为 1 则有界复用。二出先递,毕报在后,流消费毕乃告 close;事故各记其码,旧柄不得止新事。主客毕,活动与闲工皆清。
诸线程之 PID 皆为真实宿主号,任务柄各异,诊断另记线程号;不可数 PID 以为并行数。隔离以线程及实例为界,非操作系统进程。欲复进程之途,设 YY_NODE_COMPILER_WORKERS=process。普通子进程及其他 Wasm 程序仍用真实进程。
工既复用,一号或历诸事;按工析 GC 与 CPU,须兼辨其事之时段。旧法一工一事者,当设 YY_NODE_COMPILER_REUSE=0,毋混其数。
设 YY_NODE_REPEAT=2,同工复用模块,以新实例再行,更新输入文件时识,第二产物加 .第2.wasm。V8 自编本机码,非逐指令解释;执行之时亦含延迟编译与优化。栈一百二十八 MiB,堆循引擎默认,次验不强回收。命令见《说明.汉语.md》。
并行加 --parallel -j 18 --do-not-load-cache -c。正测每代新启 Node,启动、自编本机码、实例化及客编译皆入时(编器径书二进制,已无 WAT 组装);跨轮复用引擎之暖测不冒充新进程。子客不承重复试验之轮数。设 YY_NODE_PROFILE=1 可数原语之调用;名为常字,弱缓存其解,不藏参数与编译结果。显授 Wasm、Liftoff、V8 池及堆容量之选项传于子客,调试端口与采样文件之制不传;数值以等号附之。试参非更常制。