## 结构化正则表达式:一种新的文本处理方法
本文探讨了**结构化正则表达式**,这是Rob Pike提出的一种概念,旨在克服传统正则表达式在处理复杂文本结构时的局限性。与标准正则表达式不同,结构化表达式允许将较小、易于管理的表达式组合成管道,以将文本分解为有意义的块——避免了笨拙的单个表达式解决方案。
核心思想是串联运算符(`x`、`y`、`g`、`v`)用于匹配和过滤,然后是动作(`p`、`a`、`i`、`c`、`d`)来操作匹配的文本。这使得诸如分割文本、提取特定数据,甚至直接在表达式中编辑内容之类的逻辑成为可能。
作者展示了一个名为**structex**的Rust crate,它提供了一个通用的引擎来构建自定义文本处理工具。示例演示了structex如何优雅地从结构化文本(如姓名和语言)中提取数据并执行编辑(如交换“Emacs”和“Vim”)。
虽然提供了灵活性,但作者承认性能改进以及潜在的应用(如基于structex的`awk`)是未来的挑战。最终,结构化正则表达式提供了一种强大但非常规的文本操作方法,为我们与文本数据交互和处理的方式提供了不同的视角。
## 编程语言设计:概要
设计一种编程语言是一个迭代过程,涉及四个阶段:定义语境(受众、目的)、绘制示例、形式化语法与语义,以及原型设计。成功需要掌握编程范式(命令式、函数式等)、语言概念(类型、作用域、并发),并熟悉现有语言(Python、Lisp、Java等)。
关键设计决策包括选择语法(花括号、缩进等)、定义运算符及其优先级,以及建立静态(编译时)与动态(运行时)规则。一种语言的结构由其*抽象语法*定义,并通过*具体语法*实现——程序员实际编写的代码。像Ohm Editor这样的工具对于原型设计和测试语法至关重要。
形式化定义将语法(结构)与语义(含义)分离,通常用散文处理复杂的规则,而不是在语法本身中。学习现有的语言定义并考虑可学习性原则,对这个过程有益。
本课程通过构建五个示例语言——Astro、Bella、Carlos、Dax和Ekko——来探索语言设计,这些语言的复杂性逐渐增加,最终使用Ohm等工具实现实际编译器。最终,成功的语言设计需要在表达力、易用性和对底层原理的清晰理解之间取得平衡。
## ucs-detect: Unicode 终端兼容性测试
`ucs-detect` 是一个 Python 工具,旨在自动评估终端模拟器的 Unicode 支持,特别是针对宽字符、表情符号序列(ZWJ & VS-16)以及零宽度/组合字符在各种语言中的表现。它通过查询终端的光标位置,并将结果与 `wcwidth` 库规范进行比较来实现。
安装很简单,使用 `pip install -U ucs-detect` 即可。用户可以使用类似 `ucs-detect --save-yaml=data/my-terminal.yaml` 的命令运行详细测试并将结果保存为 YAML 文件。超过 20 个终端的广泛测试结果已公开可用 ([https://ucs-detect.readthedocs.io/results.html](https://ucs-detect.readthedocs.io/results.html) & [https://www.jeffquast.com/post/state-of-terminal-emulation-2025/](https://www.jeffquast.com/post/state-of-terminal-emulation-2025/))。
该工具解决了终端和库之间 Unicode 实现不一致的问题,并利用《世界人权宣言》(UDHR)数据集进行多语言测试。用户可以通过 pull request 贡献更新,并可以使用 `--stop-at-error` 标志进行交互式调试。
`ucs-detect` 有助于识别 Unicode 渲染中的差异,确保更好的兼容性和在不同语言中准确显示文本。
## HipKittens:释放AMD GPU的AI潜力
William Hu 等人团队推出了 HipKittens,这是一系列编程原语,旨在最大限度地提高 AMD GPU 在 AI 工作负载中的性能。虽然 AMD 的 MI355X GPU 提供了具有竞争力的硬件,但其潜力受到缺乏成熟的软件优化所阻碍。
HipKittens 通过关注三个关键领域来解决这个问题:**内存访问**、**处理器内调度**和**处理器间(芯片let)调度**。它利用优化的寄存器平铺、8 波和 4 波内核模式(避免 NVIDIA 的波特化方法)以及跨 AMD 芯片let 架构的缓存感知调度。
解决了 AMD 和 NVIDIA 硬件之间的关键差异——AMD 拥有更大的寄存器文件,但缺乏异步矩阵乘法和寄存器重新分配等功能。HipKittens 通过提供显式的寄存器控制和新颖的调度模式来弥补。该框架使用平铺作为基本数据结构,并提供类似于 PyTorch 的函数来操作这些平铺,直接封装汇编代码以提高效率。
基准测试表明,HipKittens 在 GEMM 和注意力机制上实现了最先进的性能,通常可以匹配或超过 NVIDIA 的性能,展示了优化 AMD GPU 利用率在 AI 方面的潜力。代码和研究论文已公开提供,旨在促进更加多样化和开放的 AI 硬件格局。