The Curious Engineer

All blogs / Compilers

MaskRay

maskray.me/blog

CompilersPerformance / optimizationC

Posts
297 from 14 Nov 2009 to 12 Oct 2026
Posting
monthly (20 in the last year)
Kind
personal blog
Feed
https://maskray.me/blog/atom.xml

2026 17

  1. Who pays for Clang
  2. ClangIR and the cost of MLIR
  3. Linker I/O tricks and their downsides
  4. lld 23 ELF changes
  5. Block frequency
  6. Estimating branch probabilities
  7. Irreducible loops
  8. Optimizing LLVM's bump allocator
  9. A deep dive into SmallVector::push_back
  10. Recent LLVM hash table improvements
  11. Fighting Hyrum's Law in LLVM
  12. Recent lld/ELF performance improvements
  13. Bit-field layout
  14. Call relocation types
  15. lld 22 ELF changes
  16. Long branches in compilers, assemblers, and linkers
  17. Maintaining shadow branches for GitHub PRs

2025 19

  1. 2025年总结
  2. Weak AVL Tree
  3. Sacramento游记
  4. Stack walking: space and time trade-offs
  5. Remarks on SFrame
  6. lld 21 ELF changes
  7. Benchmarking compression programs
  8. Understanding alignment - from source to object file
  9. LLVM integrated assembler: Improving sections and symbols
  10. LLVM integrated assembler: Engineering better fragments
  11. GCC 13.3.0 miscompiles LLVM
  12. LLVM integrated assembler: Improving expressions and relocations
  13. LLVM integrated assembler: Improving MCExpr and MCValue
  14. Relocation generation in assemblers
  15. Compiling C++ with the Clang API
  16. Migrating comments to giscus
  17. lld 20 ELF changes
  18. Natural loops
  19. Understanding and improving Clang -ftime-report

2024 31

  1. 2024年總結
  2. Skipping boring functions in debuggers
  3. Exporting Tweets
  4. Simplifying disassembly with LLVM tools
  5. clang-format and single-line statements
  6. Removing global state from LLD
  7. Keeping pace with LLVM: compatibility strategies
  8. Tinkering with Neovim
  9. ccls and LSP Semantic Tokens
  10. My involvement with LLVM 19
  11. lld 19 ELF changes
  12. Mapping symbols: rethinking for efficiency
  13. Linker compatibility and the "User-Agent" problem
  14. Integrated assembler improvements in LLVM 19
  15. Understanding orphan sections
  16. Evolution of the ELF object file format
  17. Exploring GNU extensions in the Linux kernel
  18. Clang's -O0 output: branch displacement and size increase
  19. When QOI meets XZ
  20. Light ELF: exploring potential size reduction
  21. A compact section header table for ELF
  22. C++ exit-time destructors
  23. A compact relocation format for ELF
  24. My involvement with LLVM 18
  25. MMU-less systems and FDPIC
  26. lld 18 ELF changes
  27. Toolchain notes on z/Architecture
  28. Raw symbol names in inline assembly
  29. Modified condition/decision coverage (MC/DC) and compiler implementations
  30. RISC-V TLSDESC works!
  31. Exploring object file formats

2023 29

  1. 2023年總結
  2. reviews.llvm.org became a read-only archive
  3. Reflections on LLVM's switch to GitHub pull requests
  4. Exploring the section layout in linker output
  5. Linker notes on PE/COFF
  6. DSO undef and non-exported definition
  7. AddressSanitizer: global variable instrumentation
  8. A deep dive into Clang's source file compilation
  9. Toolchain notes on MIPS
  10. Clang -Wunused-command-line-argument
  11. My involvement with LLVM 17
  12. lld 17 ELF changes
  13. Precompiled headers
  14. Compressed arbitrary sections
  15. C++ standard library ABI compatibility
  16. Port LLVM XRay to Apple systems
  17. Relocation overflow and code models
  18. Assemblers
  19. Compiler output files
  20. Linker notes on AArch32
  21. ELF hash function may overflow
  22. lld 16 ELF changes
  23. Linker notes on AArch64
  24. Linker notes on Power ISA
  25. Linker notes on x86
  26. All about LeakSanitizer
  27. Function multi-versioning
  28. All about UndefinedBehaviorSanitizer
  29. All about sanitizer interceptors

2022 26

  1. 2022年總結
  2. kth element in a subarray
  3. Control-flow integrity
  4. Relocatable linking
  5. ODR violation detection
  6. _FORTIFY_SOURCE
  7. lld linked musl on PowerPC64
  8. Distribution of debug information
  9. C minifier with Clang
  10. Layering check with Clang
  11. zstd compressed debug sections
  12. lld 15 ELF changes
  13. -march=, -mcpu=, and -mtune=
  14. glibc and DT_GNU_HASH
  15. DWARF in reproducible builds
  16. RISC-V linker relaxation in lld
  17. Everything I know about glibc
  18. C standard library headers in C++
  19. PI_STATIC_AND_HIDDEN/HIDDEN_VAR_NEEDS_DYNAMIC_RELOC in glibc rtld
  20. Unwinding through a signal handler
  21. Analysis and introspection options in linkers
  22. lld 14 ELF changes
  23. All about COMMON symbols
  24. Compressed debug sections
  25. Archives and --start-lib
  26. Symbol processing

2021 28

  1. 2021年總結
  2. Why isn't ld.lld faster?
  3. .init, .ctors, and .init_array
  4. Relative relocations and RELR
  5. When can glibc be built with Clang?
  6. Competitive programming in Nim
  7. All about Procedure Linkage Table
  8. Build glibc with LLD 13
  9. All about Global Offset Table
  10. FreeBSD src browsing on Linux and my rtld contribution
  11. Extract an archive member to satisfy a DSO undef
  12. Toolchain testing
  13. COMDAT and section group
  14. SECTIONS and OVERWRITE_SECTIONS
  15. Dependency related linker options
  16. Dependency related linker options
  17. ELF interposition and -Bsymbolic
  18. -fno-semantic-interposition
  19. Weak symbol
  20. Segment tree
  21. Compiler driver and cross compilation
  22. The dark side of RISC-V linker relaxation
  23. Linker garbage collection
  24. All about thread-local storage
  25. Metadata sections, COMDAT and SHF_LINK_ORDER
  26. Everything I know about GNU toolchain
  27. GNU indirect function
  28. Copy relocations, canonical PLT entries and protected visibility

2020 11

  1. 2020年總結
  2. LLD and GNU linker incompatibilities
  3. C++ exception handling ABI
  4. Dominator tree
  5. All about symbol versioning
  6. Explain GNU style linker options
  7. Stack unwinding
  8. 模塊內函數調用和libc符號重命名
  9. Command line processing in LLVM
  10. gcov與LLVM中的實現
  11. -fpatchable-function-entry=N[,M]

2019 2

  1. 2019年總結——工具鏈的一年
  2. C++ language server ccls一周年

2018 8

  1. ccls 0.20181225 release
  2. Real World CTF 2018 rwext5命題報告
  3. 2018-09-09 ccls最近更新
  4. $ccls/navigate和index.multiVersion
  5. DEFCON 26 CTF參賽記
  6. Real World CTF 2018 ccls-fringe命題報告
  7. ccls: a fork of the C++ language server cquery
  8. cquery USR優化和分層diff

2017 6

  1. cquery最近改動與libclang.so一字節補丁
  2. 使用cquery:C++ language server
  3. r2con 2017 r2cLEMENCy
  4. DEFCON 25 CTF參賽記
  5. Emacs helm-kythe与Haskell交叉引用
  6. 我是這樣使用微信的——wechatircd最近更新

2016 15

  1. Buffalo WZR-600DHP OpenWrt使用Comcast的IPv6
  2. 2016 12 10 situation
  3. 整係數Discrete Fourier transform技巧
  4. Cyber Grand Challenge及DEFCON 24 CTF決賽介紹
  5. DEFCON 24 CTF參賽記
  6. WeeChat操作各種聊天軟件
  7. 無需每日掃碼的IRC版微信和QQ:wechatircd、webqqircd
  8. 偃師——finite automaton生成工具
  9. telegramircd——用IRC客戶端控制Telegram
  10. webqqircd——用IRC客戶端控制WebQQ
  11. 終端模擬器下寬字符退格
  12. BCTF 2016 hsab及BetaFour命題報告
  13. 終端模擬器下使用雙倍寬度多色Emoji字體
  14. wechatircd——用IRC客戶端控制微信網頁版
  15. Gmail的OfflineIMAP XOAUTH2認證

2015 15

  1. 支持Android、iOS 9內置IPSec客戶端的strongSwan 5.3.5配置
  2. LeetCode Expression Add Operators:SLR(1)、meet-in-the-middle及其他
  3. 從ASC'14到ISC'15——我的超算競賽生涯謝幕
  4. Nginx根據Accept-Language的簡繁體支持
  5. 指定dynamic linker以使用高版本GCC
  6. 皈依Emacs
  7. 2015 09 08 j programming language
  8. DEFCON 23 CTF參賽記
  9. 一次服務器BMC固件逆向經歷
  10. 常數空間Invert Binary Tree與仿Morris法後序遍歷
  11. jq实现原理——字节码
  12. LeetCode Best Time to Buy and Sell Stock IV(k不重疊最大子段和)線性解法
  13. ELF Hacks
  14. BCTF 2015 CamlMaze命題報告及CTF題目鏡像準備方法
  15. 2015 03 14 debug hacks 2

2014 19

  1. 2014年總結——競賽的一年
  2. Js_of_ocaml和Emscripten
  3. ML编译器Caml Featherweight——抽象机器
  4. ML编译器Caml Featherweight——编译
  5. ML编译器Caml Featherweight——数据表示
  6. ML編譯器Caml Featherweight——設計
  7. ML编译器Caml Featherweight——垃圾收集
  8. ML編譯器Caml Featherweight——pretty printer
  9. ML編譯器Caml Featherweight——概覽
  10. 江蘇信安競賽初賽工作組記事
  11. Hackerrank FP Compilers题目
  12. Android微信數據導出
  13. 二叉樹遍歷算法總結
  14. Trend Micro Codinsanity 2014參賽記
  15. DEFCON 22 CTF參賽記
  16. ISC'14 Student Cluster Competition
  17. LeetCode solutions
  18. Ko-Aluru suffix array construction algorithm
  19. BCTF工作組記事

2013 20

  1. 算法、FP、前端、安全、系統管理——2013年總結
  2. “1001夜”學生節線上解謎活動1001/key題解
  3. RedTigers Hackit Wargame - Level 1 ~ Level 7
  4. D-Link路由器後門註記
  5. 約瑟夫問題的兩個O(log n)解法
  6. HDU OJ一些題目
  7. 用Google Analytics API爲靜態站點實現“閱讀最多文章”功能
  8. E-mail文化拾趣
  9. OverTheWire - Natas Wargame - Level 0 ~ Level 17
  10. DEFCON 21 CTF參賽記
  11. DEFCON 21——我的奮鬥
  12. 第二屆青少年開發者大會
  13. 使用Suricata進行IDS/IPS
  14. 《Debug Hacks》和調試技巧
  15. Ouroborus Program - quine-relay 分析
  16. SECUINSIDE CTF Quals 2013雜記
  17. String index structure: suffix automaton
  18. TUNA技術沙龍及A Pretty Printer Library in Haskell
  19. 使用Double-array trie優化Proxy auto-config
  20. 使用Burkhard-Keller tree優化近似串匹配

2012 24

  1. Python is ugly
  2. 異於Make的另一種構建系統
  3. RuCTFE 2012參賽記
  4. 建立清華大學Node Packaged Modules鏡像
  5. 智能體大賽與平臺開發
  6. 用DocPad構建靜態網站
  7. 基於 mutt+offlineimap+notmuch+inotifywait 的個人郵件系統
  8. 用Pike's VM實現的非回溯正則表達式引擎
  9. 完美迷宮生成算法
  10. 自然語言處理之詞語抽取
  11. Force-directed算法(1)——Fruchterman-Reingold
  12. 域名遷移至maskray.me
  13. 並行N-body模擬
  14. SVT13117ECS上Gentoo安裝記(含內核配置)
  15. 8門編程語言的設計思考
  16. 80分鐘8語言
  17. Evil--在Emacs中模擬Vim
  18. gcc中sqrt實現
  19. 給xbindkeys添加key sequence支持
  20. Makefile介紹
  21. Haskell學習筆記
  22. 根據計劃求解Rush
  23. Tiling window manager的應用與設計
  24. 計算所有後綴的排名

2011 13

  1. 網絡學堂feeds2mail
  2. 2011 12 18 eight puzzle
  3. 我的xmonad配置
  4. Haskell實現的Splay樹
  5. 脫離chroot的枷鎖
  6. 用Perl的正則表達式分析csv文件
  7. 用udev自動掛載usb設備
  8. 在Makefile中自動生成依賴
  9. 自動獲取SSH密碼並登錄
  10. 用rss2email閱讀feeds
  11. 用Makefile搭建博客-2
  12. 用Makefile搭建博客
  13. 用Expect連接無線網絡

2010 10

  1. genkernel
  2. Awesome 3 debian menu
  3. ZJU 1638. Greedy Island
  4. XV Olimpiada Informatyczna - Etap 1 - klo
  5. checker
  6. USACO JAN10 Gold
  7. PyGTK迷宮生成器mazer
  8. 三柱漢諾塔相關擴展問題
  9. GTK+黑白棋reversi
  10. GTK+ tic-tac-toe(井字棋)

2009 4

  1. 稱球問題擴展——根據當前已知信息選擇最優稱量方案
  2. NOIP 2004 數字遊戲(蟲食算)
  3. Dancing Links+Algorithm X求解數獨
  4. 2009 11 14 dotemacs