M

M 不是新语言,是 E 的 MCU 受限档位(E 已实现白名单 ∪ E 的 Non-Goal 继承 ∪ M 档附加约束 c1-c5 三集合)。

能力矩阵(随 elangc 最新 同步)

能力状态说明
u8~u64/i8~i64 定宽可用 1.6.5+uint64_t 映射,8字节大数 golden
可调用性检查可用 1.6.5+非函数被调用=编译期报错
Region 引用 ref T设计目标·未实现(0923实测:ref T 语法层拒绝,v1.3卡01.03.07)引用不可返回+非引用解引用=编译错
[T;N] 定长数组可用 1.6.5+MCU 缓冲区载体
struct / enum / tableNon-Goal0918定版(design.html §六·五): C风格结构体布局不做, 数据布局走Region句柄/宿主边界; elangc 1.6.14起struct明确报错
i16/i32 算术可用(elangc 1.6.9 实测)MOS侧真机验证: i16定宽/负数可由运算产生/0-n写法可用,帧协议六轴+温度全 i16 已进帧流(0922更新)
f32 浮点待裁决Non-Goal 候选
堆分配/裸指针/无界循环禁止(门禁c1/c3为规划中·未生效;0923实测 while(1) 可编译,见17.07)门禁 c1/c3

编译期门禁五约束

约束错误码负向用例
c1 禁堆分配E_MCU_HEAPnew/动态数组→编译失败
c2 中断外调须标记E_MCU_ISR_CALL未标记被ISR调用→编译失败
c3 循环上界可证E_MCU_LOOP_BOUND无界循环→编译失败
c4 寄存器边界可证E_MCU_REG_BOUNDOffset+Width>Size→编译失败
c5 无隐式收窄E_MCU_NARROWu32→u16 无显式截断→编译失败

寄存器访问:ReadRegisterN / WriteRegisterN + Offset+Width ≤ Region.Size(照抄 E 官方替代路径)

状态声明(0919 更正):上表 E_MCU_* 五项门禁为规划中特性,当前编译器(elangc 1.6.13)尚未实现,负向用例当前不会被拦截。此前矩阵未标注状态导致误读为已生效,抱歉。实现排期见工单 #229/#258。

示例与验收

[VERIFIED·1.6.5] u64 定宽打包端到端(8字节大数 72623859790382856 golden)
[已验证 2026-09-22] CRC-32/ISO-HDLC 公开测向量——MOS侧双锚点验证,实机 315 帧由主机侧 Python zlib 独立复算 315/315 通过(原待位运算具名函数的排期已由 MOS 侧 frame_pack 合规实现落地)

M 档随 elangc 主版本演进,不单独发版;能力矩阵与 5022 版本登记同源。
注(0919):本矩阵部分条目正按外部复现件逐条复验中(见工单 #229),复验期间"可用"标注以 5022 版本登记实测为准,勿作承诺性依据。