Skip to content

Tart 2.0.0 and community updates

Today we'd like to share some news and updates around the Tart ecosystem since the Tart 1.0.0 release back in February.

Community Growth

In the last 7 months Tart community almost tripled and growth is continuing to accelerate. Tart just crossed 25,000 installations, dozens of companies that we know of are using Tart in their daily workflows. If your company is not in the list please consider joining!

We are also very pleased by how the community responded to the license change. We now have a number of companies running Tart at scale under the new license. Revenue from the licensing allowed us to allocate time to continue improving Tart which brings us to the section below.

Recent updates and what's changing in Tart 2.0.0

In the last 7 months we've had 12 feature releases that brought a lot of features requested by the community. Here are just a few of them to highlight:

-Custom GitLab Runner Executor. -Cluster Management via Orchard. -Numerous compatibility improvements for all kinds of OCI-registries. -Sonoma Support (see details below).

But one of the most requested features/complaints was around pulling huge Tart images from remote OCI-compatible registries. With an ideal network conditions tart pull worked pretty good but in case of any network issues it was required to restart the pull from scratch. Additionally, some registries are notably slow streaming a single blob but can stream multiple blobs in parallel. Finally, the initial format of storing Tart VMs was very naive: disk image is compressed via a single stream which is chunked up into blobs that are serially uploaded to a registry. A single compression stream means that Tart can also only decompress blobs serially.

Given these three observations above we came up with an improved format of storing Tart VM disk images. In Tart 2.0.0 disk images are chunked up first and compressed independently into blobs, when pushed, each blob has attached annotations of expected uncompressed size and a checksum. This way when Tart 2.0.0 is pulling an image pushed by Tart 2.0.0 each blob can be pulled, uncompressed and written at the right offset independently. Having checksums along expected uncompressed blob size also allowed to support resumable pulls. Upon a failure Tart 2.0.0 will compare checksums of chunks and will continue pulling only missing blobs.

Overall in our experiments we saw a 10% improvement in compressed size of the images and 4 times faster pulls.

In order to try the new image format please upgrade Tart and try to pull any of the Sonoma images:

brew upgrade cirruslabs/cli/tart
tart pull ghcr.io/cirruslabs/macos-sonoma-base:latest

macOS Sonoma Updates

Tart VMs now can be run in a "suspendable" mode which will enable VM snapshotting instead of the standard shutdown. VMs with an existing snapshot will run from the same state as they got snapshotted. Please check demo down below:

There are two caveats to the "suspendable" mode support:

  1. Both host and guest should be running macOS Sonoma.
  2. Snapshots are locally encrypted and can't be shared between physical hosts. Therefore tart push won't push the corresponding snapshotted state of the VM.

Try the "suspendable" mode for yourself by passing --suspendable flag to a tart run command:

tart clone ghcr.io/cirruslabs/macos-sonoma-base:latest sonoma-base
tart run --suspendable sonoma-base

Conclusion

We are very excited about this major release of Tart. Please give it a try and let us know how it went!

Stay tuned for new updates and announcements! There are a few coming up very shortly...