## Nimony:一个新的编译器 & Nim 的演进 Nimony 是 Nim 一种变体的全新编译器,旨在最终成为 Nim 3.0。完全复制 Nim 的特性是一个长期目标,但 Nimony 已经呈现出一种精简且实用的语言,专注于硬实时和嵌入式系统。其设计优先考虑通用性——如果它在嵌入式系统上运行良好,那么在任何地方都运行良好。 主要特性包括:通过避免 JIT 编译和追踪式垃圾回收来关注可预测的性能(WCET),以及将原始类型直接映射到机器字。内存管理采用基于作用域、析构函数/移动语义的方法(类似于 Nim 2.0 和 Rust),并正在开发一种新颖的循环收集算法,默认情况下为无环对象。 Nimony 在错误处理方面与传统方法不同,倾向于使用对象状态(如 NaN 浮点数或低整数)和线程局部错误,而不是异常或和类型,尽管 Nim 的异常仍然通过 `.raises.` 注解支持。它还引入了一个统一的 `ErrorCode` 枚举用于错误传播。 进一步的创新包括:通过可重写的 `oomHandler` 实现独特的内存不足 (OOM) 处理,强制的空指针安全性,使用概念进行泛型的完全类型检查,以及基于协程和 `spawn` 构造的统一并发模型。插件,由 Nim 宏演化而来,提供了强大的元编程能力。Nimony 正在积极开发中,目标在 2025 年秋季发布。
## 澳大利亚的第一批绵羊:脂肪尾绵羊
第一批绵羊于1788年随第一舰队抵达澳大利亚,约有29只,由阿瑟·菲利普船长在开普敦购买。这些并非如今常见的毛茸绵羊,而是来自中亚的开普脂肪尾绵羊。它们主要用于肉类生产,以其异常巨大的脂肪尾巴而闻名——这是南部非洲的一种美食,有时重量可达80磅!
这些绵羊在体型上与欧洲品种不同,前腿较长以支撑沉重的尾巴,步态蹒跚。虽然尾巴上的脂肪备受珍视,但这些绵羊的羊毛质量较差。因此,它们逐渐被殖民者进口的欧洲品种所取代,并最终与欧洲品种杂交,创造出如今的澳大利亚牲畜。
尽管在很大程度上被遗忘,但脂肪尾绵羊代表了澳大利亚农业历史中一个有趣的部分,标志着该国绵羊业的开端,与今天主宰景观的品种形成了鲜明对比。
## Gzip 压缩:意想不到的影响
作者最初对压缩持怀疑态度,但在为 Hatchet(一个分布式队列平台)实施 Gzip 压缩后,观点发生了转变。目标是通过 gRPC 减少服务器(Go)和客户端(Go、TypeScript、Python)之间传输的字节数,从而降低网络 IO 成本。
Gzip 的工作原理是识别并删除冗余数据(LZ77),然后用更短的字节表示常见的数据模式(霍夫曼编码)。测试结果显示出显著的效果:**所有 SDK 的数据传输量减少了 95-99%**。 这意味着显著的成本节约,特别是对于 Hatchet 典型的较大 JSON 有效负载而言。
然而,压缩并非免费。它为编码和解码都引入了 CPU 开销。集成测试表明,由于 CPU 使用率增加,出现了间歇性的性能下降。这凸显了一个关键的权衡:**压缩用 CPU 周期换取减少的网络带宽。**
最终,对于 Hatchet 来说,降低网络成本的好处超过了 CPU 的影响。这段经历强调了经常被忽视的互联网基础设施的力量,以及理解在实施此类技术时需要权衡的重要性。