bug-bounty564
xss402
exploit336
google303
rce248
facebook223
microsoft199
cve165
writeup152
malware151
web3125
apple106
browser99
account-takeover93
csrf92
open-source91
sqli76
phishing74
dos72
privilege-escalation71
pentest68
cloudflare67
ssrf64
ai-agents63
ctf60
supply-chain60
reverse-engineering58
auth-bypass56
cloud54
lfi54
oauth48
tool46
aws46
privacy44
race-condition42
react40
idor40
node39
info-disclosure39
llm37
opinion35
cors33
automation33
buffer-overflow32
machine-learning32
clickjacking32
code-generation31
infrastructure31
access-control27
postmessage27
0
2/10
technical-deep-dive
This article explores how GNU Emacs uses tagged pointers (leveraging alignment bits in heap object pointers) to represent polymorphic Lisp values in a single 64-bit word, contrasting this approach with C++17's std::variant (tagged unions) and modern fat pointers used in Go and Rust. The piece explains the memory and performance tradeoffs between these type representation strategies and how Emacs achieves polymorphism through a poor man's inheritance scheme limited to 8 fundamental types.
systems-programming
memory-management
tagged-pointers
tagged-unions
type-systems
c-internals
emacs-internals
polymorphism
fat-pointers
garbage-collection
lisp
compiler-design
GNU Emacs
Lisp_Object
C++
std::variant
std::visit
LLVM
Go
Rust
Haskell
OCaml
GHC
McCarthy's Lisp