v0.12.0
Overview
Mutagen v0.12 is a BIG release that improves almost every aspect of Mutagen's internals.
Thank you all for your patience, feedback, and assistance!
More information on Mutagen's upcoming roadmap will come next week in the form of a blog post, but here are the key takeaways for this release:
Compose integration is moving... and improving
Compose support has been the biggest blocker for releasing v0.12. It's been largely successful, but until now Mutagen has had to emulate the Python-based Compose V1 to facilitate this integration, and doing so simply isn't possible with so many versions of Compose V1 out there. Compose V2 has also now entered the picture and simply isn't compatible with Mutagen's existing Compose wrapper, so...
-
In order to get v0.12 shipped, the existing Compose support has been bumped to the (immediately available) v0.13.0-beta1 release. If you're already using the beta channel releases, you'll be bumped from v0.12.0-beta8 to v0.13.0-beta1, and Compose support will still be available. Nothing else has changed between these releases.
-
v0.13 (in its final release form) will also ship without Compose, because Compose support is going to move into a separate project that can evolve more rapidly outside of the Mutagen release cycles.
-
The new Mutagen Compose will be based on Compose V2, which is significantly faster and easier to integrate (since it's written in Go), and Compose V1 support will end with the end of the v0.13 beta releases.
Synchronization behavior and testing is vastly improved
Mutagen's synchronization logic has been entirely rewritten with better support for synchronizing around conflicts and problematic or inaccessible content. The core logic is the same, but cases that previously generated conflicts or issues are now handled automatically if possible. This rewrite also allowed for vastly expanded testing of Mutagen's core reconciliation algorithm (which fortunately identified only one edge case that needed correction in the existing behavior).
This new code has been shipping with the v0.12 beta series since April, so there shouldn't be any surprises.
Forwarding's internals are significantly more robust
Mutagen's forwarding sessions use a stream multiplexer to forward data. Mutagen v0.12 switches this multiplexer from Yamux to a new custom implementation. There aren't any user-visible changes to functionality or performance here, but the new implementation should be more robust and extensible.
Tunnels are gone
If you're asking yourself "what are Mutagen tunnels?", then don't worry... Tunnels were an experiment for using Mutagen with containers, but they weren't great due to their complex ergonomics, and Compose integration is the better solution for most use cases. They will be missed (but really they won't :-)).
Other changes
This release also includes the following notable changes from v0.11.8:
- Added support for Apple Silicon
- Added code signing and notarization for macOS binaries
- Switched to GitHub Actions for builds
- Add GPG-signed SHA256 digests for all build products
- Updated to Go 1.17
- Switched to the new Go Protocol Buffers implementation
- Fixed assorted minor bugs
- Simplified internal daemon APIs