Q+ 文档

宏与 FFI 现状(1.7.0-dev / v4.38)

English summary. Macros are declarative and expand before parsing into ordinary syntax (no runtime objects/opcodes; VM/AOT identical). M1-lite: repetition, fragment classes, hygiene v2; single-level repetition, no $crate/path hygiene, no M2/procedure macros. FFI is controlled extern "C" with a small VM shim table (puts/strlen), scalar/borrowed strings; unknown externs and non-C ABIs are loud; AOT has no shim table → loud build failure.

宏 M1-lite(1.3.0-dev 起)

声明式、parse 前展开的宏;1.3 起的 M1-lite 扩展:

macro arr($($x: expr),*) { [$( $x ),*] }
macro each_out($($x: expr),*) { $( print($x); )* }

fn main() -> i32 {
    let a: i32[3] = arr!(1, 2, 3)
    print(a[0] + a[1] + a[2])
    print(" ")
    each_out!(4, 5, 6)
    print("\n")
    return 0
}

FFI:受控 extern "C"

Modules B(1.4.x)

1.4.x 已并入 Modules B Phase2.1 + bugfix:原生 module map、pkg.mod::name 限定路径(单层)、 enum variant 路径、TC16/TC17 可读诊断。不是完整模块 B/2.0:类型深度上限 8、source map 仅诊断用、跨模块同名非 pub 需手工唯一化(同名 loud)、AOT-native 模块 2.0 未做、qpm 完整集成未做。

不得宣称

← Q+ Hub