September 2022

Next week: Meeting C++ online job fair

Next week hosts the Meeting C++ online job fair on Tuesday (3-6pm CEST/Berlin) and Wednesday (8-11pm CEST/Berlin).

Meeting C++ online job fair

by Jens Weller

About the event:

During the event you'll be able to join a virtual lounge and go from table to table to meet various employers for C++. Employers can still sign up until Monday. You already can share your resume/CV via the sharing form at Meeting C++.

CppCon 2022 keynote video: Contemporary C++ in action -- Daniela Engert

DanielaEngert2022.pngAnother CppCon 2022 keynote video is posted:

Contemporary C++ in action: Daniela Engert

From the post:

Daniela Engert on contemporary C++ at her CppCon 2022 keynote in Aurora, Colorado!

This video is in “prerelease” and cannot be found directly on our YouTube channel, instead we are providing a direct link here only! Feel free to share this with colleagues and friends and impress them with your insider access ��

A talk with Jason Turner: the history of CppCast, and why it was shut down

In this article, we are going to talk to Jason Turner, one of the CppCast founders. From 2015 to 2022 CppCast had weekly conversations with C++ conference speakers, library authors, writers, ISO committee members, and more. Keep reading to learn about the CppCast backstory.

A talk with Jason Turner: the history of CppCast, and why it was shut down

by Uliana Grishina

From the article:

Hello, Jason! I'm sure our readers know what CppCast is and have come here to learn its story and fate. Before we begin, we'd like to hear more about you and what you're doing now. Chances are even regular CppCast listeners may know you just as "Jason, the podcast host." smile. So, could you tell us more about yourself? What do you do now and what did you do before you decide to stop CppCast?

the sad state of debug performance in C++ - - Vittorio Romeo

In this article, we’ll explore how C++’s abstraction model heavily relies on compiler optimizations, unveiling some unfortunate examples of unexpected performance loss. Afterwards, we will compare how the three major compilers (GCC, Clang, and MSVC) fare in this area, and we’ll discuss some potential future improvements or workarounds.

the sad state of debug performance in c++

by Vittorio Romeo

From the article:

C++ developers should know that `std::move(0)` is semantically the same as `static_cast<int&&>(0)`, and most of them would expect the compiler to generate no code for the move, even with optimizations disabled. Turns out that GCC 12.2, Clang 14.0, and MSVC v19.x all end up generating a call instruction. [...]

Cerealization and RPC with Cap'n Proto -- Richard Thomson

Utah C++ Programmers has released a new video.

Cerealization and RPC with Cap'n Proto

by Richard Thomson

From the video description:

Cap'n Proto is a serialization and RPC (remote procedure call) framework built by the primary author of Google's Protobuf. "Cap’n Proto is an insanely fast data interchange format and capability-based RPC system. Think JSON, except binary. Or think Protocol Buffers, except faster." (Cap'n Proto's web site refers to serialization as "cerealization" in a tongue-in-cheek fashion.)

Cap'n Proto is designed for the use case of efficiently transmitting complex message structures across the network as part of a distributed system. So while it is a serialization method like converting your data structures to JSON, it is more explicitly designed for network oriented messages and remote procedure call scenarios. It is also designed with efficiency in mind.

This month, Richard Thomson will give us an introduction to Cap'n Proto using a fictional comic book database as an example. We'll use Cap'n Proto to model some simple CRUD (create, read, update and delete) operations over RPC. We'll look at how application data structures are represented using Cap'n Proto.

https://www.youtube.com/watch?v=6V_lVZzV6AE

Reducing Signed and Unsigned Mismatches with std::ssize() -- Bartlomiej Filipek

Do you know about std::ssize()?

Reducing Signed and Unsigned Mismatches with std::ssize()

by Bartlomiej Filipek

From the article:

In this article, I’ll show another technique that avoids mixing signed and unsigned types.

In my article Integer Conversions and Safe Comparisons in C++20 we learned about cmp_* integer comparison functions that allow us to compare various types of integer types. The functions are safe because they help with mixing signed and unsigned types. In C++20, there’s another handy feature: the non-member std::ssize() function that returns a signed number of elements in a container.

Let’s see how to use it...

2022-09 Mailing Available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4917 Working Draft, Standard for Programming Language C++ Thomas Köppe 2022-09-04 2022-09   All of WG21
N4918 Editors' Report - Programming Languages - C++ Thomas Köppe 2022-09-08 2022-09   All of WG21
N4920 Working Draft, C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2022-08-15 2022-09   All of WG21
N4921 Editor's Report: C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2022-08-15 2022-09   All of WG21
N4922 INCITS C++/WG21 agenda: 7-12 November 2022, Kona, HI US John Spicer 2022-09-05 2022-09   All of WG21
P0543R2 Saturation arithmetic Jens Maurer 2022-09-18 2022-09 P0543R1 LWG Library
P0792R11 function_ref: a non-owning reference to a Callable Vittorio Romeo 2022-09-13 2022-09 P0792R10 LWG Library
P0957R9 Proxy: A Polymorphic Programming Library Mingxin Wang 2022-09-15 2022-09 P0957R8 LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P0987R1 polymorphic_allocator instead of type-erasure Pablo Halpern 2022-09-14 2022-09 P0987R0 LWG Library
P1030R5 std::filesystem::path_view Niall Douglas 2022-09-15 2022-09 P1030R4 LEWG Library Evolution
P1985R3 Universal template parameters Gašper Ažman 2022-09-17 2022-09 P1985R1 SG7 Reflection,EWG Evolution,LEWG Library Evolution
P2348R3 Whitespaces Wording Revamp Corentin Jabot 2022-09-11 2022-09 P2348R2 EWG Evolution,CWG Core
P2495R1 Interfacing stringstreams with string_view Michael Hava 2022-09-14 2022-09 P2495R0 LEWG Library Evolution
P2586R0 Standard Secure Networking Niall Douglas 2022-09-13 2022-09   SG4 Networking,LEWG Library Evolution
P2587R3 to_string or not to_string Victor Zverovich 2022-08-28 2022-09 P2587R2 LWG Library
P2588R1 Relax std::barrier phase completion step guarantees Gonzalo Brito 2022-09-06 2022-09 P2588R0 SG1 Concurrency and Parallelism,LEWG Library Evolution
P2603R1 member function pointer to function pointer Jarrad Waterloo 2022-09-04 2022-09 P2603R0 EWG Evolution,LEWG Library Evolution
P2620R2 Improve the wording for Universal Character Names in identifiers Corentin Jabot 2022-09-13 2022-09 P2620R1 CWG Core
P2623R2 implicit constant initialization Jarrad J. Waterloo 2022-09-12 2022-09 P2623R1 EWG Evolution
P2631R0 Publish TS Library Fundamentals v3 Now! Alisdair Meredith 2022-09-12 2022-09   LEWG Library Evolution,LWG Library
P2636R0 References to ranges should always be viewable Hannes Hauswedell 2022-09-14 2022-09   SG9 Ranges,LEWG Library Evolution
P2637R0 Member visit and apply Barry Revzin 2022-09-17 2022-09   LEWG Library Evolution
P2638R0 Intel's response to P1915R0 for std::simd parallelism in TS 2 Daniel Towner 2022-09-21 2022-09   SG1 Concurrency and Parallelism,LEWG Library Evolution,LWG Library
P2639R0 Static Allocations Torben Thaysen 2022-09-21 2022-09   EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator
P2640R0 Modules: Inner-scope Namespace Entities: Exported or Not? Nathan Sidwell 2022-09-12 2022-09   EWG Evolution
P2641R0 Checking if a union alternative is active Barry Revzin 2022-09-17 2022-09   LEWG Library Evolution
P2642R0 Padded mdspan layouts Mark Hoemmen 2022-09-14 2022-09   LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P2643R0 Improving C++ concurrency features Gonzalo Brito Gadeschi 2022-09-15 2022-09   SG1 Concurrency and Parallelism

std::ssize() in C++20 -- by Bartlomiej Filipek

Speaking of std::ssize...

std::ssize() in C++20

by Bartlomiej Filipek

From the article:

In this article, I’ll show another technique that avoids mixing signed and unsigned types.

In my article Integer Conversions and Safe Comparisons in C++20 we learned about cmp_* integer comparison functions that allow us to compare various types of integer types. The functions are safe because they help with mixing signed and unsigned types. In C++20, there’s another handy feature: the non-member std::ssize() function that returns a signed number of elements in a container.

Let’s see how to use it. ...

Enhance application security with FORTIFY_SOURCE -- Siddharth Sharma

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. ...