Python 指导委员会一致批准了 **PEP 810,“显式惰性导入”**,称赞它比之前的尝试(PEP 690)有所改进。 关键特性引入了 **`lazy` 关键字**,用于延迟导入执行——优于 `defer` 等替代方案——并且将出现在导入语句的开头(例如,`from foo lazy import bar`)。 委员会提出了一些建议:拒绝使用 `dict` 的子类来实现,维持当前拒绝在 `__lazy_modules__` 中使用通配符导入,并明确指出 `.pth` 文件将*不*支持惰性导入。 此外,他们要求提供一个 `sys.get_lazy_imports()` 函数,澄清在设置惰性导入模式时的优先级(通过环境变量、命令行选项或 `sys.set_lazy_imports()`),并对惰性导入排序的风格保持中立,将其留给代码检查工具。 总的来说,委员会认为 PEP 810 为 Python 社区取得了宝贵的平衡。
## 17世纪科学中的赛博朋克根源
本文探讨了赛博朋克的核心要素——高科技、城市环境和反文化——与17世纪科学进步之间的惊人相似之处。它认为,将推理机械化的努力,以戈特弗里德·莱布尼茨的“普遍特征”(一种通用的科学语言)为例,预示了现代控制论,甚至黑客思维。
作者重点关注了一封最近发现的罗伯特·胡克写给莱布尼茨的信,赞扬了后者的项目。胡克设想这种语言不仅是科学进步的工具,更是一种*赋权*个人的手段,允许人们独立于权威自由探索思想——这是一种明显的“赛博朋克”愿景。
胡克本人——一位叛逆的发明家和创新者——体现了这种精神。作者认为胡克应该与莱布尼茨一同被视为控制论和赛博朋克核心反文化元素的奠基人,强调了他们共同的愿望,即通过技术创新挑战既定体系。这种比较邀请我们通过现代、类型化的视角重新评估历史上的科学进步。
## 产品市场契合之前:后端重写
Skald团队在推出他们的RAG API平台后不久,做出了一个非常规的决定,将后端从Python/Django重写为Node/Express + MikroORM。尽管有人建议优先发布并实现产品市场契合,然后再关注规模化,但他们选择重写是因为Python的异步能力存在重大挑战。
核心问题源于对LLM和embedding API的严重依赖,这需要大量的异步I/O。Django的异步支持被证明复杂且不可靠,与JavaScript的事件循环或Go的goroutine相比,基础薄弱。现有的解决方案感觉像是变通方法,而不是原生解决方案。
虽然考虑过FastAPI,但团队最终选择了Node,以统一他们的代码库——此前代码库分为Python和Node——并利用他们现有的基于Node的后台工作者。迁移用了三天时间,涉及大量的测试,并最终使吞吐量提高了大约3倍。
虽然失去了Django易用的ORM是一个缺点,但团队对更高效和可扩展的架构的长期益处持乐观态度,即使这意味着需要重建一些工具。他们公开承认自己对Python异步缺乏经验,并欢迎反馈,在GitHub上分享他们的PR以供社区审查。
## 终端 Unicode 支持:2024 年更新
本文是对 2023 年“终端模拟器大乱斗 – Unicode 版!”的后续,使用 `ucs-detect` 工具进行更新测试,该工具现在能够自动检测对 DEC 私有模式、六边形图形、像素大小和软件版本的支持。核心挑战依然是:在固定宽度网格内准确渲染 Unicode 的庞大范围。终端经常错误计算字符宽度,导致对齐问题和难以阅读的文本。
**Ghostty** 和 **Kitty** 成为表现最佳的终端,其中 Ghostty – 一个用 Zig 构建的新终端 – 展现了特别正确的 Unicode 实现。Kitty 的文本分割算法与 Python `wcwidth` 规范紧密一致,凸显了对 Unicode 标准的共同承诺。
测试揭示了显著的性能差异;**iTerm2** 和 **GNOME Terminal** 明显较慢。作者优化了 `wcwidth` 库,发现其现有的 LRU 缓存二分查找对于重复性的人类语言来说最有效。
该研究还发现了不一致性(例如 **Terminology** 的结果波动)和报告方面的局限性(例如 **Konsole** 和 **Contour** 的 DEC 私有模式支持)。展望未来,新兴的 **文本尺寸协议** 为可变大小的文本提供了一条有希望的途径,可能提高复杂脚本的可读性并增强可访问性。