Tag: programming

C++ for Enterprise Applications – Vincent Lextrait – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

C++ for Enterprise Applications - Vincent Lextrait - CppCon 2022
https://github.com/CppCon/CppCon2022

C++ is paradoxical, it has one of the largest shares of the number of back-end transactions processed in the world (possibly the largest), most of the large Enterprise Applications are C++-based, and C++ has one of the smallest in number of Enterprise Applications (Source: SlashData, "State of the Developer Nation" 22nd Edition, Q1 2022).

The presentation offers an explanation of why this is the case, and shows a number of high-level abstractions examples that we developed and that can leverage C++ unique meta cppcon.digital-medium.co.uk/tag/programming/">programming capabilities and resolve long-running issues that Enterprise Application developers face, namely:

- How to build a sophisticated Referential Integrity system, abstracted from document databases, which is more powerful and faster that what relational databases offer today, and can be specified in a very concise manner (an ontology).
- How this Referential Integrity offers as a byproduct automatic objects destruction, in a way which is much faster than Garbage Collection techniques, more frugal than reference counting with the same guarantees, and without deadlocks.
- How to replace SQL with fast compiled C++ functions attached to semantic attributes declared in C++ classes.
- We propose to give also a glimpse (without details) of numerous additional useful Enterprise Applications-related abstractions that C++ meta cppcon.digital-medium.co.uk/tag/programming/">programming allows.
---

Vincent Lextrait

Vincent has been a C++ developer for 3 decades. Before founding Metaspex, he worked 20 years at Amadeus and was in charge of hiring and managing the team that turned Amadeus from a mainframe-based operation to the largest Enterprise Application in the world (40,000 tps average), based on open-systems. Before that Vincent worked for various Tech companies, including Ilog (acquired by IBM).
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , ,

C++ Function Multiversioning in Windows – by Joe Bialek and Pranav Kant – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

C++ Function Multiversioning in Windows - Joe Bialek and Pranav Kant - CppCon 2022
https://github.com/CppCon/CppCon2022

Original Title: High-performance Load-time Implementation Selection

Programmers often write software that is going to run on a wide variety of machine types. Writing code that is maximally efficient for all target machines can be a challenge. Often, a programmer may want to provide multiple implementations of a particular function, with each implementation optimized for a particular class of machines (e.g., an SSE implementation and an AVX implementation of a function). However, when there are multiple implementations provided, there is often a runtime cost to select the best implementation for the particular target.

Our feature combines compiler and OS facilities to enable no-overhead selection of the optimal implementation of a function. It is a function multi-versioning feature where a programmer can write multiple implementations of the function and specify to the compiler which implementation should be used on which target architectures. The compiler will use this information to generate metadata that it will include in the binary. When the binary is loaded, the OS will use this metadata to fix up references to the function, so that all references refer to the encoded optimal implementation for the current machine.

This feature enables extremely fine-grained function specialization without any overhead from indirect calls, jump tables, test-and-branch checks, etc. The specializations can be based on CPU architecture, model, features supported, or nearly any other characteristic of the current system.

This talk will walk through how this feature works, and how it is similar to existing features (e.g., gcc function multiversioning using ifuncs), and what implementation details compilers and OSes must consider when implementing this feature. We will discuss our implementation of this feature in Visual C++ and Windows 11, and demo the feature in action.
---

Joe Bialek

Joe Bialek is a security engineer in the Microsoft Security Response Center's Vulnerability & Mitigations team. Joe spends his time eliminating vulnerability classes, creating exploit mitigations, and finding security bugs.
---

Pranav Kant

Pranav is a Software Engineer working for Microsoft on Visual C++ Compiler Backend team where he focuses on code generation, linking, and post-link binary level tooling.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon #programming #function

Filed under: UncategorizedTagged with: , , , , , , ,

Purging Undefined Behavior & Intel Assumptions in a Legacy C++ Codebase – by Roth Michaels – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

Case Study: Purging Undefined Behavior and Intel Assumptions in a Legacy C++ Codebase - Roth Michaels - CppCon 2022
https://github.com/CppCon/CppCon2022

For large C++ codebases, adding support for a new platform (e.g. Apple Silicon/ARM) can be a scary, expensive endeavor. One of the biggest causes for alarm is undefined behavior (UB), which is an unfortunate part of many legacy codebases; luckily there are tools to help. After a brief review of what undefined behavior (UB) is we will discuss what issues it can cause and why it should be avoided. We will look at a few real-life bugs caused by UB in our codebase and discuss a common type of UB in legacy codebases: "it works on Intel". We’ll discuss how eliminating undefined behavior from a cross platform codebase can reduce maintenance costs and make it less stressful to support new platforms for your codebase. Then, we’ll go over the specific cultural and tooling initiatives we used to eliminate undefined behavior in our C++ codebase, including how we used static analysis and clang sanitizers to identify and address issues.
---

Roth Michaels

Roth Michaels is a Principal Software Engineer at iZotope/Soundwide, an industry leader in real-time audio software for music production and broadcast/film post-production. In his current role on the Audio Research Team at iZotope's parent company, Soundwide, he is focused on developing new fast prototyping frameworks. When he joined iZotope, Roth was the lead library designer of a new internal cross-platform "Glass", part of which is now available as open-source. More recently in his former role as Mix/Master Software Architect, Roth helped develop the reference implementation to move iZotope's products to subscription and led the team that launched the company’s first SaaS offering for music producers. Roth studied music composition at Brandeis University and continued his studies in the Dartmouth Digital Musics program. Roth began his career in software development writing software for his own compositions, and the works of other composers and artists, and teaching MaxMSP to composers and musicians; both private instruction and designing university courses. Before joining iZotope, he was working as a consultant for small startups working on mobile applications specializing in location services and Bluetooth.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon #programming #code

Filed under: UncategorizedTagged with: , , , , , ,

Scalable and Low Latency Lock-free Data Structures in C++ – by Alexander Krizhanovsky – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

Scalable and Low Latency Lock-free Data Structures in C++ - Alexander Krizhanovsky - CppCon 2022
https://github.com/CppCon/CppCon2022

Imagine that your program uses many threads, which insert and lookup millions times per second in a large data structure like std::map or std::unordered_map. Typically, you have to switch to a lock-free data structure for this task. Lock-free approaches perfectly scale data structures for multi-core systems, but hash tables and trees need some reorganization as more and more items are inserted and these reorganizations are hard to make lock-free. But the problem isn't only in contention and we also need to efficiently work with memory to develop a high performance data structure for the modern hardware. Cache conscious data structures address the problem by efficient usage of CPU caches and reducing the number of accesses to the main memory.

This talk makes a quick survey over several lock-free (primarily variations of hash table) and cache conscious (mostly trees) data structures. We'll discuss the best use cases for the data structures and their limitations. Besides performance in average cases, we'll also focus on worst case scenarios, which may introduce high tail latency on large busy systems. Tail, or high percentile, latency is a severe problem since it may reach significant values and the small percent of problem cases can be not so small in absolute values, e.g. if you service 1M users, then only 0.1% of them experiencing high processing time is a problem.

The main part of the talk is a step by step C++ implementation of Hash Trie, a hybrid lock-free cache conscious data structure, which provides good access time in average and worst case. We'll do microbenchmarks of the data structure and compare it with other data structures.

You'll learn about:
* when standard containers and locking mechanisms aren't enough
* several advanced data structures: split ordered lists and other variations of lock-free hash tables, tries (partricia trees) and hybrid data structures
* x86-64 memory ordering and cache hierarchy, operating system preemption and how to employ all the knowledge to implement a very fast data structure
* gotchas of data structures benchmarking, such as keys distribution, latency vs throughput, worst cases and so on
* an open source lock-free cache conscius Hash Trie implementation
---

Alexander Krizhanovsky

Alexander is the CEO of Tempesta Technologies, Inc., and is the architect of Tempesta FW, a high performance open source Linux application delivery controller. Alexander is responsible for the design and performance of several products in the areas of network traffic processing and databases. He designed the core architecture of a Web application firewall, mentioned in the Gartner Magic Quadrant '15, and the MariaDB temporal data tables.

Alexander gave talks at Netdev, SCALE, Linux Conf Australia, MariaDB user conferences, All Things Open, FOSDEM, Percona Live, IBM CASCON, and many other conferences. Alexander is also the author of a very fast lock-free MPMC ring buffer queue, published by the Linux Journal in 2013.
__

Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk

#cppcon #programming #datastructures

Filed under: UncategorizedTagged with: , , , , ,

The Ride with WebAssembly: Taking Your C++ and Going Places – by Nipun Jindal & Pranay Kumar – CppCon 22

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

The Ride with WebAssembly : Taking Your C++ and Going Places - Nipun Jindal and Pranay Kumar - CppCon 2022
https://github.com/CppCon/CppCon2022

- You've heard of WebAssembly, and might have used it as well in web projects. This workshop explains tries to cover the good stuff that you would definitely need in the journey to expand your horizons on the web.

As C++ developers, we all wish to see a web application running core logic utilizing the same, almost cross-platform performant C++ source, No problem. As we know WebAssembly is an actual byte-code language one can compile your native code to instead. We'll discuss WebAssembly, and see how the magic of taking C++ code and turning it into executable code within the browser happens.

This workshop will explain well how WebAssembly works, how to use it, and how to build and use your WebAssembly modules from C++ code along with a demo. Important intermediary skills such as debugging, network communication, different types of file system access, and tweaks/caution needed would be provided in the workshop.

Additionally, possible dark places such as - threading issues, system calls tweaking, memory management would be covered as well. We would be taking a sample "Hello world", a sample (legacy vs modern) C++ project and would transform these for WebAssembly as part of the exercises along with some exercise at the end for regular, open-source C++ projects.

So grab C++ code, a modern browser, and let's get started!

Key Takeaways:

- You'll have the right footing you need to start building applications that feature WebAssembly.
- Have the vision to identify the web projects that may take advantage of C++ modules / libraries.
- Intermediate / Professional skills of WebAssembly
- Dark places / pitfalls of C++ WebAssembly development
---

Nipun Jindal

Nipun Jindal is a Senior Computer Scientist working at Adobe Systems. He has previously worked on multiple cross platform compatible desktop and mobile application like Flash, Adobe Photoshop, Adobe Capture, Adobe XD, developing his skill for cross platform development and eye for fast pace systems. His current set of responsibilities include moving the charter of fonts recommendation and fonts collaboration across different Adobe Creative Products. He is majorly interested in creating scalable systems with high performance. LinkedIn - https://www.linkedin.com/in/jindalnipun/

Pranay Kumar

Pranay Kumar is a Computer Scientist working in Adobe India with a passion for C++ development. He has been currently working towards utilizing the capabilities of emerging Adobe Fonts experience within the Adobe products. In the past several years with Adobe, he has contributed to the new licensing hybrid stack which is currently being used across the new version of Adobe Creative Cloud products such as Photoshop, Illustrator & InDesign, etc. His major interests lie in enabling the full potential of Adobe Fonts for consumers with modern C++ usage to ensure more secure, reliable & performant applications. Blog - https://medium.com/pranayaggarwal25 Website - http://pranayaggarwal.github.io/
__

Videos Streamed, Edited, and YouTube Channel Managed by Digital Medium: http://online.digital-medium.co.uk

#cppcon #programming #webassembly

Filed under: UncategorizedTagged with: , , , , ,

Refresher on Containers, Algorithms and Performance in C++ – Vladimir Vishnevskii – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

Refresher on Containers, Algorithms and Performance in C++ - Vladimir Vishnevskii - CppCon 2022
https://github.com/CppCon/CppCon2022

Standard C++ library and third-party frameworks offer a rich selection of containers with diverse functionality covering numerous use cases. Performance of those containers is defined not only by the complexity of algorithms in structures used to store and access data but significantly affected by underlying memory layout and allocation patterns. Understanding of these details is crucial for finding proper data handling design. More so, the introduction of the parallel execution policy encourages us to reconsider the abilities of some algorithms and containers.

In the talk, the topic of C++ container efficiency will be revisited and considerations on applicable usage patterns will be presented. The presentation will start with a brief outline of essential characteristics of algorithms and data structures and then will shift to the overview of practical performance of STL and third-party containers in typical scenarios and under various conditions. Situations where non-standard substitutions and extensions have advantages over standard containers will be highlighted and scenarios where a combination of various types of containers and external algorithms can effectively complement each other to increase overall performance will be analyzed.
---

Vladimir Vishnevskii

Vladimir is a software engineer with more than 17 years of experience applying C++ for development of complex software in areas like distributed systems and networking with focus on performance and reliability. Before his recent switch to Intel he was for more than 6 years part of the effort to bring modern C++ into automotive embedded software development.
__

Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk

#cppcon #programming #containers

Filed under: UncategorizedTagged with: , , , , ,

C++ MythBusters – by Victor Ciura – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

C++ MythBusters - Victor Ciura - CppCon 2022
https://github.com/CppCon/CppCon2022

The C++ community is very large and quite vocal when it comes to controversial issues.
We’re very fragmented on many topics, based on the breadth of the C++ ecosystem and the background/experience we each bring from our C++ niche.
From CppCoreGuidelines to opinionated best practices to established idioms, there’s a lot of good information easily available. Mixed up with all of this there are also plenty of myths. Some myths stem from obsolete information, some from bad teaching materials.
In this presentation, I will dissect a few of the most popular C++ myths to a level of detail not possible on Twitter… and without the stigma of newb/duplicate/eyeroll one might experience when asking these questions on StackOverflow.
Expect the familiar “Busted”, “Plausible”, or “Confirmed” verdicts on each myth and come prepared to chat about these.
---

Victor Ciura

Victor Ciura is a senior software engineer on the Visual C++ team, helping to improve the tools he’s been using for years. Before joining Microsoft, he programmed C++ professionally for 20 years, designing and implementing several core components & libraries of Advanced Installer, improving the virtualization and repackaging technologies for MSI/MSIX.

One of his hobbies is tidying-up and modernizing aging codebases and has been known to build open-source tools that help this process: Clang Power Tools.

He’s a regular guest at Computer Science Department of his Alma Mater, University of Craiova, where he gives student lectures & workshops on using modern C++, STL, algorithms and optimization techniques.

More details: @ciura_victor & https://ciura.ro & linkedin.com/victor-ciura
__

Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , ,

Back to Basics: C++ Testing – by Amir Kirsh – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

Back to Basics: Unit Testing in C++ - Amir Kirsh - CppCon 2022
https://github.com/CppCon/CppCon2022

Proper developer testing is one of the most important steps in software development, and yet sometimes tend to be neglected, especially in C++.
In this session we will talk about unit testing in C++, based on Google Test examples. We may cover also other testing frameworks, if time permits.

We would start with the first steps of creating automated unit tests and continue to complex scenarios that require using mocks. We would discuss the TDD approach as well as other unit testing best practices.

This session is part of the Back to Basics track and is aimed for C++ developers who do not use a proper testing framework today. More experienced developers are of course welcomed to join and enrich the discussion with their knowledge and experience.
---

Amir Kirsh

C++ lecturer at the Academic College of Tel-Aviv-Yaffo and Dev Advocate at Incredibuild. Previously the Chief Programmer at Comverse. Co-organizer of Core C++ conference and a member of the Israeli ISO C++ NB. Currently a visiting researcher at Stony Brook University, New-York.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon #programming #softwaredevelopment

Filed under: UncategorizedTagged with: , , , , , ,

Undefined Behavior in the STL – by Sandor Dargo – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

Undefined Behaviour in the STL - Sandor Dargo - CppCon 2022
https://github.com/CppCon/CppCon2022

In this talk, I will briefly remind you what undefined behavior is and what dangers it can bring to our software - to our products. Then I'll demonstrate that the undefined behaviour is there even in the standard library, in containers, in algorithms. Moreover, I will explain that such behavior was introduced with care and purpose. We will go through some more interesting cases and we will also see how we can protect ourselves.
---

Sandor Dargo

Sandor is a passionate software craftsman focusing on reducing the maintenance costs by developing, applying and enforcing clean code standards. His other core activity is knowledge sharing both oral and written, within and outside of his employer. When not reading or writing, he spends most of his free time with his two children and his wife baking at home or travelling to new places.
__

Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk

#cppcon #programming #stl

Filed under: UncategorizedTagged with: , , ,

Understanding C++ Coroutines by Example: Generators (Part 1 of 2) – Pavel Novikov – CppCon 2022

  • Lobby
  • Tag Archives: programming

https://cppcon.org/
---

Understanding C++ Coroutines by Example: Generators (Part 1 of 2) - Pavel Novikov - CppCon 2022
https://github.com/CppCon/CppCon2022

Coroutines are a powerful tool added to C++20. There are no out-of-the-box facilities in the standard library that are user friendly and immediately usable, although there are plenty of libraries out there already providing such primitives.

Also there are now best practices regarding usage of coroutines in C++ that emerged while people were learning them, and that programmers should know about.

This time we will concentrate on the generators part of the coroutines.
We'll get up to speed with how coroutines work under the hood, and then learn about the co_yield keyword, and how simple generators and asynchronous generators conceptually work.

Note: this session is part 1 of a series of talks. They cover separate aspects of coroutines and are designed to be mostly independent. You can watch part 2 here: https://youtu.be/lz3F036_OvU
---

Pavel Novikov

Got an engineering degree in missilery from BMSTU (Moscow).

Loves C++ and knows how to cook it.

Likes metaprogramming, multithreading and asynchronous programming, coroutine adoption enthusiast.
__

Videos Streamed, Edited, and YouTube Channel Managed by Digital Medium: http://online.digital-medium.co.uk

#cppcon #programming #coroutines

Filed under: UncategorizedTagged with: , , , , , , , ,