2.1.5 Go语言编译器简介中国 上海 / 2020-11.21-22 Go语言编译器简介 ’ alt=‘OCR图片’/> 关于我 Contributors to golang/go · GitHub 给Go编译器提交过127个补丁,累计六万余行; 拥有Go官方git仓库提交权限; 全球贡献者排名长期处于前50名; 世界上90%的gopher都用过我写的代码; 编译器的重要性 只有1%的程序员懂汇编语言 汇编语言无法构建大型系统 汇编语言无法构建大型系统 操作系统内核也需要编译器才能运行起来 编译理论是图灵奖大户,仅次于计算复杂度理论 操作系统有后门,编译器的后门更致命 编译器的难题:任务爆炸 N种语言 * M种机器 = N*M 个任务 GOPHER CHINA 2020 中国 上海 / 2020-11.21-22 两个方案 $$ N \mathrm {种 语 言} + M \mathrm {种 机 器} = {个 任 务} $$ 其它语言 -> C -> 各个机器 各个语言 -> x86 -> 其它机器 GOPHER CHINA 2020 中国 上海 / 2020-11.21-22 通用(非专用)编译器的方案 AST = Abstract Syntax Tree抽象语法树 SSA = Single Static Assignment单静态赋值 IR = Intermediate Representation中间表示0 码力 | 36 页 | 1.63 MB | 3 月前3
KCL: Rust 在编译器领域的实践与探索## RUST CHINA CONF 2023 第三届中国Rust开发者大会 6.17-6.18 @Shanghai ## KCL: Rust 在编译器领域的实践与探索 张正 蚂蚁集团 ## 😍 01 KusionStack 与 KCL 02 用 Rust 重写 KCL 03 Rust 重写后的收益 04 更多的探索 ## 01 KusionStack 与 KCL ## KusionStack是什么 add1b5abffd9fb8525138fc88bca0/p9_2.jpg) ## 2 KCL 编译器架构升级 Python 代码翻译 Source Code Python code 栈式虚拟机 Source Code AST Bit code VM Rust 编译器 Source Code AST LLVM IR Native/WASM ## R ## 我们遇到了哪些问题? 强大的编译检查和错误处理方式,更少的 Bug 03 20 & 40 前端解析器性能提升 20倍 中端语义分析器性能提升40倍 ## 02 66% 端到端编译执行性能提升了66% ## 04 50% 语言编译器编译过程平均内存使用量变为原来 Python 版本的一半 ## Case1: 单文件编译 > https://github.com/KusionStack/kcl#showcase ## …0 码力 | 25 页 | 3.50 MB | 2 年前3
The Next G of PHP--鸟哥@PHPCON20170 码力 | 25 页 | 297.68 KB | 2 年前3
C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化## AMD # 从汇编角度看编译器优化 by 彭于斌 (@archibate) 往期录播:https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码:https://github.com/parallel101/course 的压力。 • 因此 64 位比 32 位机器相比,除了内存突破 4GB 限制外,也有一定性能优势。 # 8 位,16 位,32 位,64 位版本 al0 码力 | 108 页 | 9.47 MB | 2 年前3
Julia 中文文档我们不会舍弃动态的特性。幸运的是,现代编程语言设计与编译器技术可以大大消除性能折衷(trade-off),并提供有足够生产力的单一环境进行原型设计,而且能高效地部署性能密集型应用程序。Julia 语言在这其中扮演了这样一个角色:它是一门灵活的动态语言,适合用于科学计算和数值计算,并且性能可与传统的静态类型语言媲美。 由于 Julia 的编译器和其它语言比如 Python 或 R 的解释器有所不同,一开始你可能发现 解了 Julia 的运作方式后,写出和 C 一样快的代码对你而言就是小菜一碟。 Julia 拥有可选类型标注和多重派发这两个特性,同时还拥有很棒的性能。这些都得归功于使用 LLM 实现的类型推导和即时编译(JIT)技术。Julia 是一门支持过程式、函数式和面向对象的多范式语言。它像 R、MATLAB 和 Python 一样简单,在高级数值计算方面有丰富的表现力,并且支持通用编程。为了实现这个目标,Julia (primitive)还是用户自定义的类型。大多数的动态语言都缺乏类型声明,这意味着程序员无法告诉编译器值的类型,也就无法显示式地讨论类型。另一方面,在静态语言中,往往必须标注对象的类型。但类型只在编译期才存在,而无法在运行时进行操作和表达。而在Julia中,类型本身是运行时的对象,并可用于向编译器传达信息。 类型系统和多重派发是 Julia 语言最主要的特征,但一般不需要显式地手动标注或使用:0 码力 | 1238 页 | 4.59 MB | 2 年前3
Julia 1.1.0 Documentation0 码力 | 1214 页 | 4.21 MB | 2 年前3
WebAssembly 简介 - 陈思衡@Shanghai WebAssembly 介绍 ## WebAssembly 简介 WebAssembly(简称 Wasm)是一种新的编译目标,帮助在 web 中运行高性能应用。它是一种低级语言,设计为编译器目标,以在 web 浏览器中高效运行。 ## WebAssembly 简介 ## #高性能 WebAssembly 代码可以以接近原生的速度运行,且具有很小的二进制大小和快速加载速度。 ## # Mozilla、Google、Microsoft 等主要浏览器供应商共同设计。它现已在所有主流浏览器中实现,包括 Chrome、Firefox、Safari 和 Edge。 ## # 多语言支持 现在多种语言都有编译器支持 WebAssembly,如 C/C++、Rust、Go、Zig 等。 ## WebAssembly 简介 ## WebAssembly 机制 ## memory Wasm 的 memory ); println("[wasm] exit"); } Async Wasm 解决方案 ## 基于 Asyncify(Binaryen) Binaryen 是一个编译器基础架构库,提供了一套用于处理 WebAssembly 的工具。其中一个功能是 asyncify,它允许将同步的 WebAssembly 代码转换为异步代码。就像 rust 对 async function0 码力 | 24 页 | 773.46 KB | 2 年前3
Go 1.18 中的泛型类型断言),例如: func f(x any) { if _, ok := x.(interface{ Bar(int) }); ok { // ... } } 编译器无法提前得知是否应该给 X 生成 Bar(int) 方法 ## 类型集的本质 类型集的基本想法是设计一种能够表达一类类型的机制,这就是集合论的基本想法。设计这种机制的核心难点是保证不会出现罗素悖论 interface { ConstraintA | ConstraintB // 并集 ConstraintMethodC() // 交集 } 这个问题是一个 NP 完全问题(Cook-Levin 定理)。 编译器在编译期间执行这类检查,如果不对规则加以限制,则将在某些情况下极大的增加编译时间。 这最终导致了 "并集元素中不能包含具有方法集的参数 类型" 这一限制. Go 1.18 中的类 目前的泛型(1.18, 但很可能在 1.20 之前都)还比较基础且限制较多(也不排除永远不会解除这些限制)很多原因是权衡了编译器编译速度的结果(而非标新立异) 期待未来的改进空间 1. 取消前面提到的限制 2. 支持 parameterized aliases 3. 编译器改善 ## 讨论 泛型在哪些基础库得到广泛应用? 泛型对于 Go 语言的简单性是一种破坏吗? 使用泛型会对性能有提升吗?0 码力 | 45 页 | 501.50 KB | 2 年前3
how webpack works0 码力 | 26 页 | 2.35 MB | 2 年前3
Linux Lab v1.3 中文手册|2|组件|支持 U-Boot,Linux,Buildroot,QEMU。支持 Linux v0.11,v2.6.10 ~ v5.x| |3|预置组件|提供上述组件的预先编译版本,并按开发板分类存放,可即时下载使用| |4|根文件系统|支持 initrd,harddisk,mmc 和 nfs;ARM 架构提供 Debian 系统| |5|Docker|包括 gcc-4.3 在内的交叉工具链已预先安装,还可灵活配置并下载外部交叉工具链| 和 RISC-V 支持 ####### 1.6.2 v0.2 @ 2019.10.30 v0.2 新增原生 Windows 支持、新增龙芯早期全系 MIPS 架构处理器支持、新增多个平台外置交叉编译器支持、新增实时 RT 支持、新增 host 侧免 root 支持等,并首次被某线上课程全程采用。 • v0.2 rc3 – 新增原生 Windows 支持,基于 Docker Toolbox,无需通过 12 v0.5 提前升级到新镜像 Ubuntu 20.04,全面导入龙芯系列处理器支持,并进一步完善各种细微体验。 ### • v0.5 rc3 - 修复 arm/vexpress-a9 因编译器配置问题引起的 U-Boot 编译失败 - 进一步完善文档中对普通用户的使用要求,避免使用 root 带来的诸多问题 ### • v0.5 rc2 - 进一步改善 QEMU 编译体验,在 Gitee0 码力 | 73 页 | 1.54 MB | 2 年前3
共 461 条
- 1
- 2
- 3
- 4
- 5
- 6
- 47













