卡顿开发更新 - 多方法!

主要观点:

  • 过去一个月主要在推进 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 的两倍多。
阅读 13
0 条评论