主要观点:
- 过去一个月主要在推进 jank 向生产就绪迈进,重点是处理多方法和调试 Clang 19 问题。
- 介绍了 Clojure 中多方法的工作原理,包括定义调度函数、通用方法和特殊化方法等。
- Clojure 中的多方法基于多种层次结构匹配调度值,还介绍了相关的核心函数。
- 过去一个月大部分时间用于将 jank 移植到最新的 Clang/LLVM 版本,遇到了 Extern 模板和优化崩溃等问题。
- 本月 Saket Patel 在为 jank 添加字符支持,这是 jank 中仅剩未实现的语法对象。
- 接下来将继续调查 jank 中与某些序列类型相关的问题,然后实现
clojure.test
。
关键信息:
- 多方法定义示例,如
sauce-suggestion
函数。 - Clojure 多方法的层次结构,如基于类类型和自定义层次结构。
- Clang/LLVM 19 的问题,包括 Extern 模板导致的 JIT 链接问题和优化崩溃导致无法切换到 Clang。
- Saket Patel 为 jank 添加字符支持的 PR 仍在审核。
重要细节:
make-hierarchy
等 7 个与层次结构相关的核心函数已实现,以及实现多方法过程中所需的其他核心函数。- 在调试 Clang 19 问题时,通过二分法找到引入问题的提交。
- 调试优化崩溃问题时,仅在发布版本中出现,在 Clang 18 中不存在。
- 移植到 Clang 在调试构建中可通过全测试套件,且 Clang 19 在 JIT 编译大量生成的 C++代码时速度是 Cling 的两倍多。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。