-
第三届中国Rust开发者大会 KCL: Rust 在编译器领域的实践与探索 张正 蚂蚁集团 Agenda 01 KusionStack 与 KCL 02 用 Rust 重写 KCL 03 Rust 重写后的收益 04 更多的探索 01 KusionStack 与 KCL KusionStack是什么? KusionStack架构 KCL KusionStack 是什么? Language Server KCL Compiler KCL Package Manager 02 用 Rust 重写 KCL Python 代码翻译 栈式虚拟机 Rust 编译器 KCL 编译器架构升级 Source Code AST LLVM IR Native/WASM Source Code AST Bit code VM Source Code Python 更少的 Bug 稳定性提升 端到端编译执行性能提升了 66% 66 % 20 & 40 前端解析器性能提升 20倍 中端语义分析器性能提升40倍 稳定性和性能的巨大提升 50 % 语言编译器编译过程平均内存使用 量变为原来 Python 版本的一半 01 02 03 04 Case1: 单文件编译 > https://github.com/KusionStack/kcl#showcase
0 码力 |
25 页 |
3.50 MB
| 1 年前 3
-
从汇编角度看编译器优化 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 cpu 缓存机制 4GB 限制外,也有一定性能优势。 8 位, 16 位, 32 位, 64 位版本 al, ax, eax, rax r15b, r15w, r15d, r15 AT&T 汇编语言 GCC 编译器所生成的汇编语言就属于这种 返回值:通过 eax 传出 movl $42, %eax 相当于: eax = 42; 前 6 个参数:分别通过 edi , esi , edx , ecx , r8d
0 码力 |
108 页 |
9.47 MB
| 1 年前 3
-
反向兼容性 原生 Kotlin/Native 入门——在 IntelliJ IDEA 中 Kotlin/Native 入门——使用 Gradle Kotlin/Native 入门——使用命令行编译器 与 C 语言互操作 1.10.2.4.1 1.10.2.4.2 1.10.2.4.3 1.10.2.4.4 1.10.2.4.5 1.10.2.4.6 1.10.2.5 1.10 Kotlin/JS 开发服务器与持续编译 调试 Kotlin/JS 代码 在 Kotlin/JS 平台中运行测试 Kotlin/JS 无用代码消除 Kotlin/JS IR 编译器 将 Kotlin/JS 项目迁移到 IR 编译器 Kotlin 用于 JS 平台 浏览器与 DOM API 在 Kotlin 中使用 JavaScript 代码 动态类型 使用来自 npm 的依赖 在 JavaScript 关键字与操作符 语法↗ 语言规范↗ 工具 构建工具 Gradle Gradle 概述 Gradle 入门——教程 配置 Gradle 项目 Kotlin Gradle 插件中的编译器选项 Kotlin Gradle 插件中的编译项与缓存 支持 Gradle 插件变体 Maven Ant Dokka 简介 Dokka 入门 运行 Dokka Gradle Maven
0 码力 |
3753 页 |
29.69 MB
| 1 年前 3
-
反向兼容性 原生 Kotlin/Native 入门——在 IntelliJ IDEA 中 Kotlin/Native 入门——使用 Gradle Kotlin/Native 入门——使用命令行编译器 与 C 语言互操作 与 C 语言互操作性 映射来自 C 语言的原始数据类型——教程 映射来自 C 语言的结构与联合类型——教程 6 1.10.2.4.4 1.10.2.4.5 1.10 Kotlin/JS 开发服务器与持续编译 调试 Kotlin/JS 代码 在 Kotlin/JS 平台中运行测试 Kotlin/JS 无用代码消除 Kotlin/JS IR 编译器 将 Kotlin/JS 项目迁移到 IR 编译器 Kotlin 用于 JS 平台 浏览器与 DOM API 在 Kotlin 中使用 JavaScript 代码 动态类型 使用来自 npm 的依赖 在 JavaScript 关键字与操作符 语法↗ 语言规范↗ 工具 构建工具 Gradle Gradle 概述 Gradle 入门——教程 配置 Gradle 项目 Kotlin Gradle 插件中的编译器选项 Kotlin Gradle 插件中的编译项与缓存 支持 Gradle 插件变体 Maven Ant Dokka 简介 Dokka 入门 运行 Dokka Gradle Maven
0 码力 |
2049 页 |
45.06 MB
| 1 年前 3
-
"browserify": { "transform": [["babelify", { "presets": ["latest"] }]] } } 在线转换 Babel 提供一个REPL在线编译器,可以在线将 ES6 代码转为 ES5 代码。转换后的 代码,可以直接作为 ES5 代码插入网页运行。 与其他工具的配合 许多工具需要 Babel 进行前置转码,这里举两个例子:ESLint 和 面可以使用 ES6 代码。 注意,第四个 script 标签的 type 属性的值是 module ,而不 是 text/javascript 。这是 Traceur 编译器识别 ES6 代码的标志,编译器会自 动将所有 type=module 的代码编译为 ES5,然后再交给浏览器执行。 除了引用外部 ES6 脚本,也可以直接在网页中放置 ES6 代码。