April 13th, 2023

Even faster builds with Incredibuild 10 and Visual Studio 17.6 Preview 3

Michael Price
Program Manager II

Note: This post was co-authored with Incredibuild’s Director of Product Marketing, Yohai West.

We are pleased to announce that Visual Studio version 17.6 Preview 3 includes Incredibuild’s most advanced developer acceleration platform: Incredibuild 10. This release includes several notable, new features that empower teams to speed up the development process:

  • Patent-pending Build Cache technology allows developers to cache build outputs so that they can be reused by all team members.
  • A smart and flexible enterprise license management mechanism, managed via a new web-based Coordinator user interface.
  • Incredibuild Cloud optimization automatically manages the best mix of on-demand and spot resources, enabling organizations to use smaller and more affordable machines, while maintaining optimal performance and cost.

In this post we’ll detail how these features can improve your daily development.

Build Cache – cache what you can; distribute the rest

Incredibuild 10’s most significant addition is its Build Cache technology. Incredibuild breaks down development processes into smaller tasks that can be executed independently, and Build Cache saves time and resources by reusing the cached outputs for previously executed tasks. Build Cache extends the incremental builds you are already likely familiar with by providing access to the outputs that your entire team has created. This means that an incremental build only has to build your changes and can rely on the cache when you have merged a teammate’s unrelated changes into yours. Additionally, temporarily working on a different branch won’t cause a large build when you switch back to your original branch.

For any task outputs that are not in the cache, the Incredibuild Grid can distribute those tasks across its pool of compute cores. The Incredibuild Grid can allocate a pool of machines to meet the needed capacity for the tasks, including on-premises machines and static and on-demand spot instances provided by Incredibuild Cloud. The machines in the grid don’t need a compiler to be installed or the code to be present, as the Incredibuild Grid takes care of it all. Once those tasks are completed and cached using Build Cache, they never have to be executed again, dramatically reducing build times for your entire team. These features working in tandem means that you can cache what you can; distribute the rest.

Build from home without impacting your speed

Working from home affects build speeds due to limited upstream bandwidth. Build Cache lets you rely more on downstream bandwidth, giving you greater speed and better performance when starting new builds. With Build Cache you can reuse previous build data stored on your local machine to dramatically reduce build times without impacting your bandwidth.

Deployment Examples

Build Cache can be deployed in different ways depending on how your Clients connect to Endpoints. A single Client can function as its own Endpoint (local), multiple Clients can connect to a single Endpoint (shared), and more complex or dynamic deployments are possible as well.

Local Uses the same Initiator Agents to host the Build Cache Endpoint and Build Cache Client. This means that each agent can only benefit from the cache of builds that were previously run on the same machine. This can be ideal if you are not sharing code with other developers, or if you are working from home with limited bandwidth. Relation diagram showing a single Incredibuild Coordinator and 4 Initiator systems, each with their own local cache.
Shared Uses a single Agent to host the Build Cache Endpoint. Multiple Initiator Agents contribute to and benefit from the same build cache. However, only one initiator can edit/write to the cache at any given time. Relation diagram showing a single Incredibuild Coordinator and 2 Initiator systems, both using the same shared cache.
Dynamically Shared Uses more than one Build Cache Endpoint that is used by more than one Client. The Clients define a default Endpoint, but you can override this in the build command to use a different Endpoint as well. This is ideal for CI environments that are running different builds. They can dynamically fetch the context of the build they are running and use the appropriate Endpoint. Relation diagram showing a single Incredibuild Coordinator and 4 Initiator systems, each of them connected to 2 different dynamically shared caches.

 

How Does Build Cache Work?

Builds are often processed in tree-like structures based on the dependencies in your code. The files in the first layer are used to create the files in the second layer, and those files are used to create the files in the next layer, and so on until the final output is produced.

As builds are processed, Incredibuild saves details of the process for future use. Each part of the process that is generated from other files is saved as a pair of input files and output files in the cache. If you run a build after changing some of the files, Build Cache can reuse cached outputs for the same inputs, to prevent parts of the process from running.

You can define if an Agent contributes to the cache or just reads from it in the Agent Settings. However, each Endpoint can only process content from one build at a time. If two builds attempt to write to the same Endpoint at once, only the content from the first build will be added to the cache.

Build Cache Summary

Details of how much time was saved from using the Build Cache is included in the output of your builds. This can be seen in the Build Monitor’s output tab, as well as the output you see in the command line.

A screenshot showing the Incredibuild Build Cache summary. It shows a Build Cache Efficiency of 41% and 23 minutes saved for the 2217 tasks that were cached.

Enabling Build Cache requires an additional license for every Initiator that is using Build Cache. Visit Incredibuild’s description of available plans in order to obtain Build Cache licenses.

Smart licenses managed via the new Coordinator UI

Incredibuild 10’s smart licenses let you be truly efficient with the resources you have. Instead of locking licenses onto devices that don’t always need them, you can allocate cores and initiators to the right place, at the right time. More importantly, you can work in any environment—on-premises, cloud, or hybrid. With Incredibuild 10’s new Coordinator UI, you can also gain better visibility into how your licenses are being used, where there are gaps, and how you can better deploy cores to avoid those gaps.

Screenshot of the Incredibuild Coordinator web UI. You can easily see how many machines are online, how many cores are busy, and the number of builds happening.

Scale to the cloud

Whether you are fully building in the cloud or bursting when needed, Incredibuild Cloud automatically spins up and down the best mix of on-demand and spot instances. With Incredibuild 10 you get more visibility with the Incredibuild Cloud license. Reporting gives you easy access to license consumption, lets you see how many cores are available from your purchase, and get license status updates and predictions all in one place.

User Testimonials

Incredibuild is a crucial part of the development process for many of their users, including many of the leading game development studios and companies delivering software for large enterprises. Game studios can have large codebases for their titles and can have dozens of employees working on different aspects of a title, from game engine developers and networking developers, to level designers and artists. With so many changes constantly going into their products, Incredibuild’s acceleration technologies make a real difference to delivering a project on time and on budget.

Incredibuild absolutely impacts our ability to iterate and move forward. We couldn’t do anything without it.

– Joe Vogt, IT Manager, The Coalition

 

The ability of the Incredibuild Cloud helpers to tear themselves down when they’re not being used helps cuts costs in Azure, and the improved build times and test times significantly improve our developers’ ability to get their work done faster.

– Chad Shaffer, Senior Software Development System Engineer, Minitab

Summary

Long C++  builds are not something you should take as a given. If you do not use any build acceleration tool, we highly recommend that you try Incredibuild, with its direct integration inside Visual Studio, Incredibuild 10 brings with it some major improvements, the most significant being the Build Cache that works together with the distribution engine. The new license model as well as other new features make this version something you should check if you haven’t done so already.

For a full product walkthrough, watch Incredibuild’s CppCon 2022 demo session.

Try it and Talk to Us

We encourage you to download Visual Studio 2022 version 17.6 Preview 3 and try out Incredibuild 10. You can use the Visual Studio Installer to install Incredibuild. Just select any of the following workloads: Desktop development with C++, Mobile development with C++, or Game development with C++. Then check the box for Incredibuild – Build Acceleration in the installation details and complete the installation. There is now a free-forever license for 2 developers (free version does not include a Build Cache license), so it’s super easy to install and to start using it for your projects.

We can be reached via the comments below or via email at visualcpp@microsoft.com. If you encounter other problems with Visual Studio or have other suggestions, you can use the Report a Problem tool in Visual Studio or head over to the Visual Studio Developer Community. Suggestions for or problems with Incredibuild can be sent directly to them. You can also find us on Twitter (@VisualC and @incredibuild).

Author

Michael Price
Program Manager II

5 comments

Discussion is closed. Login to edit/delete existing comments.

  • Nguyen Hoang Trung

    So besides buying the VS license, I need to buy another license for this extension?

  • John Schroedl · Edited

    So is this just an Incredibuild Ad? Care to explain how having this bundled into VS adds any benefit to us C++ devs not willing to put up thousands of additional dollars to use these cloud facilities or additional worker licenses. Seems pretty shameless being pushed in a VC blog?

    • Michael Taylor

      I don't see this as any different than many other blog posts. VS has shipped with third party products for decades and sometimes blog posts talk about them. InstallShield was, in my opinion, the first. The "light" version shipped with VS and you had to pay to get the more full featured version. So I don't personally see a problem with this post.

      To be fair, as cloud tech has become more integrated into development,...

      Read more
    • Michael PriceMicrosoft employee Author

      Hi John,

      This blog post describes the new version of a product that we have shipped as an installable component within the Visual Studio installer for several years now. One of the new features are licensing changes that mean that users can try out Incredibuild without any financial commitment. Users can try it out and see if they find it useful for their purposes. We have this third-party component bundled with Visual Studio because we believe...

      Read more
  • Arp, Matthew

    Thanks for the Advertisement