<![CDATA[Standard C++ | Product News]]> http://isocpp.org/blog en Copyright 2024 CGAL Released, Computational Geometry Algorithms Library -- Laurent Rineau https://isocpp.org//blog/2024/10/CGAL-6.0-released-Computational-Geometry-Algorithms-Library https://isocpp.org//blog/2024/10/CGAL-6.0-released-Computational-Geometry-Algorithms-Library <![CDATA[

The CGAL Open Source Project is pleased to announce the recent releases of CGAL versions 5.5.5, 5.6.2, 6.0, and 6.0.1.

New CGAL versions: 5.5.5, 5.6.2, 6.0, and 6.0.1

by Laurent Rineau

From the article

CGAL version 6.0

CGAL version 6.0 was released on September 27, 2024. Following the discovery of early issues, version 6.0.1 was subsequently released on October 22, 2024.

This version is a major release, with many new features and improvements.

General changes

  • C++17 Requirement: CGAL 6.0 requires a C++17 compatible compiler.
  • GMP/MPFR Optional: GMP/MPFR are no longer mandatory; Boost.Multiprecision can be used.
  • Qt6 Demos: All demos are now based on Qt6.
  • Polyhedral Surface: The demo has been renamed to “CGAL Lab” and moved to its own directory in demo/Lab/.

New Packages

Breaking Changes

  • CMake Changes: UseCGAL.cmake removed; use CGAL::CGAL target instead.
  • Kernel: Replaced boost::variant with std::variant and boost::optional with std::optional in the intersection functions.

Enhancements

  • AABB Tree: Now supports 2D and 3D primitives.
]]>
<![CDATA[News, Product News,]]> Wed, 23 Oct 2024 18:59:22 +0000 Laurent Rineau
PVS-Studio 7.33: SN-DBS support https://isocpp.org//blog/2024/10/pvs-studio-7.33-sn-dbs-support https://isocpp.org//blog/2024/10/pvs-studio-7.33-sn-dbs-support <![CDATA[

PVS-Studio 7.33 has been released. Check out the latest features, including SN-DBS support, C# user annotations, and other exciting updates! See more details in this note.

PVS-Studio 7.33: SN-DBS support

by Valerii Filatov

From the article:

To enhance the integration of PVS-Studio with Unreal Engine, we've introduced support for SN-DBS, a distributed build system. These changes apply to Unreal Engine 5.5. Learn more about using PVS-Studio with Unreal Engine in the documentation.

]]>
<![CDATA[Product News,]]> Sun, 20 Oct 2024 09:15:49 +0000 Andrey Karpov
PVS-Studio 7.32: enhanced analysis, new plugins and more https://isocpp.org//blog/2024/08/pvs-studio-7.32-enhanced-analysis-new-plugins-and-more https://isocpp.org//blog/2024/08/pvs-studio-7.32-enhanced-analysis-new-plugins-and-more <![CDATA[

PVS-Studio 7.32 has been released. Discover enhanced C++ analysis optimization, new plugins and features, and a host of other updates.

PVS-Studio 7.32: enhanced analysis, new plugins and more

by Gleb Aslamov

From the article:

The PVS-Studio analyzer now supports integration with Bazel and Scons build systems for C++ projects. The PVS-Studio plugin is now available for Qt Creator 14.x. The plugin for Qt Creator 8.x is no longer supported. We aim to ensure backward compatibility between the latest plugin versions and all Qt Creator versions released in the past two years.

]]>
<![CDATA[Product News,]]> Sun, 18 Aug 2024 18:28:40 +0000 Andrey Karpov
HPX V1.10.0 released -- STE||AR Group https://isocpp.org//blog/2024/05/hpx-v1.10.0-released-stellar-group https://isocpp.org//blog/2024/05/hpx-v1.10.0-released-stellar-group <![CDATA[

The STE||AR Group has released V1.10.0 of HPX -- A C++ Standard library for Concurrency and Parallelism.

HPX V1.10.0 Released

We have released HPX 1.10.0 — a major update to our C++ Standard Library for Concurrency and Parallelism. We have continued to modernize HPX to fully conform to the latest standardization efforts in the are of parallelism and concurrency. Our HPX documentation has seen a major overhaul for this release, please have a look here. We finished documenting the public local HPX API, we have added migration guides from widely used parallelization platforms to HPX (OpenMP, TBB, and MPI). Among other things, we have performed a lot of code cleanup and refactoring to improve the overall code quality and decrease compile times and to improve the consistency of our exposed APIs. The core implementation has seen many performance optimizations that impact every aspect of our applications.

If you have any questions, comments, or exploits to report you can reach us on IRC or Matrix (#ste||ar on libera.chat) or email us at hpx-users. We depend on your input!

You can download the release from our releases page or check out the v1.10.0 tag using git. A full list of changes can be found in the release notes.

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++20 Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17, C++20, and C++23 parallel algorithms, including a full set of parallel range-based 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++23 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.

 

]]>
<![CDATA[News, Product News,]]> Wed, 29 May 2024 14:44:40 +0000 Hartmut Kaiser
GCC 14 -fanalyzer improvements for buffer overflows and more -- David Malcolm https://isocpp.org//blog/2024/04/gcc-14-fanalyzer-improvements-for-buffer-overflows-and-more-david-malcolm https://isocpp.org//blog/2024/04/gcc-14-fanalyzer-improvements-for-buffer-overflows-and-more-david-malcolm <![CDATA[

For anyone interested in the top source of memory safety issues, out-of-bounds accesses... GCC 14 will be able to catch more cases, and even show them with some colorful retro ASCII art:

Improvements to static analysis in the GCC 14 compiler

by David Malcolm

It does require some source code annotation, but also delivers safety value in return.

From the article:

So for GCC 14, I've added the ability for the analyzer to emit text-based diagrams visualizing the spatial relationships in a predicted buffer overflow. ... [For example,] this diagram shows the destination buffer populated by the content from the strcpy call, and thus the existing terminating NUL byte used for the start of the strcat call. For non-ASCII strings ... it can show the UTF-8 representation of the characters ...

... [Another improvement] is that the analyzer now simulates APIs that scan a buffer expecting a null terminator byte, and will complain about code paths where a pointer to a buffer that isn't properly terminated is passed to such an API.

Plus more, such as:

The analyzer has a form of "taint analysis", which tracks attacker-controlled inputs, places where they are sanitized, and places where they are used without sanitization. In previous GCC releases this was too buggy to enable by default, with lots of false positives, so I hid it behind an extra command-line argument. I've fixed many bugs with this, so for GCC 14 I've enabled this by default when -fanalyzer is selected. This also enables these 6 taint-based warnings:

]]>
<![CDATA[News, Product News,]]> Thu, 04 Apr 2024 22:32:34 +0000 Blog Staff
Using Copilot Chat with C++ in VS Code -- Sinem Akinci https://isocpp.org//blog/2024/04/using-copilot-chat-with-cpp-in-vs-code-sinem-akinci https://isocpp.org//blog/2024/04/using-copilot-chat-with-cpp-in-vs-code-sinem-akinci <![CDATA[

copilotchat.pngIf you are a C++ developer who uses VS Code as your editor, Copilot Chat can help you with many of your everyday coding tasks by allowing you to iterate with your code in natural language.

Using Copilot Chat with C++ in VS Code

by Sinem Akinci

From the article:

We have just released a new YouTube video demonstrating the power of Copilot Chat in C++ code:

We cover how Copilot Chat can provide enhancements to your C++ coding scenarios like:

  • Simplifying and refactoring existing code
  • Generating new code and iterating with the prompt
  • Generating and explaining new test cases
  • Refactoring test cases to new frameworks
  • Understanding errors with your code
  • … and more!
]]>
<![CDATA[News, Product News,]]> Thu, 04 Apr 2024 17:55:46 +0000 Blog Staff
Seastar, ScyllaDB, and C++23 https://isocpp.org//blog/2024/02/seastar-scylladb-and-cpp23 https://isocpp.org//blog/2024/02/seastar-scylladb-and-cpp23 <![CDATA[

Seastar announces that now that C++23 is available, they will support C++23 and C++20 (dropping support for C++17) in accordance with their support policy

Seastar, ScyllaDB, and C++23

By Avi Kivity

From the article:

Seastar is an open-source (Apache 2.0 licensed) C++ framework for I/O intensive asynchronous computing, using the thread-per-core model. Seastar underpins several high- performance distributed systems: ScyllaDB, Redpanda, and Ceph Crimson. Seastar source is available on github. As a C++ framework, Seastar must choose which C++ versions to support. The support policy is last-two-versions. That means that at any given time, the most recently released version as well as the previous one are supported, but earlier versions cannot be expected to work. This policy gives users of the framework three years to upgrade to the next C++ edition while not constraining Seastar to ancient versions of the language.

Now that C++23 has been ratified, Seastar now officially supports C++20 and C++23. The previously supported C++17 is now no longer supported.

]]>
<![CDATA[News, Product News,]]> Sat, 17 Feb 2024 12:37:57 +0000 Jordi Mon Companys
PVS-Studio 7.29: Boost smart pointers, plugin for Qt Creator on macOS https://isocpp.org//blog/2024/02/pvs-studio-7.29-boost-smart-pointers-plugin-for-qt-creator-on-macos https://isocpp.org//blog/2024/02/pvs-studio-7.29-boost-smart-pointers-plugin-for-qt-creator-on-macos <![CDATA[

PVS-Studio 7.29 has been released. Now you can analyze Java projects in a plugin for VS Code, check Boost smart pointers, use the PVS-Studio plugin for Qt Creator 12 on macOS, and that's not all.

PVS-Studio 7.29: Java code check in VS Code, Boost smart pointers, and plugin for Qt Creator on macOS

by Gleb Aslamov

From the article:

The C++ analyzer now supports smart pointers from the Boost library: boost::unique_ptr and boost::shared_ptr. Now the PVS-Studio analyzer is able to detect errors such as null pointer dereferences when these classes are used.

]]>
<![CDATA[Product News,]]> Tue, 13 Feb 2024 13:50:51 +0000 Andrey Karpov
mp-units 2.1.0 released -- Mateusz Pusz https://isocpp.org//blog/2024/02/mp-units-2.1.0-released https://isocpp.org//blog/2024/02/mp-units-2.1.0-released <![CDATA[

We are happy to announce that mp-units 2.1.0 has been released and is available for download in Conan.

mp-units 2.1.0 released!

by Mateusz Pusz

About the release

Please check our blog post to read more about the improvements and some, unfortunately, breaking changes.

 

 

]]>
<![CDATA[News, Product News,]]> Tue, 06 Feb 2024 19:41:08 +0000 Mateusz Pusz
CppDepend 2024.1 Released! - Unveiling New Features and Improvements https://isocpp.org//blog/2024/02/cppdepend-2024.1-released-unveiling-new-features-and-improvements https://isocpp.org//blog/2024/02/cppdepend-2024.1-released-unveiling-new-features-and-improvements <![CDATA[

We are thrilled to announce the launch of CppDepend 2024.1, a significant update that introduces a plethora of enhancements and new features to further bolster your C/C++ development workflow.

CppDepend 2024.1 Released! - Unveiling New Features and Improvements

by the CppDepend Team

From the Article:

The latest version of CppDepend comes packed with an array of improvements and several new features that are designed to streamline project management, enhance code quality monitoring, and provide deeper insights into code bases. Key highlights of this release include an advanced source explorer, support for C++23/C++20/C++17, Improved Incremental analysis, and much more.

 

]]>
<![CDATA[News, Product News,]]> Sun, 04 Feb 2024 13:04:45 +0000 CppDepend Team
Top 10 errors in C and C++ projects in 2023 https://isocpp.org//blog/2023/12/top-10-errors-in-c-and-cpp-projects-in-2023 https://isocpp.org//blog/2023/12/top-10-errors-in-c-and-cpp-projects-in-2023 <![CDATA[

New Year is coming! It means, according to tradition, it's time to recall 10 of the most interesting bugs that PVS-Studio found during 2023.

Top 10 errors in C and C++ projects in 2023

by Alexey Gorshkov

From the article:

In this case, the developers wanted to fill the keyEventList array with zeros. Pay attention to the third parameter — the number of bytes the developers wanted to fill with zeros. In this case, sizeof(keyEventList) evaluates the pointer size instead of the array size. It depends on the target platform, but most often it's 4 or 8 bytes. However, the size of the structure is clearly larger than 4 or 8 bytes.

]]>
<![CDATA[Product News,]]> Fri, 22 Dec 2023 12:27:18 +0000 Andrey Karpov
PVS-Studio 7.28: support for ARM, analysis of Unreal Engine projects without Unity Build, and more https://isocpp.org//blog/2023/12/pvs-studio-7.28-support-for-arm-analysis-of-unreal-engine-projects-without https://isocpp.org//blog/2023/12/pvs-studio-7.28-support-for-arm-analysis-of-unreal-engine-projects-without <![CDATA[

Now you can run the analyzer on the ARM architecture, analyze .NET 8 projects, and check Unreal Engine projects without Unity Build — and there is more to come.

PVS-Studio 7.28: support for ARM, .NET 8, analysis of Unreal Engine projects without Unity Build, and more

by Gleb Aslamov

From the article:

When analyzing Unreal Engine projects with PVS-Studio, we often encounter issues with high memory usage and analysis slowdown. They usually arise when individual translation units are combined into a single file (the Unity Build system). Although the merging of translation units may have a positive impact on the compilation time, the large file size may increase the resource requirements for analysis.

]]>
<![CDATA[Product News,]]> Mon, 18 Dec 2023 09:19:14 +0000 Andrey Karpov
No, C++ static analysis does not have to be painful -- Geoffray Adde https://isocpp.org//blog/2023/08/no-cpp-static-analysis-does-not-have-to-be-painful https://isocpp.org//blog/2023/08/no-cpp-static-analysis-does-not-have-to-be-painful <![CDATA[

Static analysis as part of your CI pipeline has long been possible -- but tedious, at best, to setup. Sonar are upending that with an innovative new approach.

No, C++ static analysis does not have to be painful

by Geoffray Adde

From the article:

It seems impossible to offer serious C++ static analysis with a great configuration experience. Users must suffer the pain, or not use it at all.
Well, at Sonar we believe in making the impossible, possible and so we've gone ahead and solved this once and for all!

]]>
<![CDATA[News, Product News,]]> Sat, 26 Aug 2023 19:27:31 +0000 philsquared
PVS-Studio 7.26: running analysis in VS Code and Qt Creator, integration with DefectDojo, and more https://isocpp.org//blog/2023/08/pvs-studio-7.26-running-analysis-in-vs-code-and-qt-creator-integration-with https://isocpp.org//blog/2023/08/pvs-studio-7.26-running-analysis-in-vs-code-and-qt-creator-integration-with <![CDATA[

PVS-Studio 7.26 has been released. Now you can run the analysis in plugins for VS Code and Qt Creator; upload the analysis results to DefectDojo, and more. In this note, we'll take a closer look at these and other enhancements.

PVS-Studio 7.26: running analysis in VS Code and Qt Creator, integration with DefectDojo, and more

by Sergey Vasiliev

From the article:

Now the PVS-Studio plugins for Visual Studio Code and Qt Creator support the analysis of C and C++ projects. Moreover, the plugins support mass suppression of analyzer warnings (with the help of suppress files). This mechanism enables you to hide warnings for legacy code and work only with new warnings. In this way, the integration of the analyzer into the project will be much easier.

]]>
<![CDATA[Product News,]]> Thu, 17 Aug 2023 10:39:55 +0000 Andrey Karpov
HPX V1.9.1 released -- STE||AR Group https://isocpp.org//blog/2023/08/hpx-v1.9.1-released-stellar-group https://isocpp.org//blog/2023/08/hpx-v1.9.1-released-stellar-group <![CDATA[

The STE||AR Group has released V1.9.1 of HPX -- A C++ Standard library for Concurrency and Parallelism.

HPX V1.9.1 Released

We have released HPX 1.9.1 that adds a number of small new features and fixes a handful of problems discovered since the last 1.9.0 release. In particular: we fixed various occasional hanging during startup and shutdown in distributed scenarios. We also added support for zero-copy serialization on the receiving side to the TCP, MPI, and LCI parcelports. Moreover, we have added support for Visual Studio 2019 and GCC using MINGW on Windows, and also support for GCC 13 and Clang 15.0.0. Furthermore, we aligned our header names to their standards counterparts so porting from standard C++ to HPX is now easier. Last but not least, and by adhering to popular demand, we started adding migration guides for people interested in moving their codes away from other, commonplace parallelization frameworks like OpenMP and MPI. We have also continued to improve our documentation, please have a look here.

If you have any questions, comments, or exploits to report you can reach us on IRC or Matrix (#ste||ar on libera.chat) or email us at hpx-users. We depend on your input!

You can download the release from our releases page or check out the v1.9.1 tag using git. A full list of changes can be found in the release notes.

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++20 Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17, C++20, and C++23 parallel algorithms, including a full set of parallel range-based 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++23 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.

 

]]>
<![CDATA[News, Product News,]]> Sat, 12 Aug 2023 15:26:56 +0000 Hartmut Kaiser
PVS-Studio 7.25: support for latest versions of Qt Creator, Rider, and more https://isocpp.org//blog/2023/06/pvs-studio-7.25-support-for-latest-versions-of-qt-creator-rider-and-more https://isocpp.org//blog/2023/06/pvs-studio-7.25-support-for-latest-versions-of-qt-creator-rider-and-more <![CDATA[

PVS-Studio 7.25 has been released. In this version, we implemented the support of Qt Creator 10 and Rider 2022.2.3 (and higher), updated the libraries used by the analyzer, enhanced the documentation — and that's not all!

PVS-Studio 7.25: support for latest versions of Qt Creator, Rider, and more

by Nikita Lipilin

From the article:

When checking C++ projects that use MSBuild, PVS-Studio did not use the full power of Intel's 12th generation processors (for example, i7-12700, i9-12900). Apparently, the analysis processes were running only on energy-saving cores, while the rest remained idle. In the new version of PVS-Studio, the error has been fixed. Now the analyzer fully loads the processors and works much faster.

]]>
<![CDATA[Product News,]]> Thu, 15 Jun 2023 11:40:30 +0000 Andrey Karpov
HPX V1.9.0 released -- STE||AR Group https://isocpp.org//blog/2023/05/hpx-v1.9.0-released-stellar-group https://isocpp.org//blog/2023/05/hpx-v1.9.0-released-stellar-group <![CDATA[

The STE||AR Group has released V1.9.0 of HPX -- A C++ Standard library for Concurrency and Parallelism.

HPX V1.9.0 Released

We have released HPX 1.9.0 — a major update to our C++ Standard Library for Concurrency and Parallelism. The HPX parallel algorithms now have been fully adapted to C++23, all existing facilities have been adjusted to conform to this version of the Standard as well. We now can proudly announce full conformance to the C++23 concurrency and parallelism facilities. HPX supports all of the parallel algorithms as specified by C++23. We have been able to significantly improve the performance of some of our algorithms. On top of that we support parallel versions of all range-based algorithms and have added more support for explicit vectorization to our algorithms (using std::experimental::simd). Even more work has been done towards implementing P2300 (std::execution) and keeping the underlying senders/receivers facilities in line with the evolving standardization efforts. We have done a lot of refactoring to improve the consistency of our exposed APIs. Last but not least, we have continued to improve our documentation, please have a look here.

If you have any questions, comments, or exploits to report you can reach us on IRC or Matrix (#ste||ar on libera.chat) or email us at hpx-users. We depend on your input!

You can download the release from our releases page or check out the v1.9.0 tag using git. A full list of changes can be found in the release notes.

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++20 Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17, C++20, and C++23 parallel algorithms, including a full set of parallel range-based 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++23 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.

 

]]>
<![CDATA[News, Product News,]]> Sun, 07 May 2023 15:05:40 +0000 Hartmut Kaiser
C++ Brace Pair Colorization and More in Visual Studio -- Mryam Girmay https://isocpp.org//blog/2023/02/cpp-brace-pair-colorization-and-more-in-visual-studio https://isocpp.org//blog/2023/02/cpp-brace-pair-colorization-and-more-in-visual-studio <![CDATA[

Mryam-G1-96x96.jpgVisual Studio has a host of new productivity features, which you can read about in this article.

C++ Brace Pair Colorization and More in Visual Studio

by Mryam Girmay

From the article:

You can now visually distinguish each set of opening and closing braces for your C++ code making it easier to see your code’s scope or find any missing braces. There will be different colors for curly braces, and the paired braces {} will have the same color, which will make it easy to visualize where the braces open and close especially when you have intensely nested codes. The feature is available for C++ today and will be coming to additional languages in subsequent releases.

]]>
<![CDATA[News, Product News,]]> Thu, 16 Feb 2023 17:55:35 +0000 TartanLlama
Debug Linux Console apps in Visual Studio’s Integrated Terminal -- Sinem Akinci https://isocpp.org//blog/2023/02/debug-linux-console-apps-in-visual-studios-integrated-terminal https://isocpp.org//blog/2023/02/debug-linux-console-apps-in-visual-studios-integrated-terminal <![CDATA[

Visual Studio now comes with support for debugging interactive console applications directly from the IDE.

Debug Linux Console apps in Visual Studio’s Integrated Terminal

By Sinem Akinci

From the article:

Now, using the Linux Console embedded in the Integrated Terminal, Visual Studio supports a fully functional terminal-like experience when debugging Linux applications. This new Linux Console emulates an xterm and can support application screen manipulation; for example, writing screen formatting control characters to stdout or using the ncurses library. Additionally, there is support for vt sequences and keyboard shortcuts such as Ctrl+C application interruption.

]]>
<![CDATA[News, Product News,]]> Thu, 16 Feb 2023 17:54:57 +0000 TartanLlama
VS Code C++ Extension January Update: Create Definitions and Declarations -- Alexandra Kemper https://isocpp.org//blog/2023/02/vs-code-cpp-extension-january-update-create-definitions-and-declarations https://isocpp.org//blog/2023/02/vs-code-cpp-extension-january-update-create-definitions-and-declarations <![CDATA[

You can now create declarations from definitions and vice versa in Visual Studio Code.

VS Code C++ Extension January Update: Create Definitions and Declarations

by Alexandra Kemper

From the article:

Starting with the 1.13.6 version of the C++ Extension in VS Code, we are happy to share a much requested feature: Auto creation of definitions or declarations for functions! You can now quickly create a declaration in a header file for a function you only have a definition for, or vice versa. These generated definitions and declarations already include all function arguments, so no need for constant copying, pasting, and double checking.

]]>
<![CDATA[News, Product News,]]> Wed, 15 Feb 2023 18:54:07 +0000 TartanLlama
PVS-Studio in 2022 https://isocpp.org//blog/2023/01/pvs-studio-in-2022 https://isocpp.org//blog/2023/01/pvs-studio-in-2022 <![CDATA[

It's January 2023, which means it's time to look back at our achievements in 2022. In this article, we'll tell you what we accomplished and show you what features appeared in PVS-Studio in 2022. Let's go.

PVS-Studio in 2022

by Polina Alekseeva

From the article:

Speaking of cross-platform. As of now, the analyzer runs on Windows, Linux, and macOS on the x86_64 architecture. It is currently impossible to run the analyzer natively on the same operating systems under ARM (except for C and C++ analyzer on ARM-based macOS: you can run it via Rosetta). We're wondering if there are many people among our readers who want to natively use the analyzer on ARM. How critical is the build and analysis of projects on the ARM architecture for you?

]]>
<![CDATA[Product News,]]> Thu, 19 Jan 2023 16:34:59 +0000 Andrey Karpov
Top 10 bugs found in C++ projects in 2022 https://isocpp.org//blog/2022/12/top-10-bugs-found-in-cpp-projects-in-2022 https://isocpp.org//blog/2022/12/top-10-bugs-found-in-cpp-projects-in-2022 <![CDATA[

New Year is coming! It means, according to tradition, it's time to recall 10 of the most interesting warnings that PVS-Studio found during 2022.

Top 10 bugs found in C++ projects in 2022

by Vladislav Stolyarov

From the article:

Here the analyzer detected that a function, marked as noexcept, calls a function that throws an exception. If an exception arises from the nothrow function's body, the nothrow function calls std::terminate, and the program crashes. It could make sense to wrap the setName function in the function-try-block and process the exceptional situation there — or one could use something else instead of generating the exception.

]]>
<![CDATA[Product News,]]> Thu, 29 Dec 2022 16:43:09 +0000 Andrey Karpov
libstdc++ gets C++20 chrono https://isocpp.org//blog/2022/12/libstdcpp-gets-c20-chrono https://isocpp.org//blog/2022/12/libstdcpp-gets-c20-chrono <![CDATA[

Screenshot_2022-12-24_094211.pngImagine Jonathan Wakely in a red suit with his helper elves, delivering presents:

libstdc++ gets C++20 <chrono>

As seen on Reddit:

It looks like Jonathan Wakely has just today contributed a huge amount of effort towards <chrono>.

He's added the time zones, leap seconds, all that good stuff.

He's even added GDB pretty printers for inevitable date time debugging!

And these features are supported in <format>, which libstdc++13 has, if you weren't already aware. He's also made many other various improvements. Lets give a round of applause to Jonathan Wakely!

]]>
<![CDATA[News, Product News,]]> Sat, 24 Dec 2022 17:35:14 +0000 Blog Staff
High-confidence Lifetime Checks in Visual Studio version 17.5 Preview 2 -- Gabor Horvath https://isocpp.org//blog/2022/12/high-confidence-lifetime-checks-in-visual-studio-version-17.5-preview-2-gab https://isocpp.org//blog/2022/12/high-confidence-lifetime-checks-in-visual-studio-version-17.5-preview-2-gab <![CDATA[

More safety please:

High-confidence Lifetime Checks in Visual Studio version 17.5 Preview 2

by Gabor Horvath

From the article:

The C++ Core Guidelines’ Lifetime Profile, aims to detect lifetime problems, like dangling pointers and references, in C++ code. ... Lately, there has been an increased push in the C++ community to introduce lifetime-related safety features, which has led us to revisit the lifetime analysis in MSVC.

We spent the last couple of months looking into the results of using the lifetime analysis on real world code. This blog post summarizes our experience and the improvements we made along the way. The biggest change is the introduction of a new set of warnings. These warnings are the high-confidence versions of the existing warnings. Users who want less noise can enable only the high-confidence warnings, while users who want more rigorous checks at the cost of noise can enable both the old and the new warnings. As of 17.5, the high-confidence warnings are still experimental, but depending on the feedback we might include them in some of the recommended profiles in future versions...

]]>
<![CDATA[News, Product News,]]> Sat, 17 Dec 2022 22:01:16 +0000 Blog Staff
Boost 1.81.0: Major release now available https://isocpp.org//blog/2022/12/boost-1.81.0-major-release-now-available https://isocpp.org//blog/2022/12/boost-1.81.0-major-release-now-available <![CDATA[

Just in time for the holidays, a major new Taylor Swift album Boost library release just dropped:

Boost verison 1.81.0 released

Release managers: Marshall Clow and Glen Fernandes

From the announcement:

New Libraries

  • URL:A library for parsing, modifying, and printing URLs using only C++11, from Vinnie Falco and Alan de Freitas. Features include fast compilation, strong invariants, and strict compliance using a memory-friendly approach.

Updated Libraries

  • Asio:
    • Added the consign completion token adapter, which can be used to attach additional values to a completion handler.
    • Added any_completion_handler<>, which can be used to type-erase completion handlers.
    • Added experimental::co_composed to enable lightweight implementations of user-defined asynchronous operations using C++20 coroutines.
    • Add range-based experimental::make_parallel_group() overloads.
    • Added any_completion_executor, a type-erased wrapper for executors that are associated with completion handlers.
    • Added missing context query to use_future's executor.
    • Added nothrow constructor overloads to execution::any_executor<> and any_io_executor.
    • Optimised representation of empty execution::any_executor objects to improve the performance of copy and move operations.
    • Added an associated_cancellation_slot specialisation for std::reference_wrapper.
    • Changed I/O objects to return their executors by const reference.
    • Changed associated to use deduced return types for all two-argument get functions.
    • Fixed spawn implementation to catch unhandled exceptions and rethrow them outside of the spawned "thread".
    • Fixed spawn to ensure the completion handler is dispatched through the correct executor.
    • Fixed cleanup of of terminal-state spawn "thread" objects.
    • Fixed spawn and co_spawn implementations to dispatch cancellation handlers on the correct executor.
    • Changed semantics of 'dispatch' to mean the executor is used as-is.
    • Deprecated the execution::execute customisation point and sender/receiver facilities.
    • Added a C++11 parallel_group example.
    • Fixed example code to not use the deprecated resolve conversions.
    • Fixed an ambiguity in experimental::channel_traits specialisations.
    • Added a specialised channel implementation for the for R(error_code) signature.
    • Made cancelled() public on the async_compose 'self' object.
    • Added io_executor_type and get_io_executor to the async_compose 'self' object.
    • Fixed implementation of release() for Windows overlapped handles.
    • Enabled deferred awaiting for experimental::coro, regularised experimental::use_coro, and fixed allocator handling.
    • Cleaned up experimental::promise and made it an asynchronous operation object.
    • Constrained post/defer overloads on ability to require blocking.never.
    • Changed descriptor implementation to fall back to fcntl if ioctl fails with ENOTTY when setting non-blocking mode.
    • Fixed Xcode deprecation warnings related to use of sprintf.
    • Fixed the arguments passed to select_reactor::run when it is run on an internal thread.
    • Fixed compilation errors when BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING is defined.
    • Updated detection of C++20 coroutine support on clang 14 and later.
    • Changed standard library feature detection to always enable std::invoke_result when targeting C++17 or later.
    • Fixed detection of return type deduction with MSVC.
    • Updated the asynchronous operation requirements to relax the requirements on the associated executor.
    • Added io_uring to the implementation notes.
    • Consult the Revision History for further details.
  • Beast:
    • Add buffers_generator
    • Add beast::http::message_generator
    • Added buffer_ref, so beast buffers can be used with asio.
    • Support for per-operation cancellation
    • C++20 awaitable examples.
    • websocket per-message compression options
    • websocket timeout option api
    • multiple content length error
    • Support for default-completion and rebind
  • Container Hash:
    • Major update.
    • The specializations of boost::hash have been removed; it now always calls hash_value.
    • Support for BOOST_HASH_NO_EXTENSIONS has been removed. The extensions are always enabled.
    • All standard containers are now supported. This includes std::forward_list and the unordered associative containers.
    • User-defined containers (types that have begin() and end() member functions that return iterators) are now supported out of the box.
    • Described structs and classes (those annotated with BOOST_DESCRIBE_STRUCT or BOOST_DESCRIBE_CLASS) are now supported out of the box.
    • hash_combine has been improved.
    • The performance (and quality, as a result of the above change) of string hashing has been improved. boost::hash for strings now passes SMHasher in 64 bit mode.
    • The documentation has been substantially revised to reflect the changes.
  • Core:
    • empty_value members are now marked as constexpr.
    • Added fclose_deleter, a deleter that calls std::fclose on a pointer to std::FILE.
    • Bit manipulation utilities in boost/core/bit.hpp now explicitly require unsigned integers on input. (#129)
    • bit_width now returns int instead of a value of the input argument type. This follows resolution of LWG3656.
  • Describe:
    • To allow the inclusion of enumerators.hppbases.hpp, and members.hpp when the option -pedantic is used, the invocation of BOOST_DESCRIBE_ENUM has been moved from modifiers.hpp into a separate header, modifier_description.hpp. As a consequence, modifiers.hpp no longer includes enum.hpp. Code that has been relying on this implicit inclusion may fail, and will need to be fixed to include enum.hpp.
  • DLL:
    • Fixed path_from_handle implementation for Windows platforms, thanks to @SaltfishAmi for the bug report 57.
  • Filesystem:
    • Deprecated: path construction, assignment and appending from containers of characters, such as std::vector<char> or std::list<wchar_t>, is deprecated in v3 and removed in v4. Please use string types or iterators instead.
    • Deprecated: boost/filesystem/path_traits.hpp header is deprecated and will be removed in a future release. The header contained implementation details of path and should not be used in user's code.
    • Previously deprecated APIs will now generate compilation warnings on use. To suppress these warnings, BOOST_FILESYSTEM_ALLOW_DEPRECATED macro can be defined when compiling user's code.
    • Fixed compilation due to a missing include on POSIX systems that do not support *at APIs. (#250)
    • On Windows prior to 10, added a workaround for network share filesystem that produces ERROR_INVALID_PARAMETER when constructing directory iterators. (PR#246#245)
    • On Windows, fixed weakly_canonical failing with an ERROR_INVALID_FUNCTION error code if the path started with the "\\?\" prefix. (#247)
    • Added support for std::string_viewboost::string_view and boost::container::string (as well as respective wchar_t counterparts) in path constructors, assignment and appending operations. (#208)
    • path constructors, assignment and appending operations taking a pair of iterators will no longer accept iterators with value types that are not one of the supported path character types.
    • On Windows, improved compatibility of directory_iterator with various mounted filesystems and Wine releases prior to 7.21. (#255#266)
    • On Windows, deduplicated files are now reported as regular files rather than reparse files. (#262)
  • Fusion:
    • Added fusion::identity_view (PR#240)
    • Added support for associative sequences on fusion::transform_view (PR#239)
    • Fixed compilation for the case when fusion::reverse_view used with an associative sequence (PR#237)
    • Fixed Clang 13 -Wdeprecated-copy warnings (PR#261)
    • A small dependency reorganization. Now boost::ref and boost::noncopyable are used from Boost.Core (PR#249)
    • Added CI testing on Linux and MacOS for clang and gcc, fixed CI testing on Windows (PR#245PR#236)
    • Improved docs and fixed typos (#234PR#235PR#238)
  • Geometry:
    • Solved issues
      • #1048 Index: Fix dangling references when Indexable is returned by value by IndexableGetter
      • #1076 Union: in rare cases it might miss one polygon
      • #1081 Union: due to precision it might miss interior rings
    • Bugfixes
      • #1063 Intersection: fix a bug in intersection of simple spherical polygons
      • #1064 Formulas: fix a consistency issue in geodesic direct formulas
      • #1088 Point: Fix regression for custom point types
      • Various fixes for missing include files, warnings, C++20 compilation errors and documentation
  • Histogram:
    • Major update.
    • Added new accumulators::fraction to compute fractions, their variance, and confidence intervals
    • Added interval computers for fractions: utility::clopper_pearsonutility::wilson_intervalutility::jeffreys_intervalutility::wald_interval which can compute intervals with arbitrary confidence level
    • Added utility::confidence_level and utility::deviation types to pass confidence levels as probabilities or in multiples of standard deviation for all interval computers, respectively
    • Fixed internal sub_array and span in C++20
  • Iterator:
    • function_output_iterator now supports perfect forwarding of the assigned values to the wrapped function object. (PR#73)
    • Fixed compilation of constructing a function_input_iterator from result of post-incrementing another function_input_iterator. (#75)
    • The result of post-incrementing an iterator based on iterator_facade now supports operator->(it++)->foo is equivalent to (*it++).foo, which was supported before.
  • JSON:
    • Added object::stable_erase.
    • Added parse overload for std::istream and operator>> for value.
    • Added rvalue ref-qualified accessors for value.
    • Conversion traits were redesigned.
    • Added conversion support for described classes and enums, std::optionalstd::variant, and null-like types (including std::nullptr_tstd::nullopt_t, and std::monotype).
    • Added non-throwing conversion from value to user types.
  • LexicalCast:
    • Fixed compilation while casting volatile arithmetic types. Thanks to Giovanni Cerretani for the bug report #50.
    • Removed usage of deprecated headers. Thanks to Michael Ford for the PR PR#53.
  • Locale:
    • Major update with some breaking changes.
    • C++11 support is now required, support for C++03 and earlier is dropped
    • Some enums have been converted to enum classes - Avoids name clashes
    • Replace -sICU_LINK_LOCALE & -sICU_LINK by fine-grained configuration options as done in Boost.RegEx
    • Fix detection of libiconv allowing Boost.Locale to be build (again) on some platforms
    • Remove use of and support for std::auto_ptr
    • Make the codecvt using wchar_t on Windows assume/use UTF-16 enconding
    • Performance improvements: Make basic_formatdate_time & hold_ptr movable, Fix use of format cache
    • Make Boost.Locale compatible with more ICU versions (especially the tests)
    • Fix RTTI definitions for some classes (visibility issues)
    • Fix compatibility of the ICU backend with some libc++ versions
    • Fix return value of some operators to correctly return non-const *this
    • Fix int-overflow on negative roll of years in date_time
    • Handle or suppress many warnings which makes the build log cleaner
    • Add support for more Windows codepages
    • Fix support for Windows codepages like ISO-2022-JP
  • Nowide:
    • Fix build failure of tests on MSVC
  • Stacktrace:
    • The library does not use COM initialization any more. Thanks to Alex Guteniev for the bug report, clarifications and PR PR#123!
    • The library now may use BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE macro value while detecting the libbacktrace availability in b2, thanks to Ben Gemmill for the bug report #115.
    • Added BOOST_STACKTRACE_BACKTRACE_FORCE_STATIC macro to force a single backtrace_state static instance while using the libbacktrace. Thanks to the Rasmus Thomsen for the bug report #118!
    • Avoid unresolved references when including only the boost/stacktrace/stacktrace.hpp header. Thanks to the Long Deng for the bug report #116.
    • Optimized stacktrace printing by not calling strlen on Windows platforms. Thanks to Alex Guteniev for the bug report #122
  • PFR:
    • Improved detection of aggregate initializables in C++14 mode, thanks to Denis Mikhailov for the PR PR#97.
    • Suppress clang-tidy warnings, thanks to Alexander Malkov for the PRs PR#109PR#104.
    • Use fold expressions if they are supported by the compiler. Thanks to Jean-Michaël Celerier for the PR PR#96.
  • STLInterfaces:
    • Fix two ill-formed iterator_interface operators in pre-C++20 iterators with a const value_type.
  • System:
    • The macro BOOST_SYSTEM_DISABLE_THREADS can now be defined to disable the use of <mutex> (e.g. on single-threaded libstdc++).
    • Added value_typeerror_typein_place_valuein_place_error to result<>.
    • Added emplace to result<>.
  • Unordered:
    • Major update.
    • Added fast containers boost::unordered_flat_map and boost::unordered_flat_set based on open addressing.
    • Added CTAD deduction guides for all containers.
    • Added missing constructors as specified in LWG issue 2713.
  • Variant:
    • Avoid recursive inclusion of headers, thanks to Nathan Sidwell for the bug report #101.
    • Removed usage of deprecated headers, thanks to Michael Ford for the PR PR#96.
    • Fixed compilation on clang in C++23 mode, thanks to Ed Catmur for the PR PR#98.
  • Variant2:
    • Added support for boost::json::value_from and boost::json::value_to.

 

]]>
<![CDATA[News, Product News,]]> Fri, 16 Dec 2022 20:30:40 +0000 Blog Staff
PVS-Studio 7.22: Visual Studio Code, Qt Creator, .NET 7 https://isocpp.org//blog/2022/12/pvs-studio-7.22-visual-studio-code-qt-creator-.net-7 https://isocpp.org//blog/2022/12/pvs-studio-7.22-visual-studio-code-qt-creator-.net-7 <![CDATA[

PVS-Studio 7.22 has been released. It includes plugins for Visual Studio Code and Qt Creator, support of .NET 7 projects analysis, enhanced Best Warnings filter and new diagnostic rules.

PVS-Studio 7.22: Visual Studio Code, Qt Creator, .NET 7

by Sergey Vasiliev

From the article:

New plugins provide even more options for cross-platform work. Now you can use them to work with logs: view warnings, filter them, sort them in a grid, etc. You can't run the analysis yet — we plan to add this feature in future releases.

]]>
<![CDATA[Product News,]]> Fri, 16 Dec 2022 08:01:24 +0000 Andrey Karpov
PVS-Studio and RPCS3: the best warnings in one click https://isocpp.org//blog/2022/12/pvs-studio-and-rpcs3-the-best-warnings-in-one-click https://isocpp.org//blog/2022/12/pvs-studio-and-rpcs3-the-best-warnings-in-one-click <![CDATA[

Best Warnings — the analyzer's mode that displays 10 most interesting warnings in the output window. We invite you to take a look at the updated Best Warnings mode on the example of the RPCS3 project check.

PVS-Studio and RPCS3: the best warnings in one click

by Alexander Kurenev

From the article:

Best Warnings is a special mechanism for the first acquaintance with the PVS-Studio static analyzer. The full analyzer's log can contain thousands of warnings. Therefore, if you want to evaluate the work of the analyzer and not waste time and effort on viewing a large report that was issued by a not yet configured analyzer, use the Best Warnings mechanism. Open the analyzer's log in the PVS-Studio plugin for Visual Studio and enable Best Warnings.

]]>
<![CDATA[Product News,]]> Mon, 12 Dec 2022 14:02:41 +0000 Andrey Karpov
What's New for C++ Developers in Visual Studio 2022 17.4 -- Sy Brand https://isocpp.org//blog/2022/11/whats-new-for-cpp-developers-in-visual-studio-2022-17.4-sy-brand https://isocpp.org//blog/2022/11/whats-new-for-cpp-developers-in-visual-studio-2022-17.4-sy-brand <![CDATA[

syroof-150x150.jpgVisual Studio 2022 17.4 is available:

What's New for C++ Developers in Visual Studio 2022 17.4

by Sy Brand

From the article:

We are happy to announce that Visual Studio 2022 version 17.4 is now generally available! This post summarizes the new features you can find in this release for C++. ...

]]>
<![CDATA[News, Product News,]]> Fri, 11 Nov 2022 18:26:55 +0000 Blog Staff
FOSSA is announcing the GA of a security and license scanning capability for C and C++ projects https://isocpp.org//blog/2022/11/fossa-is-announcing-the-ga-of-a-security-and-license-scanning-capability-fo https://isocpp.org//blog/2022/11/fossa-is-announcing-the-ga-of-a-security-and-license-scanning-capability-fo <![CDATA[

FOSSA was founded to provide the most relevant and real-time end-to-end governance for all third-party code. They now announce the general availability of C and C++ Security and License Scanning

Announcing the GA of C and C++ Security and License Scanning
By Gauthami Polasani

From the article:

Unlike other C/C++ scanning tools, FOSSA does not take a one-solution-fits-all approach to dependency identification in such a complex and layered ecosystem. FOSSA uses multi-pronged strategies (as described below) to accurately identify dependencies and surface security and license risks — regardless of how the code is included.).

]]>
<![CDATA[News, Product News,]]> Tue, 01 Nov 2022 18:44:04 +0000 Jordi Mon Companys
Examples of errors that PVS-Studio found in LLVM 15.0 https://isocpp.org//blog/2022/10/examples-of-errors-that-pvs-studio-found-in-llvm-15.0 https://isocpp.org//blog/2022/10/examples-of-errors-that-pvs-studio-found-in-llvm-15.0 <![CDATA[

Compilers are evolving: they issue more and more warnings. Do developers still need to use static code analyzers like PVS-Studio? Yes, because analyzers are evolving too. In this article you'll see how PVS-Studio can find bugs even in a compiler.

Examples of errors that PVS-Studio found in LLVM 15.0

by Andrey Karpov

From the article:

It's a cool bug, although it's not scary. There is no semicolon after the return statement. As a result, the code does not work as it looks.

void FunctionLoweringInfo::ComputePHILiveOutRegInfo(const PHINode *PN) {
  ....
  Register DestReg = It->second;
  if (DestReg == 0)
    return
  assert(Register::isVirtualRegister(DestReg) &&
         "Expected a virtual reg");
  LiveOutRegInfo.grow(DestReg);
  ....
}
]]>
<![CDATA[Product News,]]> Tue, 25 Oct 2022 16:15:50 +0000 Andrey Karpov
Improving copy and move elision - Bran Hagger https://isocpp.org//blog/2022/10/improving-copy-and-move-elision-bran-hagger https://isocpp.org//blog/2022/10/improving-copy-and-move-elision-bran-hagger <![CDATA[

improving-copy-and-move-elision.pngFrom the MSVC team blog:

Improving copy and move elision

by Bran Hagger

From the article:

With Visual Studio 2022 version 17.4 Preview 3, we’ve significantly increased the number of situations where we do copy or move elision and given users more control over whether these transformations are enabled. ...

]]>
<![CDATA[News, Product News,]]> Mon, 24 Oct 2022 19:52:07 +0000 Blog Staff
PVS-Studio 7.21: GitLab Code Quality, Unreal Engine https://isocpp.org//blog/2022/10/pvs-studio-7.21-gitlab-code-quality-unreal-engine https://isocpp.org//blog/2022/10/pvs-studio-7.21-gitlab-code-quality-unreal-engine <![CDATA[

PVS-Studio 7.21 has been released. This short note describes the analyzer's main enhancements and lists our recent articles and quizzes.

PVS-Studio 7.21: GitLab Code Quality, Unreal Engine

by Sergey Vasiliev

From the article:

New C++ diagnostics:

  • V1090. The 'std::uncaught_exception' function is deprecated since C++17 and is removed in C++20. Consider replacing this function with 'std::uncaught_exceptions'.
  • V1091. The pointer is cast to an integer type of a larger size. Casting pointer to a type of a larger size is an implementation-defined behavior.
  • V1092. Recursive function call during the static/thread_local variable initialization might occur. This may lead to undefined behavior.
]]>
<![CDATA[Product News,]]> Wed, 19 Oct 2022 13:50:37 +0000 Andrey Karpov
Enhance application security with FORTIFY_SOURCE -- Siddharth Sharma https://isocpp.org//blog/2022/09/enhance-application-security-with-fortify-source-siddharth-sharma https://isocpp.org//blog/2022/09/enhance-application-security-with-fortify-source-siddharth-sharma <![CDATA[

Improving safety and security in GCC:

Enhance application security with FORTIFY_SOURCE

by Siddharth Sharma

From the article:

The FORTIFY_SOURCE macro provides lightweight support for detecting buffer overflows in various functions that perform operations on memory and strings. Not all types of buffer overflows can be detected with this macro, but it does provide an extra level of validation for some functions that are potentially a source of buffer overflow flaws. It protects both C and C++ code. ...

]]>
<![CDATA[News, Product News,]]> Mon, 19 Sep 2022 22:45:53 +0000 Blog Staff
The Future of C++ Compiler Diagnostics in MSVC and Visual Studio -- Xiang Fan https://isocpp.org//blog/2022/09/the-future-of-cpp-compiler-diagnostics-in-msvc-and-visual-studio-xiang-fan https://isocpp.org//blog/2022/09/the-future-of-cpp-compiler-diagnostics-in-msvc-and-visual-studio-xiang-fan <![CDATA[

Making C++ easier to understand:

The Future of C++ Compiler Diagnostics in MSVC and Visual Studio

by Xiang Fan

From the article:

We are working hard on improving the diagnostics experience in MSVC and Visual Studio. We began this work in Visual Studio 2022 version 17.3 and while not everything is ready yet, we would like to share the early progress...

]]>
<![CDATA[News, Product News,]]> Mon, 19 Sep 2022 22:42:38 +0000 Blog Staff
PVS-Studio 7.20: Unreal Engine, SAST, SCA https://isocpp.org//blog/2022/08/pvs-studio-7.20-unreal-engine-sast-sca https://isocpp.org//blog/2022/08/pvs-studio-7.20-unreal-engine-sast-sca <![CDATA[

The bug related to Unreal Engine's inability to find PVS-Studio by the default path is finally fixed. Starting from Unreal Engine 5.0.3. you you can analyze projects without any workarounds. We've also enhanced the analysis of UE projects: you'll see more true warnings and fewer false ones.

PVS-Studio 7.20: Unreal Engine, SAST, SCA

by Sergey Vasiliev

From the article:

New diagnostics for C, C++:

  • V1086. Call of the 'Foo' function will lead to buffer underflow.
  • V1087. Upper bound of case range is less than its lower bound. This case may be unreachable.
  • V1088. No objects are passed to the 'std::scoped_lock' constructor. No locking will be performed. This can cause concurrency issues.
  • V1089. Waiting on condition variable without predicate. A thread can wait indefinitely or experience a spurious wake up.
]]>
<![CDATA[Product News,]]> Thu, 18 Aug 2022 08:41:27 +0000 Andrey Karpov
New stable release of wxWidgets 3.2.0 is now available https://isocpp.org//blog/2022/08/new-stable-release-of-wxwidgets-3.2.0-is-now-available https://isocpp.org//blog/2022/08/new-stable-release-of-wxwidgets-3.2.0-is-now-available <![CDATA[

After almost 9 years of development, the first release in the new stable version of wxWidgets.

GitHub Repository

by wxWidgets

About wxWidgets:

A free and open source C++ library for creating portable native GUI applications.

You can find more information on the project web site

]]>
<![CDATA[News, Product News,]]> Tue, 09 Aug 2022 17:38:38 +0000 VZ
HPX V1.8.1 released -- STE||AR Group https://isocpp.org//blog/2022/08/hpx-v1.8.1-released-stellar-group https://isocpp.org//blog/2022/08/hpx-v1.8.1-released-stellar-group <![CDATA[

The STE||AR Group has released V1.8.1 of HPX -- A C++ Standard library for Concurrency and Parallelism.

HPX V1.8.1 Released

We have released HPX 1.8.1 that adds a number of small new features and fixes a handful of problems discovered since the last 1.8.0 release, in particular: a lot of work has been done to improve vectorization support for our parallel algorithms. HPX now supports using EVE – the Expressive Vector Engine as a vectorization backend. More work was done towards full compatibility with the sender/receiver proposal P2300. We have fixed all collective operations to properly avoid overlapping consecutive operations on the same communicator. We also fixed a dangling reference problem while serializing non-default constructible types. We have added support for static linking on Windows (using MSVC) and have added support for M1/MacOS based architectures. A full list of changes can be found in the release notes.

If you have any questions, comments, or exploits to report you can reach us on IRC or Matrix (#ste||ar on libera.chat) or email us at hpx-users. We depend on your input!

You can download the release from our releases page or check out the 1.8.1 tag using git. A full list of changes can be found in the release notes.

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++20 Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17 and C++20 parallel algorithms, including a full set of parallel range-based 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++23 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.

 

]]>
<![CDATA[News, Product News,]]> Sun, 07 Aug 2022 00:36:47 +0000 Hartmut Kaiser
CLion 2022.2 Released--Anastasia Kazakova https://isocpp.org//blog/2022/07/clion-2022.2-released-anastasia-kazakova https://isocpp.org//blog/2022/07/clion-2022.2-released-anastasia-kazakova <![CDATA[

Time to update.

CLion 2022.2 Released

by Anastasia Kazakova

From the article:

Today we’re announcing the CLion 2022.2 release! To update to the new version, you can use the Toolbox App or a snap package (on Ubuntu), download the installer from our website, or apply the patch update to upgrade from version 2022.1.

The CLion 2022.2 release improves CMake integration. The Quick Documentation popup has become a useful source of knowledge about your C++ and CMake code. Enhanced static and dynamic code analysis, better debugger integration, and performance improvements for remote and Docker toolchains help you develop more productively. Read on for more details and give CLion 2022.2 a try...

]]>
<![CDATA[News, Product News,]]> Fri, 29 Jul 2022 16:15:33 +0000 Adrien Hamelin
CWE Top 25 2022. Review of changes https://isocpp.org//blog/2022/07/cwe-top-25-2022.-review-of-changes https://isocpp.org//blog/2022/07/cwe-top-25-2022.-review-of-changes <![CDATA[

The CWE Top 25 list reflects the most serious software security weaknesses. I invite you to read the updated top list to become aware of the changes happened over the past year.

CWE Top 25 2022. Review of changes

by Mikhail Gelvih

From the article:

Below is a table of correspondence between the CWE Top 25 2022 list and the PVS-Studio diagnostic rules, divided by programming languages. You can always check the most up-to-date table with CWE Top 25 coverage on our website.

]]>
<![CDATA[Product News,]]> Wed, 20 Jul 2022 17:44:42 +0000 Andrey Karpov
vcpkg June 2022 Release is Now Available: Force Download vcpkg Dependencies...--Augustin Popa https://isocpp.org//blog/2022/07/vcpkg-june-2022-release-is-now-available-force-download-vcpkg-dependencies https://isocpp.org//blog/2022/07/vcpkg-june-2022-release-is-now-available-force-download-vcpkg-dependencies <![CDATA[

Are you using it?

vcpkg June 2022 Release is Now Available: Force Download vcpkg Dependencies, Documentation Changes, and More

by Augustin Popa

From the article:

The June 2022 release of the vcpkg package manager is available. This includes a hotfix that fixed a regression in the binary caching experience. This blog post summarizes changes from May 11th, 2022 to June 15th, 2022 for the microsoft/vcpkg and microsoft/vcpkg-tool GitHub repos...

]]>
<![CDATA[News, Product News,]]> Fri, 15 Jul 2022 17:56:19 +0000 Adrien Hamelin
MSVC Backend Updates in Visual Studio 2022 version 17.2--Chris Pulido https://isocpp.org//blog/2022/07/msvc-backend-updates-in-visual-studio-2022-version-17.2-chris-pulido https://isocpp.org//blog/2022/07/msvc-backend-updates-in-visual-studio-2022-version-17.2-chris-pulido <![CDATA[

Are you using it?

MSVC Backend Updates in Visual Studio 2022 version 17.2

by Chris Pulido

From the article:

In Visual Studio 2022 version 17.2 we have continued to improve the C++ backend with new features, new and improved optimizations, build throughput improvements, and better security. Here is a list of improvements for you to review...

]]>
<![CDATA[News, Product News,]]> Fri, 08 Jul 2022 20:09:42 +0000 Adrien Hamelin
Visual Assist | Visual Studio Plug-in -- WholeTomato https://isocpp.org//blog/2022/07/visual-assist-visual-studio-plug https://isocpp.org//blog/2022/07/visual-assist-visual-studio-plug <![CDATA[

Visual Assist fills gaps in Visual Studio for C/C++ and C# Developers

Visual Assist Software

by WholeTomato

About the software:

The best coding software plug-in for Microsoft Visual Studio is Visual Assist from Whole Tomato Software. The plug-key-in's features are syntax highlighting and intelligence. Additionally, it allows spell-checking in comments, enhances code suggestions, and adds refactoring commands.

It is a top-notch code inspection tool Now with a slew of other features that make Visual Studio a breeze to use.

These features are given below

1. Code Inspection Modernization
2. Fast Navigation
3. Refactoring
4. Code Correction
5. Unreal_Engine 4 Support
6. Code Assistance

Download Visual Assist Now!

]]>
<![CDATA[News, Product News,]]> Mon, 04 Jul 2022 18:45:07 +0000 WholeTomato
CLion 2022.2 EAP3: CMakeCache Editor, Symbol Servers for Debug, Evaluation of...--Anastasia Kazakova https://isocpp.org//blog/2022/07/clion-2022.2-eap3-cmakecache-editor-symbol-servers-for-debug-evaluation-of https://isocpp.org//blog/2022/07/clion-2022.2-eap3-cmakecache-editor-symbol-servers-for-debug-evaluation-of <![CDATA[

Are you using it?

CLion 2022.2 EAP3: CMakeCache Editor, Symbol Servers for Debug, Evaluation of Constant Values in the Editor

by Anastasia Kazakova

From the article:

A new CLion 2022.2 EAP3, 222.2889.11, is available from our website, via the Toolbox App, or as a snap package (if you are using Ubuntu). If you are on macOS, there is a separate build for Apple Silicon (M1 chip). Those who are already using EAP2 can apply a patch to update to EAP3...

]]>
<![CDATA[News, Product News,]]> Mon, 04 Jul 2022 18:07:46 +0000 Adrien Hamelin
PVS-Studio challenge: can you spot an error in C++ code? https://isocpp.org//blog/2022/06/pvs-studio-challenge-can-you-spot-an-error-in-cpp-code https://isocpp.org//blog/2022/06/pvs-studio-challenge-can-you-spot-an-error-in-cpp-code <![CDATA[

PVS-Studio team made an entertaining quiz for you. Try to quickly find a bug in a code fragment. If you spot an error - click on it.

Challenge: can you spot an error in C++ code?

by Andrey Karpov

From the article:

You'll see ten code fragments. If you manage to find an error in under 1 minute, you score one point. The 1-minute limit is made on purpose. Otherwise you'll definitely find all errors — code fragments are short. Anyway, treat this quiz as a game, and not as a real test of your programming skills smile

]]>
<![CDATA[Product News,]]> Wed, 29 Jun 2022 19:17:35 +0000 Andrey Karpov
PVS-Studio 7.19: C++ analyzer now works better with QNX compilers and Unreal Engine 5 https://isocpp.org//blog/2022/06/pvs-studio-7.19-cpp-analyzer-now-works-better-with-qnx-compilers-and-unreal https://isocpp.org//blog/2022/06/pvs-studio-7.19-cpp-analyzer-now-works-better-with-qnx-compilers-and-unreal <![CDATA[

Recently, we have released a new PVS-Studio version — 7.19. In this note, we'll tell you about new features in the analyzer, the enhanced documentation, as well as what to read and... what to play.

PVS-Studio 7.19: what's new?

by Sergey Vasiliev

From the article:

Now, you can use PVS-Studio to analyze projects on Unreal Engine 5. For the most part, projects on UE 5 are analyzed in the same way as projects on UE 4. The difference is described in the documentation.

]]>
<![CDATA[Product News,]]> Fri, 24 Jun 2022 09:07:50 +0000 Andrey Karpov
Introducing Scapix - automatic C++ bindings generator -- Boris Rasin https://isocpp.org//blog/2022/06/introducing-scapix-automatic-cpp-bindings-generator-boris-rasin https://isocpp.org//blog/2022/06/introducing-scapix-automatic-cpp-bindings-generator-boris-rasin <![CDATA[

Using C++ with other languages.

Scapix Language Bridge - seamless integration of C++ with other languages

by Boris Rasin

From the article:

Bindings automatically generated directly from C++ headers during build - no need to manually maintain separate IDL definitions or manual bindings. Make a change in your C++ code, press build, then call your new code from Java, Objective C, Swift, Python, JavaScript or C#. Often this would be done in the same IDE, allowing continuous seamless cross-language development.

]]>
<![CDATA[News, Product News,]]> Thu, 09 Jun 2022 20:31:55 +0000 Boris Rasin
vcpkg May 2022 Release: artifacts using JSON, COS and SPDX support, and more--Augustin Popa https://isocpp.org//blog/2022/05/vcpkg-may-2022-release-artifacts-using-json-cos-and-spdx-support-and-more-a https://isocpp.org//blog/2022/05/vcpkg-may-2022-release-artifacts-using-json-cos-and-spdx-support-and-more-a <![CDATA[

Are you using it?

vcpkg May 2022 Release: artifacts using JSON, COS and SPDX support, and more

by Augustin Popa

From the article:

The May 2022 release of the vcpkg package manager is available. This blog post summarizes changes from March 31st, 2022 to May 10th, 2022 for the Microsoft/vcpkg and Microsoft/vcpkg-tool GitHub repos...

]]>
<![CDATA[News, Product News,]]> Mon, 30 May 2022 21:32:52 +0000 Adrien Hamelin
HPX V1.8.0 released -- STE||AR Group https://isocpp.org//blog/2022/05/hpx-v1.8.0-released-stellar-group https://isocpp.org//blog/2022/05/hpx-v1.8.0-released-stellar-group <![CDATA[

The STE||AR Group has released V1.8.0 of HPX -- A C++ Standard library for Concurrency and Parallelism.

HPX V1.8.0 Released

We have released HPX 1.8.0 -- a major update to our C++ Standard Library for Concurrency and Parallelism. The HPX parallel algorithms now have been fully adapted to C++20, all existing facilities have been adjusted to conform to this version of the Standard as well. We now can proudly announce full conformance to the C++20 concurrency and parallelism facilities. HPX supports all of the algorithms as specified by C++20. On top of that we support parallel versions of all range-based algorithms and have added support for explicit vectorization to more of our algorithms (using std::experimental::simd). Much work has been done towards implementing P2300 (std::execution) and the underlying senders/receivers facilities. Last but not least, we have finished the refactoring of the whole library into a rather large set of non-cyclically depending components. Finally, the new release comes with a brand new documentation interface!

You can download the release from our releases page or check out the 1.8.0 tag using git. A full list of changes can be found in the release notes.

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++20 Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17 and C++20 parallel algorithms, including a full set of parallel range-based 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++23 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.

 

]]>
<![CDATA[News, Product News,]]> Wed, 25 May 2022 15:00:25 +0000 Hartmut Kaiser
MSVC’s STL Completes /std:c++20--Casey Carter https://isocpp.org//blog/2022/05/msvcs-stl-completes-stdcpp20-casey-carter https://isocpp.org//blog/2022/05/msvcs-stl-completes-stdcpp20-casey-carter <![CDATA[

All the reasons to try it!

MSVC’s STL Completes /std:c++20

by Casey Carter

From the article:

We are happy to announce that the final C++20 Standard Library features are now stabilized and available in /std:c++20 mode in both Visual Studio 2022 version 17.2 and Visual Studio 2019 version 16.11.14. This notably includes several proposals approved as Defect Reports (DRs) by the C++ Standard Committee against the C++20 Standard Library that made extensive design changes to <format> and <ranges> as recently as October 2021. You can now use the complete list of C++20 features in production in a binary compatible way with other supported language version modes...

]]>
<![CDATA[News, Product News,]]> Fri, 13 May 2022 20:21:09 +0000 Adrien Hamelin
New C++ features in GCC 12--Marek Polacek https://isocpp.org//blog/2022/04/new-cpp-features-in-gcc-12-marek-polacek https://isocpp.org//blog/2022/04/new-cpp-features-in-gcc-12-marek-polacek <![CDATA[

Time to update.

New C++ features in GCC 12

by Marek Polacek

From the article:

Version 12.1 of the GNU Compiler Collection (GCC) is expected to be released in April 2022. Like every major GCC release, this version will bring many additions, improvements, bug fixes, and new features. GCC 12 is already the system compiler in Fedora 36. GCC 12 will also be available on Red Hat Enterprise Linux in the Red Hat Developer Toolset (version 7) or the Red Hat GCC Toolset (version 8 and 9).

Like the article I wrote about GCC 10, this article describes only new features affecting C++.

We implemented several C++23 proposals in GCC 12. The default dialect in GCC 12 is -std=gnu++17; to enable C++23 features, use the -std=c++23 or -std=gnu++23 command-line options. (The latter option allows GNU extensions.)

Note that C++20 and C++23 features are still experimental in GCC 12...

]]>
<![CDATA[News, Product News,]]> Wed, 27 Apr 2022 15:27:13 +0000 Adrien Hamelin