Hace ya varios dias fue presentada la nueva versión estable de Wine 6.0, versión que llego después de un año de desarrollo y 29 versiones experimentales.
En esta nueva versión se han incorporado más de 8300 cambios y entre los principales logros que se incluyen en la entrega, podremos encontrar los módulos básicos de Wine en formato PE, un backend basado en la API gráfica Vulkan para WineD3D, una nueva implementación de una consola de texto, soporte para DirectShow y el marco de Media Foundation.
Wine ha confirmado el pleno funcionamiento de 5049 (4869 hace un año) programas para Windows, 4227 (4136 hace un año) programas funcionan perfectamente con configuraciones adicionales y DLL externas. Los programas 3703 tienen problemas operativos menores que no interfieren con el uso de las funciones principales de las aplicaciones.
Principales novedades de Wine 6.0
En esta nueva versión de Wine 6.0 podremos encontrar que los archivos DLL centrales, incluidos NTDLL, KERNEL32, GDI32 y USER32, se han movido para usar el formato ejecutable PE (ejecutable portátil) en lugar de ELF. El uso de PE resuelve problemas con el soporte de varios esquemas de protección contra copias que verifican la identidad de los módulos del sistema en el disco y en la memoria.
Además de que se propone un nuevo mecanismo para adjuntar bibliotecas Unix a módulos PE para organizar el acceso a las bibliotecas Unix desde archivos PE cuando es necesario llamar a funciones que no se pueden procesar a través de la API Win32. Las bibliotecas de Unix adicionales se identifican por la presencia de un archivo con la extensión «so» y el nombre del módulo PE (por ejemplo, ntdll.so para ntdll.dll).
Por otra parte se interrumpió la vinculación de módulos Winelib con libwine.so y se deshabilitó la carga de libwine.so en tiempo de ejecución. Debido a este cambio, se pierde la compatibilidad con versiones anteriores, es decir Los módulos creados para Wine 6.0 no podrán cargarse en versiones anteriores de Wine.
También se destaca que se implementó el soporte para ensamblar módulos PE con guardar información de depuración en un archivo separado, lo que reduce el tamaño de los archivos instalados.
En el subsistema de gráficos se agregó soporte para dibujar arcos, elipses y rectángulos redondeados usando la API de Direct2D.
El controlador Vulkan proporciona soporte para la especificación Vulkan Graphics API 1.2.162. Proporcionó la generación de un manifiesto JSON y una entrada de registro utilizada por el cargador oficial de Vulkan.
En Direct3D se implementó un motor de renderizado experimental para WineD3D, que traduce las llamadas de Direct3D 12 a la API de gráficos de Vulkan. El motor requiere la biblioteca libvkd3d-shader, que admite la traducción del código de bytes 4 y 5 de los modelos de sombreado en la representación intermedia SPIR-V.
Se implementaron nuevas características de Direct3D 11, como estados de combinación independientes, combinación de múltiples fuentes, máscaras para MSAA (Anti-Aliasing de múltiples muestras) y solicitudes de características adicionales.
En D3DX se han implementado la interfaz ID3D12ShaderReflection y las funciones para obtener parámetros de imagen, como 3DX10GetImageInfoFromMemory() asi como tambien nuevos objetos y funciones del kernel de NT, necesarios para el funcionamiento de sistemas anti-trampas que cargan controladores del kernel.
Otro cambio importante es en la implementación del marco de Media Foundation que se ha mejorado significativamente, en el que hubo soporte inicial para los componentes Media Session, Streaming Audio Renderer (SAR), Video Renderer, mezclador EVR, Topology Loader y Media Engine.
Video Mixing Renderer agrega soporte para modos sin ventana y sin renderizado, la capacidad de cambiar automáticamente el tamaño del video para que se ajuste a la ventana, conversión de espacio de color acelerada por hardware y formato de pantalla ancha alrededor del contenido para lograr la relación de aspecto correcta.
De los demás cambios que se destacan:
- Se agregaron nuevas funciones a la API Media Detector.
- Se agregó soporte para convertir formatos de video y audio al enlace de filtro a través de GStreamer.
- El Procesador de video mejorado (EVR) admite la mezcla a través de la API DXVA2.
- Se agregó soporte completo para normalizar cadenas Unicode.
- Compatibilidad mejorada con Windows de las tablas de asignación de codificación de caracteres.
- Se ha agregado una implementación incorporada de funciones matemáticas al tiempo de ejecución de C basada en el código de la biblioteca Musl.
- El código para generar números de punto flotante se ha rediseñado y eliminado del enlace a la función del sistema printf.
- Se eliminó el soporte para la arquitectura PowerPC de 32 bits que no funcionaba.
- Se agregó soporte para el manejo de excepciones y desenrollado de pilas en sistemas ARM de 32 y 64 bits.
Finalmente si quieres conocer más al respecto, puedes consultar el siguiente enlace.