Amar Mahmutbegovic
Managing Software Components with Conan Package Manager
Status: Coming up in April 2025!C and C++ based firmware projects are often managed as monorepos—a single repository with all software components in one place, usually including third-party libraries to keep them in a desired state.
Conan is a package manager for C and C++ that allows us to handle dependencies through Conan recipes. Using Conan, we can download recipes and install them in the Conan cache, allowing other software components to use them. For each recipe, we can specify dependencies and their exact versions.
Conan works well with build systems such as CMake. We can build projects using Conan profiles, which allow us to specify all build options for CMake, making the build process a more seamless experience.
This talk will help embedded developers better understand the modern approach to package management using Conan. It will cover the following topics:
- Conan-based project basics,
- Conan cache,
- Conan profiles,
- Creating Conan packages.
Modern C++ in Embedded Development: Expressive Compile-Time Computation
Status: Available NowC++11 made a significant impact on C++, bringing in features such as auto, lambdas, and constexpr. These features modernized language, making it more expressive.
This talk guides embedded developers who dominantly use C for their daily tasks through compile-time evaluation of functions and expressions in C++. It demonstrates language capabilities to generate lookup tables and mathematical signals in compile time while providing expressive abstractions similar to Matlab.
The talk will help embedded developers to better understand modern C++ capabilities, and it will cover the following topics:
- Constexpr variables,
- Constexpr functions,
- Operator overloading,
- Lambdas,
- Templates,
- Abbreviated function template.
The talk aims to demonstrate C++’s compile-time computation capability through a practical example while gradually guiding the audience through the language features needed to build the example.
Live Q&A - Modern C++ in Embedded Development: Expressive Compile-Time Computation
Status: Available NowLive Q&A with Amar Mahmutbegovic for the talk titled Modern C++ in Embedded Development: Expressive Compile-Time Computation
Modern C++ in Embedded Development
Status: Available NowModern C++ in Embedded Development: Compile-Time Observer Pattern
Despite C remaining the dominant language in embedded development, accounting for up to 65% of embedded projects, the adoption of C++ has grown steadily. With an estimated usage of 20% - 30% in the embedded development field, C++ offers classes, improved type safety, and quality of life features such as range-based for loops, the auto keyword, and lambdas.
Modern C++ provides a range of features that enhance the expressiveness and flexibility of codebases in embedded development while maintaining low binary size and memory usage. This session aims to dispel common misconceptions about C++, such as increased binary size and slow runtime performance, through an example implementation of the observer pattern. Attendees will gain insight into the simple yet effective application of Modern C++ for solving common problems in the embedded domain.
Topics covered in this talk will include:
- Debunking embedded developers' misconceptions about C++
- Modern C++ quality of life features: auto, lambdas, and constexpr
- An introduction to templates and fold expressions
- Implementing a compile-time observer pattern in C++