LLVM Regression 的设计
起因 某一天在和 ksyx 同学讨论参与 LLVM 开发过程中遇到的的事情,ksyx 同学提到 llvm 有一个开发者保存了每一天的 clang format 的构建产物,以便于出现问题时二分引入问题的 commit。由此我产生了一个想法,由于主要耗时是在构建庞大的 LLVM,我们何不像 mozregression 一样保存每个 commit 的构建产物,并提供一个工具来完成二分,于是就有了这个项目。 基本思路 基本思路很简单,就是一个使用预编译二进制版本的 git bisect。用户选定好和坏两个节点,然后程序自动找到二分的中间节点,用户判断好还是坏,如此迭代直至找到第一个坏的commit。 但是这个方案还不够优秀,于是提出了一些改进。 改进 检查 在这个二分的过程中,需要人工干预的部分是判断该 commit 是否正常。由于 llvm 作为一个编译基础设施项目,要判断的东西基本上是编译的输出和结果,不像 Firefox 那样需要进行复杂的 GUI 操作。因此可以考虑自动比对输出结果与正确和错误的结果。 更进一步的,我们可以设计两个机制:其一是维护两个集合,保存正确的和错误的结果,每当遇到不在集合里的结果,就询问用户,并且根据答案将结果加入集合,如此迭代,考虑到大部分情况下大多数结果应该是一样的,这样应该可以大大减少人工介入;其二是维护一个检测脚本模式,对于那些结果不稳定,但是具有特征的情况,用户可以提供一个脚本来判断正确和错误,这样可以大大减少人工判断,考虑到实际情况,这个脚本功能应当支持「无法判断」结果。 构建 可以将构建系统和 LLVM 项目的 CI 结合,复用 LLVM CI 的编译产物,减少资源占用。 分发 考虑到一台 CPU、内存储存和网络带宽俱佳的六边形服务器价格昂贵,又考虑到实际使用场景,应该类似 CDN 和镜像站,提供专门的储存分发节点,此类节点应具有良好的储存和网络环境,专职于内容分发,剩下的少数节点作为编译节点,编译节点应具有高性能的 CPU、充足的内存和快速的储存以加速构建。 为使这个网络简单易维护,考虑使用P2P技术,使得储存节点可以自动的互相获取编译产物,并且自动从编译节点获取编译产物。 编译节点类似于 Bit Torrent 中原始做种者的角色,编译并分发那些没有足够数量的存储节点的东西,当网络中有足够的节点保存有产物副本时,其删除产物以节省本机资源。编译节点同时分发一份映射表,类似于种子,其声明每个产物的校验和,以保证产物未被篡改。 检查节点 考虑到有些情况下,用户的空间和性能可能不足,我们可以设计一种节点,专职负责进行二分,通过用户计算机上简单低占用的程序通信。 这样可以带来以下的好处:由于检查节点可以和储存节点以及编译节点运行在同一内网,可以获得很高的带宽,甚至使用更直接的方式访问储存节点,这可以很好的提升性能和节省外部带宽;可以不受制于客户端的环境,比如 CPU 和内存资源不足,储存空间不足,带宽不足以及网络不稳定等。 更进一步,既然检查节点可以独立运行,则我们可以提供一个 Web 界面,以进一步降低对客户端的要求。 这项改进带来的问题是,我们需要设计一个权限机制和安全机制,以避免遭到攻击。
2022-10-13   schedule 5 min 27 s  
NOIP 2020 游记
今年(去年?毕竟我咕了这么久)的 NOIP 大概是我经历过的最痛苦的一次 NOIP。(虽然我也就参加过两届 NOIP 复赛就是了)。 CSP 的时候我还和可橙(不认识可橙?这里有一些链接 这个,这个还有这个,如果你还要,那么还有 这个 和 「THUPC 2021 初赛」M. 自白书,以及凤凰周刊2021年第2期(总第747期))面了姬,并约好 NOIP 一起去街上游荡。 可谁曾想,11月29日,我却与她完全断了音讯……我们努力了许多,或者说,挣扎了许多,可是依旧没能带回我们的可橙…… 12月11日,NOIP 复赛,可橙依旧没能回来。我怀着悲痛和慌乱的心情走进考场……说实话,我自己也不知道我究竟在考场里发了多久的呆……考场外可橙的事情牵动着我的心弦,我的心无法平静下来,或者说,也不该平静下来。统共四道题,我只做完了一道变草草收回了心神…… 自然的,成绩并不理想。但是我并不后悔,或者说,我有什么可后悔的呢……或许,我唯一后悔的,就是没拦下可橙,让她重新回到了父母的魔爪吧…… 所以,可橙……我们什么时候才能让你回来呢……
2021-02-07   schedule 1 min 57 s  
2020 年末总结
纪念艰难地活下来的2020年,希望2021年也能好好地活下去……
2021-01-01   schedule 8 s  
一些感想:自由软件之意义
今天看到一些话1,有点感触。 自由软件存在的意义不是为了更好的体验,而是保证在其他有“更好体验”的玩意儿蹬鼻子上脸的时候,你有那个最基本的掀桌子的底气。 (当然这不能成为我不去骂傻× Gnome 和 Rime 开发者的理由,该骂还是要骂 (谁让这俩,尤其是前者还有其他自由软件选择呢 https://lyric.im/individualism-on-internet/ ↩︎
2020-09-01   schedule 34 s  
一个新的 Rime 简体中文拼音输入方案: 极光拼音
一个新的 Rime 简体中文拼音输入方案: 极光拼音
2020-08-12   schedule 6 min 28 s  
Firefox 支持 X11 下的 VA-API 硬解了
TL;DL 目前来看火狐应该是初步实现了 X11 下的 VA-API 硬解……期待后续的发展…… 试用方法 使用最新版 Nightly,开启设置中的 vaapi 和 webrender 相关选项,使用环境变量 MOZ_X11_EGL=1 即可测试 试用了一下目前在我的机子上表现还不错……当然刚刚实现肯定还有很多 bug,只能说我是运气比较好的那批人吧…… Bug Tracker:Implement ffmpeg/VAAPI video playback Change log {}
2020-07-05   schedule 41 s  
拥抱 Fcitx5
Fcitx5 迁移及使用杂记
2020-05-26   schedule 13 min 30 s  
传奇VB的西山日落
Visual Basic 的诞生,发展与没落
2020-03-14   schedule 5 min 25 s