Announcing the First Beta Release of Singularity Desktop for macOS

Ian Lumb
Sylabs
Published in
5 min readAug 13, 2019

TL;DR: Singularity Desktop for macOS (Beta 1 Release) allows Linux containers to be designed, built, tested, and signed/verified on macOS; it is available here. This latest release includes an improved installer, support for networking, as well as an update to the Singularity 3.3.0 code base.

At the inaugural meeting of the Singularity User Group (SUG) this past March at SDSC in San Diego, we officially embarked upon an important journey — a journey whose outcome is to ultimately transform that ‘attractive spectator’ (a.k.a. your macOS laptop or desktop) into a bona fide platform for computing. The transformation is being realized through the introduction of Singularity Desktop — software that allows users to design, build, test, and sign/verify Linux-based Singularity containers on macOS. Thus the purpose of this post is to hereby announce the next milestone in this important journey: availability of the first beta release of Singularity Desktop.

The First Beta Release

The first beta release of Singularity Desktop includes a number of enhancements; of these, here we highlight those relating to native packaging and installation for macOS, networking support, and finally an update to the Singularity 3.3.0 code base.

By downloading the DMG file for Singularity Desktop it is clear that the native format for packaging macOS applications has been employed. Using the standard installer for macOS, Singularity Desktop is effortlessly installed in the way common to all macOS apps. Prototyped by Sylabs’ software engineer Adrian Wobito just in time for presentation at SUG, this aspect of the product’s native macOS experience has been subsequently enhanced.

The installation process now accommodates the choice for networking support. At first blush, that there is a choice for Singularity Networking might strike you as peculiar … In hindsight, however, the rationale is straightforward:

  • macOS administrative rights are required during the installation process.
  • Upon startup, the macOS compatibility layer is employed to configure the network stack. Although this configuration requires the use of a suid 0 binary (i.e., the xhyve binary) during startup, these privileges are subsequently dropped. During use then, there is no requirement for privileged interactions to persist.

In tandem with xhyve, SyOS comprises the components of this macOS compatibility layer; additional details are available from the blog post we issued when the product was originally announced during SUG. Implemented by Sylabs’ software engineer Jason Stover, the introduction of networking support in Singularity Desktop required modifications to SyOS, the macOS port of the Singularity core (including the CLI), along with a modified use of xhyve as described above.

macOS-specific nuances were first introduced into the Singularity code base with the version 3.1.0 release. Prior to the official SUG release of Singularity Desktop,

… [and] with little more than the software development environment provided by the Go programming language, it [was] possible to build a native port of Singularity for the macOS platform.

With this first beta release, Singularity Desktop has been updated to the 3.3.0 release of open source Singularity. While feature/functionality parity with the Linux version of the software remains a work-in-progress, this latest update now includes support for:

For additional details on each of these new to Singularity Desktop capabilities please see our blog posts on the 3.2.0 and 3.3.0 releases of Singularity; each of these posts provide links to the respective release notes for those who want to delve deeper into the technical details.

On Our Roadmap

As our track record is making clear, we are working to close the feature/functionality gap with the Linux experience — ultimately ensuring that Singularity Desktop for macOS exceeds your expectations. As we systematically close this gap, you can also expect enhancements to be incorporated into Singularity Desktop from the Singularity core code base — as illustrated above; in other words, to anticipate what you might expect to ‘see’ in Singularity Desktop, it makes sense to follow developments in the Community Edition of Singularity itself.

Finally, and with respect to roadmap considerations, it’s definitely not lost on us that there are many users of the Singularity container runtime who would benefit directly from support for Microsoft Windows. With the recent introduction of Windows Subsystem for Linux 2 (WSL2), the effort involved in developing a compatibility layer appears to have been significantly reduced. In fact, Sylabs’ software engineer David Zech has initiated this investigation. By enabling support for “squashfs” in the kernel provided, David’s preliminary take is that Singularity ‘just works’ via WSL2. (Note: “squashfs” support is required for use of SIF files.)

As we work to package up the WSL2-based offering to include simplified installation and use, we’d love to hear from you — e.g., via the Slack channel devoted to Singularity Desktop.

Next Steps

Singularity Desktop for macOS (Beta 1 Release) allows Linux containers to be designed, built, tested, and signed/verified on macOS; it is available here.

Bonus: Best Practice Tip

After “bash-completion” from Homebrew is added, you can add the following to your “$HOME/.bash_profile” to enable Singularity-specific command line completion available in new shells:

. /usr/local/etc/bash_completion

. /usr/local/etc/bash_completion.d/singularity

--

--