Data-Oriented Design and Avoiding the C++ Object-Oriented Programming Zimmer Frame -- Leigh Johnston

An article about the increasing importance of data-oriented design within the context of C++.

Data-Oriented Design and Avoiding the C++ Object-Oriented Programming Zimmer Frame

by Leigh Johnston

From the article:

Object-oriented programming, OOP, or more importantly object-oriented design (OOD) has been the workhorse of software engineering for the past three decades but times are changing: data-oriented design is the new old kid on the block.

Use the official Boost.Hana with MSVC 2017 Update 8 compiler--Ulzii Luvsanbat

The vcpkg version of Boost.Hana now just points to the official master repo, instead of VC++ Team fork:

Use the official Boost.Hana with MSVC 2017 Update 8 compiler

by Ulzii Luvsanbat

From the article:

We would like to share a progress update to our previous announcement regarding enabling Boost.Hana with MSVC compiler. Just as a quick background, Louis Dionne, the Boost.Hana author, and us have jointly agreed...

CppCon 2017: Meta--Andrew Sutton

Have you registered for CppCon 2018 in September? Registration is open now.

While we wait for this year’s event, we’re featuring videos of some of the 100+ talks from CppCon 2017 for you to enjoy. Here is today’s feature:

Meta

by Andrew Sutton

(watch on YouTube) (watch on Channel 9)

Summary of the talk:

For the past several years, I have been researching new languages to support safe and efficient network protocol processing, specifically for software-defined networking applications. The unfortunate outcome of that research is this conclusion: any language for that domain must also be a general purpose programming language. This is not an easy thing to do. Many of the language features I worked with simply generated expressions to compute packet and header lengths, read and write packet fields, and encode and decode entire packets. If we could do this in C++, I might not need an entirely new language.

Over the past year, Herb Sutter and I have collaborated to work on language support for compile-time programming, static reflection, metaclasses, and code generation in the C++ programming language. These facilities completely eliminate the need for the external tools, metacompilers, and domain-specific languages on which we frequently rely to generate high-performance encoders and decoders in C++.

In this talk, I will discuss how to use these evolving proposals to create facilities for encoding and decoding packets. In particular, I will discuss the background requirements of my work, the overall design of a network protocol library, and the reflection and generation facilities that implement the library.

Preprocessing Phase for C++17's Searchers--Bartlomiej Filipek

Searchers objects.

Preprocessing Phase for C++17's Searchers

by Bartlomiej Filipek

From the article:

Searchers from C++17 are a new way to perform efficient pattern lookups. The new standard offers three searchers: default_searcher , boyer_moore_searcher and boyer_moore_horspool_searcher. The last two implements algorithms that require some additional preprocessing for the input pattern. Is there a chance to separate preprocessing time from the search time?

Spaceship Operator--Simon Brand

The future?

Spaceship Operator

by Simon Brand

From the article:

You write a class. It has a bunch of member data. At some point, you realise that you need to be able to compare objects of this type. You sigh and resign yourself to writing six operator overloads for every type of comparison you need to make. Afterwards your fingers ache and your previously clean code is lost in a sea of functions which do essentially the same thing. If this sounds familiar, then C++20’s spaceship operator is for you. This post will look at how the spaceship operator allows you to describe the strength of relations, write your own overloads, have them be automatically generated, and how correct, efficient two-way comparisons are automatically rewritten to use them...

C++17 in Detail by Bartłomiej Filipek--Marc Gregoire

Interested?

C++17 in Detail by Bartłomiej Filipek

by Marc Gregoire

From the article:

C++17 provides developers with a nice selection of new features to write better, more expressive code.

Bartłomiej Filipek has released a book titled “C++17 in Detail” that describes all significant changes in the language and the Standard Library. What’s more, it provides a lot of practical examples so you can quickly apply the knowledge to your code. The book brings you exclusive content about C++17. Additionally, the book provides insight into the current implementation status, compiler support, performance issues and other relevant knowledge to boost your current projects...

How to Design Early Returns in C++ (Based on Procedural Programming)--Jonathan Boccara

What do you think?

How to Design Early Returns in C++ (Based on Procedural Programming)

by Jonathan Boccara

From the article:

Travelling back from ACCU conference a couple of weeks ago, one of the insights that I’ve brought back with me is from Kevlin Henney’s talk Procedural Programming: It’s Back? It Never Went Away. It’s surprisingly simple but surprisingly insightful, and it has to do with early return statements...

Codeplay Announces World's First Fully-Conformant SYCL 1.2.1 Solution

SYCL is an open standard developed by the Khronos™ Group that enables developers to write code for heterogeneous systems using standard C++.  Developers are looking at how they can accelerate their applications without having to write optimized processor specific code. SYCL is the industry standard for C++ acceleration, giving developers a platform to write high-performance code in standard C++, unlocking the performance of accelerators and specialized processors from companies such as AMD™, Intel™, Renesas™ and Arm®.

Codeplay Announces World's First Fully-Conformant SYCL 1.2.1 Solution

by Codeplay

About the release:

Codeplay's ComputeCpp 1.0 enables SYCL and provides C++ developers with huge benefits:
    High Performance Computing: Supercomputers are playing an important role in computationally intensive tasks in the fields of science, finance, and many others to provide complex calculations and simulations. SYCL offers a standard way for HPC developers to write portable, efficient, accelerated code using standard C++ that can be deployed to GPUs, FPGAs and other accelerators
    Computer Vision: Complex image processing operations can be accelerated using parallel computing. ComputeCpp and SYCL provide high-level programmability for custom vision processors, enabling additional custom features on top of existing optimized hardware functions
    Artificial Intelligence: Linear algebra is increasingly being used in artificial intelligence applications and benefits from parallel architectures. The Eigen linear algebra library, SYCLBLAS and TensorFlow frameworks can be accelerated using ComputeCpp for a wide variety of heterogeneous hardware

CppCast Episode 164: SYCL with Gordon Brown

Episode 164 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Gordon Brown to discuss his work on SYCL the OpenCL abstraction layer for C++.

CppCast Episode 164: SYCL with Gordon Brown

by Rob Irving and Jason Turner

About the interviewee:

Gordon is a senior software engineer at Codeplay Software in Edinburgh, specialising in designing and implementing heterogeneous programming models for C++. Gordon spends his days working on ComputeCpp; Codeplay's implementation of SYCL and contributing to various standards bodies including the Khronos group and ISO C++. Gordon also co-organises the Edinburgh C++ user group and occasionally blogs about C++. In his spare time, Gordon enjoys dabbling in game development, board games and walking with his two dogs.