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
- Kinetic Space Partition: Partition of the space from planar input shapes.
- Kinetic Surface Reconstruction: Reconstructs surfaces from point clouds.
- Basic Viewer: Interactive visualization for various CGAL packages.
- Polygon Repair: Algorithms to repair 2D polygons and multipolygons.
Breaking Changes
- CMake Changes:
UseCGAL.cmake
removed; useCGAL::CGAL
target instead.- Kernel: Replaced
boost::variant
withstd::variant
andboost::optional
withstd::optional
in the intersection functions.Enhancements
- AABB Tree: Now supports 2D and 3D primitives.
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.
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.
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.
]]>
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 thestrcpy
call, and thus the existing terminatingNUL
byte used for the start of thestrcat
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:
If 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!
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.
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
andboost::shared_ptr
. Now the PVS-Studio analyzer is able to detect errors such as null pointer dereferences when these classes are used.
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.
]]>
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.
]]>
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.
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.
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!
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.
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.
]]>
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.
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.
]]>
Visual 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.
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.
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.
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?
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.
Imagine 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!
More safety please:
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...
]]>
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 theconsign
completion token adapter, which can be used to attach additional values to a completion handler. Addedany_completion_handler<>
, which can be used to type-erase completion handlers. Addedexperimental::co_composed
to enable lightweight implementations of user-defined asynchronous operations using C++20 coroutines. Add range-basedexperimental::make_parallel_group()
overloads. Addedany_completion_executor
, a type-erased wrapper for executors that are associated with completion handlers. Added missingcontext
query to use_future's executor. Added nothrow constructor overloads toexecution::any_executor<>
andany_io_executor
. Optimised representation of emptyexecution::any_executor
objects to improve the performance of copy and move operations. Added anassociated_cancellation_slot
specialisation forstd::reference_wrapper
. Changed I/O objects to return their executors by const reference. Changed associated to use deduced return types for all two-argumentget
functions. Fixedspawn
implementation to catch unhandled exceptions and rethrow them outside of the spawned "thread". Fixedspawn
to ensure the completion handler is dispatched through the correct executor. Fixed cleanup of of terminal-statespawn
"thread" objects. Fixedspawn
andco_spawn
implementations to dispatch cancellation handlers on the correct executor. Changed semantics of 'dispatch' to mean the executor is used as-is. Deprecated theexecution::execute
customisation point and sender/receiver facilities. Added a C++11parallel_group
example. Fixed example code to not use the deprecatedresolve
conversions. Fixed an ambiguity inexperimental::channel_traits
specialisations. Added a specialised channel implementation for the forR(error_code)
signature. Madecancelled()
public on theasync_compose
'self' object. Added io_executor_type and get_io_executor to theasync_compose
'self' object. Fixed implementation ofrelease()
for Windows overlapped handles. Enabled deferred awaiting forexperimental::coro
, regularisedexperimental::use_coro
, and fixed allocator handling. Cleaned upexperimental::promise
and made it an asynchronous operation object. Constrainedpost
/defer
overloads on ability to requireblocking.never
. Changed descriptor implementation to fall back tofcntl
ifioctl
fails withENOTTY
when setting non-blocking mode. Fixed Xcode deprecation warnings related to use ofsprintf
. Fixed the arguments passed toselect_reactor::run
when it is run on an internal thread. Fixed compilation errors whenBOOST_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 enablestd::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:
Addbuffers_generator
Addbeast::http::message_generator
Addedbuffer_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 ofboost::hash
have been removed; it now always callshash_value
. Support forBOOST_HASH_NO_EXTENSIONS
has been removed. The extensions are always enabled. All standard containers are now supported. This includesstd::forward_list
and the unordered associative containers. User-defined containers (types that havebegin()
andend()
member functions that return iterators) are now supported out of the box. Described structs and classes (those annotated withBOOST_DESCRIBE_STRUCT
orBOOST_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 asconstexpr
. Addedfclose_deleter
, a deleter that callsstd::fclose
on a pointer tostd::FILE
. Bit manipulation utilities inboost/core/bit.hpp
now explicitly require unsigned integers on input. (#129)bit_width
now returnsint
instead of a value of the input argument type. This follows resolution of LWG3656. Describe:
To allow the inclusion ofenumerators.hpp
,bases.hpp
, andmembers.hpp
when the option-pedantic
is used, the invocation ofBOOST_DESCRIBE_ENUM
has been moved frommodifiers.hpp
into a separate header,modifier_description.hpp
. As a consequence,modifiers.hpp
no longer includesenum.hpp
. Code that has been relying on this implicit inclusion may fail, and will need to be fixed to includeenum.hpp
. Filesystem:
Deprecated:path
construction, assignment and appending from containers of characters, such asstd::vector<char>
orstd::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 ofpath
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, fixedweakly_canonical
failing with anERROR_INVALID_FUNCTION
error code if the path started with the "\\?\" prefix. (#247) Added support forstd::string_view
,boost::string_view
andboost::container::string
(as well as respectivewchar_t
counterparts) inpath
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, deduplicated files are now reported as regular files rather than reparse files. (#262) Fusion:
Addedfusion::identity_view
(PR#240) Added support for associative sequences onfusion::transform_view
(PR#239) Fixed compilation for the case whenfusion::reverse_view
used with an associative sequence (PR#237) Fixed Clang 13 -Wdeprecated-copy warnings (PR#261) A small dependency reorganization. Nowboost::ref
andboost::noncopyable
are used from Boost.Core (PR#249) Histogram:
Major update. Added newaccumulators::fraction
to compute fractions, their variance, and confidence intervals Added interval computers for fractions:utility::clopper_pearson
,utility::wilson_interval
,utility::jeffreys_interval
,utility::wald_interval
which can compute intervals with arbitrary confidence level Addedutility::confidence_level
andutility::deviation
types to pass confidence levels as probabilities or in multiples of standard deviation for all interval computers, respectively Fixed internalsub_array
andspan
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 afunction_input_iterator
from result of post-incrementing anotherfunction_input_iterator
. (#75) The result of post-incrementing an iterator based oniterator_facade
now supportsoperator->
.(it++)->foo
is equivalent to(*it++).foo
, which was supported before. JSON:
Addedobject::stable_erase
. Addedparse
overload forstd::istream
andoperator>>
forvalue
. Added rvalue ref-qualified accessors forvalue
. Conversion traits were redesigned. Added conversion support for described classes and enums,std::optional
,std::variant
, and null-like types (includingstd::nullptr_t
,std::nullopt_t
, andstd::monotype
). Added non-throwing conversion fromvalue
to user types. 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 forstd::auto_ptr
Make thecodecvt
usingwchar_t
on Windows assume/use UTF-16 enconding Performance improvements: Makebasic_format
,date_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 indate_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 useBOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE
macro value while detecting the libbacktrace availability in b2, thanks to Ben Gemmill for the bug report #115. AddedBOOST_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 theboost/stacktrace/stacktrace.hpp
header. Thanks to the Long Deng for the bug report #116. Optimized stacktrace printing by not callingstrlen
on Windows platforms. Thanks to Alex Guteniev for the bug report #122 PFR: STLInterfaces:
Fix two ill-formediterator_interface
operators in pre-C++20 iterators with aconst
value_type
. System:
The macroBOOST_SYSTEM_DISABLE_THREADS
can now be defined to disable the use of<mutex>
(e.g. on single-threaded libstdc++). Addedvalue_type
,error_type
,in_place_value
,in_place_error
toresult<>
. Addedemplace
toresult<>
. Unordered:
Major update. Added fast containersboost::unordered_flat_map
andboost::unordered_flat_set
based on open addressing. Added CTAD deduction guides for all containers. Added missing constructors as specified in LWG issue 2713. Variant2:
Added support forboost::json::value_from
andboost::json::value_to
.
]]>
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.
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.
Visual 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++. ...
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.).
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); .... }
From 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. ...
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.
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. ...
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...
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.
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
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.
]]>
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...
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.
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...
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...
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 AssistanceDownload Visual Assist Now!
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...
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
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.
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.
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...
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.
]]>
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...
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...