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.
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.
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.
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.
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.
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.
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:
Runtime Contracts in the library and the language
Erroneous behavior replacing undefined behavior
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.
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.