C++ reflection has been a long-sought goal of users and language designers. But previous attempts have failed to get wide enough support to make it into the C++ standard or be widely implemented. A newly revised design has incorporated the lessons learned from previous proposals and is gaining momentum in the C++ standards committee.
This talk abstracts the proposals to parallelization( P2300,P2500, P3179 ) and its affect on oneDPL (Intel ParallelSTL). Parallelism and asynchronous task execution is predominant in most of hardware accelerators (namely GPUs, FPGAs etc), and while std provides implementations of mutex, semaphores, thread , atomic libraries to induce parallelism, it is often difficult to use them in accelerator concepts. P2300 focuses on senders , receivers for async task scheduling across a threadpool, and this concept can be advocated for accelerator interfaces as well. With a user defined execution policy targetting a specific accelerator, senders receivers can be used to schedule parallel tasks. Multiple senders can be used to create a dependency graph (which is mainly used in most accelerators) with existing policies. This talk focuses on how to induce parallelism in the concept of accelerators and use std::execution with policies to cater to standard algorithms as well as ranges.
This...
The C and C++ programming languages are often regarded as particularly error-prone. The US President’s administration recently recommended avoiding using memory-unsafe languages such as C and C++. But to what extent does this recommendation also apply to modern, contemporary C++?
The type-erasure design pattern allows to apply a fixed set of methods to a growing set of object types whereas the visitor design pattern applies a growing set of methods to a fixed set of objects.
Would you like to know how to use the power of parallel algorithms from standard library in your project? Come to my talk, and you will uncover the benefits of parallel algorithms and learn about them in story-based examples.
The C++ Standard Library does not yet have an '#include <graphics>' library, so instead we rely on vendors to provide APIs for hardware accelerated graphics. When it comes to graphics programming, there exist many low level APIs available including: DirectX, OpenGL, Vulkan, and Metal. However, there's a new API -- WebGPU that supports both native and web targets and can run nearly anywhere! In this talk, I will provide an introduction to using the WebGPU API in C++. In this talk we'll provide some background so that you can understand the graphics programming basics, and then we'll show you how to render a simple 3D triangle on both native and web targets. Throughout the talk, we'll also provide suggestions how how to leverage C++ to build your own mini-graphics framework. The audience will leave this talk able to continue their graphics programming journey with WebGPU and C++.
...The C++ Standard Library does not yet have an '#include <graphics>' library, so instead we rely on vendors to provide APIs for hardware accelerated graphics. When it comes to graphics programming, there exist many low level APIs available including: DirectX, OpenGL, Vulkan, and Metal. However, there's a new API -- WebGPU that supports both native and web targets and can run nearly anywhere! In this talk, I will provide an introduction to using the WebGPU API in C++. In this talk we'll provide some background so that you can understand the graphics programming basics, and then we'll show you how to render a simple 3D triangle on both native and web targets. Throughout the talk, we'll also provide suggestions how how to leverage C++ to build your own mini-graphics framework. The audience will leave this talk able to continue their graphics programming journey with WebGPU and C++.
...We all get older every day. But when are you old? Do the natural changes of aging make it harder to be a good programmer? Do you have to stop or can you keep going? What can you do to make both aging and programming more pleasant for yourself? How can you help the older people you know, and set up systems that will help you when you need it? When it comes to ensuring a pleasant and long old age, it's not too late -- and it's also never too soon.
...this
is as old as C++. It's been tirelessly passed to every non-static member function by the compiler with us barely noticing. We've had no control over it, and very few reasons to ever spell it out in code.
With few exceptions, most developers will eventually have to learn SQL. In our C++ world, many of us are familiar with the ranges library. Can we write a library that makes it easy to manipulate containers using a SQL like syntax, rather than writing raw loops or ranges code?
This talk is not so much a talk about C++. Actually, it is not about C++ at all, but about how we can use VSCode extensions to replace legacy IDEs and integrate legacy build systems into a modern editor.
Whether creating new features or fixing bugs, what does Done mean in Software Engineering terms and what is its effect on delivering change in the real world ?
Most developers love simplifications — they love the idea of that one tool that solves all of their problems. We have seen that in the late 90s and early 2000s, when object-oriented programming (OOP) was promoted as the one solution to all software problems. Today, however, the tide seems to have turned and functional programming (FP) is on the rise. OOP, on the other hand, seems to be considered an obsolescent paradigm:
“Inheritance...
Functional programming in C++ is gaining importance and is attracting programmers. One of its most characteristic patterns is composition of functions in the form of a pipeline pattern. Since C++20 we can use the ranges library with its characteristic function composition abilities thanks to the overloaded pipe operator.
The behaviour of floating point calculations is often unintuitive and hard to reason about, complicated by the non-associativity of floating point addition as well as rounding modes. If you need cross-platform portability, which you may if you are in domains like games or audio where it can be critically important, then you are in a whole heap of trouble. In this talk I'll tell you why you may need this portability, why it is so hard to solve, and what approach we took at Six Impossible Things Before Breakfast to achieve this critical feature.
...