bug-bounty528
xss382
exploit255
google201
rce177
facebook161
writeup140
web3119
microsoft111
open-source91
csrf88
cve82
account-takeover76
apple71
browser70
sqli66
ai-agents63
ssrf60
tool46
privacy44
dos44
cloudflare43
pentest42
privilege-escalation42
malware42
oauth41
ctf41
lfi40
llm37
aws35
opinion35
auth-bypass33
automation33
idor32
machine-learning32
react32
cors32
clickjacking31
reverse-engineering31
supply-chain31
cloud31
infrastructure31
code-generation31
race-condition30
phishing29
access-control27
node26
subdomain-takeover25
wordpress25
performance-optimization24
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