More and more C++ events, community meetups, and conferences are appearing around the globe. 2019 is definitely looking like a year for new C++ conferences. Take, for example, C++ on Sea (UK, in February) or the upcoming CPPP (France, in June). Even C++ Russia now has two editions per year – one in Moscow and one in St. Petersburg. And, finally, there’s the event we just visited – Core C++, held in Tel Aviv, Israel.
Core C++ was started by the organizers of two big local communities, the Core C++ meetup in Te Aviv and the Haifa::C++ meetup. Adi Shavit from Tel Aviv is a well-known international speaker you may have met at one of the many C++ events around the world. The event was hosted at the Academic College of Tel Aviv–Yaffo, very close to the beautiful and historic old city of Jaffa.
Despite being new and young, Core C++ managed to gather over 350 participants and several famous speakers from abroad. Jason Turner opened the event with a keynote and paid tribute to more than twenty crucial C++ features over the years. He began with changes that were revolutionary in the past, like templates and auto. Then came the C++20 updates. His pragmatic look, as he called it, included an analysis of the impact of those features on C++ coding.
Hana Dusíková again talked about compile time regular expressions, but this time in a new and updated way. She presented runtime and compilation time measurements to compare CTRE, PCRE, Boost, std, and some other approaches.
Other talks you may have heard before Core C++ were Initialization in Modern C++ by Timur Doumler and The Dawn Of A New Error by Phil Nash. I gave my talk, C++ Ecosystem: For Better, For Worse, for the second time since its ‘inauguration’ at ACCU 2019.
Bryce Adelstein Lelbach closed the conference with an overview of Modules coming with C++20. He started the talk by collecting all the reasons why headers are terrible: slow to compile, ODR violations, lack of encapsulation, cyclic dependencies, and order dependencies. He then explained the core syntax and the main ideas behind the proposal. The most interesting and unique part came later, as Bryce now chairs the Tooling Study Group in the C++ committee who, as it happens, are now discussing the details of implementing modules in compilers. For example, the kinds of linkage were discussed in detail during the talk. I would say that the only idea that bothers me is the intent to automatically convert old-style includes for std library headers into modules. This might cause issues in legacy code where these includes were affected by the preprocessor definitions passed earlier, as modules will be protected from that by design. This is not yet settled in the standard, and my guess is that the compilers will be afraid to provide such behavior by default.
I also want to mention a few interesting talks from local speakers. One was the story of implementing Concepts in Clang, given by the actual contributor, Saar Raz, who is now ready to push the first implementation parts to the LLVM master. This will put Clang ahead of GCC, which still supports an old Concepts TS incompatible with the C++20 draft. An interesting fact is that the author plans to support the old TS syntax (like in GCC) in Clang as well – maybe not fully, but at least to some extent. The talk itself was mostly dedicated to the history of the implementation and typical issues most first-time LLVM contributors run into.
Gal Zaban also gave an exciting talk about Reverse Engineering C++ code. Can you read the assembly code and see the patterns for destructors/constructors, template instantiations, and other typical C++ constructions? This speaker can! Doing this is her everyday job, so don’t leave her with your secret code – she can get it!
On the first evening, we enjoyed a session full of lightning talks ranging from serious to funny, from technical to purely philosophical. The local community leaders were also happy to learn from Bryce Adelstein Lelbach on how to form a national body to represent Israel in the international C++ committee.
Beyond the talks
Core C++ had an exhibition representing well-known companies that often join C++ events as partners, sponsors, and exhibitors, including Conan/JFrog, Think-Cell, IncrediBuild, and JetBrains, among others. My colleagues and I we were happy to chat with everyone who stopped by our booth about CLion and ReSharper C++. Wee even managed to help out with some practical advice, for example, about how you can start using the compilation database format for Makefiles-based projects in your company.
On Friday, the activities only ran until lunch in Israel, including a fantastic training session from Diego and Luis from the Conan/JFrog team. It was interesting to learn about the capabilities of Conan. It also inspired me to come up with some feature ideas for the Conan plugin that was recently presented on our blog.
When the heat was mostly over, we sneaked a peak the old port and the narrow stone streets of the city. Big thanks go to the organizers for giving us a tour of the old city of Jaffa! The breathtaking view of downtown Tel Aviv from the hill was an unforgettable experience.
By the way, the Eurovision song contest was held in Tel Aviv on the same days as Core C++. The event organizers raffled a free ticket to the final show among the attendees. I don’t know if the winner did or did not go to the show, but Bryce shared on Twitter his story of sudden decisions and the visit to the Final.
Comments from Phil
It was my first time in Israel and all I can say is: it won’t be my last! The people were welcoming and, as a speaker, exhibitor, and attendee, I felt well-looked-after. The food was amazing and, of course, the weather was perfect.
As is often the case these days, I didn’t get to see many of the other talks, but from what I did see the quality was high – not just from the speakers but from the audience, too. As well as my own talk, “The Dawn of a New Error”, I ran a pre-conference class, “Accelerated TDD”, which was well attended and I had many thoughtful – sometimes challenging – questions.
For a first time conference, I think Core C++ got off to a great start – with only some minor teething issues. This is one to watch!
As a closing remark
C++20 is going to be the next Big Thing in C++ history with many giant features entering the standard. So our guess is that Core C++ 2020 will be even bigger and more successful. Good luck and thanks to all the organizers, speakers, and participants who made it happen this year!