SuperAPI AI 工具集

stata-c-plugins

通用与其它

查看项目

更新于 10-15 21:36

技能介绍

用途:为 Stata 开发高性能 C/C++ 插件,覆盖从 SDK 设置到跨平台分发的完整生命周期,基于统计插补、随机森林、字符串匹配、因果推断等生产插件的实践经验。开发环境假定为 macOS(Apple Silicon 或 Intel),构建命令、交叉编译与 Docker 说明均面向 Mac;插件本身面向 macOS ARM64、macOS x86_64、Linux x86_64、Windows x86_64 四个平台。

主要能力:使用 stplugin.h 与 stplugin.c(下载自 https://www.stata.com/plugins/)定义 C 代码与 Stata 的接口,核心函数包括 SF_vdata、SF_vstore、SF_nobs、SF_nvar、SF_is_missing、SF_display、SF_error,索引均为 1-based。每个插件实现 stata_call(int argc, char *argv[]) 入口,C++ 插件需用 extern "C" 包装。返回码:0 成功、198 语法错误、909 内存不足、601 文件未找到。

使用方式:先进入计划模式,盘点功能、确定架构(包装 C++ 后端、从零写 C 或纯 Stata)、列出需引用的参考文件;按组件顺序实现、组件内并行,每个组件后运行多智能体审查循环直至全部 LGTM。翻译项目优先包装已有 C/C++ 后端而非重写算法。.ado 封装采用 preserve/merge 模式,用 merge_id 稳定键与 merge ... update 回填结果。插件加载使用 gtools 风格 OS 检测与裸文件名,命名 pluginname_os.plugin(macosx、unix、windows);不要用 findfile 加绝对路径。跨平台编译:macOS 用 gcc -arch arm64 -bundle,Linux 用 gcc -shared,Windows 用 x86_64-w64-mingw32-gcc -shared -lwinpthread;Linux 需通过 Docker(Colima)在 Ubuntu 18.04 上构建以兼容 glibc。

适用场景:统计插补、随机森林、字符串匹配、因果推断等需要高性能的 Stata 插件开发与翻译。

限制:插件崩溃会终止整个 Stata 会话且无保存提示,必须检查 malloc/calloc 返回值、校验 argc、开发期使用 -fsanitize=address。插件无法访问 Stata 内部 RNG,需自备 XorShift RNG。工作线程不得调用 Stata SDK 函数。排序契约错误会导致静默读取错误数据。其余细节暂未提供。