Julia is a high-level programming language for numerical and scientific computing. Julia provides the ease of use of Python and R, with the performance of C. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. Julia’s package manager currently includes over 1,600 community package contributions, in addition to being able to call libraries from Python, R, C, and Fortran. Julia is also well integrated into the Jupyter notebook UI, which is widely used for teaching.
Julia uses the LLVM compiler infrastructure to generate optimized native code on Arm. The current version of Julia is v0.6.2 of December 13, 2017, with binaries available for 32-bit and 64-bit Arm. A 0.7 development version is also available.
guix is the GNU package manager. In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. Guix uses low-level mechanisms from the Nix package manager, except that packages are defined as native Guile modules, using extensions to the Scheme language. GuixSD offers a declarative approach to operating system configuration management, and is highly customizable and hackable.
guix is now building aarch64 (arm64) binaries, after a donation of a Softiron 1000 build system from Richard Henwood at Arm Holdings. They write:
Until now though, the project’s official build farms were not building aarch64 binaries. Consequently, Guix on aarch64 would build everything from source. We are glad that this is about to be fixed. We will need to expand our build capacity for this architecture and for ARMv7 as well, and you too can help!
Linuxkit is a toolkit for building secure, portable and lean operating systems for containers. It is used by and is part of the Docker project.
The Linuxkit 0.2 release is out as of January 25, 2018. It includes arm64 binaries, and is based on Alpine 3.7.
Træfɪk (traefik) is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. It supports several backends (Docker, Swarm, Mesos/Marathon, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) to manage its configuration automatically and dynamically.
Træfik can listen to your service registry/orchestrator API, and knows each time a microservice is added, removed, killed or upgraded, and can generate its configuration automatically. Routes to your services will be created instantly.
Version 1.5 of Traefik was released on January 24, 2018. It includes support for changes at Let’s Encrypt, as well as new support for dynamic TLS configurations and rate limiting. Traefik provides arm64 binaries as well as a multi-architecture container image.
The forthcoming Docker release for Feburary 2018, Docker 18.02-ce, will include support for a new
docker manifestcommand for building and manipulating multi-architecture images. Multi-arch or “fat” manifests use a single configuration to point to supported images on multiple computing architectures, and allow simplified naming and support for running containers.
18.02-ce will also add packaging for Fedora 26, Fedora 27, and Centos 7 on aarch64, allowing users of those systems a simple installation process.
The WorksOnArm.com web site has a catalog of some of the highlights of software that works on Arm servers. Operating systems, languages, databases, and containerized environments are only part of the collection.
The catalog was recently updated to bring release and project descriptions up to date and to add several new versions of popular systems. Please contact this newsletter if your software would like to be featured in a future edition.