Today Sylabs announced that Singularity 3.1.0 is now generally available. With this release, Singularity is fully compliant with standards established by the Open Containers Initiative (OCI), and benefits from enhanced management of cached images. Open source based Singularity continues to systematically incorporate code-level changes specific to the Darwin operating environment, as it progresses towards support for macOS platforms. These, and numerous other features of this latest release, remain the target of significantly expanded Continuous Integration (CI) unit and end-to-end testing.
OCI Standards Compliance and Cache Management
The introduction of an OCI compliant runtime for Singularity comprises the most-significant contribution of the version 3.1.0 release. Directly from Singularity, a new command group allows users to execute typical OCI workflows – from creating an isolated container (via Linux Control Groups) with an OCI bundle, to all phases of runtime execution and eventual dismantling of the environment. By encapsulating support for the OCI runtime in the native format for Singularity containers, mounted Singularity Image Format (SIF) files can provide the file system bundles and metadata required to bootstrap, use, and manage an OCI compliant runtime instantiation. Because Singularity’s support for a fully compliant OCI runtime is made explicit through successful performance on a suite of validation tests, users can rest assured that they have adopted a standards-compliant container runtime offering. As a compelling proof point, support for the OCI runtime in Singularity results immediately in the introduction of a native integration with Kubernetes through the existing OCI Container Runtime Interface (CRI).
By encapsulating support for the OCI runtime in the native format for Singularity containers, mounted Singularity Image Format (SIF) files can provide the file system bundles and metadata required to bootstrap, use, and manage an OCI compliant runtime instantiation.
Support for an OCI compliant runtime in Singularity complements existing support for the OCI image specification that was introduced in the previous major version of the software. Taken together, Singularity now delivers full compliance with the existing OCI standards for container images and runtimes. That SIF so effectively and efficiently encapsulates the OCI runtime not only validates the extensibility and utility of the format, it also amplifies the significant strategic investment Sylabs made in its relatively recent development.
Singularity now delivers full compliance with the existing OCI standards for container images and runtimes.
Singularity caches OCI format images (including Docker format) locally for potential reuse. This cache is compliant with the OCI image layout specification – in fact, it can be used directly to bootstrap the creation of images for use by Singularity. Alongside data and metadata cached for use in SIF images, cache management emerged as a pressing requirement that is also addressed in this release. The new cache command group permits inspection and management of all cached files at a highly granular level.
Anticipating macOS Support
The expectation of desktop support is concretely anticipated at the code level in this latest release, as Singularity’s command line interface is clearly and systematically taking the Darwin operating environment into account. In fact, with little more than the software development environment provided by the Go programming language, it is now possible to build a native port of Singularity for the macOS platform. Though the anticipated alpha preview will have some inherent limitations, it will ultimately allow users to design, build, test, and sign/verify Linux-based Singularity containers on macOS.
Singularity’s command line interface is clearly and systematically taking the Darwin operating environment into account.
Enhanced Product Quality
Working in lockstep with members of the Singularity user, developer, and provider community, Sylabs is committed to ensuring the utmost in software quality in a completely transparent fashion. Although there is no substitute for the fully engaged efforts of this community, Sylabs has also taken steps to automate the quality assurance process through significantly expanded Continuous Integration (CI) unit and end-to-end testing.
The Singularity core was reimplemented through a combination of Go and C as of version 3.0.0 of the software. Although the version 3.1.0 release demonstrates that this strategic investment is already proving to be of significant value, the resulting CGO codebase presents a challenge to the broader community from a QA perspective. As testing complex CGO projects like Singularity continues to evolve, Sylabs is well placed at the forefront of this pressing requirement, and is already enumerating lessons learned and best practices within this developing testing field.
As testing complex CGO projects like Singularity continues to evolve, Sylabs is well placed at the forefront of this pressing requirement, and is already enumerating lessons learned and best practices within this developing testing field.
Improved support for The Scientific Filesystem, together with container bootstrap agents for “zypper” and just about anything (via the “scratch” agent), rounds out this version 3.1.0 release of Singularity.
As a major release of the software, Singularity 3.1.0 is the collective outcome of Sylabs alongside the Singularity user, developer, and provider community. By emphasizing integration over isolation, Singularity ensures reproducible results through a performant, mobile, and secure runtime for those with the most demanding compute driven workloads and workflows. Singularity 3.1.0 is now generally available from the project’s site on GitHub, and contributions of any kind are welcomed by becoming involved in the community.