December 2018

wxWidgets 3.1.2 released

New 3.1.2 release of wxWidgets, free and open source library for creating native GUI applications, is now available. 

wxWidgets 3.1.2 Release

by wxWidgets

About the release:

There have been more than 1200 commits from 75 contributors (41 with multiple contributions) since 3.1.1, which makes it difficult to summarize them in this short post. The primary focus of this release is on bug fixes (closing more than 100 bugs from wxTrac) and incremental improvements in preparation for the next stable 3.2.0 release, however there is a usual lot of new features as well, including:

Initial support for macOS 10.14 and its dark mode.
Support for non-integer font sizes and arbitrary font weights.
New wxLZMA{Input,Output}Stream classes.
Add wxDataViewToggleRenderer::ShowAsRadio(), wxDisplay::GetPPI(), wxGrid::SetCornerLabelValue(), wxHtmlEasyPrinting::SetPromptMode(), wxJoystickEvent::GetButtonOrdinal(), wxToolbook::EnablePage().

Standard Ranges--Eric Niebler

Coming soon.

Standard Ranges

by Eric Niebler

From the article:

As you may have heard by now, Ranges got merged and will be part of C++20. This is huge news and represents probably the biggest shift the Standard Library has seen since it was first standardized way back in 1998.

This has been a long time coming. Personally, I’ve been working toward this since at least November 2013, when I opined, “In my opinion, it’s time for a range library for the modern world,” in a blog post on input ranges. Since then, I’ve been busy building that modern range library and nailing down its specification with the help of some very talented people.

Future blog posts will discuss how we got here and the gritty details of how the old stuff and the new stuff play together (we’re C++ programmers, we love gritty details), but this post is strictly about the what...

span: the best span--Barry Revzin

An answer.

span: the best span

by Barry Revzin

From the article:

This post is a response to RangeOf: A better span, which has many problems worth addressing in detail. While most of this post will deal with specifically std::span<T> (which is indeed the best span), the last section will also discuss a recent addition to the standard library: std::ranges::subrange<T*>...

PVS-Studio: Support of MISRA C and MISRA C++ Coding Standards

Starting with the version 6.27, the PVS-Studio static code analyzer can classify its warnings according to MISRA C and MISRA C++ standards. Due to support of these standards it has become possible to effectively use the analyzer to increase the level of security, portability and reliability of programs for embedded systems.

PVS-Studio: Support of MISRA C and MISRA C++ Coding Standards

by Andrey Karpov

From the article:

Such diagnosis can't be applied to already existing projects developed for Windows, Linux or macOS operating systems. For example, only one rule about curly brackets described above gives 1947 warnings of the V2507 diagnostic (MISRA C 15.6, MISRA C++ 6-4-1) for a WinMerge project. Still WinMerge is a small project! In total, only 250 000 lines of code in C and C# languages.

Haifa::C++ meetup - Future direction of C++ and C++20: on the road towards heterogeneous programming

The upcoming Haifa::C++ meetup (Dec. 18) will feature a special talk:

Future direction of C++ and C++20: on the road towards heterogeneous programming

By Michael Wong

From the event description:

C++ 20 is sure to be a major release but have you ever wondered if there is a direction to C++?
The first half of this talk will devote to the Directions Groups' description of where future C++ is heading and show some of the features that have already landed towards C++20. Next, the current status of parallel programming support in C++ will be discussed, along with an outline of the upcoming features related to parallelism in C++20 and TSs. Lastly, the way C++ moves towards heterogeneous support will be highlighted, describing changes that started in C++11 with lambda, pushed forward with C++17 with Thread of Execution, and soon to enter C++20 with executors. These form a subtle but definite direction towards heterogeneous programming support.

 

SG20 Education and Recommended Videos for Teaching C++ -- Christopher Di Bella

In today’s blog, we look at both the newly minted Study Group for education in the C++ Standard Committee. We also look at a small number of conference videos that I recommend teachers consider while they’re waiting for this Study Group to produce usable materials.

SG20 Education and Recommended Videos for Teaching C++

by Christopher Di Bella

From the article:

As articulated in P1231, the goal of SG20 is not to provide normative curricula for teaching C++, but rather to provide teaching and curriculum guidelines.

...

Below are a list of conference videos that I’ve compiled for teachers to watch (and will update if recommendations come in). There’s well over a day’s worth of videos below, but these aren’t a random assortment of my favourite conference videos. Rather, they are sessions that communicate values about:

  • teaching people how to write programs using C++, or
  • writing C++ programs using approaches the community agrees produce better code.

CppCast Episode 178: Performance Analysis and Optimization with Denis Bakhvalov

Episode 178 of CppCast the first podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Denis Bakhvalov from Intel joins us to talk about C++ Performance Analysis and Optimization.

CppCast Episode 178: Performance Analysis and Optimization with Denis Bakhvalov

by Rob Irving and Jason Turner

About the interviewee:

Denis is a C++ developer with almost 10 years of experience. Denis started his journey as a developer of desktop applications, then moved to embedded and now he works at Intel, doing C++ compiler development. He enjoys writing the fastest-possible code and staring at the assembly. Denis is a father of 2, he likes to play soccer and chess.

Madrid Cpp meetup: Bare metal programming

New Madrid C++ comin' atcha:

Embedded systems: Bare metal programming

By Madrid C/C+

In Spanish from the event brief: 

Acabamos el año con uno de los meetups más esperados de la temporada: sistemas embebidos. Nos adentramos en un terreno inexplorado por muchos de nosotros, pero que tienen gran relevancia en el mundo industrial: IoT, domótica, industria del automóvil,...

An Extraterrestrial Guide to C++ Formatting--Victor Zverovich

The future of now.

An Extraterrestrial Guide to C++ Formatting

by Victor Zverovich

From the article:

Consider the following use case: you are developing the Enteropia[2]-first Sepulka[3]-as-a-Service (SaaS) platform and have a server code written in C++ that checks the value of sepulka’s squishiness received over the wire and, if the value is invalid, logs it and returns an error to the client. Squishiness is passed as a single byte and you want to format it as a 2-digit hexadecimal integer, because that is, of course, the Ardrite[1] National Standards Institute (ANSI) standard representation of squishiness. Let’s implement the logging part using different formatting facilities provided by C++...

Quick Q: Is it useful to pass std::weak_ptr to functions?

Quick A: yes

Recently on SO:

Is it useful to pass std::weak_ptr to functions?

Consider this toy example.

struct PointerObserver
{
    std::weak_ptr<int> held_pointer;

    void observe( std::weak_ptr<int> p )
    {
        held_pointer = std::move(p);
    }

    void report() const
    {
        if ( auto sp = held_pointer.lock() )
        {
            std::cout << "Pointer points to " << *sp << "\n";
        }
        else
        {
            std::cout << "Pointer has expired.\n";
        }
    }
};

In this example, a function observe holds state.

Its weak_ptr parameter communicates that this smart pointer is not owning, but reserves the ability to own at a later time, safely detecting if the pointer has expired.