豫言 / 原生你好 @ 0.1.0

路二最小闭环样例(底层模式):Linux 版直接发系统调用,macOS 版经 libSystem,写、读与退出。

源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。

说明.汉语.md

# 原生你好

路二(直接生成原生二进制)在 Linux 上的最小闭环样例,底层模式。程序写一行“你好”,从标准输入读至多 64 字节并原样写出,最后以退出码 7 结束。写、读、退出直接发 Linux 系统调用:导入模块名为 `Linux`,导入名就是系统调用名(`write`、`read`、`exit_group`),寄存器降级按入口表生成系统调用桩,地址类参数在进入系统前加上线性内存基址。

构建与生成(在仓库根目录):

```sh
node 豫言操作系统/宿主/节点/宿主.cjs yy豫构.wasm 构建 原生你好 --输出 yy原生你好.wasm -j 24
node 豫言操作系统/宿主/节点/宿主.cjs yy豫构.wasm 构建 豫言裸机 原生生成 --输出 yy原生生成.wasm -j 24
YY_GC_INITIAL_HEAP_SIZE_MB=512 node 豫言操作系统/宿主/节点/宿主.cjs yy原生生成.wasm Linux 臂六十四 yy原生你好.wasm yy原生你好臂
YY_GC_INITIAL_HEAP_SIZE_MB=512 node 豫言操作系统/宿主/节点/宿主.cjs yy原生生成.wasm Linux 兼容六十四 yy原生你好.wasm yy原生你好兼
```

产物是静态 ELF64 可执行文件,在 Linux arm64 与 x86-64 上直接运行,不依赖任何动态库。

`原生生成` 目前由原生运行时执行,初始线性内存按 64 KiB 一页整块分配,须用环境变量放大初始堆。

在 macOS 上可用 Docker 验证(`FROM scratch` 镜像,只含这一个文件):

```sh
printf 'FROM scratch\nCOPY --chmod=755 yy原生你好臂 /hello\nENTRYPOINT ["/hello"]\n' > Dockerfile
docker build --platform linux/arm64 -t yy-hello .
printf '回声\n' | docker run --rm -i --platform linux/arm64 yy-hello; echo $?
```

应输出“你好”与“回声”两行,退出码 7。x86-64 换成 `yy原生你好兼` 与 `linux/amd64`。

## macOS 版

`苹果入口。豫` 是同一程序的 macOS 版:写、读、退出经 libSystem 的 `write`、`read`、`exit`(导入模块名为“苹果”),生成的 Mach-O 位置无关、由 dyld 绑定导入槽、带特设代码签名,可在本机(arm64)直接运行:

```sh
node 豫言操作系统/宿主/节点/宿主.cjs yy豫构.wasm 构建 原生你好 苹果入口 --输出 yy原生你好苹果.wasm -j 24
YY_GC_INITIAL_HEAP_SIZE_MB=512 node 豫言操作系统/宿主/节点/宿主.cjs yy原生生成.wasm 苹果 臂六十四 yy原生你好苹果.wasm yy原生你好苹果
chmod +x yy原生你好苹果
printf '回声\n' | ./yy原生你好苹果; echo $?
```

Linux 版的生成命令相应为 `node 豫言操作系统/宿主/节点/宿主.cjs yy原生生成.wasm Linux 臂六十四 …`。

说明.文言.md

# 原生你好

路二(径生原生之二进制)于 Linux 之最小闭环,底层之模。书“你好”一行,自标准入读至多六十四字节而原样书之,终以退出码七。书、读、退皆径发 Linux 之系统调用:导入之模块名 `Linux`,导入之名即系统调用之名(`write`、`read`、`exit_group`);寄存器之降依入口之表成系统调用之桩,址类之参入系统之前加线性内存之基址。

构与生(于仓库之根):

```sh
node 豫言操作系统/宿主/节点/宿主.cjs yy豫构.wasm 构建 原生你好 --输出 yy原生你好.wasm -j 24
node 豫言操作系统/宿主/节点/宿主.cjs yy豫构.wasm 构建 豫言裸机 原生生成 --输出 yy原生生成.wasm -j 24
YY_GC_INITIAL_HEAP_SIZE_MB=512 node 豫言操作系统/宿主/节点/宿主.cjs yy原生生成.wasm Linux 臂六十四 yy原生你好.wasm yy原生你好臂
YY_GC_INITIAL_HEAP_SIZE_MB=512 node 豫言操作系统/宿主/节点/宿主.cjs yy原生生成.wasm Linux 兼容六十四 yy原生你好.wasm yy原生你好兼
```

所成者,静态之 ELF64 可执行文件,于 Linux 之 arm64 与 x86-64 径行,不倚动态之库。

`原生生成` 今由原生运行时行之,初始线性内存以一页六万五千五百三十六字节整块而分,须以环境变量增其初堆。

于 macOS 可以 Docker 验之(`FROM scratch` 之镜像,唯含此一文件):

```sh
printf 'FROM scratch\nCOPY --chmod=755 yy原生你好臂 /hello\nENTRYPOINT ["/hello"]\n' > Dockerfile
docker build --platform linux/arm64 -t yy-hello .
printf '回声\n' | docker run --rm -i --platform linux/arm64 yy-hello; echo $?
```

当书“你好”与“回声”二行,退出码七。x86-64 则易以 `yy原生你好兼` 与 `linux/amd64`。

## macOS 之版

`苹果入口。豫` 乃同一程序之 macOS 版:书、读、退经 libSystem 之 `write`、`read`、`exit`(导入之模块名为苹果);所生之 Mach-O 位置无关,由 dyld 绑其导入之槽,附特设之签名,可于本机(arm64)径行:

```sh
node 豫言操作系统/宿主/节点/宿主.cjs yy豫构.wasm 构建 原生你好 苹果入口 --输出 yy原生你好苹果.wasm -j 24
YY_GC_INITIAL_HEAP_SIZE_MB=512 node 豫言操作系统/宿主/节点/宿主.cjs yy原生生成.wasm 苹果 臂六十四 yy原生你好苹果.wasm yy原生你好苹果
chmod +x yy原生你好苹果
printf '回声\n' | ./yy原生你好苹果; echo $?
```

Linux 之版,其生之令则为 `node 豫言操作系统/宿主/节点/宿主.cjs yy原生生成.wasm Linux 臂六十四 …`。