Meeting 14 March 2019

Making C++ Exception Handling Smaller On x64

Visual Studio 2019 Preview 3 introduces a new feature to reduce the binary size of C++ exception handling (try/catch and automatic destructors) on x64. Dubbed FH4 (for __CxxFrameHandler4, see below), I developed new formatting and processing for data used for C++ exception handling that is ~60% smaller than the existing implementation, resulting in overall binary reduction of up to 20% for programs with heavy usage of C++ exception handling.

C++, it’s not you. It’s me.

Blog post:

The crux of the issue <...> is the growing disconnect between people working on big, complex, performance-sensitive and often monolithic and legacy-ridden codebases that we find in game development, and the ideas of "modernity” of the C++ standard community.


I'm just going to throw it out there: I'm tired of reading this kind of stuff from game devs.

Acting like they are the only ones with performance issues. The only ones with complex codebases. The only ones who actually ship code. The ones who are just solving more unique and difficult problems than anyone else, for which C++ falls short by more.

C++ On Sea 2019 - Walter E. Brown - C++ Function Templates: How Do They Really Work?

/img/brown-fn-templ-1.png /img/brown-fn-templ-2.png /img/brown-fn-templ-3.png /img/brown-fn-templ-4.png /img/brown-fn-templ-5.png /img/brown-fn-templ-6.png /img/brown-fn-templ-7.png /img/brown-fn-templ-8.png /img/brown-fn-templ-9.png /img/brown-fn-templ-10.png /img/brown-fn-templ-11.png /img/brown-fn-templ-12.png /img/brown-fn-templ-13.png /img/brown-fn-templ-14.png /img/brown-fn-templ-15.png /img/brown-fn-templ-16.png /img/brown-fn-templ-17.png /img/brown-fn-templ-18.png /img/brown-fn-templ-19.png /img/brown-fn-templ-20.png /img/brown-fn-templ-21.png /img/brown-fn-templ-22.png /img/brown-fn-templ-23.png /img/brown-fn-templ-24.png /img/brown-fn-templ-25.png /img/brown-fn-templ-26.png /img/brown-fn-templ-27.png /img/brown-fn-templ-28.png /img/brown-fn-templ-29.png

RxCpp and Executors with Kirk Shoop

  • Ranges deal with objects distributed in space, Rx deals with objects distributed in time
  • Executors need to be compatible with tasks and observables
  • Works at Facebook with Eric Niebler and Lewis Baker on making ranges work with coroutines and executors
  • Rx was developed for a garbage-collected object lifetime, but with C++ it's more complicated

Stackless vs. Stackful Coroutines

Article by Varun Ramesh, 18 August 2017

Everything You Never Wanted to Know About CMake



Weeks of coding can save you hours of planning.