Crystal 1.22.0 现已推出,自 1.21.1 版本以来包含 33 位贡献者提交的 251 项变更。预构建软件包可在 GitHub Releases 和官方分发渠道获取,安装说明请见 crystal-lang.org/install。
一项值得注意的变更是:当写入 STDOUT 或 STDERR 因 EPIPE 失败时,Crystal 进程现在会立即退出,这与默认的 SIGPIPE 行为十分相似。偏好旧行为的开发者可以通过 STDOUT.exit_on_broken_pipe = false 选择退出。常量现在也可以带有类型声明,例如 QUX : Int64 = 123 会相应地进行类型转换。
在平台方面,aarch64-linux-gnu 和 aarch64-linux-musl 目标从 Tier 2 升级为 Tier 1,因为自 1.19 起已提供官方构建。自 1.0 之前就已弃用的 Process.fork 终于被移除。DWARF 解析器也经过重构,以提升性能并降低内存占用,采用按需扫描段以及用于缓存已解码回溯行的 LRU 缓存。
此版本还为所有目标平台带来了原生事件循环:在 Solaris 上使用 epoll,在其余 BSD 目标上使用 kqueue,同时 libevent 变为严格的可选项。OpenSSL 绑定中的内核 TLS 支持现已默认启用,并包含大量 HTTP 修复与改进。
来源: Hacker News · 由HeadlinesBriefing整理摘要