Después de un año de desarrollo y 28 versiones experimentales, se presenta el lanzamiento estable de la implementación abierta de Win32 API — Wine 8.0, que incluye más de 8600 cambios. Un logro clave en la nueva versión es la finalización de la traducción de los módulos de Wine al formato.
Wine ha confirmado el funcionamiento total de 5266 programas (hace un año 5156, hace dos años 5049) para Windows, otros 4370 (hace un año 4312, hace dos años 4227) funcionan perfectamente con configuraciones adicionales y DLL externas. Hay 3888 programas (hace un año 3813, hace dos años 3703) que presentan pequeños problemas de funcionamiento, los cuales no impiden el uso de las funciones principales de las aplicaciones.
Novedades clave de Wine 8.0:
- Módulos en formato PE
- Después de cuatro años de trabajo, se ha completado la traducción de todas las bibliotecas DLL para el uso del formato de archivos ejecutables PE (Portable Executable, utilizado en Windows). La aplicación de PE permite utilizar depuradores disponibles para Windows y resuelve problemas de soporte para varios esquemas de protección contra copia, que verifican la identidad de módulos del sistema en el disco y en la memoria. También se han solucionado problemas con el funcionamiento de aplicaciones de 32 bits en anfitriones de 64 bits y aplicaciones x86 en sistemas ARM. Entre las tareas restantes que se planean resolver en futuras versiones experimentales de Wine 8.x, se menciona la traducción de módulos al interfaz de llamadas del sistema NT en lugar de realizar llamadas directas entre los niveles PE y Unix.
- Se ha implementado un gestor especial de llamadas del sistema, utilizado para traducir las solicitudes de PE a bibliotecas Unix con el objetivo de reducir la sobrecarga al realizar una llamada completa al sistema NT. Por ejemplo, la optimización realizada ha permitido reducir la caída del rendimiento al utilizar bibliotecas OpenGL y Vulkan.
- En las aplicaciones de Winelib se ha mantenido la posibilidad de utilizar ensamblajes mixtos de bibliotecas de Windows/Unix en formato ELF (.dll.so), pero tales aplicaciones sin bibliotecas de 32 bits no admitirán la funcionalidad disponible a través del interfaz de llamadas del sistema NT, como WoW64.
- WoW64
- Se han proporcionado capas WoW64 (Windows-on-Windows de 64 bits) para todas las bibliotecas de Unix, permitiendo que los módulos de 32 bits en formato PE accedan a bibliotecas de Unix de 64 bits, lo que, tras eliminar las llamadas directas a PE/Unix, permitirá la ejecución de aplicaciones de Windows de 32 bits sin necesidad de instalar bibliotecas de Unix de 32 bits.
- En ausencia de un cargador de Wine de 32 bits, se ha habilitado la ejecución de aplicaciones de 32 bits en un nuevo modo experimental similar a Windows, WoW64, en el que el código de 32 bits se ejecuta dentro de un proceso de 64 bits. Este modo se activa al compilar Wine con la opción ‘—enable-archs’.
- Subsistema gráfico
- La configuración predeterminada utiliza un tema claro («Light»). Se puede cambiar el tema mediante la herramienta WineCfg.

- Los controladores gráficos (winex11.drv, winemac.drv, wineandroid.drv) se han adaptado para realizar llamadas al sistema a nivel de Unix y acceder a los controladores a través de la biblioteca Win32u.

- Se ha implementado la arquitectura del procesador de impresión (Print Processor), utilizada para evitar llamadas directas entre los niveles de PE y Unix en el controlador de impresora.
- En la API de Direct2D se ha implementado el soporte para efectos.
- En la API de Direct2D se ha añadido la capacidad de grabar y reproducir listas de comandos.
- En el controlador para la API gráfica Vulkan se ha añadido soporte para la especificación Vulkan 1.3.237 (en Wine 7 se soportaba Vulkan 1.2).
- La configuración predeterminada utiliza un tema claro («Light»). Se puede cambiar el tema mediante la herramienta WineCfg.
- Direct3D
- Se ha añadido un nuevo compilador de shaders para el lenguaje HLSL (High-Level Shader Language), implementado sobre la biblioteca vkd3d-shader. También se han preparado un desensamblador HLSL y un preprocesador HLSL basados en vkd3d-shader.
- Se ha implementado la interfaz Thread Pump, que apareció en D3DX 10.
- En los efectos de Direct3D 10 se ha añadido soporte para muchas nuevas expresiones.
- En la biblioteca de ayuda para D3DX 9 se ha implementado soporte para proyección de texturas Cubemap.
- Sonido y video
- Basado en el marco de trabajo GStreamer, se ha implementado soporte para filtros de decodificación de audio en formato MPEG-1.
- Se ha añadido un filtro para la lectura de audio y video en streaming en formato ASF (Advanced Systems Format).
- Se ha eliminado la biblioteca intermedia OpenAL32.dll, que ahora se reemplaza por la biblioteca nativa de Windows OpenAL32.dll, proporcionada con las aplicaciones.
- En el Media Foundation Player se ha mejorado la detección del tipo de contenido.
- Se ha implementado la posibilidad de controlar la velocidad de transmisión de datos (Rate control).
- Se ha mejorado el soporte para el mezclador y el presentador (presenter), ofrecidos por defecto en Enhanced Video Renderer (EVR).
- Se ha añadido una implementación inicial de la API Writer Encoding.
- Se ha mejorado el soporte para el cargador de topologías.
- Dispositivos de entrada
- Se ha mejorado significativamente el soporte para la conexión en caliente de controladores.
- Se ha propuesto una implementación mejorada del código para la identificación de volantes, basada en la biblioteca SDL.
- Se ha mejorado el soporte para el efecto de retroalimentación (Force feedback) al usar volantes.
- Se ha implementado la posibilidad de controlar los motores de vibración izquierdo y derecho que utilizan la especificación HID Haptic.
- El formato ha sido modificado. el panel de control con el joystick.
- Mediante el uso del backend hidraw, se ha asegurado el soporte para los controladores Sony DualShock y DualSense.
- Se ha propuesto un módulo WinRT Windows.Gaming.Input con la implementación de una interfaz de programación para acceder a gamepads, joysticks y volantes. Para la nueva API, entre otras cosas, se ha implementado el soporte para notificaciones de conexión en caliente de dispositivos, efectos hápticos y de vibración.
- Internacionalización
- Se ha asegurado la generación de una base de datos de locales correcta en formato locale.nls desde el repositorio Unicode CLDR (Unicode Common Locale Data Repository).
- Las funciones de comparación de cadenas Unicode se han trasladado al uso de la base de datos y el algoritmo Windows Sortkey en lugar del algoritmo Unicode Collation, lo que ha acercado el comportamiento a Windows.
- Se ha añadido soporte para los rangos superiores de códigos (planos) Unicode en la mayoría de las funciones.
- Se ha proporcionado la posibilidad de utilizar UTF-8 como codificación ANSI.
- Las tablas de caracteres se han actualizado a la especificación Unicode 15.0.0.
- Texto y fuentes
- Para la mayoría de las fuentes del sistema, se ha incluido el enlace de fuentes, lo que ha resuelto el problema de la falta de glifos en sistemas con locales chinos, coreanos y japoneses.
- Se ha rediseñado la reversión a la fuente de reserva en DirectWrite.
- Núcleo (interfaces del núcleo de Windows)
- Se ha implementado la base de datos ApiSetSchema, que ha reemplazado los módulos api-ms-* y ha permitido reducir el consumo de disco y espacio de direcciones.
- Se ha asegurado la conservación en disco de los atributos de archivos DOS en un formato compatible con Samba, utilizando para ello atributos extendidos del sistema de archivos.
- Capacidades de red
- Se ha añadido soporte para el protocolo OCSP (Protocolo de Estado de Certificado en Línea), utilizado para verificar certificados revocados.
- Se ha ampliado el espectro de capacidades de EcmaScript, disponibles en modo de cumplimiento con estándares JavaScript.
- Se ha implementado un recolector de residuos para JavaScript.
- El paquete del motor Gecko incluye herramientas para personas con discapacidades.
- En MSHTML se ha añadido soporte para la API de Web Storage, el objeto Performance y objetos adicionales para la gestión de eventos.
- Aplicaciones integradas
- Todas las aplicaciones integradas han sido modificadas para usar la biblioteca Common Controls 6, con soporte para temas y renderizado para pantallas de alta densidad de píxeles.
- Se han ampliado las capacidades de depuración de hilos en el depurador Wine Debugger (winedbg).
- Las utilidades para trabajar con el registro (REGEDIT y REG) ahora incluyen soporte para el tipo QWORD.
- Notepad ha añadido una barra de estado con información sobre la posición del cursor y la función Ir a línea para saltar a un número específico de línea.
- La consola integrada ahora proporciona salida de datos en la página de códigos OEM.
- Se ha añadido el comando ‘query’ a la utilidad sc.exe (Service Control).
- Sistema de construcción
- Se ha proporcionado la posibilidad de compilar archivos ejecutables en formato PE para varias arquitecturas (por ejemplo, ‘--enable-archs=i386,x86_64’).
- En todas las plataformas de tipo long de 32 bits, los tipos de datos definidos en Windows como long, ahora se redefinen en Wine como ‘long’ en lugar de ‘int’. Este comportamiento se puede deshabilitar en Winelib mediante la definición de WINE_NO_LONG_TYPES.
- Se ha añadido la posibilidad de generar bibliotecas sin utilizar dlltool (activada mediante la opción ‘--without-dlltool’ en winebuild).
- Para mejorar la eficiencia de carga y reducir el tamaño de las bibliotecas que no contienen código y que solo incluyen recursos, se ha implementado la opción ‘--data-only’ en winegcc.
- Varios
- Se han actualizado las versiones de las bibliotecas integradas Faudio 22.11, LCMS2 2.14, LibJPEG 9e, LibMPG123 1.31.1, LibPng 1.6.39, LibTiff 4.4.0, LibXml2 2.10.3, LibXslt 1.1.37, Zlib 1.2.13.
- El motor Wine Mono con la implementación de la plataforma .NET se ha actualizado a la versión 7.4.
- Se ha implementado soporte para cifrado basado en el algoritmo RSA y firmas digitales RSA-PSS.
- Se ha añadido una versión inicial de la API UI Automation.
- Las bibliotecas LDAP y vkd3d, que se compilan en formato PE, se han incorporado al árbol de código fuente, eliminando la necesidad de proporcionar compilaciones de Unix de estas bibliotecas.
- Se ha discontinuado el uso de la biblioteca OpenAL.
Fuente: opennet.ru


