靛青博客


2023 总结

Posted on

概括

今年是我第一年持续参与开源贡献工作,我修复了许多错误编译,也增加了一些缺失的优化。还有一些我不知道如何归类,涉及各种内容,比如 LTO、DebugInfo,内置函数和 WebAssembly,甚至还有 Apple Silicon 相关。

在这个过程中,我得到了许多的人的帮助,尤其是审核我的 PR 的人,非常感谢。(●´∀`●)

一些值得注意的内容:

我使用这些表情对相关工作进行分类:

LLVM

提交记录:https://github.com/llvm/llvm-project/commits?author=DianQK&since=2023-01-01&until=2023-12-31

对了,我的第一个 LLVM 提交是:[MachineOutliner] Fix the side effect of outlined function when the register is implicit use and implicit-def in the same instruction. D112911

  1. 🍻🦀⏳ [SimplifyCFG] Check if the return instruction causes undefined behavior D144319PR69498 阻塞
  2. 🍻⏳ [SimplifyCFG] Improve the precision of PtrValueMayBeModified D144563 跟随 D144319 的提交,尽管这没有被 PR69498 阻塞
  3. 💢🦀 [SROA] Remove UB-implying metadata when promoting speculative instruction. D148456 修复 PR110256
  4. 💢🦀 [GlobalOpt] Don't replace the aliasee if it has other references. D145293 修复 PR108030
  5. 🦀🐦ℹ️ [Verifier] definition subprograms cannot be nested within DICompositeType when enabling ODR. D152095
  6. 🐦ℹ️ [Coroutine][DebugInfo] Update the linkage name of the declaration of coro-split functions in the debug info. D157184
  7. 💢🦀 [TailCallElim] Remove the readonly attribute of byval. D156793
  8. 💢🦀 [JumpThreading] Invalidate LVI after combineMetadataForCSE. #65219
  9. 🍻🦀 [EarlyCSE] Compare GEP instructions based on offset #65875
  10. 🍻🦀 [SimplifyCFG] Hoist common instructions on switch #67077
  11. 💢🦀 [MemCpyOpt] Merge alias metadatas when replacing arguments #67539
  12. 💢🦀 [LVI][CVP] Treat undef like a full range #68190
  13. 💢 [LVI][CVP] Treat undef like a full range on abs(x, false) #68711
  14. 💢🦀 [MemCpyOpt] Combine alias metadatas when replacing byval arguments #70580
  15. 💢🦀🍎 [AArch64] ORRWrs is copy instruction when there's no implicit def of the X register #75184

Rust

提交记录:https://github.com/rust-lang/rust/commits?author=DianQK&since=2023-01-01&until=2023-12-31

除了更新测试用例等简单 PR,其他都是围绕 builtins & LTO 的 PR:

  1. Add the no-builtins attribute to functions when no_builtins is applied at the crate level. #113716
  2. Restore #![no_builtins] crates participation in LTO. #113923
  3. Add thinlto support to codegen, assembly and coverage tests #118036
  4. Avoid adding builtin functions to symbols.o #118568

尽管在这个过程中解决了很多问题,不幸的是,仍然有一些已知问题需要解决。在解决这些问题之后,我会提交相关的 MCP。

Ruslin

我使用 Joplin 记笔记,但我不喜欢 Joplin 的 Android 客户端。为此我编写了一个兼容的客户端:ruslin-android。很抱歉最近一直没有更新,我会在明年尝试调整一下我的业余时间。事实上我也在考虑桌面端的开发。

其他项目

个人相关

DianQK 只是我随意起得中文笔名靛(Dian)青(Qing)K的拼音缩写,靛青指 indigo。这导致大家不知道该如何称呼我。为此我向 ChatGPT 询问了一个名字:Quentin Dian。所以你可以叫我 Dian 或者 dianqk 都可以。

曾经我一直在使用 Arch Linux,现在我全部切换到了 NixOS,这是个很棒的操作系统,我可以用代码管理一切。

为了提高我的效率,我还购买了 GPD 掌机,上面的大部分代码都是我在地铁上使用 GPD 完成的。我还组装了一台 7950X 主机,这将我的本地构建时间缩短了一半,我可以在几分钟之内完成一次全量编译。我还买了一台 Mac mini(M2),这样我就可以测试这个平台的问题了。

GPG Win 4