Nov 4, 2024

Note

Thanks to everyone who attended (and participated) in the BDE Expo for 2024. We hope the discussions were interesting, informative, and maybe even entertaining. The videos and slides from the presentations are linked below.

Thanks again! The BDE Team

Note

One last piece of business: we encourage you weigh in on BDE’s feature prioritization effort!

Please watch the presentation of possible BDE features and then fill out the Feature Prioritization Survey to indicate those that would most benefit your team.

Open through Friday, Dec 13, 2024.

BDE Expo, December 3-6, 2024

We’re excited to invite you to the second BDE Expo, Dec 3-6, 2024.

The BDE Expo is a multi-day event featuring presentations by the BDE team. These presentations will describe the direction of future BDE development, give insights into our work on the C++ standard, and provide forum to hear your feedback and questions about BDE. We plan to highlight interesting technical areas and engineering solutions that we hope are valuable to the C++ community at Bloomberg.

The sessions will be held at 919 3rd Ave, room 16-7, with remote access provided via Zoom. If you can, please join us in person!

You can find all the courses on BU

BDE: Past, Present, and Future

This presentation will survey the history of BDE, highlight new features, and then discuss BDE’s plans for the future. Afterwards, we will have an Ask-Me-Anything session with BDE leadership, Mike Verschell, John Lakos, Rostislav Khlebnikov, Nathan Roy, and Joshua Berne.

Time: Tue, Dec 3, 2024, 10:00 AM - 11:00 AM EST
Presenter: Henry Verschell, et al.

BSLS_REVIEW: Mitigating Hyrum’s Law

When you find clients are using your C++ library in a way that you don’t intend to support, it’s easy to feel stuck. You cannot safely change the behavior or add assert statements because that might introduce failures to production applications. Logged messages are simply ignored. How do we get our existing clients, who we may not know, to start using our library as we intend? Enter BSLS_REVIEW! More than just a macro, BSLS_REVIEW is being enhanced to integrate with Bloomberg’s runtime infrastructure and familiar work management tools – like {CDC<GO>} – to empower library owners to locate incorrect uses of their library, and methodically work together with library clients to eliminate bugs in production software.

Time: Tue, Dec 3, 2024, 11:30 AM - 12:00 PM EST
Presenter: Jake Fevold

A Modern Way to Format Text in C++

Say Goodbye to printf and iostreams!

For many years Python’s str.format facility has been well regarded in terms of both ease of use and flexibility. It has inspired a number of formatter libraries in other languages including C++, in the form of the fmt library, which evolved into the C++20 feature std::format. std::format is easier and safer to use than printf and iostreams, and is incredibly customizable for your own types. BDE will soon release bsl::format, which is a fully allocator-aware version of std::format that is standard conforming for C++20, and provides a wide subset of standard behavior on Sun.

In this talk, we will show you how to use bsl::format, demonstrate some advantages and disadvantages compared to printf and iostreams, illustrate how to create custom formatters for your own types with full cross-platform support, and highlights any differences between bsl::format and the Standard.

Time: Wed, Dec 4, 2024, 10:00 AM - 11:00 AM EST
Presenter: Mungo Gill

An Introduction to the Codevis Visualization Tool: Unraveling Complex Codebases

In this talk, we will delve into Codevis, a tool designed to simplify the task of understanding and maintaining large C++ codebases. Sponsored by Bloomberg and developed by Codethink in conjunction with BDE, Codevis provides a unique graphical representation of source code and its dependencies, enabling developers to visualize and understand their code more effectively.

We will explore how Codevis, inspired by John Lakos’s ideas in “Large Scale C++”, displays logical and physical entities, thereby transforming the way we perceive and interact with complex codebases.

The highlight of the talk will be a live demonstration of Codevis applied to a Bloomberg codebase. This will provide a practical, real-world example of how Codevis can be used to debug code and review others’ work, making it an invaluable tool for any developer working with large-scale projects.

Time: Wed, Dec 4, 2024, 11:30 AM - 12:30 PM EST
Presenter: Harold Bott

Evolving BDE Coding Standards to Modern C++

Many believe that BDE Coding Standards were set in stone many years ago, never to be changed. In reality, they evolve over time to reflect changes in how C++ developed both inside and outside of Bloomberg. In this talk, we will cover some of the most recent changes to our Coding Standards, such as handling of the hidden friends idiom and a new documentation style that modern tools can understand. We will explore the rationale for making these changes and how they might be useful to you, even if you follow alternative coding conventions.

Time: Wed, Dec 4, 2024, 12:30 PM - 01:00 PM EST
Presenter: Oleg Subbotin

A Task type: Understanding how to control coroutines, by example

C++ coroutines are a remarkably flexible and powerful tool for writing functions whose execution does not follow the usual, completely sequential, model. While there are many cursory explanations for how to use coroutines, there are few detailed explanations for how almost every aspect of a coroutine’s behavior is controlled by its choice of return type. In this talk, we will introduce Task, a coroutine return type that will be included in a new BDE library focused on asynchronous execution. Task will allow users to easily write coroutines that produce a single (or void) result asynchronously. As we go through various uses of Task, we will explain how it makes use of the many aspects of C++ coroutines to enable expressive and scalable asynchronous programming.

Time: Thu, Dec 5, 2024, 10:00 AM - 11:00 AM EST
Presenter: Brian Bi

What does C++ need to be safe?

Bloomberg has invested billions of dollars creating a software infrastructure that depends heavily on C++. Word on the street is that C++ is dead, and that code should be written in Rust because it is perceived to be safer. Driving that perception is the large amount of correctness and security issues caused by undefined behavior (e.g., dereferencing bad pointers, index out of bound errors, etc.).

This talk presents Bloomberg’s new C++ Safety, Health, and Efficiency initiative that is being led by John Lakos (CTO). This effort aims to address, in the C++ standard, both real and perceived safety concerns within the language.

We will discuss three primary threads of this effort:

  1. Runtime Contracts in the library and the language

  2. Erroneous behavior replacing undefined behavior

  3. Compile-time lifetime and data-race safety

And how these three threads interact and complement each other to improve the safety of our existing and future C++ Software-Capital investment.

Time: Thu, Dec 5, 2024, 11:30 AM - 12:30 PM EST
Presenter: John Lakos

Get Involved: Help BDE Prioritize Features

In this experimental session, we will present a series of potential features to add to the BDE libraries that have been submitted by both BDE and our users. Then, we will ask the audience to help us prioritize those features using online voting. BDE will incorporate the highest priority features into our 2025 roadmap. This session attempts to use the context of an interactive presentation to engage a wide number of users in analyzing the benefit of a set of proposed features.

Time: Fri, Dec 6, 2024, 11:00 AM - 12:00 PM EST
Presenter: Nathan Roy