扩展库 / sharedmem

sharedmem

Windows/Linux 命名共享内存,字节安全的双语接口。

Windows/Linux C 子进程测试、Linux sanitizer、XLang JIT 与双语范例逐字对照已通过;范例使用独立随机名称。C 范例可直接由 xl run 执行。核心 AOT 已验证;完整发布签收仍受主线原生类退役和私有构造器访问控制问题阻断。

API

入口用途
create(name, size) / open(name)创建或打开命名映射,创建不覆盖现有名称
SharedMemory.write/read通过 Buffer 读写原始字节,读取返回独立副本
writeText/readText按明确的 UTF-8 字节长度读写;读取返回独立 cstring,只复制一次
writeInt/readInt / zero小端有符号 64 位整数和清零

重复创建名称在 XLang 中抛 ValueError,打开不存在的名称抛 LookupError;C 侧分别保留 XERR_EXISTS 与 XERR_NOT_FOUND。

xlang

import sharedmem
auto owner = sharedmem.create("demo_exchange", 128)
auto reader = sharedmem.open(owner.name)
owner.writeText(0, "hello")
println(reader.readText(0, 5))

C 与边界

头文件 include/sharedmem_native.h;C 调用方显式关闭句柄,xshm_read 的缓冲用 xrtBufferDestroy 释放,xshm_read_text 的文本用 xrtFree 释放。名称最长 128 UTF-8 字节,XLang 在进入 C 前拒绝内嵌 NUL;大小 1 至 64 MiB。没有内建进程间锁,应用须自行同步。POSIX 创建者关闭会 unlink;显式 unlink 后同名重建时,旧创建者不会误删新对象,但并发名称操作仍需同步。Windows 名称随最后句柄关闭而消失。Windows 与 Linux 包级门禁覆盖独立 C 子进程、分配故障、语言边界及双语范例;README 记录当前完整签收阻断。