LSR 003 - Lamina C 扩展与插件规范 ================================================================================ 基本信息 -------------------------------------------------------------------------------- - LSR 编号 003 - 标题 Lamina C 扩展与插件规范 - 作者 Ziyang-Bai - 状态 草案 - 类型 标准规范 - 创建日期 02-04-2026 - 归属项目 编译器、虚拟机、包管理器 摘要 -------------------------------------------------------------------------------- 定义 C/C++ 扩展的最小交付、接口映射与内存/所有权约束。 技术规范 -------------------------------------------------------------------------------- 1. 最小交付物 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 最小交付: - 动态库(编译生成的 :code:`.dll/.so/.dylib` ,符号建议按C ABI导出) - Lamina 模块声明文件(默认文件名为module.lm) [1]_ 推荐目录(非强制): - :code:`[root]/module.lm` - :code:`[root]/src/` - :code:`[root]/include/` (可选) 2. 接口映射语法(必需) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在 :code:`module.lm` 中使用 :code:`static` 绑定动态库 [1]_ [2]_ 编写动态库代码,需要包含Lamina的核心头文件"lmx.h",内部具有lamina的一些api与类型定义;无量纲实参剥离按 LSR-008 [3]_ 处理。 3 接口示例 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 假设有动态库 libadd.so,内有 LmInt add(LmInt a, LmInt b);函数 .. code-block:: text static "add" func so_add(a int, b int) -> int = "add" # 等于号后面为动态库的导出符号 4. 引用 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. [1] :doc:`LSR-000 - Lamina 核心语言规范(草案) ` - 核心类型系统、值语义,复合引用语义 .. [2] :doc:`LSR-004 - 标准库 ` - 标准库定义,扩展可作为补充实现 .. [3] :doc:`LSR-008 - 量纲剥离(Unit Stripping)规范 ` - 量纲剥离规则(扩展无量纲入参场景)