August 2019

CppCon 2018: Thoughts on a more powerful and simpler C++ (5 of N)--Herb Sutter

We’re in the final countdown to this year’s CppCon, which starts on September 16. To whet your appetite for this year’s conference, here’s another of the top-rated talks from last year. Enjoy – and register today for CppCon 2019!

Thoughts on a more powerful and simpler C++ (5 of N)

by Herb Sutter

Summary of the talk:

Perhaps the most important thing we can do for C++ at this point in its evolution is to make sure we preserve its core strengths while also directing its evolution in ways that make it simpler to use. That is my own opinion at least, so this talk starts with a perspective question: What “is C++,” really? The language continues to evolve and change; as it does so, how can we be sure we’re picking C++ evolutionary improvements that not only don’t lose its “C++-ic” qualities, but make it a better C++ than ever?

At recent CppCons, I’ve spoken about several of my own personal C++ evolution efforts and experiments, and why I think they’re potentially important directions to explore for making C++ both more powerful and also simpler to use. The bulk of the talk is updates on two of these:

1. Lifetime and dangling: At CppCon 2015, Bjarne Stroustrup and I launched The C++ Core Guidelines in our plenary talks. In my part starting at 29:06, I gave an early look at my work on the Guidelines “Lifetime” profile, an approach for diagnosing many common cases of pointer/iterator dangling at compile time, with demos in an early MSVC-based prototype. For this year’s CppCon, I’ll cover what’s new, including:
    • use-after-move diagnoses
    • better support for the standard library out of the box without annotation
    • more complete implementations in two compilers: in MSVC as a static analysis extension, and in a Clang-based implementation that is efficient enough to run during normal compilation
    • the complete 1.0 Lifetime specification being released on the Guidelines’ GitHub repo this month

I’ll summarize the highlights but focus on what’s new, so I recommend rewatching that talk video as a refresher for background for this year’s session.

2. Metaclasses: In my CppCon 2017 talk, I gave an early look at my “metaclasses” proposal to use compile-time reflection and compile-time generation to make authoring classes both more powerful and also simpler. In this case, “simpler” means not only eliminating a lot of tedious boilerplate, but also eliminating many common sources of errors and bugs. For this year, we’ll cover what’s new, including:
    • an update on the Clang-based implementation, which now supports more use cases including function parameter lists
    • new examples, including from domains like concurrency
    • an updated P0707 paper, with more links to working examples live on Godbolt, being posted in the next few weeks for the pre-San Diego committee mailing

CppCon Advice

Don't miss it out.

CppCon Advice

From the article:

Hello all, I've been programming in C++ for about 5 years now, 4 years in a university setting and 1 at my current employer. Recently, I put in a request to attend CppCon and it was accepted, which I'm thrilled about...

How to set up PVS-Studio in Travis CI using the example of PSP game console emulator

Travis CI is a distributed web service for building and testing software that uses GitHub as a source code hosting service. In addition to the above scripts, you can add your own, thanks to the extensive configuration options. In this article we will set up Travis CI for working with PVS-Studio by the example of PPSSPP C++ code.

How to set up PVS-Studio in Travis CI using the example of PSP game console emulator

by Maxim Zvyagintsev

From the article:

At the beginning of the travis_install function we install the compilers we need using environment variables. Then, if the $PVS_ANALYZE variable stores the value of Yes (we specified it in the env section when configuring the build matrix), we install the pvs-studio package. Besides it, there are also libio-socket-ssl-perl and libnet-ssleay-perl packages, but they are needed to send the results by mail, so they are not necessary if you have chosen another way of report delivery.

CppCon 2018: OOP Is Dead, Long Live Data-oriented Design--Stoyan Nikolov

We’re in the final countdown to this year’s CppCon, which starts on September 16. To whet your appetite for this year’s conference, here’s another of the top-rated talks from last year. Enjoy – and register today for CppCon 2019!

OOP Is Dead, Long Live Data-oriented Design

by Stoyan Nikolov

Summary of the talk:

For decades C++ developers have built software around OOP concepts that ultimately failed us - we didn’t see the promises of code reuse, maintenance or simplicity fulfilled, and performance suffers significantly. Data-oriented design can be a better paradigm in fields where C++ is most important - game development, high-performance computing, and real-time systems.

The talk will briefly introduce data-oriented design and focus on practical real-world examples of applying DoD where previously OOP constructs were widely employed.

Examples will be shown from modern web browsers. They are overwhelmingly written in C++ with OOP - that’s why most of them are slow memory hogs. In the talk I’ll draw parallels between the design of systems in Chrome and their counterparts in the HTML renderer Hummingbird. As we’ll see, Hummingbird is multiple times faster because it ditches OOP for good in all performance-critical areas.

We will see how real-world C++ OOP systems can be re-designed in a C++ data-oriented way for better performance, scalability, maintainability and testability.

CopperSpice: Lambdas In Action

New video on the CopperSpice YouTube Channel:

Lambdas in Action

by Barbara Geller and Ansel Sermersheim

About the video:

In this video, we discuss lambda expressions in detail and provide precise definitions of similar sounding terms like functor, function object, function pointer, and std::function. By explaining some real examples from our production code, we show how lambda expressions can be used to simplify complex operations by providing encapsulation for the implementation of a callback.

Please take a look and remember to subscribe!

CppCon 2018: Concepts: The Future of Generic Programming (the future is here)--Bjarne Stroustrup

We’re in the final countdown to this year’s CppCon, which starts on September 16. To whet your appetite for this year’s conference, here’s another of the top-rated talks from last year. Enjoy – and register today for CppCon 2019!

Concepts: The Future of Generic Programming (the future is here)

by Bjarne Stroustrup

Summary of the talk:

Concepts have arrived. They will change the way we think about programming. Implementations are available in GCC and Clang. Many fundamental concepts are in the standard committee’s working paper and the next generation of the STL depends critically on concepts.

After briefly introducing concepts, I consider their role in design. What makes a good/useful concept? How do you design good concepts and use them well?

From a language-technical point of view, concepts are a way of constraining template arguments. From a design perspective, they are a focus comparable to user-defined types (classes): The intent is for a concept to represent a fundamental concept in an applications domain (hence the name “concept”).

I will mention technical issues recently resolved  or currently being resolved in the committee, but my primarily focus is not concepts as a language mechanism but as a support for the development of good software.