《张正-2023RustChinaConf大会-KCL.pdf》由会员分享,可在线阅读,更多相关《张正-2023RustChinaConf大会-KCL.pdf(25页珍藏版)》请在三个皮匠报告上搜索。
1、第三届中国Rust开发者大会KCL:Rust 在编译器领域的实践与探索张正蚂蚁集团Agenda01 KusionStack 与 KCL02 用 Rust 重写 KCL03 Rust 重写后的收益04 更多的探索01KusionStack 与 KCLKusionStack是什么?KusionStack架构KCLKusionStack 是什么?KusionStack 是开源的云原生可编程技术栈!1.围绕现代应用程序交付以及使用 OCI 镜像对配置和策略进行编码和统一2.组织应用程序资源,并在整个交付过程中通过身份确保安全3.为 Kubernetes 和云精简应用交付工作流,并提供开发友好的体验基于
2、 Platform as Code(平台服务即代码)理念,研发者可以用统一的组织和操作界面定义应用交付生命周期,充分利用Kubernetes和云的混合能力,通过端到端的交付工作流程,真正实现集中定义、随处交付。KusionStack 架构 KCL:面向应用研发者的配置策略专用高级编程语言,及其协议组,工具链及 IDE 插件 Kusion:运维引擎、工具链、服务层,IDE 工作空间及社区技术集成套件 Konfig:应用配置及基础模型共享仓库,及面向 GitOps 工作流程(如 GitHub Actions)的自定义 CI 套件KusionStack 实践KCLTools&CI/CD Engage
3、mentkcl-formatkcl-lintkcl-testkcl-docKCLKCL CodingCoding AssistantAssistantHighlightGo To Def/RefCompletionFormatCompileDebugError/Warning CheckingTestLSPKCL Language ServerKCL CompilerKCL Package ManagerKCL Package Manager 02用 Rust 重写 KCLPython 代码翻译栈式虚拟机Rust 编译器KCL 编译器架构升级Source CodeASTLLVM IRNativ
4、e/WASMSource CodeASTBit codeVMSource CodePython codeProsCons简单易上手生态丰富研发效率高性能问题 无法满足自动化系统需求稳定性问题 None 空对象,属性不存在等运行时错误我们遇到了哪些问题?1.Go,Python,Rust 性能对比 为什么选择 Rust?https:/ Native Code简单Casea=10.05s0.125s0.012s0.01s0.008s0.6s0.001sforb=i for i in rang(20000)0.065s0.17s0.055s0.036s0.011s1s0.01sfor(200000)b
5、=i for i in rang(200000)0.063s0.187s0.055s0.044s0.040s1.99sN/Aforb=i for i in rang(2000000)0.177s0.739s0.304s0.282s0.283s13.32sN/A2.越来越多的基础设施选择 Rust3.更好的性能和稳定性4.通过 FFI 暴露 C API 供多语言使用和扩展、方便集成5.WASM 支持友好6.智能合约语言?为什么选择 Rust?03重写的收益稳定性和性能提升IDE:用户体验提升源于 Rust 强大的编译检查和错误处理方式,更少的 Bug稳定性提升端到端编译执行性能提升了 66%66
6、%20&40前端解析器性能提升 20倍中端语义分析器性能提升40倍稳定性和性能的巨大提升50%语言编译器编译过程平均内存使用量变为原来 Python 版本的一半01020304Case1:单文件编译 https:/ https:/ 重写的 LSP 极大的提升了用户体验端到端响应时间:6s-100 ms04更多的探索CompilerBase:通用编译器组件IDE 友好的编译器架构RustCodeBook:Rust源码解读Compiler Base:更通用的编译器组件KCLSource CodeASTLLVM IRNative/WASMSmart ContractSource CodeASTLLV
7、M IRABI Error Span&SourceMap Session Paraller IDE 友好的编译器架构1.错误恢复:不完整代码的编译代码补全错误代码的语义分析2.增量编译大规模场景下的编译优化和 IDE 性能提升编译粒度:项目-文件-函数/定义3.结构化语义模型(Structured Semantic Model)Using the tree as a store for semantic info is convenient in traditional compilers,but doesnt work nicely in the IDE.A structured seman
8、tic model is basically an object-oriented representation of modules,functions and types which appear in the source code.This representation is fully resolved:all expressions have types,all references are bound to declarations,etc.RustCodeBook:Rust 源码解读https:/ Sitehttps:/kusionstack.io/https:/kcl-lang.io/Githubhttps:/ you!