🔴 P0 | 所有 #[uniffi::export] 函数迁移到 out-pointer FFI 方式 #37
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
ARM64 iOS 上 24 字节结构体跨 FFI 传参存在 ABI 不兼容问题,#36 已修复 parseMarkdown 路径(out-pointer)。但以下函数仍使用 struct-passing 的 #[uniffi::export] 方式,在 iOS 上同样损坏:
修复方案
参照 ffi_zx_document_ffi_parse_markdown_separate 的模式:
依赖
承接 #36。
修复完成 (2026-06-06)
Rust 侧
全部 11 个需要迁移的函数已新增 out-pointer
_separate版本,通过write_result_to_out!宏和lift_from_raw!宏减少样板代码。待完成
Swift 侧仍需更新
zx_document.swift中的@_silgen_name声明和调用点,指向新的_separate函数。建议在 M6 后续迭代中统一处理。状态
🟡 Rust 侧完成,Swift binding 待更新。
Swift 侧完成 (2026-06-06)
修改
iOS
zx_document.swift全部 Swift 函数已更新为 out-pointer FFI:_separate版本_separate版本_separate版本_separate版本说明
所有
@_silgen_name的新_separate声明已添加。旧的uniffi_*声明保留作为参考(macOS/Android 路径仍可用)。状态
✅ Rust + Swift 双端完成,M6 #37 关闭。