Video & On-Demand

CppCast Episode 57: Runtime Compiled C++ with Doug Binks

Episode 57 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Doug Binks from Enkisoftware to discuss Runtime Compile C++.

CppCast Episode 57: Runtime Compiled C++ with Doug Binks

by Rob Irving and Jason Turner

About the interviewee:

Doug Binks is programming the game Avoyd using Runtime Compiled C++, a technique he co-developed with industry friends; and enkiTS, a lightweight task scheduler.

An experienced game developer, Doug was previously Technical Lead of the Game Architecture Initiative at Intel. He has worked in the games industry in roles ranging from the R&D development manager at Crytek to head of studio at Strangelite, as well as lead programmer. An early interest in games development was sidetracked by a doctorate in Physics at Oxford University, and two post-doctoral posts as an academic researcher in experimental nonlinear pattern formation, specializing in fluid mechanics. His fondest childhood memories are of programming games in assembly on the ZX81.

CppCon 2015 C++ Multi-dimensional Arrays...--Pramod Gupta

Have you registered for CppCon 2016 in September? Don’t delay – Early Bird registration is open now.

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

C++ Multi-dimensional Arrays...

by Pramod Gupta

(watch on YouTube) (watch on Channel 9)

Summary of the talk:

The language feature of passing a multi-dimensional array to a function without specifying all its dimensions at compile time is crucial for computational physics and applied mathematics. For example a matrix is a two dimensional array and a matrix inversion function which needs to know the size of the matrix at compile time would be of limited use. Major general purpose languages such as C, Java and C# support this feature. Of course, scientific programming languages like Fortran, Matlab and R also support this feature.

C++ is perhaps the only major programming language which does not allow passing a multi-dimensional array to a function unless the size of all the dimensions except the first one is known at compile time. Due to this limitation of C++, various libraries have been developed for using multi-dimensional arrays in C++. Some of these libraries are Blitz++, Armadillo, Eigen and boost.multi_array. These libraries are very large and complex. While they do provide a wide variety of features, they have a learning curve which may be difficult to justify for something as basic as passing multi-dimensional arrays to functions. Also the computational physics or applied mathematics code becomes dependent on a large non-standard library. Hence its usage will be limited to only those scientists who are willing to install these non-standard libraries.

The reference feature of C++ allows us to develop a multi-dimensional array class. The class has a small number of lines of code and hence the code can be included with the scientific application code. We use this class to write programs for various areas of computational physics and show that the class is easy to use and it leads to readable programs.

CppCon 2015 C++ Metaprogramming: A Paradigm Shift--Louis Dionne

Have you registered for CppCon 2016 in September? Don’t delay – Early Bird registration is open now.

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

C++ Metaprogramming: A Paradigm Shift

by Louis Dionne

(watch on YouTube) (watch on Channel 9)

Summary of the talk:

Most people think metaprogramming is hard. It isn't; we just didn't have the right tools for it. This talk will present a new way of metaprogramming using the same syntax as that of normal C++. It will show how the runtime and the compile-time boundaries can be crossed almost seamlessly. It will show how compilation times can be reduced without sacrificing expressiveness. It will introduce Hana [1], a newly accepted Boost library using cutting edge features of the language in a creative way to solve the problem of metaprogramming for good.

James McNellis' talks @Italian C++ Conference 2016

The talks James McNellis gave at the Italian C++ Conference 2016 are now online:

An Introduction to C++ Coroutines

One of the most interesting new features being proposed for C++ standardization is coroutines, formerly known as “resumable functions.”  C++ coroutines are designed to be highly scalable, highly efficient (no overhead), and highly extensible, while still interacting seamlessly with the rest of the C++ language.

This session will consist of an in-depth introduction to C++ coroutines.  We will begin by looking at the rationale for adding coroutines to the C++ language and then look at several examples that show [1] how to write a coroutine, [2] how to use the extensibility model to adapt existing libraries to work with C++ coroutines, and [3] how coroutines really work “under the hood,” using the Visual C++ implementation as a reference.  Finally, we will look briefly at the status of the C++ coroutines proposal and some of the competing ideas.

Slides

 

Adventures in a Legacy Codebase

Three years ago, the Visual C++ team undertook a project to substantially modernize and redesign the Microsoft C Runtime (CRT) with the goals of improving long-term maintainability, performance, and usability.  This work culminated with the release of the Universal CRT with Windows 10 and Visual Studio 2015.

In this session, I will discuss our team’s experiences from this project.  We’ll look at some of the techniques we used in modernizing a decades-old codebase and look at some of the challenges that we faced, lessons that we learned, and best practices that we developed during the course of the project.

Slides

CppCon 2015 Faster Complex Numbers--André Bergner

Have you registered for CppCon 2016 in September? Don’t delay – Early Bird registration is open now.

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

Faster Complex Numbers

by André Bergner

(watch on YouTube) (watch on Channel 9)

Summary of the talk:

Complex numbers are an important tool from mathematics enabling many problems to be written in a more generic form. The C++ standard library comes with an implementation to work with complex numbers in a natural way.

Motivated by useful real world examples from theoretical physics and audio dsp I will discuss benchmarks of std::complex and demonstrate how alternative implementations, naïve or advanced ones based on expression templates, outperform std::complex and can compete with hand-crafted C code (depending on compiler and std lib). A quick introduction to expression templates will be provided.

ACCU 2016 All videos are online

All videos from the this year's ACCU conference are now online.

ACCU 2016 Videos

by the ACCU

From the schedule

The keynotes were:

Jim Coplien: A Glimpse of Trygve: From Class oriented Programming to Real OO

Andrei Alexandrescu: Fastware

Marian Petre: Balacing Bias in Software Development

Anna-Jayne Metcalfe: Comfort Zone

 

The talks with C++ content in no particular order were:

Dietmar Kühl: Constant Fun

Roger Orr: C++ Concepts 'Lite' in Practice

Felix Petriconi: Leaving The Dark Side - Behaviour Testing of a C++ Based Medical Device

J. Daniel Garcia: Improving Performance and Maintainability in Modern C++

Marshall Clow: STL Algorithms – How to Use Them and How to Write Your Own

Kevlin Henney: Declarative Thinking, Declarative Practice

Dmitri Nesteruk: Design Pattern in Modern C++

Jamie Allsop: Managing C++ Build Complexity Using Cuppa: A SCons-based Build System

Nikos Athanasiou: Benchmarking in C++

Sławomir Zborowski: What Every C++ Programmer Should Know About Modern Compilers

Peter Sommerlad: Visualize Template Instantiations - Understand your Template Bugs

Peter Sommerlad: Using Units, Quantities, and Dimensions in C++14

Niall Douglas: Distributed Mutual Exclusion using Proposed Boost.AFIO

John Lakos: Proper Inheritance Part 1 (Part 2 is not available)

Bernhard Merkle: Finding Bugs with Clang at Compile and Run Time

Guy Davidson: WG21-SG14: The Story So Far

 

CppCon 2015 Expression Templates - Past, Present, Future--Joel Falcou

Have you registered for CppCon 2016 in September? Don’t delay – Early Bird registration is open now.

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

Expression Templates - Past, Present, Future+

by Joel Falcou

Part 1: (watch on YouTube) (watch on Channel 9)

Part 2: (watch on YouTube) (watch on Channel 9)

Part 3: (watch on YouTube) (watch on Channel 9)

Summary of the talk:

Expression Templates is one of this C++ idiom people learn to either love or hate. The main issues with ET is that everubody has its own conception about what they are, when they should be used, what benefits they give and what are their trade off. For a long time, Expression Tempaltes has been seen has a way to improve temporary heavy code. If the seminal implementation of ET by Todd Veldhuizen was actually about this, the landscape has changed since C++11 and C++14.

This workshop will go over : - what are exactly Expression Templates and what kind of use case they can solve elegantly and efficiently - what are the benefits that one may reap by using expression tempalte in its library - what are the real cost of expressont empaltes both at runtime and compile-time - which tools to use to not reinvent the tempalte wheel everytime including an introduction to Boost.PROTO an Boost.HANA.

The main objective is to clarify why, even in C++1*, this idiom has a meaningful set of applications and how to navigate around its pitfalls.

CppCon 2015 Implementation of a component-based entity system in modern C++--Vittorio Romeo

Have you registered for CppCon 2016 in September? Don’t delay – Early Bird registration is open now.

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

Implementation of a component-based entity system in modern C++

by Vittorio Romeo

(watch on YouTube) (watch on Channel 9)

Summary of the talk:

An alternative to deep inheritance trees for game and application architecture design is "composition". Separating data (in independent components) from logic (in independent systems) allows the code to be more reusable and more efficient, alongside additional benefits. Using modern C++11 and C++14 features, it is possible to design an efficient and user-friendly component-based entity system library, with intuitive syntax and convenient cost-free abstractions.