Lanzamiento estable de Wine 7.0

Luego de un año de desarrollo y 30 versiones experimentales, se presentó una versión estable de la implementación abierta de la API Win32: Wine 7.0, que incorporó más de 9100 cambios. Los logros clave de la nueva versión incluyen la traducción de la mayoría de los módulos Wine al formato PE, soporte para temas, expansión de la pila para joysticks y dispositivos de entrada con una interfaz HID e implementación de la arquitectura WoW64 para ejecutar programas de 32 bits en un Entorno de 64 bits.

Wine ha confirmado el pleno funcionamiento de 5156 (hace un año 5049) programas para Windows, otros 4312 (hace un año 4227) programas funcionan perfectamente con configuraciones adicionales y DLL externas. 3813 programas (hace 3703 años) tienen problemas operativos menores que no interfieren en el uso de las funciones principales de las aplicaciones.

Innovaciones clave en Wine 7.0:

  • Módulos en formato PE
    • Casi todos los archivos DLL se han convertido para utilizar el formato de archivo ejecutable PE (Portable Executable, utilizado en Windows) en lugar de ELF. El uso de PE resuelve los problemas relacionados con el soporte de varios esquemas de protección contra copia que verifican la identidad de los módulos del sistema en el disco y en la memoria.
    • Se implementó la capacidad de interactuar con módulos PE con bibliotecas Unix utilizando la llamada al sistema estándar del kernel NT, lo que le permite ocultar el acceso al código Unix de los depuradores de Windows y monitorear el registro de subprocesos.
    • Las DLL integradas ahora se cargan sólo si hay un archivo PE correspondiente en el disco, independientemente de si se trata de una biblioteca real o un código auxiliar. Este cambio permite que la aplicación vea siempre el enlace correcto a los archivos PE. Para deshabilitar este comportamiento, puede utilizar la variable de entorno WINEBOOTSTRAPMODE.
  • WoW64
    • Se ha implementado la arquitectura WoW64 (Windows-on-Windows de 64 bits), lo que le permite ejecutar aplicaciones de Windows de 32 bits en procesos Unix de 64 bits. El soporte se implementa mediante la conexión de una capa que traduce llamadas al sistema NT de 32 bits en llamadas de 64 bits a NTDLL.
    • Las capas WoW64 están preparadas para la mayoría de las bibliotecas Unix y permiten que los módulos PE de 32 bits accedan a las bibliotecas Unix de 64 bits. Una vez que todos los módulos se hayan convertido al formato PE, será posible ejecutar aplicaciones de Windows de 32 bits sin instalar bibliotecas Unix de 32 bits.
  • Temas
    • Se ha implementado el soporte temático. Se incluyen los temas de diseño “Light”, “Blue” y “Classic Blue”, que se pueden seleccionar a través del configurador WineCfg.
    • Se agregó la capacidad de personalizar la apariencia de todos los controles de la interfaz a través de temas. La apariencia de los elementos se actualiza automáticamente después de cambiar el tema de diseño.
    • Se ha agregado compatibilidad con temas a todas las aplicaciones integradas de Wine. Las aplicaciones se han adaptado a pantallas con alta densidad de píxeles (High DPI).
  • Subsistema de gráficos
    • Se ha agregado una nueva biblioteca Win32u, que incluye partes de las bibliotecas GDI32 y USER32 relacionadas con el procesamiento de gráficos y la administración de ventanas a nivel del kernel. En el futuro, se comenzará a trabajar en la migración de componentes del controlador como winex32.drv y winemac.drv a Win11u.
    • El controlador Vulkan es compatible con la especificación API de gráficos Vulkan 1.2.201.
    • Se brindó soporte para generar objetos geométricos sombreados a través de la API de Direct2D, con la capacidad de verificar si se realiza un clic (prueba de acierto).
    • La API de Direct2D proporciona soporte inicial para efectos visuales aplicados mediante la interfaz ID2D1Effect.
    • La API de Direct2D ha agregado soporte para la interfaz ID2D1MultiThread, que se utiliza para organizar el acceso exclusivo a recursos en aplicaciones multiproceso.
    • El conjunto de bibliotecas WindowsCodecs brinda soporte para decodificar imágenes en formato WMP (Windows Media Photo) y codificar imágenes en formato DDS (DirectDraw Surface). Ya no admitimos la codificación de imágenes en formato ICNS (para macOS), que no es compatible con Windows.
  • Direct3D
    • El nuevo motor de renderizado se ha mejorado significativamente, traduciendo las llamadas de Direct3D a la API de gráficos Vulkan. En la mayoría de las situaciones, el nivel de soporte para Direct3D 10 y 11 en el motor basado en Vulkan se ha puesto a la par con el motor anterior basado en OpenGL. Para habilitar el motor de renderizado Vulkan, configure la variable de registro "renderer" de Direct3D en "vulkan".
    • Se implementan muchas características de Direct3D 10 y 11, incluidos contextos diferidos, objetos de estado que operan en el contexto del dispositivo, compensaciones persistentes en buffers, limpieza de vistas de texturas desordenadas, copia de datos entre recursos en formatos sin tipo (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS), etc. .
    • Se agregó soporte para configuraciones de múltiples monitores, lo que le permite seleccionar un monitor para mostrar una aplicación Direct3D en modo de pantalla completa.
    • La API DXGI proporciona corrección gamma de la pantalla, que pueden utilizar aplicaciones basadas en Direct3D 10 y 11 para cambiar el brillo de la pantalla. Recuperación habilitada de contadores de framebuffers virtuales (SwapChain).
    • Direct3D 12 agrega soporte para firmas raíz de la versión 1.1.
    • En el código de renderizado a través de la API de Vulkan, la eficiencia del procesamiento de consultas se ha mejorado cuando el sistema admite la extensión VK_EXT_host_query_reset.
    • Se agregó la capacidad de generar framebuffers virtuales (SwapChain) a través de GDI si OpenGL o Vulkan no se pueden usar para la visualización, por ejemplo, al enviar a una ventana desde diferentes procesos, por ejemplo, en programas basados ​​​​en el marco CEF (Chromium Embedded Framework).
    • Cuando se utiliza el backend del sombreador GLSL, se garantiza el modificador "preciso" para las instrucciones del sombreador.
    • La API DirectDraw agrega soporte para renderizado 3D en la memoria del sistema mediante dispositivos de software como "RGB", "MMX" y "Ramp".
    • Las tarjetas AMD Radeon RX 3M, AMD Radeon RX 5500/6800 XT/6800 XT, AMD Van Gogh, Intel UHD Graphics 6900 y NVIDIA GT 630 se han agregado a la base de datos de tarjetas gráficas Direct1030D.
    • La clave "UseGLSL" se eliminó del registro HKEY_CURRENT_USER\Software\Wine\Direct3D, en lugar de la cual, a partir de Wine 5.0, debe usar "shader_backend".
    • Para admitir Direct3D 12, ahora necesita al menos la versión 3 de la biblioteca vkd1.2d.
  • D3DX
    • La implementación de D3DX 10 ha mejorado la compatibilidad con el marco de efectos visuales y ha agregado compatibilidad con el formato de imagen Windows Media Photo (JPEG XR).
    • Se agregaron funciones de creación de texturas proporcionadas en D3DX10, como D3DX10CreateTextureFromMemory().
    • Las interfaces de software ID3DX10Sprite e ID3DX10Font se han implementado parcialmente.
  • sonido y video
    • Los complementos de GStreamer para DirectShow y el marco Media Foundation se combinan en un backend común de WineGStreamer, lo que debería simplificar el desarrollo de nuevas API de decodificación de contenido.
    • Basado en el backend de WineGStreamer, los objetos de Windows Media se implementan para lectura sincrónica y asincrónica.
    • Se ha perfeccionado aún más la implementación del marco de Media Foundation, se ha agregado compatibilidad con la funcionalidad IMFPMediaPlayer y el asignador de muestras, y se ha mejorado la compatibilidad con los buffers de renderizado EVR y SAR.
    • Se eliminó la biblioteca wineqtdecoder, que proporciona un decodificador para el formato QuickTime (todos los códecs ahora usan GStreamer).
  • Dispositivos de entrada
    • La pila para dispositivos de entrada que admiten el protocolo HID (Dispositivos de interfaz humana) se ha mejorado significativamente, proporcionando capacidades como analizar descriptores HID, procesar mensajes HID y proporcionar controladores mini-HID.
    • En el backend del controlador Winebus.sys, se ha mejorado la traducción de las descripciones de los dispositivos a mensajes HID.
    • Se agregó un nuevo backend DirectInput para joysticks que admiten el protocolo HID. Se ha implementado la capacidad de utilizar efectos de retroalimentación en los joysticks. Panel de control de joystick mejorado. Interacción optimizada con dispositivos compatibles con XInput. En WinMM, la compatibilidad con joystick se ha trasladado a DInput, en lugar de utilizar el backend evdev en Linux e IOHID en macOS IOHID. Se ha eliminado el antiguo controlador de joystick winejoystick.drv.
    • Se han agregado nuevas pruebas al módulo DInput, basadas en el uso de dispositivos HID virtuales y que no requieren un dispositivo físico.
  • Texto y fuentes
    • Se agregó el objeto Conjunto de fuentes a DirectWrite.
    • RichEdit implementa correctamente la interfaz TextHost.
  • Núcleo (interfaces del núcleo de Windows)
    • Cuando se ejecuta un archivo ejecutable no identificado (como 'wine foo.msi') en Wine, ahora se llama a start.exe, que invoca controladores asociados con el tipo de archivo.
    • Se agregó soporte para los mecanismos de sincronización NtAlertThreadByThreadId y NtWaitForAlertByThreadId, similares a futexes en Linux.
    • Se agregó soporte para objetos de depuración de NT utilizados para depurar funciones del kernel.
    • Se agregó soporte para claves de registro dinámicas para guardar datos de rendimiento.
  • Tiempo de ejecución C
    • El tiempo de ejecución de C implementa un conjunto completo de funciones matemáticas, que principalmente se transfieren desde la biblioteca Musl.
    • Todas las plataformas de CPU ofrecen soporte correcto para funciones de punto flotante.
  • Funciones de red
    • Modo de compatibilidad mejorado para Internet Explorer 11 (IE11), que ahora se utiliza de forma predeterminada para procesar documentos HTML.
    • La biblioteca mshtml implementa el modo JavaScript ES6 (ECMAScript 2015), que brinda soporte para funciones como la expresión let y el objeto Map.
    • La instalación de paquetes MSI con adiciones al motor Gecko en el directorio de trabajo de Wine ahora se realiza cuando es necesario y no durante una actualización de Wine.
    • Se agregó soporte para el protocolo DTLS.
    • Se ha implementado el servicio NSI (Network Store Interface), que almacena y transmite información sobre enrutamiento e interfaces de red en la computadora a otros servicios.
    • Los controladores de API de WinSock, como setsockopt y getsockopt, se han movido a NTDLL y al controlador afd.sys para adaptarse a la arquitectura de Windows.
    • Los archivos de bases de datos de red propios de Wine, como /etc/protocols y /etc/networks, ahora se instalan en el directorio de trabajo de Wine, en lugar de acceder a bases de datos similares de Unix.
  • Plataformas alternativas
    • Se agregó soporte para equipos Apple basados ​​en chips M1 ARM (Apple Silicon).
    • La compatibilidad con las funciones BCrypt y Secur32 en macOS ahora requiere la instalación de la biblioteca GnuTLS.
    • Los ejecutables de 32 bits para plataformas ARM ahora se crean en modo Thumb-2, similar a Windows. Se utiliza un precargador para cargar dichos archivos.
    • Para plataformas ARM de 32 bits, se implementó soporte para desenredar excepciones.
    • Para FreeBSD, se ha ampliado la cantidad de consultas admitidas para información del sistema de bajo nivel, como el estado de la memoria y el nivel de carga de la batería.
  • Aplicaciones integradas y herramientas de desarrollo.
    • La utilidad reg.exe ha agregado soporte para vistas de registro de 32 y 64 bits. Se agregó soporte para copiar claves de registro.
    • La utilidad WineDump ha agregado soporte para volcar metadatos de Windows y mostrar información detallada sobre las entradas de CodeView.
    • Wine Debugger (winedbg) brinda la capacidad de depurar procesos de 32 bits desde un depurador de 64 bits.
    • Se agregó la capacidad de cargar bibliotecas integradas en archivos PE al compilador IDL (widl), se proporcionó soporte para atributos y construcciones específicos de WinRT y se implementó una búsqueda de bibliotecas específica de la plataforma.
  • Sistema de montaje
    • En directorios específicos de arquitectura, las bibliotecas ahora se guardan con nombres que reflejan la arquitectura y el tipo de ejecutable, como 'i386-windows' para el formato PE y 'x86_64-unix' para bibliotecas Unix, lo que permite admitir diferentes arquitecturas en un solo Wine. instalación y proporcionar compilación cruzada de Winelib.
    • Para establecer una opción en los encabezados de los archivos PE que controla la transición al uso de DLL nativas, se agregó la bandera "—opción preferida nativa" a Winebuild (se detuvo el procesamiento de DLL_WINE_PREATTACH en DllMain).
    • Se agregó soporte para la versión 4 del formato de datos de depuración Dwarf, que ahora se usa de forma predeterminada al crear bibliotecas de Wine.
    • Se agregó la opción de compilación '—enable-build-id' para guardar identificadores de compilación únicos en archivos ejecutables.
    • Se agregó soporte para usar el compilador Clang en modo de compatibilidad con MSVC.
  • Miscelánea
    • Los nombres de directorios típicos en el shell de usuario (Windows Shell) se asignan al esquema utilizado a partir de Windows Vista, es decir. En lugar de "Mis documentos", ahora se crea un directorio "Documentos" y la mayoría de los datos se guardan en el directorio "AppData".
    • Se ha agregado compatibilidad con la especificación OpenCL 1.2 a la capa de biblioteca OpenCL.
    • El controlador WinSpool ha agregado soporte para diferentes tamaños de página al imprimir.
    • Se agregó soporte inicial para MSDASQL, el proveedor Microsoft OLE DB para controladores ODBC.
    • El motor Wine Mono con la implementación de la plataforma .NET ha sido actualizado a la versión 7.0.0.
    • Los datos Unicode se han actualizado a la especificación Unicode 14.
    • El árbol fuente incluye las bibliotecas Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt y Zlib, que están compiladas en formato PE y no requieren una versión en formato Unix. Al mismo tiempo, estas bibliotecas también se pueden importar desde el sistema para utilizar ensamblajes externos en lugar de opciones PE integradas.

Fuente: opennet.ru

Añadir un comentario