| fix: ES接口ABI兼容性修复,新增pimpl形式的V2结构体和接口
Co-authored-by: kobemini<gengchao4@huawei.com>
# message auto-generated for no-merge-commit merge:
!2306 merge es_bugfix00005 into develop
fix: ES接口ABI兼容性修复,新增pimpl形式的V2结构体和接口
Created-by: kobemini
Commit-by: kobemini
Merged-by: cann-robot
Description: 20250710评审通过
# Pull Request
## 描述
修复 ES (Eager Style) 对外接口中 std::string 导致的 ABI 不兼容问题。
**问题**: IrAttrDef/IrInputDef/IrOutputDef 结构体包含 std::string 字段,当外部使用者与 GE 库使用不同的编译器 ABI(如不同的 _std::__cxx11 命名空间配置)时,会导致 std::string 内存布局不一致,引发内存访问异常。
**修复内容**:
- 新增 IrAttrDefV2/IrInputDefV2/IrOutputDefV2 pimpl 结构体,对外仅暴露稳定大小的 Impl 指针,内部拷贝字符串内容,确保 ABI 安全
- 新增 IrDefInputsV2/IrDefOutputsV2/IrDefAttrsV2 接口,支持指针+长度和 initializer_list 两种调用方式
- V2 结构体使用 std::nothrow 分配内存,setter/getter 均做判空保护
- 参数化构造函数使用初始化列表形式,避免默认构造+赋值的开销
- 旧接口使用 ATTRIBUTED_DEPRECATED 宏标记废弃,保持向后兼容
- 旧结构体文档标注非 ABI 兼容说明,接口文档同时保留新旧原型
- codegen 和单元测试已迁移至 V2 接口
## 变更类型
- [x] Bug 修复
- [ ] 新功能
- [ ] 代码风格更新
- [ ] 重构
- [ ] 构建过程或辅助工具的变动
- [x] 文档内容更新
## 修改文件
- compliant_node_builder.h - 新增 V2 结构体声明和 V2 接口,旧接口标记废弃
- compliant_node_builder.cc - 实现 V2 结构体的 pimpl 逻辑
- c_generator.h - codegen 迁移到 V2 接口
- docs/graph_engine_api/*.md - 文档更新
- tests/ - 单元测试迁移到 V2 接口
- examples/ - 示例迁移到 V2 接口
## 核对清单
- [x] 我的代码遵循了项目的代码风格
- [x] 我已对代码进行了自测
- [x] 我已更新了相关的文档
- [x] 我在标题中使用了合适的类型标签
See merge request: cann/ge!2306 | 1 个月前 |
| Initial commit
| 5 个月前 |
| Initial commit
| 5 个月前 |
| fix: ES接口ABI兼容性修复,新增pimpl形式的V2结构体和接口
Co-authored-by: kobemini<gengchao4@huawei.com>
# message auto-generated for no-merge-commit merge:
!2306 merge es_bugfix00005 into develop
fix: ES接口ABI兼容性修复,新增pimpl形式的V2结构体和接口
Created-by: kobemini
Commit-by: kobemini
Merged-by: cann-robot
Description: 20250710评审通过
# Pull Request
## 描述
修复 ES (Eager Style) 对外接口中 std::string 导致的 ABI 不兼容问题。
**问题**: IrAttrDef/IrInputDef/IrOutputDef 结构体包含 std::string 字段,当外部使用者与 GE 库使用不同的编译器 ABI(如不同的 _std::__cxx11 命名空间配置)时,会导致 std::string 内存布局不一致,引发内存访问异常。
**修复内容**:
- 新增 IrAttrDefV2/IrInputDefV2/IrOutputDefV2 pimpl 结构体,对外仅暴露稳定大小的 Impl 指针,内部拷贝字符串内容,确保 ABI 安全
- 新增 IrDefInputsV2/IrDefOutputsV2/IrDefAttrsV2 接口,支持指针+长度和 initializer_list 两种调用方式
- V2 结构体使用 std::nothrow 分配内存,setter/getter 均做判空保护
- 参数化构造函数使用初始化列表形式,避免默认构造+赋值的开销
- 旧接口使用 ATTRIBUTED_DEPRECATED 宏标记废弃,保持向后兼容
- 旧结构体文档标注非 ABI 兼容说明,接口文档同时保留新旧原型
- codegen 和单元测试已迁移至 V2 接口
## 变更类型
- [x] Bug 修复
- [ ] 新功能
- [ ] 代码风格更新
- [ ] 重构
- [ ] 构建过程或辅助工具的变动
- [x] 文档内容更新
## 修改文件
- compliant_node_builder.h - 新增 V2 结构体声明和 V2 接口,旧接口标记废弃
- compliant_node_builder.cc - 实现 V2 结构体的 pimpl 逻辑
- c_generator.h - codegen 迁移到 V2 接口
- docs/graph_engine_api/*.md - 文档更新
- tests/ - 单元测试迁移到 V2 接口
- examples/ - 示例迁移到 V2 接口
## 核对清单
- [x] 我的代码遵循了项目的代码风格
- [x] 我已对代码进行了自测
- [x] 我已更新了相关的文档
- [x] 我在标题中使用了合适的类型标签
See merge request: cann/ge!2306 | 1 个月前 |
| Initial commit
| 5 个月前 |
| Initial commit
| 5 个月前 |
| fix: ES接口ABI兼容性修复,新增pimpl形式的V2结构体和接口
Co-authored-by: kobemini<gengchao4@huawei.com>
# message auto-generated for no-merge-commit merge:
!2306 merge es_bugfix00005 into develop
fix: ES接口ABI兼容性修复,新增pimpl形式的V2结构体和接口
Created-by: kobemini
Commit-by: kobemini
Merged-by: cann-robot
Description: 20250710评审通过
# Pull Request
## 描述
修复 ES (Eager Style) 对外接口中 std::string 导致的 ABI 不兼容问题。
**问题**: IrAttrDef/IrInputDef/IrOutputDef 结构体包含 std::string 字段,当外部使用者与 GE 库使用不同的编译器 ABI(如不同的 _std::__cxx11 命名空间配置)时,会导致 std::string 内存布局不一致,引发内存访问异常。
**修复内容**:
- 新增 IrAttrDefV2/IrInputDefV2/IrOutputDefV2 pimpl 结构体,对外仅暴露稳定大小的 Impl 指针,内部拷贝字符串内容,确保 ABI 安全
- 新增 IrDefInputsV2/IrDefOutputsV2/IrDefAttrsV2 接口,支持指针+长度和 initializer_list 两种调用方式
- V2 结构体使用 std::nothrow 分配内存,setter/getter 均做判空保护
- 参数化构造函数使用初始化列表形式,避免默认构造+赋值的开销
- 旧接口使用 ATTRIBUTED_DEPRECATED 宏标记废弃,保持向后兼容
- 旧结构体文档标注非 ABI 兼容说明,接口文档同时保留新旧原型
- codegen 和单元测试已迁移至 V2 接口
## 变更类型
- [x] Bug 修复
- [ ] 新功能
- [ ] 代码风格更新
- [ ] 重构
- [ ] 构建过程或辅助工具的变动
- [x] 文档内容更新
## 修改文件
- compliant_node_builder.h - 新增 V2 结构体声明和 V2 接口,旧接口标记废弃
- compliant_node_builder.cc - 实现 V2 结构体的 pimpl 逻辑
- c_generator.h - codegen 迁移到 V2 接口
- docs/graph_engine_api/*.md - 文档更新
- tests/ - 单元测试迁移到 V2 接口
- examples/ - 示例迁移到 V2 接口
## 核对清单
- [x] 我的代码遵循了项目的代码风格
- [x] 我已对代码进行了自测
- [x] 我已更新了相关的文档
- [x] 我在标题中使用了合适的类型标签
See merge request: cann/ge!2306 | 1 个月前 |
| Initial commit
| 5 个月前 |
| Initial commit
| 5 个月前 |