Tart: VMs en macOS usando el Virtualization.Framework nativo de Apple
Los desarrolladores están examinando Tart, una herramienta para macOS que envuelve `Virtualization.framework` de Apple para ejecutar VMs de macOS y Linux y distribuir imágenes mediante registros de contenedores, como una forma simplificada de automatizar CI y entornos de desarrollo en Apple Silicon. Gran parte del debate gira en torno a las compensaciones de rendimiento y arquitectura: virtualización frente a emulación completa para x86 en ARM, el papel de Rosetta 2 para ejecutar binarios Intel dentro de VMs Linux, el rendimiento del sistema de archivos y de Docker en macOS, y hasta qué punto se pueden estirar realmente máquinas de 8 GB. La licencia es otro punto de fricción, con el modelo “Fair Source” no OSS y basado en núcleos de Tart empujando a algunos a preferir alternativas abiertas como UTM, Lima/Colima, VirtualBuddy o configuraciones QEMU personalizadas.
Resumen de Tart y su propuesta
- Herramienta de línea de comandos que envuelve
Virtualization.frameworkde Apple para ejecutar VMs de macOS y Linux en Apple Silicon. - Diferenciador clave: usa registros OCI/de contenedores para imágenes de VM, habilitando flujos de trabajo similares a los de imágenes de contenedor (build, push, pull, reuse).
- Los usuarios elogian la CLI limpia, la facilidad de scripting y las integraciones (plugin de Packer, GitLab/Buildkite, CI).
- Se valora especialmente para entornos de prueba reproducibles de macOS y para pasar rápidamente de IPSW a una VM.
Licencia y modelo de negocio
- Usa una licencia al estilo Fair Source con “seats” por núcleo para organizaciones; el uso personal y las instalaciones pequeñas en servidores son gratuitos hasta un límite de núcleos.
- Algunos ven la licencia como restrictiva/confusa, se preocupan por el cumplimiento en organizaciones y no les gustan los términos no-OSI “tipo BSL”.
- Otros señalan que el
LICENSEy el sitio web son explícitos, y que los usuarios comerciales siempre deberían revisar las condiciones. - Las versiones anteriores eran AGPLv3; esos commits siguen en el repo y pueden reutilizarse o bifurcarse.
Virtualización vs. emulación vs. contenedores
- Largo subhilo debatiendo la terminología:
- Un lado: en el uso actual de la industria, “virtualización” implica ejecutar código invitado directamente en la CPU del host (misma ISA), distinto de la emulación.
- El otro lado: históricamente, la emulación es una técnica dentro de la virtualización; las categorías se solapan y el marketing ha distorsionado los términos.
- Acuerdo general en que los contenedores son distintos (aislamiento a nivel de SO, kernel compartido), aunque algunos señalan que las pilas modernas de contenedores usan virtualización por debajo.
x86_64 en Apple Silicon y Rosetta
- Varias explicaciones de que los invitados completos de SO x86 requieren emulación; la traducción binaria al estilo Rosetta solo es adecuada para el espacio de usuario, no para los kernels.
- Enfoque recomendado: ejecutar una VM Linux aarch64 y usar Rosetta 2 dentro de la VM (mediante el soporte documentado por Apple) o mecanismos similares para ejecutar binarios x86_64; mucho más rápido que la emulación QEMU de sistema completo.
- Los usuarios reportan que la emulación x86_64 de UTM es “prácticamente inutilizable” para cargas de trabajo pesadas; las VMs ARM nativas van bien.
Comparaciones del ecosistema y alternativas
- Alternativas mencionadas: los propios frameworks
Virtualization/Hypervisorde Apple (hecho a mano),virt,Lima/Colima(enfocados en Linux),UTM,VirtualBuddy,Viable,VMTek,OrbStack,Multipass. - Tart se ve como algo distintivo principalmente por el soporte de invitados macOS más los flujos de trabajo con registros de imágenes y las herramientas de CI.
- Algunos argumentan que se puede obtener la mayor parte de la funcionalidad con QEMU/
Hypervisor.frameworksi se invierte el tiempo; otros valoran la UX pulida de Tart.
Rendimiento, hardware y experiencia de desarrollo
- Preocupaciones sobre el rendimiento del sistema de archivos en VMs de macOS y Docker;
VirtioFSha mejorado las cosas, pero aún va por detrás de Linux nativo. - Sugerencias: usar herramientas de sincronización como Mutagen; o ejecutar Docker completamente dentro de una VM Linux.
- Debate sobre si 8 GB de RAM son suficientes: algunos reportan cargas fluidas (incluso edición de vídeo), otros encuentran inutilizables los IDE modernos y proyectos grandes, y recomiendan 16 GB o más para uso intensivo de VMs/desarrollo.
Casos de uso y notas legales
- Muy usado para CI de Mac, testing de gestión/flujo de trabajo, escenarios de enrolamiento tipo DEP de macOS y arranque rápido en Recovery para ajustar configuraciones de seguridad.
- Las imágenes de macOS en GHCR generan preguntas; un comentario cita las excepciones del EULA de macOS para “Permitted Developer Services” como CI, aunque el soporte de layering en Tart actualmente no existe.
- El passthrough de GPU para invitados macOS se limita a una GPU paravirtual; no está claro si sirve para cargas de trabajo LLM.