Cppcon 2021 A (Short) Tour of C++ Modules--Danila Kutenin

Registration is now open for CppCon 2021, which starts on October 24 and will be held both in person and online. To whet your appetite for this year’s conference, we’re posting some upcoming talks that you will be able to attend this year. Here’s another CppCon future talk we hope you will enjoy – and register today for CppCon 2021 to attend in person, online, or both!

A (Short) Tour of C++ Modules

Tuesday, October 26 • 3:15pm - 4:15pm

by Danila Kutenin

Summary of the talk:

Once you decide to start a big project or a company, it eventually comes down to unifying the build infrastructure. However, hundreds and thousands of compilation units are extremely difficult to maintain to achieve the highest possible performance. Contrary to the belief that you should always trust your compiler, recent micro-architectural breakthroughs from merging two arrays with special instructions to JSON parsing through SIMD showed that compilers are far from understanding every single piece of code you write. In this session we will talk about our experience on how to achieve the highest possible performance without much rewriting of your code, which trade-offs C++ compilers have, how to make the most of your micro-architecture, why unrelated changes may decrease the performance and how to debug them. In the end we will show which compiler options gave us the opportunity to gain 5-15% of performance, stabilized the benchmarks and decreased the build size for search engines, databases and high performance computing.

Cppcon 2021 Back To Basics: Overload Resolution--Barbara Geller and Ansel Sermersheim

Registration is now open for CppCon 2021, which starts on October 24 and will be held both in person and online. To whet your appetite for this year’s conference, we’re posting some upcoming talks that you will be able to attend this year. Here’s another CppCon future talk we hope you will enjoy – and register today for CppCon 2021 to attend in person, online, or both!

Back To Basics: Overload Resolution

Tuesday, October 26 • 9:00am - 10:00am

by Barbara Geller and Ansel Sermersheim

Summary of the talk:

During this talk we will explain the definition of a function overload and what rules the compiler follows to decipher which overload to call. The rules can be complex and may not always do what you expect. We will condense the C++ standard to the essential rules every programmer should be aware of in order to reason through overload resolution.

Knowing how overload resolution works will improve your ability to debug compiler errors and this is vital to write correct code. We will provide simple and concise explanations for various buzzwords like template argument deduction, implicit conversion, standard conversions, and tie-breakers.

This talk is part of the Back to Basics track and the material will be targeted to include all skill levels. Familiarity with C++ is recommended however no prior knowledge of function overloads is required.

C++ Russia 2021 Conference

C++ Russia, 15 Nov - 18 Nov is a conference with several tracks of in-depth technical talks devoted to C++.

C++ Russia

About the conference

The conference covers topics like

  • concurrency;
  • performance;
  • architecture;
  • infrastructure solutions.

All you need to make your code more concise and productive.

Among speakers:

  • Titus Winters, Google;
  • Phil Nash, SonarSource;
  • Anton Polukhin, Yandex Go;
  • Denis Yaroshevskiy, Bloomberg.

You can view the list of speakers and the first program on the website.

Supercharge Your C++ analysis with SonarLint for CLion

SonarSource recently released the SonarLint plug-in for CLion - this article looks at some of the interesting rules (checks) this gives you, and how each tool enhances the other.

Supercharge your C++ analysis with SonarLint for CLion

by Phil Nash and Geoffray Adde

From the article:

In this post, we want to demonstrate the powerful capabilities of the C++ analyzer with SonarLint (a free, in-IDE static analysis plugin) and highlight some unique and interesting rules that you might find useful. Through that lens, we want to show how you can leverage them to elevate your CLion’s inbuilt static analysis capabilities.

CppCon 2021 Code Analysis++--Anastasia Kazakova

Registration is now open for CppCon 2021, which starts on October 24 and will be held both in person and online. To whet your appetite for this year’s conference, we’re posting some upcoming talks that you will be able to attend this year. Here’s another CppCon future talk we hope you will enjoy – and register today for CppCon 2021 to attend in person, online, or both!

Code Analysis++

Tuesday, October 26 • 7:45am - 8:45am

by Anastasia Kazakova

Summary of the talk:

Martin Fowler once wrote that high-quality software is actually cheaper to produce than low-quality software. We agree with that sentiment, and we warmly welcomed the C++ Core Guidelines when they were introduced in 2015. Research and surveys conducted in the C++ Community consistently demonstrate the popularity of the Clang family of tools, as well as the growing demand for static analysis to be added to code editors.

In this talk, we’ll explore the current capabilities of existing C++ static analyzers and discuss some of the enforcements listed in the C++ Core Guidelines from a toolability aspect. We’ll also look into the recent “Simplify C++” trend in the language’s evolution, and to wrap things up we’ll take a look at how technology-specific analysis (like MISRA and AUTOSAR) is being adopted.

A variety of checks will be discussed, from catching a dangling pointer to conforming to the preferred code style and naming scheme. And I want to share a crazy idea I have about gamifying static analysis. Let’s play!

CWE Top 25 2021. What is it, what is it for and how is it useful for static analysis?

For the first time PVS-Studio provided support for the CWE classification in the 6.21 release. It took place on January 15, 2018. Years have passed since then and we would like to tell you about the improvements related to the support of this classification in the latest analyzer version.

CWE Top 25 2021. What is it, what is it for and how is it useful for static analysis?

by Mikhail Gelvih

From the article:

We have been using the CWE classification for PVS-Studio diagnostics for more than three years. Their number increases every year. In 2018, we covered only 94 points on the CWE list. Now it's almost 130. However, this article isn't about the total number of diagnostics. Let's talk about those that are included in the list of the most dangerous diagnostics in 2021. If you want to read the full list, you can get it in the "CWE compliance" section of our documentation.

2021-09 Mailing Available

The 2021-09 mailing of new standards papers is now available.

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
P0288R7 move_only_function (was any_invocable) Matt Calabrese, Ryan McDougall 2021-08-27 2021-09 P0288R6 LWG Library
P0447R16 Introduction of std::hive to the standard library Matt Bentley 2021-09-08 2021-09 P0447R15 SG14 Low Latency,LEWG Library Evolution,All of WG21
P0627R5 Function to mark unreachable code Jens Maurer 2021-09-19 2021-09 P0627R3 LWG Library
P0849R8 auto(x): decay-copy in the language Zhihao Yuan 2021-08-26 2021-09 P0849R7 CWG Core,LWG Library
P1018R13 C++ Language Evolution status pandemic edition 2021/06–2021/08 JF Bastien 2021-09-06 2021-09 P1018R12 EWG Evolution,All of WG21
P1072R10 basic_string::resize_and_overwrite Chris Kennelly 2021-09-14 2021-09 P1072R9 LWG Library
P1885R7 Naming Text Encodings to Demystify Them Corentin Jabot 2021-09-14 2021-09 P1885R6 LEWG Library Evolution
P2012R1 Fix the range-based for loop, Rev1 Nicolai Josuttis 2021-09-16 2021-09 P2012R0 EWG Evolution,CWG Core
P2036R3 Changing scope for lambda trailing-return-type Barry Revzin 2021-09-14 2021-09 P2036R2 CWG Core
P2066R9 Suggested draft TS for C++ Extensions for Minimal Transactional Memory Jens Maurer 2021-09-15 2021-09 P2066R8 CWG Core,LWG Library
P2093R9 Formatted output Victor Zverovich 2021-09-09 2021-09 P2093R8 LEWG Library Evolution
P2128R6 Multidimensional subscript operator Corentin Jabot 2021-09-14 2021-09 P2128R5 CWG Core
P2214R1 A Plan for C++23 Ranges Barry Revzin 2021-09-14 2021-09 P2214R0 LEWG Library Evolution
P2266R2 Simpler implicit move Arthur O'Dwyer 2021-08-31 2021-09 P2266R1 EWG Evolution,CWG Core
P2276R1 Fix cbegin Nicolai Josuttis 2021-09-10 2021-09 P2276R0 LEWG Library Evolution,LWG Library
P2278R1 cbegin should always return a constant iterator Barry Revzin 2021-09-15 2021-09 P2278R0 LEWG Library Evolution
P2314R3 Character sets and encodings Jens Maurer 2021-09-15 2021-09 P2314R2 CWG Core,LWG Library
P2316R2 Consistent character literal encoding Corentin Jabot 2021-09-14 2021-09 P2316R1 SG22 Compatability,CWG Core
P2322R4 ranges::fold Barry Revzin 2021-09-12 2021-09 P2322R3 LEWG Library Evolution
P2348R1 Whitespaces Wording Revamp Corentin Jabot 2021-09-15 2021-09 P2348R0 SG16 Unicode
P2362R3 Remove non-encodable wide character literals and multicharacter wide character literals Peter Brett 2021-08-27 2021-09 P2362R2 SG22 Compatability,CWG Core
P2363R1 Extending associative containers with the remaining heterogeneous overloads Konstantin Boyarinov 2021-09-15 2021-09 P2363R0 LEWG Library Evolution
P2372R3 Fixing locale handling in chrono formatters Victor Zverovich 2021-09-12 2021-09 P2372R2 LWG Library
P2388R1 Abort-only contract support Andrzej Krzemieński 2021-09-14 2021-09 P2388R0 SG21 Contracts
P2388R2 Minimum Contract Support: either Ignore or Check_and_abort Andrzej Krzemieński 2021-09-19 2021-09 P2388R1 SG21 Contracts
P2390R1 Add annotations for unreachable control flow Jens Gustedt 2021-09-17 2021-09 P2390R0 SG22 Compatability
P2408R1 Ranges views as inputs to non-Ranges algorithms David Olsen 2021-08-31 2021-09 P2408R0 LEWG Library Evolution
P2418R1 Add support for std::generator-like types to std::format Victor Zverovich 2021-09-12 2021-09 P2418R0 LWG Library
P2419R1 Clarify handling of encodings in localized formatting of chrono types Victor Zverovich 2021-09-19 2021-09 P2419R0 LEWG Library Evolution
P2430R0 Slides: Partial success scenarios with P2300 Christopher Kohlhoff 2021-08-23 2021-09   LEWG Library Evolution
P2431R0 Presentation: Plans for P2300 Revision 2 Michael Garland 2021-08-25 2021-09   SG1 Concurrency and Parallelism,LEWG Library Evolution
P2432R0 Fixing istream_view Nicolai Josuttis 2021-08-27 2021-09   SG9 Ranges,LEWG Library Evolution,LWG Library
P2435R0 2021 Summer Library Evolution Poll Outcomes Bryce Adelstein Lelbach 2021-09-09 2021-09   LEWG Library Evolution
P2436R0 2021 September Library Evolution Polls Bryce Adelstein Lelbach 2021-09-14 2021-09   LEWG Library Evolution
P2437R0 Support for #warning Aaron Ballman 2021-09-09 2021-09   EWG Evolution
P2438R0 std::string::substr() && Federico Kircheis 2021-09-14 2021-09   LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P2439R0 Slides for P2415R1, what is a view? Tim Song 2021-09-10 2021-09   LEWG Library Evolution
P2440R0 ranges::iota, ranges::shift_left, and ranges::shift_right Tim Song 2021-09-12 2021-09   LEWG Library Evolution
P2441R0 views::join_with Barry Revzin 2021-09-14 2021-09   LEWG Library Evolution
P2442R0 Windowing range adaptors: views::chunk and views::slide Tim Song 2021-09-14 2021-09   LEWG Library Evolution
P2443R0 views::chunk_by Tim Song 2021-09-14 2021-09   LEWG Library Evolution
P2444R0 The Asio asynchronous model Christopher Kohlhoff 2021-09-15 2021-09   LEWG Library Evolution
P2446R0 views::move Barry Revzin 2021-09-17 2021-09   LEWG Library Evolution