所以你想序列化一些 DER 吗?·亚历克斯·盖纳

主要观点:作者工作于 Anthropic,从 ASN.1 说起,介绍其相关的 DER 二进制格式及在 Rust 库rust-asn1中的处理方式,包括最初的技巧及后续优化。优化过程中遇到对INTEGER长度计算的改进,从循环方式到更巧妙的分支无代码,且通过 Alive2 验证其更优。还让 Claude 基于测试用例在 LLVM 中实现优化并经历一系列过程,最终成功。
关键信息:

  • ASN.1 是抽象描述数据的语法,DER 是其常用编码,是 TLV 二进制格式。
  • rust-asn1最初序列化值时先预留 1 字节长度空间再计算实际长度,后优化为让值直接告知长度。
  • INTEGER长度计算的原始实现及改进后的代码,改进后更简洁但生成的汇编代码更复杂。
  • 通过 Alive2 验证优化的有效性并向 LLVM 提交 bug 及让 Claude 在 LLVM 中实现优化。
    重要细节:
  • 介绍 Let's Encrypt 对 DER 的介绍。
  • 展示原始INTEGER长度计算代码及改进后的代码。
  • 说明 Claude 实现优化的过程及作者的参与部分。
  • 最后总结从该经历中得到的教训,如宇宙围绕 ASN.1 及模型能力等。
阅读 7
0 条评论