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.

Doctest 2 released! Moved to C++11 -- Viktor Kirilov

Writing unit tests in C++ has never been easier and faster.

    Doctest 2 released! C++11, thread-safety, stand-alone assertions and more!

by Viktor Kirilov

From the article:

The main 4 developments are:

  • moved to C++11 => greatly simplified the codebase
  • thread-safety => asserts and logging utilities can be used in multiple threads spawned from a single test case without race conditions (thread sanitizer tested) - see example
  • given that doctest is extremely light on compile times and is meant to be used for tests side-by-side with the production code - added the ability for asserts to be used outside of a testing context (as a general purpose assert library) - example
  • a complete overhaul of the internals of the framework (moving from printf-style logging to streams and changing internal structures) to allow for easier future development (including a reporter interface - work in progress)

A major update to Meeting C++ recruiting

The job section of Meeting C++ received an important update: you can now share your resume with selected companies via a webform. Also you can share your open positions on the Meeting C++ job board or apply to become listed in the job section as a C++ employer.

A major update for Meeting C++ Recruiting

by Jens Weller

From the article:

Today I can announce a new offering in the recruiting area of Meeting C++: the CV upload form.

The mission of Meeting C++ is to support the C++ community and to build and maintain a worldwide network for C++. And with Meeting C++ recruiting, the goal is to integrate companies into this network, to make them visible as employers, and help people find the right jobs. With this service, I want to bring together companies, who have open positions for C++ Developers and those developers who are looking for a new challenging position!