CppCon 2019 @ Aurora (near Denver), Colorado
I just returned from one wholly awesome week of CppCon. This year the conference was held at the Gaylord Rockies convention center in Aurora, Colorado, just outside Denver. This place is huge!
I arrived on Friday to meet up with my fellow CopperSpice team members: Barbara, Ansel, Tim and Peter. We had a two-day hacking session working on CopperSpice and hashed out strategies for better organizing our team. We talked about our new libraries, the integration with Azure Pipelines, further development of the CMake support, and a formal funeral for our Autotools support (well, the actual wording was more like ‘take it into the desert and shoot it, but remember to take a picture’).
Conference opening keynote: Bjarne Stroustrup
On Monday, Bjarne gave an overview of the current C++20 status. As always, it was a straightforward, well laid out presentation, which I think will be very informative to anyone who has not been actively keeping up with the proposals in flight over the last three years.
Opening of the ‘Back to Basics’ track: Jason Turner, The Best Parts of C++
Jason is always energetic and entertaining to watch, and this talk was no exception. The ‘Back to Basics’ track may be specifically targeted at newcomers to C++, but I think many of us, including professionals who have been doing C++ for years, learned something. C++ is evolving quickly and sometimes feels like a completely new language. Jason presented a good mix of time-tested good practices and fresh new insights.
Latest & Greatest in Visual Studio 2019 for C++: Marian Luparu and Sy Brand
Whether you are a fan or not, it’s good to see that Visual Studio keeps up with the times and brings exciting features with every release. In recent years we have really seen a change in Microsoft, and the killer surprise this time was the open-sourcing of the STL, the standard library that comes with Visual Studio!
Hello World from Scratch: Peter Bindels and Sy Brand
A wild ride, energetically presented by Peter and Sy. They explained everything that happens from source code through compilation, linking and loading, until the actual execution of your main() function. I enjoyed it and learned a thing or two along the way.
CopperSpice CsPaint: high-performance graphics and text rendering on the GPU for any C++ application
Barbara and Ansel presented the latest development that spun out of CopperSpice: CsPaint, a portable, high-performance graphics library on top of Vulkan. One of the most notable features was infinite-accuracy text rendering! It’s a unique feature that will be used to render portable and uniform high-DPI 2D UI graphics for CopperSpice on Linux, Windows and macOS.
Sean Parent: Better Code: Relationships
Sean’s presentation was about the relationships in our code and about thinking ahead about what your program will look like, comparing it to a game of chess (although I feel my computer is usually not actively trying out moves against me :). I enjoyed the talk, and I think a good takeaway was to think about the essential relationships between types, and in software designs in general. I heard someone say that ‘don’t use raw pointers’ was also a takeaway; I think that is a bit too much of a simplification, and I would generalize it to: think about (and don’t forget) the null cases in the results of your functions. Slides and more will be available soon on his site.
Andrei Alexandrescu: Speed Is Found in the Minds of People
Andrei is something of an unguided projectile in this talk about sorting, optimizing for medium-sized datasets.
Jason Turner: Code Smells
Again a good talk by Jason, focusing specifically on the red flags that should be investigated when reviewing code.
SG14 study group meeting
I spent Wednesday in SG14, the study group for game development and low latency. Among other things, the BLAS (Basic Linear Algebra Subprograms) integration proposals were reviewed.
Lightning talks
Emery Berger: compacting memory by meshing
A really interesting talk on compacting memory using meshing and virtual memory remapping. Emery demonstrated a 17% reduction in memory usage in a web browser. The really fun part is that this could be done without the source code and without recompilation.
Matt Godbolt: ray casting three ways (object-oriented, functional, data-oriented)
Matt showed three different ways to implement a path tracer / ray casting example, analyzing the pros and cons of each strategy. A surprising result for me was that, in this case, branch prediction dominated over implementation style.
Louis Dionne: ABIs for dummies
Also recommended viewing on YouTube if you care about ABI stability. A very nice talk. What surprised me was that Foo() = delete; can introduce an ABI-breaking change!
JF Bastien: deprecating volatile
A really good talk on the history and future of volatile. Recommended viewing when it goes online.
Tony Van Eerd: Objects vs Values
I was mostly asleep during this talk 😉 That was not due to Tony’s presentation; I will have to watch it again when it becomes available on YouTube.
Timur Doumler: C++20, the small things
Timur gave an overview of all the little fixes and smaller features that were put into C++20 at the last WG21 meeting in Cologne.
The hallway track
With Walter Brown, Sean Parent, Stephan T. Lavavej, Louis Dionne, Lisa Lippincott, Timur Doumler and so many others; sorry that I cannot mention everybody here 🙂
This year’s so-called ‘hallway track’, the conversations you have with people outside the talks, was personally the highlight of the conference for me. I talked to so many interesting people and was truly inspired by the enthusiasm and openness of literally everybody I approached. I felt like I was radiating with pleasure walking the halls of the conference. Thank you, everybody! I hope to see all of you next year!
While writing this post, I noticed that Matt has also written a trip report, so check that one out too! CppCon publishes the slides for all presentations at https://github.com/CppCon/CppCon2019.
Leave a Reply