bug-bounty538
xss382
exploit256
google207
rce180
facebook163
writeup141
microsoft124
web3120
open-source91
csrf89
cve83
account-takeover78
apple74
browser72
sqli67
ai-agents63
ssrf60
malware57
tool46
privacy44
dos44
cloudflare43
pentest43
ctf43
privilege-escalation42
oauth41
lfi40
llm37
aws36
opinion35
idor35
supply-chain34
automation33
auth-bypass33
phishing32
react32
cors32
machine-learning32
clickjacking31
reverse-engineering31
infrastructure31
cloud31
code-generation31
race-condition30
node28
access-control27
subdomain-takeover25
wordpress25
postmessage24
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