Personal channel of @lancern

Topics: programming, hacking, memes, life, and more. Forward anything as you wish.

Join the discussion group for more fun.

Discord: https://discord.gg/RwUx9et7
Lancern's Treasure Chest
今天发现,执行 clang++ -S -Xclang -emit-llvm -o foo.s foo.cpp 将导致 clang 将 LLVM IR 输出写入名为 foo.s 的文件,而执行 clang++ -S -fsyntax-only -Xclang -emit-llvm -o foo.s foo.cpp 将导致 clang 将 LLVM IR 输出写入名为 foo.ll 的文件 经进一步检查,发现这是因为 -fsyntax-only 的存在会导致 clang driver 不再向 clang…
为什么会发现这个,是因为咱在调 compiler-explorer 屎山,发现他们生成 LLVM IR 输出的代码是这么写的:

1. 调用 clang 并传递 -Xclang -emit-llvm -S -fsyntax-only -o /tmp/example.s /tmp/example.cpp
2. 在 clang 执行完毕之后直接开读 example.ll 作为 LLVM IR 输出

起初还以为在这两步之间存在某种奇妙逻辑将 example.s 拷贝至 example.ll ,最后发现是依赖了上述的奇妙 clang 行为
今天发现,执行

clang++ -S -Xclang -emit-llvm -o foo.s foo.cpp


将导致 clang 将 LLVM IR 输出写入名为 foo.s 的文件,而执行

clang++ -S -fsyntax-only -Xclang -emit-llvm -o foo.s foo.cpp


将导致 clang 将 LLVM IR 输出写入名为 foo.ll 的文件

经进一步检查,发现这是因为 -fsyntax-only 的存在会导致 clang driver 不再向 clang -cc1 传递 -o 参数,而 -emit-llvm 又需要一个输出文件,因此 clang -cc1 生成了一个默认的输出文件名即 foo.ll
iOS新Bug曝光:四个字符可致iPhone崩溃

网络安全研究员Konstantin 发现,一个新的字符漏洞可导致 iPhone 和 iPad 崩溃。在滑动到 App 库后,在搜索框中输入 "":: 四个字符,将导致Springboard 重置,iPhone 会返回到锁屏界面。重置并非完全重启,iPhone 只需几秒钟即可恢复正常。

测试发现,只需要输入 "": 和任何其他字符即可触发崩溃;重置问题似乎仅出现在运行 iOS 17 的设备上,iOS 18 设备上如此操作不会导致重置,但会出现一些奇怪的问题,例如字符消失和设置应用崩溃。

新浪科技

☘️ 关注频道 @ZaiHuaPd
📮 投稿爆料 @ZaiHuabot
Zed 初体验使用感受

今晚在 macOS 上体验了一把最新的 zed 编辑器,并用这个编译器给 llvm 完成了一个 patch 。下面说说这个十分简短的使用体验。

个人感觉偏正面的体验包括:
- 确实快,操作丝滑,没有 vscode 的那种说不出的若隐若现的“粘滞感”。
- 大部分快捷键和 vscode 是相同的,主力使用 vscode key binding 的用户会很容易适应新的 key binding 。
- Zed 原生支持 C/C++ ,自带 clangd 作为 language server ,开发 C/C++ 项目时可以做到开箱即用,不用折腾插件。

个人感觉偏负面的体验包括:
- UI 还比较简陋,整体感觉文字偏多而图标偏少,容易产生视觉疲劳。这一条体验比较偏主观,每个人的感受可能会有很大的差别。
- 虽然大的功能点基本上都有了,但是一些细节的小功能还需要慢慢打磨完善。例如,虽然现在有 format file 这个命令,但是没有类似于 format modified lines 的命令,需要手工敲命令行。又例如,通过快捷键 ^ + ` 我可以打开 terminal 面板,但是再按一次这个快捷键并不会关闭 terminal 面板,只能通过鼠标关闭这个面板。

Zed 主打的 collaborative editing 功能我并没有体验,或许得等到以后有这样的 use case 之后才能进一步体验吧。
Zotero 终于有 Dark mode 了
本周末娱乐活动成果
Back to Top