Skip to main content

2 posts tagged with "operating systems"

View All Tags

Toolchain Evolution: Designing and Operating a Native Build System Over Many Years

· 11 min read
Christopher McArthur
C++ DevOps Expert

In the DevOps playground of software development, designing and maintaining a native build automation process for a complex product over many years presents unique challenges. One topic which often gets over looked by product planning is upgrading compilers. The gritty work for ensuring the product maintains supported for existing platforms while offering access to new tools to developers to be innovative for a competitive edge.

Planning for this change is Toolchain Evolution.

Either maintaining old toolchains as new platforms arrive or a backport of toolchain on to an older platforms or any combination would satisfy the definitions.

There are two main forces driving teams to upgrade their toolchains, the first being security and the second also being security. The first is product security or "code safety", every year compilers and sanitizers are improving and offer new features that when utilized can detect buffer-overflow or free-after-use and prevent many vulnerabilities which are discovered. The second, less talked about, is corporate IT Security or "software supply chain security" where with native toolchains might be obsolete and pose a greater burden to maintain development.

Regardless which of these factors is motivating you, this post will explore the strategic considerations and operational challenges of managing a native build system for long-term success leveraging the concept of Toolchain Evolution during a product's lifecycle to help address both security needs.

Building Securely and Efficiently: A Modern Approach to Native Build Processes

· 8 min read
Christopher McArthur
C++ DevOps Expert

The software development landscape is a nebulous. On one front, developers strive to craft innovative features at breakneck speed before requirements change. On another, security threats loom, constantly evolving to exploit vulnerabilities. In this environment, a robust and secure build process is no longer a luxury, it's a necessity as software supply chain attacks become more sophisticated.

This guide introduces the high-level designing a native C or C++ build process that prioritizes both speed and security.

Distributing the Build Work

Imagine a factory with multiple assembly lines, each focused on a specific part of the product. This parallel approach increases efficiency and speeds up production. Similarly, in a build process, distributing work of various modules across multiple machines creates parallel build pipelines, leading to faster builds and improved scalability. This can be achieved through various means: