go2rust实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 「半空」富脚手架模式 字节 Go2Rust 工程落地实践 演讲人:范广宇 2025.9.20
2. 目录 |Contents Part 01 背景Part 02 富脚手架模式Part 03 未来展望 Go2Rust 的收益与挑战Go2Rust 迁移的完整解决方案未来工作展望
3. 01 背景 Go2Rust 的收益与挑战,LLM 和 ABCoder 为 Go2Rust 带来全新解决方案
4. Rust 迁移的背景 Golang -> Rust 迁移收益 •Golang 服务在迁移至 Rust 后,取得 40~50% 的 CPU 收益,10~70% 的 P99 时延 •Golang 服务在迁移至 Rust 后,内存安全性、服务稳定性、运维成本均得到收益 Golang -> Rust 迁移挑战
5. ABCoder: AI-Based Coder ABCoder:一套 LLM 驱动的项目理解并应用的 编程语言解决方案,它拥有一套完整的工作流, 包括代码解析器、知识库构建、常用AI 工具等 核心能力:将代码仓库抽象为一棵具有节点调 用关系的语法树。
6. Go2Rust 迁移的发展与变迁
7. 「半空」:ABCoder X LLM 的 Go2Rust 解决方案 富脚手架模式:Go2Rust 一站式解决方案 • 目标:为用户的 Go 项目交付一套 100% 可编译的、具有原始业务逻辑的 Rust 脚手架(0-1),用户可“开箱即用”,配合半空 插件快速迁移 • 特点: • 依赖翻译 & 半径控制:依赖级联翻译,避免阻塞迁移;控制依赖深度,收敛依赖层数 • 编译优先:优先保证整体脚手架可编译 • IDE 亲和:提供 IDE 插件,配合用户完成迁移准备、业务迁移、持续迭代的工作
8. 02 富脚手架模式 全面迈向 Go2Rust 迁移"自动档"时代的完整解决方案
9. 人工 Golang 迁移 Rust 的流程 Go2Rust 迁移流程 说明 半空解决方案 项目立项•明确迁移项目的可行性、资源分配和目标等 项目梳理•全面梳理项目的业务逻辑、接入的组件以及代码的边缘情况, • 自动梳理、制定方案 为制定迁移方案做好充分准备 技术调研 & 选项 • 调研 Rust 开发框架和组件生态,确保能够快速重写现有功 •自动映射组件 •共同完成 •自动迁移 •提供 IDE 插件 能并持续维护 人力规划 • 评估团队对 Rust 的熟悉程度,确保团队能够持续投入 Rust 的开发 项目开发•实际投入人力进行项目整体迁移 项目验收•测试、上线 持续迭代•后续使用 Rust 对项目进行持续开发
10. 富脚手架模式的展示形式 以 IDE 插件形式对外提供服务 • •产品融入现代智能 IDE(Trae、VSCode) •所有交互通过 IDE 完成 一站式的Go2Rust解决方案 • •翻译前:项目梳理、依赖分析 •翻译中:自动迁移 Golang 到 Rust •翻译后:自动修错,高质量交付
11. 富脚手架模式的执行流程
12. 翻译前:项目迁移的“全自动规划书” 1. 项目深度理解文档
13. 翻译前:项目迁移的“全自动规划书” 2. 依赖梳理
14. 翻译前:项目迁移的“全自动规划书” 3. 接口梳理
15. 翻译前:项目迁移的“全自动规划书” 4. 迁移规划书 • 基于上述分析,自动生成规划书 & 分析翻译难度 • 与业务同学共同确定最终迁移的时间安排 & 人力规划
16. 富脚手架模式的执行流程
17. 翻译中:全自动地 Go2Rust 流程 1. IDE 插件一键触发
18. 翻译中:全自动地 Go2Rust 流程 2. 框架映射 & 代码生成
19. 翻译中:全自动地 Go2Rust 流程 2. 节点翻译: • 函数节点:业务逻辑抽象、LLM 意译翻译 • 变量节点:指定映射规则、LLM 意译翻译 • 类型节点:指定映射规则、LLM 意译翻译
20. 翻译中:全自动地 Go2Rust 流程 2. 节点翻译: 函数翻译流程
21. 翻译中:全自动地 Go2Rust 流程 2. 节点翻译: 依赖处理方式 依赖类型处理策略技术手段 本地依赖递归翻译• 自底向上先翻译被依赖的节点,确保翻译函数前, 其依赖的节点被翻译好 级联翻译• 提前识别并标记业务封装的 SDK • 同本地依赖的处理方式,递归翻译业务 SDK 节点 • 确保翻译函数前,其依赖的SDK节点被翻译好 内部基础组件知识库映射• 提前构建内部组件的 Rust 使用知识库 • 翻译函数前,如果使用了内部组件,则提前召回这 些组件的 Rust 使用方法 开源组件知识库映射 & 模型内置知识• 如果知识库已有知识,则召回这些使用方法 • 如果知识库没有知识,则使用模型内置知识,利用 模型本身的能力进行映射 业务 SDK
22. 翻译中:全自动地 Go2Rust 流程 2. 节点翻译: 知识召回
23. 翻译中:全自动地 Go2Rust 流程 2. 节点翻译: 示例 1. Golang 源代码 • 函数本身 2. 依赖列表 • xxx/logs:内部 log 库 • xxx/yyy/constant: 本地依赖 提取翻译信息 • xxx/yyy/kitex_gen/example:本地依赖 • xxx/yyy/redisdoc:本地依赖 • xxx/yyy/redis: 内部 Redis 组件 3. 知识召回 • logs:在 rust 中使用 “tracing”打印日志 • redis:在 rust 中使用 “byted_redis”操作 Redis
24. 翻译中:全自动地 Go2Rust 流程 2. 节点翻译: 示例
25. 翻译中:全自动地 Go2Rust 流程 3. 接口链路翻译 • 基于梳理好地接口调用链路,自底向上地翻译每一个节点,直到调用链路全部翻译完毕
26. 富脚手架模式的执行流程
27. 翻译后:高质量的 Rust 代码交付 1. 基于 LLM Agent 驱动的代码质量优化 • 遍历函数,优化代码风格,使得翻译好的 Rust 代码符合最佳实践 • 获取 Rust 编译报错,使用 LLM 多轮修复,直至可编译状态
28. 翻译后:高质量的 Rust 代码交付 2. 无缝逻辑校验:一键跳转回 Golang 源码
29. 翻译后:高质量的 Rust 代码交付 3. 翻译质量回收
30. 展望 01 02 Research 架构探索持续推广 & 优化 提高翻译维度,发挥模型 的能动性,实现 Go2Rust 重构级翻译建立完善的用户行为反馈 机制,基于用户的修改动 作优化翻译质量
31. Q&A
32. THANKS

trang chủ - Wiki
Copyright © 2011-2026 iteam. Current version is 2.148.3. UTC+08:00, 2026-01-09 23:51
浙ICP备14020137号-1 $bản đồ khách truy cập$