What's New in Visual Studio 2022 - Conformance, Performance, Features of Importance - Marian Luparu & Sy Brand - CppCon 2022
https://github.com/CppCon/CppCon2022
C++20 is stabilized, C++23 is on the horizon, the state of the art in security and devops practices is advancing, and of course, we always want our programs to run faster. We've been working in all of these areas and more to make Visual Studio a better IDE for everyone, no matter what platform you're targeting.
In this talk, we'll demonstrate the last year's work across the IDE, toolchain, vcpkg, and GitHub: libfuzzer and advanced asan support for finding security holes, C++20 modules support for CMake, new views and monitors for embedded developers, how we're leveraging vcpkg for improving toolset acquisition, and more.
We'll also show how we have improved our compiler's code generation for real-world scenarios by walking you through before-and-after assembly snippets.
Come along to learn all about the latest in our tooling, and to get a peek into our plans for the future.
---
Marian Luparu
Marian is the Group Product Manager for the C++ team at Microsoft, leading the team responsible for making Visual Studio, Visual Studio Code, MSVC compiler toolset and Vcpkg more productive for C++ developers
---
Sy Brand
Sy Brand is Microsoft’s C++ Developer Advocate. Their background is in compilers and debuggers for embedded accelerators, but they’re also interested in generic library design, metaprogramming, functional-style C++, undefined behaviour, and making our communities more welcoming and inclusive.
---
Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk
The Case For a Standardized Package Description Format for External C++ Libraries - Luis Caro Campos - CppCon 2022
https://github.com/CppCon/CppCon2022
According to the most recent ISO C++ Developer Survey, the most common mechanism for consuming third-party libraries is by making the external source code part of the build, despite the recent advancements provided by package managers like Conan and vcpkg.
On the other hand, the same survey reflects that build times are still one of the major pain points reported by most C++ developers. So what is hindering the adoption of package managers to handle third-party dependencies to help avoid time spent compiling external code that we are less likely to be working on?
In the almost 40 years of history of C++, the proliferation of build system solutions, and the evolving conventions, have made consuming external C++ libraries incredibly challenging: there is no interoperability in the way usage requirements are propagated between libraries and build systems. Earlier attempts at providing an abstraction layer include tools such as Pkg-Config and Libtool, however they have their limitations. More recently, CMake-generated configuration files that correctly express usage requirements have become more predominant, however, they are very much tied to CMake and are difficult to consume from other build systems.
To mitigate this, package maintainers for public binary repositories have had to turn to an intricate set of patches on top of third party source build scripts in order to achieve interoperability. Is there a world where we can further isolate the implementation details of build systems and the way to consume libraries? What role do new language features such as C++ modules play in this landscape? Some of these conventions even affect package managers for other languages that provide bindings to C/C++ libraries, such as Python.
This talk provides an overview of how the evolving conventions of the past 40 years are still having an impact on our ability to consume externally-provided C++ libraries, and opens a discussion on what properties a package definition format would have to satisfy in order to achieve isolation between build systems and package managers.
---
Luis Caro Campos
Luis is a Electronics and Computer Engineer based in the UK, with previous experience as a C++ engineer in the field of Computer Vision and Robotics. Currently, he is concerned with the problem of enabling Software Development at scale: focused on the tooling and processes to support large teams of engineers in writing code. He is currently part of the Conan team at JFrog, focused on the problems of the C++ community at large.
---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk
ISO C++ Standards Committee Panel Discussion - Hosted by Herb Sutter - CppCon 2022
Committee Fireside Chat
Bring your questions! This panel of representative members of the C++ standards committee is ready to discuss everything from C++20 and C++23, to how the committee has been working online for nearly all the C++23 cycle, to what to look forward to in Standard C++ in the coming years.
Besides C++’s creator Bjarne Stroustrup, the panelists include a variety of members from across the topical subgroups in the committee. You’ll have people who participate in language and library evolution, and topics like compile-time cppcon.digital-medium.co.uk/tag/programming/">programming, real-time/embedded systems, AI, and teaching as the community starts to absorb all the new features in C++20 and soon C++23.
---
Moderator: Herb Sutter
---
Panelist: Bjarne Stroustrup
---
Panelist: Daisy Hollman
---
Panelist: Daniela Engert
---
Panelist: David Sankel
---
Panelist: Inbal Levi
---
Panelist: Michael Wong
---
Panelist: Nina Ranns
---
Panelist: Pablo Halpern
---
Panelist: Timur Doumler
---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk
C++ Concurrency TS 2 Use Cases and Future Direction - Michael Wong, Maged Michael, Paul McKenney - CppCon 2022
https://github.com/CppCon/CppCon2022
C++ Concurrency TS 2 has been approved, and is now accumulating content. It already contains two major sections covering hazard pointers and RCU. Because hazard pointers and RCU both have a long and rich history of implementation and use, minimal versions of both are also being proposed for inclusion in C++26. Both RCU and hazard pointers have more advanced features but they are confined to TS 2, and independent reference implementations of these advanced features are in progress. This talk will focus on additional use cases for RCU and hazard pointer and potential additions to TS 2.
Potential TS 2 additions include asymmetric fences, snapshot_ptr (also known as latest or cell), concurrent counters, concurrent queues, and synchronized <T>. TS 2 might therefore include concurrent data structures as well as the existing hazard pointers and RCU safe/deferred-reclamation techniques.
Next, we will describe hazard pointers can be used to replace slow and contended code (e.g., using shared_mutex and shared_ptr) to equivalent fast and scalable code using Concurrency TS 2 support.
Last, but hopefully not least, we will describe the phased-state-change RCU use case that can be used to create synchronization primitives that have RCU-reader-like overhead on fast paths. Of course, there is no free lunch in concurrency, so this also means that slow paths have RCU-grace-period-like latencies. This use case will be illustrated with a fast-readers reader-writer lock.
---
Michael Wong
Michael Wong is a Distinguished Engineer at Codeplay Software, a Scottish company that produces compilers, debuggers, runtimes, testing systems, and other specialized tools to aid software development for heterogeneous systems, accelerators, and special purpose processor architectures, including GPUs and DSPs. For twenty years, he was the Senior Technical Strategy Architect for IBM compilers. Michael is also Chair of the Khronos C++ Heterogeneous Programming language SYCL, Editor for the Concurrency TS and the Transactional Memory TS, Canadian Head of Delegation to the ISO C++ Standard, Founding member of the ISO C++ Directions group, Director and VP of ISOCPP.org and Chair of al Programming Languages for Canada’s Standard Councils.
---
Maged Michael
Maged Michael is a software engineer at Meta Platforms (Facebook). He is the inventor of hazard pointers, lock-free malloc and several algorithms for concurrent data structures. He received a Ph.D. in computer science from the University of Rochester. He is an ACM Distinguished Scientist. He is an elected member of the Connecticut Academy of Science and Engineering. He received the 2014 ACM SIGPLAN Most Influential PLDI Paper Award for his paper on Scalable Lock-Free Dynamic Memory Allocation and the 2022 Dijkstra Prize for his 2004 paper "Safe Memory Reclamation for Dynamic Lock-Free Objects Using Atomic Reads and Writes".
---
Paul McKenney
Paul E. McKenney has been coding for almost four decades, more than half of that on parallel hardware, where his work has earned him a reputation among some as a flaming heretic. Paul is at Meta Platforms (Facebook), where he maintains the RCU implementation within the Linux kernel, where the variety of workloads present highly entertaining performance, scalability, real-time response, and energy-efficiency challenges. Paul was previously an IBM Distinguished Engineer at the IBM Linux Technology Center. Prior to that, he worked on the DYNIX/ptx kernel at Sequent, and prior to that on packet-radio and Internet protocols (but long before it was polite to mention Internet at cocktail parties), system administration, business applications, and real-time systems. His hobbies include what passes for running at his age along with the usual house-wife-and-kids habit.
---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk
C++ Performance Portability - Decade of Challenges Developing Kokkos - Christian Trott - CppCon 2022
https://github.com/CppCon/CppCon2022
Over the last decade, scientific computing had to deal with a diversifying hardware and programming model environment. Today’s scientific software engineers have to account for at least four vendor provided eco-systems: CUDA (NVIDIA), HIP (AMD), SYCL (Intel - OneAPI) and OpenMP. Performance Portability solutions attempt to relieve domain experts from the need to become experts in all of these, by providing an interface which enables developers to write their code once, and then execute it efficiently on any HPC platform.
This talk will discuss lessons learned from the last 10 years of developing and deploying Kokkos, a C++ based Performance Portability EcoSystem which is arguably the most widely used non-vendor solution for writing single source performance portable scientific applications. We will dive into some of the key challenges for designing performance portable software, and how to address them through appropriate API design. The talk will also show how some of the fundamental concepts for performance portability are getting introduced into the ISO C++ standard through upcoming features.
---
Christian Trott
Christian Trott is a high performance computing expert working at the Sandia National Laboratories. He leads the multi-institutional Kokkos C++ Performance Portability Programming Model development team and is member of the ISO C++ Standards Committee focusing on future C++ capabilities for parallel and heterogeneous computing. Christian is currently focused on making sure that Kokkos is ready for the exa-scale era high performance computing architectures. He also leads the mdspan proposal for the C++23 standard, which will provide multidimensional array views with configurable data layouts and data access functions.
His prior scientific work focused on computational material research using ab-initio calculations, molecular dynamic simulations and monte carlo methods for investigations of ion-conducting glass materials.
---
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk
Deciphering Coroutines - A Visual Approach - Andreas Weis - CppCon 2022
https://github.com/CppCon/CppCon2022
Coroutines are a powerful addition to C++20, allowing developers to drastically simplify code for certain kinds of problems and be adapted to a wide range of different use cases. But anyone trying to familiarize themselves with them will quickly notice that this flexibility comes at a price: In their current state, C++ coroutines are notoriously difficult to learn and their tight integration with the compiler gives them a feel quite unlike any other feature in the language.
The goal of this talk is to give a sustainable introduction on how to read and reason about coroutine code. We will learn how all the different elements of the mechanism fit together and to distinguish the parts of the code that follow the new rules of coroutines from those that still follow the well known conventional rules of C++. We will approach this through the construction of a coroutine cheat sheet, a collection of diagrams that serve as visual maps for navigating the complexities of the feature. Special care is taken to provide visual cues that are easily recognizable later on, to compensate for the fact that learners tend to forget the numerous details of the mechanism very fast if they don't use it in their everyday coding.
To account for the complexity of the topic, this talk focuses exclusively on providing a comprehensive introduction to the coroutine syntax, without discussing any advanced use cases. However, with the knowledge obtained from this talk, attendees will be able to easily follow more advanced presentations of coroutines later on without getting lost in the technical details of its peculiar syntax.
---
Andreas Weis
Andreas Weis has been writing C++ code in many different domains, from real-time graphics, to distributed applications, to embedded systems. As a library writer by nature, he enjoys writing portable code and exposing complex functionalities through simple, richly-typed interfaces. Both of which C++ allows him to do extensively. Andreas is also one of the co-organizers of the Munich C++ User Group, which allows him to share this passion with others on a regular basis.
He currently works for Woven Planet, where he focuses on building modern software for use in safety critical systems.
__
Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk
What’s New in C++23 - Sy Brand - CppCon 2022
https://github.com/CppCon/CppCon2022
C++23 comes with a host of language and library features to simplify your code, make it more expressive, and give you more power to play with. With the help of my cats, I’ll walk you through the majority of upcoming features, showing you how they can work together and what benefits you’ll gain from upgrading when the time comes.
---
Sy Brand
Sy Brand is Microsoft’s C++ Developer Advocate. Their background is in compilers and debuggers for embedded accelerators, but they’re also interested in generic library design, metaprogramming, functional-style C++, undefined behaviour, and making our communities more welcoming and inclusive.
__
Videos Streamed, Edited, and YouTube Channel Managed by Digital Medium: http://online.digital-medium.co.uk