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:
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:
Tart 1.8.0 brings macOS Sonoma updates! 🍏 Now you can suspend and resume your virtual machines for even faster startup times. Check out the demo below 👇 pic.twitter.com/RoRFT8Nwst
— Cirrus Labs (@cirrus_labs) July 7, 2023
There are two caveats to the "suspendable" mode support:
- Both host and guest should be running macOS Sonoma.
- 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...