Noalias 编译指示

从 Nim 编译器版本 1.4 开始,有一个用于变量和参数的 .noalias 注解。它被直接映射到 C/C++ 的 restrict 关键字,表示底层指向内存中的一个独占地址,此地址不存在其他别名。编译器 不检查 代码是否遵守了此别名限制。如果违反了限制,后端优化器就完全有可能错误地编译代码。这是一个 不安全的 语言功能。

理想情况下,在 Nim 之后的版本中,该限制将在编译时得以检查确认。(这也是为什么选择了 noalias 做名称,而不是描述更详细的名称,如 unsafeAssumeNoAlias 。)