Denis Bakhvalov

Code::Dive 2016 trip report.

Categories: personal

20 Nov 2016

Subscribe to my newsletter, support me on Patreon or by PayPal donation.

It’s my second time I’ve beed on Code::Dive conference in Wroclaw. This year it was on 15-16 November. We had a really great speakers such as Chandler Carruth, Sean Parent and Mark Issacson.

It was amazing opportunity to hear talks on compiler optimizations, clang tools, undefined behaviour, C++ history and future and best practices. All talks should be available on youtube shortly.

Really many-many thanks to Nokia for such a great free conference! Looking forward to attend next year (probably as a speaker).

Things I learned from this conference:

  1. If you do not turn off exceptions, compiler will generate emergency buffer. This memory space is needed for example, when you’re throwing out_of_memory exception. Some amount of memory should be allocated somewhere, but you are already out of memory, so you need some preallocated storage for it. More on this topic here: Emergency buffer for exceptions.

  2. Passing -fno-exceptions to the compiler will instruct it to turn every throw calls in STL into std::abort. Also compilers are able to detect lack of catch‘es in your program. In this case they will convert each throw call in your programm to terminate, because noone will catch it either way. More details on stackoverflow question.

  3. Finally I got to know that dereferencing of nullptr is undefined behaviour. Because on some platforms (with direct memory mapping) dereferencing null pointer means accessing memory with offset 0x0. More information on stackoverflow question.

  4. “No raw synchronization primitives” by Sean Parent. Coming soon on youtube and Code::Dive.

  5. “Try to avoid inline keyword” by Chandler Carruth. Coming soon on youtube and Code::Dive.

comments powered by Disqus

Subscribe to get more updates from me:

If you like this blog, support me on Patreon or by PayPal donation.

All content on Easyperf blog is licensed under a Creative Commons Attribution 4.0 International License