32-bit Linux Julia builds are now available on Travis CI

Another installment in the saga of cross-platform CI! Just like for Windows, Julia Linux jobs on Travis CI can now use arch: x86 to test with a 32-bit (i686) build of Julia.

Users of Appveyor.jl are likely already familiar with testing both 32- and 64-bit Julia builds on Windows using the x86 and x64 platform specifications. Previously this was only convenient way to test Julia packages on a 32-bit Julia build, and Appveyor.jl is only set up for Windows jobs.

You may be asking yourself, “Why should I care about 32-bit systems?” Ensuring your code works on 32-bit systems (assuming it’s designed to be) betters the experience for users who run 32-bit systems, but it also helps catch memory issues and implicit assumptions about the underlying system. For complex software this can be especially worthwhile.

Unfortunately, Travis does not currently use arch as an array for generating a build matrix, which means that testing with multiple architectures is a bit verbose. For example,

matrix:
  include:
    - os: linux
      arch: x64
      julia: 1.0
    - os: linux
      arch: x86
      julia: 1.0

See this comment on the Windows post for more discussion on this. Hopefully this will be simplified in the future.

A special thanks to Hiro Asari (BanzaiMan) from Travis for working with us on this.

Enjoy your build!

10 Likes

Just being curious, are there still 32-bit i686 systems in production use? AFAIK the last one was manufactured more than a decade ago.

Some raspberry pis are 32 bit… (I know nothing about hardware architecture, I just remember a bunch of code I’d written with Float64 failed when I tried to run it on my pi)

But they aren’t i686.

Hence my disclaimer :joy:. I don’t have any sense of why that matters (not asking you to explain, was just assuming this was for testing platform-agnostic 32 bit code)

Depends on one’s definition of system, but e.g. the Quark series of micro-controllers from Intel use an x86 CPU and are still being manufactured and available to OEMs (though they were recently discontinued on the general market). In terms of normal PC-based systems though, it’s been a while - the Lincroft Atom line released in 2010/2011 is among the most recent.

2 Likes

I added an issue in PkgTemplate (https://github.com/invenia/PkgTemplates.jl/issues/87), so we add the latest changes to the package creation template.

3 Likes