using std::cpp
Last month I attended my first in-person conference and it went beyond my expectations. I thought I would enjoy my time learning plenty from others, but not only did that happen, I was also fortunate enough to take part in some interesting discussions, got to pick some brains, and had a look into the inner workings of the C++ committee.
After a surprising late approval decision from my employer, I got the green light to travel to Madrid and enjoy sunny Spain locked away inside an auditorium with like-minded people, full of stories and knowledge to share.
Some of the hot topics were the increasingly importance of security focus of C++, Reflection, Coroutines, and many more which are available on using std::cpp’s YT channel.
As stated in other events, for C++26, Reflection is happening. Despite having a quirky syntax and being challeging to grasp at a first glance, good progress is being made into incorporating it in the language. Personally, I am excited to see Pattern Matching inching closer to being standardized, so plenty of exciting new things to play with.
3 days packed with knowledge cannot be condensed to a blog post, neither I would try to do it as I am still growing into some of the topics, but going from the new MISRA guidelines, Dark Magic on the C++ language, or understanding how ML runs embedded devices, there’s plenty for everyone.
Modules
Even though Modules are a C++20 feature, it has been quite troublesome bringing it to modern codebases. It is not widely supported and I found that when supported, a specific toolchain is required and it could happen that a choice has to be made between different goodies.
There was a presentation from Bloomberg devs giving insights on how they reduced their compilation times, and obviously modules were mentioned. And, because of third-party dependencies, it still requires an enormous amount of engineering-hours to make the move.
On my endeavours, I had success using them with latest clang and libcxx. Since it is a new feature, there isn’t much information online and making it work took some amount of searching for bits and piecing them together into a workable prototype. There are some invaluable presentations online that can help diving into modules while being handheld from people that standardized them.
The biggest pain point while doing any modules related work is that tools such as clangd are not yet prepared to work with them, making it slightly more difficult to write code and having your IDE providing instant feedback of how everything is working. Although, if you need to compile and run, testing that nothing broke, compilation is indeed much faster. I am rather pleased because the future does seem bright on this front.
Coroutines
Same with Coroutines, adoption is still lacking but common reasoning points to the lack of library support as the main culprit here.
Hana Dusíková’s keynote goes through the core concepts and shows how one can start playing with coroutines. Facing coroutines head-on for the first time had my head spinning and grasping for a safe harbour, took me some time to understand the inner workings, how everything intertwines, and how I would go about using them on my next project.
Now, after reading more on the subject and creating some really really small prototypes, I can see why people talk about the lack of proper coroutine facilities to enable development. Not there yet, but far from being unusable.
Finale
On a closing note, give everyone a chance. Like most, I am not too keen on social events. But going in alone this time had its perks as it forced me to engage with people there, whether fellow attendees or speakers, every single one of them was kind enough to share some thoughts either on talks or different topics.
Overall, it was a really good experience! I encourage those who have the opportunity to attend to a technical event to take the shot, ask your employer and you might be in for a great surprise.