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.

Overload 152 is now available

ACCU’s Overload journal of August 2019 is out. It contains the following C++ related articles.

Overload 152 is now available

From the journal:

Reactive or Proactive.
Reactive systems are all the rage. Frances Buontempo compares them with a proactive approach.

A Low-Latency Logging Framework.
Logging can be a bottleneck in systems. Wesley Maness and Richard Reich demonstrate a low-latency logging framework that avoids common problems.

Empty Scoped Enums as Strong Aliases for Integral Types.
Scoped enums have many advantages. Lukas Böger demonstrates their use as strong types of numbers.

C++ Reflection for Python Binding.
There are various approaches to generating Python bindings in C++. Russell Standish shows how Classdesc can be used to achieve this.

Trip Report: Italian C++ 2019.
Milan held Italy’s largest C++ conference. Hans Vredeveld reports back.

Afterwood.
Many people are risk-averse. Chris Oldwood considers this position – in verse.