标签: #compiler
关于 GPU、LLM、MLOps、Kubernetes 以及心态的文章 · 12 篇
当两个通过了类型检查的服务互相等着对方停住时 —— 编排式编程这条另辟蹊径的路
就算用了保证内存安全的语言,也挡不住两个服务互相等着对方的消息而停住 —— 因为类型检查器的视野到一个进程就到头了。编排式编程(choreographic programming)把整个系统写成一个程序,再让编译器把各节点的代码抽取出来,从而把这条边界本身消掉。本文以最近公开的 Wyzer 为线索,只用能确认到的事实,梳理端点投影是什么、死锁为什么在设计层面就消失了,以及这门语言目前处在哪个阶段。
2026-08-09 · 11 分钟阅读 #programming-languages#compiler#distributed-systems#type-systems#concurrency编写核函数的三个层次 — 用同一个问题比较 CUDA C++、Triton 与 CUTLASS
比较在编写同一个 GPU 核函数时,手写 CUDA C++、用 Python 按瓦片编写 Triton、用模板拼装 CUTLASS 与 CuTe 这三种方式各自带来的变化。我们实际用 CUDA C++ 和 Triton 分别编写一个按行 softmax 核函数,并排测量代码量与性能,并从编译流水线的层面解释这种差异从何而来。文章还具体说明了 Triton 为何成为自定义注意力核函数事实上的标准,以及 Triton 不擅长的具体领域。内容
2026-08-02 · 25 分钟阅读 #triton#cuda#cutlass#gpu-kernel#compilerGPU 编译器与框架全景图 — 接收计算图、产出核函数,同一个问题,每一层给出不同的答案
本文把 NVCC 与 PTX、LLVM、MLIR、Triton、torch.compile、XLA、IREE、TVM 全部放到同一张地图上。它们名字不同、所属组织也不同,但解决的是同一个问题:接收计算图,产出可执行的核函数。文章梳理了每一层切走了这个问题的哪一部分、层为什么会变得这么多,以及工程师在什么情况下需要下探到哪一层。内容基于 2026 年 8 月 2 日核实的版本与官方文档写成,未能核实之处也如实标出。
2026-08-02 · 32 分钟阅读 #gpu#compiler#mlir#triton#pytorchZig 0.16.0 — 把 I/O 变成接口的这次发布,以及它的账单
2026 年 4 月 14 日发布的 Zig 0.16.0,把标准库改成了所有输入输出都要以 Io 实例作为参数。这相当于把 Zig 那个「把 Allocator 作为参数传递」的老习惯原样搬到了 I/O 上,目的是让同一份源代码既能跑在基于线程的实现上,也能跑在事件循环上。但真正读一遍发布说明就会发现,完成的实现只有 Io.Threaded 一个;iouring 后端还处于概念验证阶段,缺网络处理、错误处理和测试覆盖;aarch64
2026-07-16 · 34 分钟阅读 #zig#systems-programming#async-io#compilerTriton Gluon — 把编译器藏起来的布局,重新用手写出来的语言
Gluon 是搭建在 Triton 同一套编译器栈之上的底层 GPU 语言,它把 Triton 一直藏起来的布局、共享内存、warp 特化,原样交还给写内核的人。它存在的理由很明确 — 当 Triton 编译器生成的代码不够好时,过去你根本没有办法插手。本文会追踪 Gluon 到底暴露了什么、BlockedLayout 具体意味着什么,以及上游教程在 GB200 上记录的测量值(同一个 memcpy,仅凭一个布局,就能在 0.774 T
2026-07-16 · 28 分钟阅读 #gpu#triton#kernel#compiler#performanceZJIT 的 Lightweight Frames — Ruby 4.1 如何清除方法帧压栈,及其代价
Ruby 4.0 在 2025 年 12 月 25 日搭载了 ZJIT,却没有打开它 — 只是编译进了二进制文件,默认的 JIT 依然是 YJIT。官方发布说明的原话是「ZJIT 比解释器快,但还没有 YJIT 快」,紧接着的下一句是「敬请期待 Ruby 4.1 的 ZJIT」。瞄准那个 4.1 的工作核心,就是 Lightweight Frames — 这是一种设计:不再在每次方法调用时向解释器帧里认真写入 pc、iseq、block
2026-07-16 · 29 分钟阅读 #ruby#zjit#yjit#jit#compilerRust 1.97 砍掉了 Volta 之前的 GPU — nvptx64 基线上调的内幕
Rust 1.97(2026 年 7 月 9 日)把 nvptx64-nvidia-cuda 目标的最低要求提升到了 PTX ISA 7.0(需要 CUDA 11 及以上驱动)和 SM 7.0(Volta 及以上)。Maxwell、Pascal 两代 GPU 以及 CUDA 10 及更早的驱动,如今都不再是支持目标。本文梳理了实际改变的数字、编译器团队引用的三个具体缺陷(调试符号、原子操作顺序、target-feature 机制)、谁会
2026-07-16 · 18 分钟阅读 #rust#cuda#gpu#compiler#nvidiaTypeScript 7 正式 GA — 8~12 倍是真的,但有些人今天还搬不了
2026 年 7 月 8 日,TypeScript 7.0 正式 GA。用 Go 重写的原生移植版不再是一个独立的二进制文件,而就是 tsc 本身 — 执行 npm install -D typescript 装进来的就是它。Microsoft 报告的整体构建速度提升是 8~12 倍,以 VS Code 代码库为例,从 125.7 秒降到了 10.6 秒。但标题背后藏着两笔成本。第一,TypeScript 6 里预告要废弃的东西全部变成
2026-07-16 · 27 分钟阅读 #typescript#compiler#tooling#build-systems#compile-timesReact Compiler 移植到了 Rust — 已合并的、尚未合并的,以及那个"10 倍"的数字
2026年6月9日,将 React Compiler 移植到 Rust 的 PR 36173 合并进了 facebook/react 的 main 分支。461 个文件、超过 12 万行代码被加入,"作为 Babel 插件快 3 倍,转换逻辑本身快约 10 倍"这个数字很快就开始在生态圈里流传。但在 PR 正文里,作者 Joseph Savona 本人明确写道——"性能数字是 AI 得出的,我没怎么花时间去验证基准测试的设置"。本文只依
2026-07-16 · 28 分钟阅读 #react#rust#compiler#performance#frontendElixir 1.20 的渐进类型系统 — 不写注解也能找到"已验证 bug",实际是怎么回事
2026年6月3日发布的 Elixir v1.20,完成了始于2022年的集合论类型系统的第一个里程碑。现在所有 Elixir 程序无需写一行类型注解就能被渐进式类型检查,编译器在守卫、函数体、分支之间推断类型,找出"一旦执行就必定在运行时炸掉"的违规和死代码。核心是 dynamic() 类型:和其他语言里 any() 会丢弃类型信息不同,Elixir 的 dynamic() 表现得像一个范围,会随代码收窄,只有当提供的类型与允许的类型
2026-07-16 · 27 分钟阅读 #elixir#type-system#beam#compiler#static-analysisKotlin Swift export 进入 Alpha — 正在拆掉 Objective-C 这座桥,但还不到过桥的时候
Kotlin Multiplatform 在 iOS 上一直缴纳的最大一笔税,就是 Objective-C 这座桥。Kotlin 代码要传到 Swift,必须先经过 Objective-C 头文件,而在这个过程中,Int? 会被装箱成 KotlinInt,泛型只保留在类上,suspend 函数会变成 completion handler。Swift export 想要拿掉这座中间桥,让 Kotlin 直接导出给 Swift,并在 202
2026-07-16 · 25 分钟阅读 #kotlin#kotlin-multiplatform#swift#ios#compilerClang 22 的 MSVC ABI 改动 — vector deleting destructor,以及仍留在 22.1.x 里的 delete[] 堆损坏
Clang 22.1.0(2026-02-24)在面向 MSVC ABI 时的析构函数代码生成上改了两处。一处是把 ::delete 的处理方式和 MSVC 对齐,另一处是加入了 vector deleting destructor 支持,让一个 2014 年提出的 issue 花了 11 年 7 个月才关闭。这两处都是真正修 bug 的改动,但因为改变了进入 vftable 槽位的符号,是一次 ABI 改动,所以如果混用 clang
2026-07-16 · 26 分钟阅读 #llvm#clang#cpp#compiler