Why it is important to apply static analysis for open libraries that you add to your project

If there are several options, it is useful to take time to analyze open libraries in order to choose the best one.

Why it is important to apply static analysis for open libraries that you add to your project

by Andrey Karpov

From the article:

Because of a typo, the original vector is returned, not the new scaledVector container. The same error occurs in the division operator. Facepalm. Again, these errors don't mean anything separately. Although, this is a hint that this library isn't used much and there is highly likely that there are other serious undetected errors in it.

False positives are our enemies, but may still be your friends -- Loic Joly

Insights into how static analysis rules are structured, why false positives exist, how they're fought, and why - hard as we try - they may always be with us. 

False positives are our enemies, but may still be your friends

By Loic Joly

About the article:

When writing a rule for static analysis, it’s possible that in some cases, the rule does not give the results that were expected. Unfortunately, naming a false positive is often far easier than fixing it. In this post, I’ll discuss how the different types of rules give rise to different types of false positives, which ones are easier to fix than others, and how you can help. I’ll end with insight into how issues that are false positives can still be true indicators that the code needs to change.

"C++ Move Semantics - The Compete Guide" is Complete and in Print -- Nicolai Josuttis

The book "C++ Move Semantics - The Complete Guide" is now done and out as ebook or printed.

C++ Move Semantics - The Complete Guide

by Nicolai Josuttis

About the book

On 260 pages (yes, it is that complicated if you want to deal with all the details), Nicolai Josuttis introduces and explains all aspects of C++ move semantics:

  • Intuitive motivation
  • Compelling examples
  • Tricky details

The book covers all aspects of move semantics:

  • From std::move() and rvalue references
  • Over reference qualifiers, invalid moved-from states, and value categories
  • Up to tricky details in generic code using std::forward(), universal/forwarding references, auto&&, and decltype(auto).

Additional chapters about move-only types and the support of move semantics in the C++ standard library help to understand and use standard types in practice.

See cppmove.com for a detailed list of all topics covered.

 

Getting timely, accurate feedback on your C++ from the SonarQube ecosystem -- G. Ann Campbell

The SonarQube ecosystem offers C++ developers feedback throughout the workflow: in-IDE for the individual, in PRs for peer review, and in SonarQube for the team

Getting timely, accurate feedback on your C++ from the SonarQube ecosystem

By G. Ann Campbell

From the article

Late feedback is a pain in the butt. Regardless of how it comes, hearing "that thing you did two weeks ago was wrong" is unwelcome at best. Good feedback is immediate, actionable and at least dispassionate, if not compassionate. That's why we help you integrate C++ static analysis throughout your workflow, so you and your team get the feedback you need when and where it's most useful. In this post, I'll walk through how SonarQube and SonarLint integrate smoothly into your workflow and your team to give you the right data at the right time and in the right place.

HPX V1.5.1 released -- STE||AR Group

The STE||AR Group has released V1.5.1 of HPX -- A C++ Standard library for parallelism and concurrency.

HPX V1.5.1 Released

The newest version of HPX (V1.5.1) is now available for download! This is a relatively small bug-fix release that fixes some problems we discovered in the 1.5.0 release.

    HPX is a general purpose parallel C++ runtime system for applications of any scale. It implements all of the related facilities as defined by the C++ Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17 parallel algorithms. Additionally, HPX implements functionalities proposed as part of the ongoing C++ standardization process, such as large parts of the features related parallelism and concurrency as specified by the upcoming C++20 Standard, the C++ Concurrency TS, Parallelism TS V2, data-parallel algorithms, executors, and many more. It also extends the existing C++ Standard APIs to the distributed case (e.g. compute clusters) and for heterogeneous systems (e.g. GPUs).

    HPX seamlessly enables a new Asynchronous C++ Standard Programming Model that tends to improve the parallel efficiency of our applications and helps reducing complexities usually associated with parallelism and concurrency.

 

Adding ask me anything to Meeting C++ 2020

Some news about this years Meeting C++ conference: we'll have 2 AMAs!

Adding ask me anything to Meeting C++ 2020

by Jens Weller

From the article:

Some news on Meeting C++ 2020! Attendees will be able to attend AMA sessions with...

During CppCon I noticed how well AMA sessions went and that they are a great feature for an online conference. And for some time I knew that this years conference has some extra space for content due to its online nature.

std::exchange Patterns: Fast, Safe, Expressive, and Probably Underused--Ben Deane

Do you know about it?

std::exchange Patterns: Fast, Safe, Expressive, and Probably Underused

by Ben Deane

From the article:

This blog post has been a long time in the making. I gave a lightning talk on std::exchange at CppCon 2017; Jonathan first asked me to write something about std::exchange in January 2019; now here we are in the strange days of the second half of 2020. But although much has changed in the outside world, I would guess that not much has changed in most C++ codebases and in the minds of many C++ programmers with respect to using std::exchange. It could still do with more publicity and more recognition of potential use cases...

New C++ features in GCC 10--Marek Polacek

Compiler improving.

New C++ features in GCC 10

by Marek Polacek

From the article:

The GNU Compiler Collection (GCC) 10.1 was released in May 2020. Like every other GCC release, this version brought many additions, improvements, bug fixes, and new features. Fedora 32 already ships GCC 10 as the system compiler, but it’s also possible to try GCC 10 on other platforms (see godbolt.org, for example). Red Hat Enterprise Linux (RHEL) users will get GCC 10 in the Red Hat Developer Toolset (RHEL 7), or the Red Hat GCC Toolset (RHEL 8).

This article focuses on the part of the GCC compiler on which I spend most of my time: The C++ front end. My goal is to present new features that might be of interest to C++ application programmers. Note that I do not discuss developments in the C++ language itself, although some language updates overlap with compiler updates. I also do not discuss changes in the standard C++ library that comes with GCC 10.

We implemented many C++20 proposals in GCC 10. For the sake of brevity, I won’t describe them in great detail. The default dialect in GCC 10 is -std=gnu++14; to enable C++20 features, use the -std=c++20 or -std=gnu++20 command-line option. (Note that the latter option allows GNU extensions.)...

CLion 2020.3 EAP: CTest, Set Execution Point in Debug, Qt project templates...--Anastasia Kazakova

Tools improving.

CLion 2020.3 EAP: CTest, Set Execution Point in Debug, Qt project templates, and MISRA Checks

by Anastasia Kazakova

From the article:

There are many useful changes and improvements planned for CLion 2020.3, and today we are ready to share some of them with you. CLion officially starts the 2020.3 Early Access Program today!

For those who just joined us, EAP builds are free and valid for 1 month, so you don’t need an active subscription to try them out. However, the quality of EAP builds is usually lower than that of releases. If you are wondering why taking part in an EAP is worth your while, please see this nice explanation by the WebStorm team...

2020-09 mailing available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
P0288R5 any_invocable Ryan McDougall, Matt Calabrese 2020-09-03 2020-09 P0288R4 LWG Library
P0443R14 A Unified Executors Proposal for C++ Jared Hoberock 2020-09-22 2020-09 P0443R13 SG1 Concurrency and Parallelism,LEWG Library Evolution
P0881R7 A Proposal to add stacktrace library Antony Polukhin 2020-09-16 2020-09 P0881R6 LWG Library
P0958R2 Networking TS changes to support proposed Executors TS Christopher Kohlhoff 2020-09-22 2020-09 P0958R1 SG4 Networking
P1322R2 Networking TS enhancement to enable custom I/O executors Christopher Kohlhoff 2020-09-22 2020-09 P1322R1 SG1 Concurrency and Parallelism,SG4 Networking,LEWG Library Evolution
P1371R3 Pattern Matching Michael Park 2020-09-15 2020-09 P1371R2 EWG Evolution
P1701R1 Inline Namespaces: Fragility Bites Nathan Sidwell 2020-09-13 2020-09 P1701R0 EWG Evolution
P1885R3 Naming Text Encodings to Demystify Them Corentin Jabot 2020-09-14 2020-09 P1885R2 SG16 Unicode,LEWG Library Evolution
P1949R6 C++ Identifier Syntax using Unicode Standard Annex 31 Steve Downey 2020-09-15 2020-09 P1949R5 EWG Evolution,CWG Core
P2013R3 Freestanding Language: Optional ::operator new Ben Craig 2020-09-13 2020-09 P2013R2 EWG Evolution
P2029R3 Proposed resolution for core issues 411, 1656, and 2333; escapes in character and string literals Tom Honermann 2020-09-11 2020-09 P2029R2 CWG Core
P2066R3 Suggested draft TS for C++ Extensions for Transaction Memory Light Jens Maurer 2020-09-15 2020-09 P2066R2 SG1 Concurrency and Parallelism,EWG Evolution,LEWG Library Evolution
P2077R1 Heterogeneous erasure overloads for associative containers Konstantin Boyarinov 2020-09-15 2020-09 P2077R0 LEWG Library Evolution
P2138R3 Rules of Design<=>Specification engagement Ville Voutilainen 2020-09-15 2020-09 P2138R2 EWG Evolution,LEWG Library Evolution
P2145R1 Evolving C++ Remotely Bryce Adelstein Lelbach 2020-09-15 2020-09 P2145R0 All of WG21
P2164R2 views::enumerate Corentin Jabot 2020-09-13 2020-09 P2164R1 LEWG Library Evolution
P2166R1 A Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptr Yuriy Chernyshov 2020-09-07 2020-09 P2166R0 LEWGI SG18: LEWG Incubator,LEWG Library Evolution,LWG Library
P2169R2 A Nice Placeholder With No Name Corentin Jabot 2020-09-13 2020-09 P2169R1 EWG Evolution
P2192R2 std::valstat -Transparent Returns Handling Dusan B. Jovanovic 2020-09-14 2020-09 P2192R1 LEWGI SG18: LEWG Incubator
P2194R0 The character set of the internal representation should be Unicode Corentin Jabot 2020-08-24 2020-09   SG16 Unicode,EWG Evolution,CWG Core
P2195R0 Electronic Straw Polls Bryce Adelstein Lelbach 2020-09-15 2020-09   All of WG21
P2206R0 Executors Thread Pool review report Ruslan Arutyunyan 2020-09-02 2020-09   LEWG Library Evolution
P2212R1 Relax Requirements for time_point::clock Alexey Dmitriev 2020-09-14 2020-09 P2212R0 LEWGI SG18: LEWG Incubator
P2215R1 "Undefined behavior" and the concurrency memory model Hans Boehm 2020-09-14 2020-09 P2215R0 SG1 Concurrency and Parallelism,SG12 Undefined and Unspecified Behavior
P2216R0 std::format improvements Victor Zverovich 2020-09-06 2020-09   LEWG Library Evolution
P2217R0 SG16: Unicode meeting summaries 2020-06-10 through 2020-08-26 Tom Honermann 2020-08-29 2020-09   SG16 Unicode
P2218R0 More flexible optional::value_or() Marc Mutz 2020-09-15 2020-09   LEWGI SG18: LEWG Incubator
P2219R0 P0443 Executors Issues Needing Resolution Jared Hoberock 2020-09-10 2020-09   SG1 Concurrency and Parallelism
P2220R0 redefine properties in P0443 Kirk Shoop 2020-09-14 2020-09   LEWG Library Evolution
P2221R0 define P0443 cpos with tag_invoke Kirk Shoop 2020-09-14 2020-09   LEWG Library Evolution
P2223R0 Trimming whitespaces before line splicing Corentin Jabot 2020-09-13 2020-09   EWG Evolution,CWG Core
P2224R0 A Better bulk_schedule Michael Garland 2020-09-14 2020-09   SG1 Concurrency and Parallelism