Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Arm Research
    • DesignStart
    • Education Hub
    • Innovation
    • Open Source Software and Platforms
  • Forums
    • AI and ML forum
    • Architectures and Processors forum
    • Arm Development Platforms forum
    • Arm Development Studio forum
    • Arm Virtual Hardware forum
    • Automotive forum
    • Compilers and Libraries forum
    • Graphics, Gaming, and VR forum
    • High Performance Computing (HPC) forum
    • Infrastructure Solutions forum
    • Internet of Things (IoT) forum
    • Keil forum
    • Morello Forum
    • Operating Systems forum
    • SoC Design and Simulation forum
    • 中文社区论区
  • Blogs
    • AI and ML blog
    • Announcements
    • Architectures and Processors blog
    • Automotive blog
    • Graphics, Gaming, and VR blog
    • High Performance Computing (HPC) blog
    • Infrastructure Solutions blog
    • Innovation blog
    • Internet of Things (IoT) blog
    • Mobile blog
    • Operating Systems blog
    • Research Articles
    • SoC Design and Simulation blog
    • Smart Homes
    • Tools, Software and IDEs blog
    • Works on Arm blog
    • 中文社区博客
  • Support
    • Open a support case
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
Arm Community blogs
Arm Community blogs
Tools, Software and IDEs blog Build it and they will run
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI and ML blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded blog

  • Graphics, Gaming, and VR blog

  • High Performance Computing (HPC) blog

  • Infrastructure Solutions blog

  • Internet of Things (IoT) blog

  • Operating Systems blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tags
  • Works On Arm
  • Equinix
  • infrastructure
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Build it and they will run

Ed Vielmetti
Ed Vielmetti
May 21, 2021

Originally posted by Ed Vielmetti on October 7 2019

There is no doubt about it: the modern software ecosystem is transformed by the cloud. The availability of “infinitely scalable” infrastructure at a modest marginal cost has created an entirely new way of building, testing, deploying, and managing software. Fast build systems and test-driven development make it possible for distributed teams to build, test, maintain, and operate highly available distributed systems.

Look at the recent battery ventures prediction around software growth, it assumes a 5% CAGR. And, you can see that software (and the estimated 25 million developers who touch software as part of their job) is most definitely eating the world.

The journey to Arm

All software runs on infrastructure. That infrastructure is ever more specialized and diverse. Since “built in the cloud” software is taking over, it makes sense that we are seeing a modern developer experience drive adoption for architectures like Arm. While it may be hard to see in the thousands of variants of cloud computing droplets, instances, or machines, start shipping software beyond the datacenter you will see what I mean. From mobile phones and laptops to cars and drones, once you go everywhere you start to touch a lot of Arm. 

This has been an early main driver of Arm adoption in the datacenter. Simply put, developers do not want to do anything special to ship their software for a range of infrastructure.

Everything depends on build systems

It is not enough that software works once. Long-term adoption requires attention to stability, which means repeatability and robust testing. You cannot jump to “at scale” usage without a solid foundation, no matter what the end devices may look like.

This is why build (or CI/CD) systems are the keystone of modern software development workflow. They provide:

  • Rapid feedback on change requests
  • Reproducible builds
  • Faithful tests that reflect real world conditions
  • Risk management for dependencies
  • Time-efficient builds of complex systems
  • Cost-efficient build infrastructure
  • Manageable complexity

Build systems are complex

Build systems are often highly complex and opinionated in their own right, and rarely all that well understood by those who depend on them. This is a primary source of issues when trying to build software for new platforms or architectures.

Take as an example Bazel, a build system from Google that is used to build TensorFlow and adopted by companies from Asana and Dropbox to Braintree. Bazel, which is written in Java, is actually built with itself. Some Java pieces are built with Bazel.

And yet, Bazel is not yet fully and completely ported to arm64, which makes things a bit tough if you are a developer or company shipping software for a multi-architecture world.

Aside from complexity, other challenges include:

  • Lack of native support in hosted build systems
  • Shortage of high-powered cores in high-memory machines
  • Imperfect emulation in QEMU
  • Poor understanding of the depths of dependency chains
  • Complexity of cluster build environments
  • Ubiquity of x86-first, x86-only design thinking in cloud environments

These can all be overcome with diligence and effort. Once you get the flywheel spun up to power the software ecosystem, they are relentlessly powerful.

Build it and they will come

A key part of our efforts at Works on Arm over the past year has been to enable the foundational bits of the ecosystem: languages and build systems. Last November at Packet’s IFX event in Las Vegas, we jointly announced a service with Drone (https://cloud.drone.io) which provides free builds for open source projects, including on Arm (32-bit and 64-bit). A few months later, Shippable announced support.

Today we are pleased to announce that TravisCI has expanded its support to include Arm64. This feature rolls out first for open-source projects (sponsored jointly by Arm, Packet and Travis), utilizing c2.large.arm servers from Ampere hosted at Packet. The first project built like a charm: OpenSSL.

What made the work especially interesting to watch is TravisCI’s use of LXD. Next up: production rollout for commercial projects.

The squeaky wheel gets the grease

Ecosystems are made up of people, and nearly everyone is good at making a bit of noise when needed. In order for the flywheel to really get going for Arm support in build systems, you should make your needs known.

Excellent Arm servers are available from Marvell and Ampere, as well as on AWS with Graviton. With this, there is no absolute requirement for you to handle the ongoing care and feeding that extra cluster of Raspberry Pi’s for the occasional build on your project. Instead, hook your software system up to one of the several continuous integration tools that are powered by fast Arm64 build servers, and test every release (or even every commit) promptly and effectively.

Anonymous
Tools, Software and IDEs blog
  • Arm Compiler for Linux: what is new in the 22.0 release?

    Ashok Bhat
    Ashok Bhat
    Arm Compiler for Linux 22.0 is now available with performance improvements and support for new hardware like AWS Graviton 3.
    • May 27, 2022
  • Cloud infrastructure for continuous integration tests

    Christopher Seidl
    Christopher Seidl
    This blog introduces a cloud-based continuous integration (CI) workflow for embedded projects that uses model-based simulation.
    • May 24, 2022
  • New performance features and improvements in GCC 12

    Tamar Christina
    Tamar Christina
    Read about the new architecture and performance feature in GCC 12 for the Arm CPUs. From vectorization to instructions to optimize memory operations.
    • May 10, 2022