Conoce Hangover, el Wine para ejecutar apps de Windows en ARM64
Wine sin dudas es uno de los proyectos más conocidos en el mundo linuxero y es que no hay que hacer menos al proyecto, pues aunque durante varios años estuvo en un estado en el que muchos pensamos que quedaría olvidado, retomo fuerza y al día de hoy que se encuentra en su versión 9.0, Wine es una de esas aplicaciones que la mayoría de los usuarios de Linux suele tener incluido dentro de su sistema.
Con la llegada de ARM y la gran fuerza que ha tomado esta arquitectura, se han desarrollado e incluso adaptado diversas distribuciones de todo tipo y con lo cual también diversas aplicaciones han llegado a esta arquitectura. Pero en el caso de los que dependen de alguna aplicacion de Windows, la cosa ya se torna un poco complicada, pues el poder ejecutar una aplicacion pensada para el escritorio en ARM no es tan fácil como instalar y ya.
Es por ello que nace ante esta necesidad el proyecto Hangover, el cual está diseñado para permitir la ejecución de aplicaciones Windows de 32 bits compiladas para arquitecturas x86 (i386) y ARM32 en entornos basados en la arquitectura ARM64 (Aarch64).
Sobre Hangover
En el repositorio de Hangover se describe que el proyecto:
Utiliza varios emuladores como DLL para emular sólo la aplicación que desea ejecutar en lugar de emular una instalación completa de Wine, Tan pronto como la aplicación realiza una llamada al sistema Windows/Wine, digamos NtUserCreateWindowEx, se ejecuta fuera del emulador (léase no emulado, rápido, nativo). Aún mejor, todo lo relacionado con Unix nunca se emula.
En resumen, salimos de la emulación en el nivel de llamada al sistema win32 o Wine Unix por razones de rendimiento, lo cual está habilitado por el soporte WoW64 en Wine.
El principal beneficio de este proyecto radica en su capacidad para mejorar significativamente el rendimiento en comparación con la ejecución de Wine completamente en modo de emulación. Con Hangover, el emulador se utiliza únicamente para ejecutar el código de la aplicación en sí, mientras que todas las llamadas al sistema, bibliotecas y componentes de Wine se ejecutan fuera del emulador en la versión nativa para la plataforma actual.
Este enfoque desarticula la cadena de emulación a nivel de llamadas a win32 y wine. Para la capa de emulación, los usuarios pueden optar por utilizar los emuladores QEMU, FEX y Box64, según sus preferencias. Además, se ha iniciado el trabajo para brindar soporte al emulador Blink, aunque aún se encuentra en curso y no está finalizado.
Principales novedades de Hangover 9.0
En esta nueva versión que se presenta de Hangover han implementado varias mejoras y adiciones significativas en el proyecto, de las cuales se destacan:
- Utilización de QEMU con WoW64: Se ha introducido la capacidad de utilizar QEMU junto con la capa WoW64 (Windows-on-Windows de 64 bits), disponible en Wine. Esto permite la ejecución de aplicaciones de Windows de 32 bits en sistemas Unix de 64 bits, con soporte para arquitecturas x86_32 y ARM32.
- Soporte para FEX: Se ha añadido soporte para el emulador FEX en formato PE y en compilaciones Unix. Se planea, en el futuro, suspender el uso de compilaciones FEX Unix a favor de compilaciones en formato PE.
- Trabajos en Box64: Se ha logrado una integración completa con el emulador Box64.
- Paquetes deb precompilados: Se han preparado paquetes deb para Debian 11 y 12, con planes futuros de publicar paquetes para Ubuntu y Alpine Linux.
- Trabajos para la arquitectura RISC-V: Se han iniciado los esfuerzos para asegurar el lanzamiento de aplicaciones Windows en entornos basados en la arquitectura RISC-V.
- Recuperación del soporte para la emulación de x86_64: Se está trabajando en devolver el soporte para la emulación de la arquitectura x86_64 para la ejecución de aplicaciones de Windows de 64 bits. En la rama 0.8, el soporte se limitó a i386 debido a la falta de disponibilidad del uso de ARM64EC en Wine.
Además de ello, se destaca que se está llevando a cabo el desarrollo de una implementación de Hangover adaptada para la arquitectura RISC-V. Este último desarrollo se basa en el código base de Wine 9.0, lo que se refleja en su número de versión.
Finalmente si estas interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.