The Curious Engineer

All blogs / Compilers

Josh Haberman

blog.reverberate.org

Parsing, performance, and low-level programming.

CompilersPerformance / optimizationCRustEngineering blogs

Posts
60 from 21 Apr 2007 to 10 Feb 2025
Posting
now and then
Kind
personal blog
Feed
https://blog.reverberate.org/feed.xml

2025 3

  1. A Tail Calling Interpreter For Python (And Other Updates)
  2. No-Panic Rust: A Nice Technique for Systems Programming
  3. An Ode to Header Files

2021 3

  1. Arenas and Rust
  2. Thread Safety in C++ and Rust
  3. Parsing Protobuf at 2+GB/s: How I Learned To Love Tail Calls in C

2020 2

  1. Hoare’s Rebuttal and Bubble Sort’s Comeback
  2. Optimizing UTC → Unix Time Conversion For Size And Speed

2018 1

  1. Bloaty McBloatface 1.0

2016 5

  1. Introducing Bloaty McBloatface: a size profiler for binaries
  2. How do Native Extensions Manage Memory? Part 2: JavaScript (V8)
  3. How do Native Extensions Manage Memory? Part 1: Ruby (MRI)
  4. Floating Point Demystified, Part 2: Why Doesn't 0.1 + 0.2 == 0.3?
  5. Making arbitrarily-large binaries from fixed-size C++ code

2015 3

  1. IE8 Bug in bitwise operators for JavaScript
  2. Monads Demystified
  3. Status update on upb and Ruby Protocol Buffers

2014 6

  1. The Speed of Python, Ruby, and Lua's Parsers
  2. The overhead of abstraction in C/C++ vs. Python/Ruby
  3. Floating Point Demystified, Part 1
  4. Beware of Lua finalizers in C modules!
  5. React Demystified
  6. On "The Future of JavaScript MVC Frameworks"

2013 8

  1. LL and LR in Context: Why Parsing Tools Are Hard
  2. Parsing C++ is literally undecidable
  3. Microsoft, thank you (tentatively) for supporting some of C99
  4. LL and LR Parsing Demystified
  5. printf() debugging in assembly language
  6. Deep Wizardry: Stack Unwinding
  7. C/C++ Gripe #1: integer types
  8. Reader Challenge: Optimize the BF JIT

2012 7

  1. Hello, JIT World: The Joy of Simple JITs
  2. Testing for Integer Overflow in C and C++
  3. dumpfp: A Tool to Inspect Floating-Point Numbers
  4. It's not a bug, it's a subtle unsupported corner case
  5. Microsoft, please support (at least a tiny bit of) C99
  6. State of the hash functions, 2012
  7. Refcounting immutable cyclic graphs

2011 6

  1. Making Knuth's wish come true: the x32 ABI
  2. Using dtrace on OS X to debug a performance problem
  3. upb status and preliminary performance numbers
  4. EINTR and PC loser-ing (The "Worse Is Better" case study)
  5. Addicted to hardware: new toy on the way
  6. GCC: the impressive and the disappointing

2009 10

  1. Giving up on AT&T style assembler syntax
  2. Don't forget -march!
  3. Shiny New Text-Processing Instructions in SSE 4.2
  4. Amazing Tools: Massif, a heap profiler
  5. C Compilers
  6. The art of hashing
  7. one malloc to rule them all
  8. C and C++ are CRAZY!
  9. The joy of cross-platform development
  10. LLVM Bitcode vs. Protocol Buffers

2008 2

  1. Protocol Buffers
  2. The future of automatic memory management

2007 4

  1. Gazelle 0.1 released!
  2. New Job!
  3. DJB hating on the principle of least privilege?
  4. Transcoding adventures with C