Lanzamiento estable de Wine 9.0

Luego de un año de desarrollo y 26 versiones experimentales, se presentó una versión estable de la implementación abierta de la API Win32 - Wine 9.0, que incorporó más de 7000 cambios. Los logros clave en la nueva versión incluyen la implementación de la arquitectura WoW64 para ejecutar programas de 32 bits en un entorno de 64 bits, integración de controladores para soportar Wayland, soporte para la arquitectura ARM64, implementación de la API DirectMusic y soporte para tarjetas inteligentes.

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

Innovaciones clave en Wine 9.0:

  • Se agregó el controlador Winewayland.drv, que le permite usar Wine en entornos basados ​​en el protocolo Wayland sin usar componentes XWayland y X11. El desarrollo tiene como objetivo proporcionar un entorno Wayland puro con soporte para ejecutar aplicaciones de Windows que no requieren la instalación de paquetes relacionados con X11, lo que permite un mayor rendimiento y capacidad de respuesta de los juegos al eliminar capas innecesarias. El uso de un entorno Wayland puro para Wine también elimina los problemas de seguridad inherentes a X11 (por ejemplo, los juegos X11 que no son de confianza pueden espiar otras aplicaciones ya que el protocolo X11 permite el acceso a todos los eventos de entrada y la sustitución de pulsaciones de teclas falsas).

    El controlador está marcado como experimental y en desarrollo, pero, sin embargo, ya admite muchas funciones, como administración de ventanas, trabajo con múltiples monitores, soporte para escalar la salida en pantallas de alta densidad de píxeles (alto DPI), trabajar con coordenadas relativas al rastrear el movimiento del mouse y soporte para la API de gráficos Vulkan. De forma predeterminada, el controlador no está activo y para habilitarlo debe agregar “wayland” al parámetro de registro “HKCU\Software\Wine\Drivers” y asegurarse de que la variable de entorno DISPLAY no esté configurada: wine reg.exe add HKCU\ \Software\\Wine\\Controladores /v Gráficos /d x11,wayland

  • Todos los módulos se han convertido a la interfaz de llamada del sistema NT, en lugar de realizar llamadas directas entre las capas PE y Unix, lo que marca la finalización de muchos años de trabajo para convertir todas las DLL para utilizar el formato de archivo ejecutable PE (Portable Executable).
  • Continuó el desarrollo de la capa WoW64 (Windows-on-Windows de 64 bits), que permite ejecutar aplicaciones Windows de 32 bits en sistemas Unix de 64 bits. Todos los módulos que acceden a las bibliotecas de Unix utilizan procesadores de llamadas al sistema WoW64 para permitir que los módulos con formato PE de 32 bits accedan a las bibliotecas de Unix de 64 bits.

    Se mejoró el nuevo modo de inicio de WoW64, que ejecuta código de 32 bits dentro de un proceso de 64 bits (en el modo antiguo de WoW64, las aplicaciones de 32 bits se ejecutaban en procesos Unix de 32 bits). Se agregó soporte para usar el nuevo modo WoW64 en la plataforma macOS. Dado que el nuevo modo WoW64 tiene algunas deficiencias, como la falta de soporte para el modo de 16 bits y un rendimiento OpenGL reducido debido a la falta de soporte para la extensión ARB_buffer_storage, aún no está habilitado de forma predeterminada y requiere compilarse con la opción “—enable- archs=i386,x86_64 " en el script de configuración.

  • Se agregó la capacidad de ejecutar ejecutables de Windows existentes en sistemas de arquitectura ARM64. Se ha implementado la capacidad de compilar Wine para ARM64EC ABI (compatible con emulación ARM64) y la compatibilidad con la carga de módulos ARM64EC, lo que se utiliza para simplificar la migración de aplicaciones escritas originalmente para la arquitectura x64_86 a sistemas ARM64 al brindar la capacidad de ejecutar módulos individuales con x64_86. código en el entorno ARM64 usando un emulador. Se agregó soporte para el formato de archivo ARM64X PE, que permite cargar un único archivo ejecutable en procesos x64/Arm64EC y ARM64. Se implementó una interfaz para emular sistemas x32 de 86 bits, pero la biblioteca con el emulador aún no está incluida en el paquete principal de Wine (puede usar el emulador FEX externo para ejecutar código x86 en un entorno ARM64).
  • Subsistema de gráficos
    • El controlador PostScript se ha rediseñado para admitir archivos spool formateados en Windows que almacenan datos sobre trabajos de impresión. Quedan excluidas las llamadas directas al controlador desde el entorno Unix.
    • Se ha agregado compatibilidad con el modo oscuro a los temas de WinRT. Se ha agregado una configuración a WineCfg para habilitar el diseño de interfaz oscura.
    • El controlador para la API de gráficos Vulkan ha agregado soporte para la especificación Vulkan 1.3.272 (8.0 era compatible con Wine 1.3.237).
    • Se han optimizado las funciones de la biblioteca GdiPlus, permitiendo un mayor rendimiento gráfico.
  • Direct3D
    • El análisis de un flujo de comandos de subprocesos múltiples se suspende cuando no se procesan comandos de renderizado, lo que permite reducir el consumo de energía al nivel de procesamiento de un solo subproceso cuando se ejecutan programas que no ocupan todo el ancho de banda del flujo de comandos.
    • Direct3D 10 incluye soporte para efectos adicionales.
    • Realicé optimizaciones de rendimiento en el código WineD3D y el backend utilizando la API de gráficos Vulkan.
    • El código de renderizado basado en la API de Vulkan ahora verifica qué capacidades admite el dispositivo y le dice a la aplicación qué nivel de funcionalidad Direct3D está disponible.
    • Se han implementado las funciones D3DXFillTextureTX y D3DXFillCubeTextureTX.
    • El backend clásico del sombreador OpenGL ARB ha agregado soporte para definir sombras usando la extensión ARB_fragment_program_shadow.
    • D3DXLoadMeshHierarchyFromX y funciones similares han agregado soporte para cargar datos de usuario mediante la interfaz ID3DXLoadUserData.
  • sonido y video
    • Se ha propuesto una implementación inicial de la API de DirectMusic. Se agregó soporte para colecciones, instrumentos y muestras de sonido en formato SoundFont. Se agregó soporte para el efecto Doppler. Se han implementado pruebas para verificar la correcta implementación al operar el secuenciador dmime y el sintetizador MIDI dmsynth.
    • La biblioteca FluidSynth está integrada en la API de DirectMusic para su uso.
    • Se ha implementado la compatibilidad con la carga de fuentes de sonido (SoundFont: formatos de síntesis basados ​​en muestras utilizados para reproducir archivos MIDI) en los formatos DLS1 y DLS2, así como en el formato SF2 utilizado en Linux.
    • Se agregó la capacidad de reproducir contenido MIDI usando la biblioteca dmsynth, usando el sintetizador de software FluidSynth y la API DirectSound para salida de audio.
    • Se agregó un decodificador de video en el formato de códec de video Indeo IV50.
  • DirectShow
    • Se ha implementado un componente DMO (DirectX Media Object) con un decodificador de formato WMV (Windows Media Video).
    • Se agregó un filtro de captura de audio (DirectShow Audio Capture Filter).
    • Además de las transmisiones de audio, MPEG-1 Stream Splitter (DirectShow MPEG-1 Stream Splitter) ahora admite transmisiones de video y transmisiones de servicios.
    • Se ha implementado un filtro para decodificar vídeo en formato MPEG-1 (DirectShow MPEG-1 Video Decoder).
  • Dispositivos de entrada
    • DirectInput admite el mapeo de acciones, que le permite vincular botones en un controlador de juego a acciones específicas en los juegos.
  • Integración de escritorio
    • Los enlaces se han exportado al entorno principal del usuario, lo que permite que las aplicaciones que se ejecutan en Wine sean llamadas como controladores de protocolo al abrir una URL (por ejemplo, iniciar spotify.exe al abrir enlaces como “spotify:user:spotify:playlist:848218482355482821”).
    • Implementé la extracción de datos EDID (Extended Display Identification Data) con información sobre los parámetros del monitor conectado, como el nombre y modelo del dispositivo.
    • Es posible cerrar una ventana del escritorio implementada en modo de pantalla completa usando el botón "Salir del escritorio" en el menú "Inicio".
  • Internacionalización
    • Soporte ampliado para IME (Editores de métodos de entrada). Se ha trabajado para garantizar la compatibilidad con implementaciones nativas de IME de Windows y mejorar la integración con IME de Linux.
    • Se ha proporcionado la generación de bases de datos locales en formato locale.nls a partir de la base de datos Unicode CLDR (Unicode Common Locale Data Repository) versión 44. Soporte para configuraciones regionales adicionales bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA , se ha agregado prg-PL, skr-PK, tyv-RU, vmw-MZ, xnr-IN y za-CN.
    • La interfaz ha sido traducida al georgiano. Se proporcionan traducciones completas para 16 idiomas y traducciones parciales para 31 idiomas.
    • Las tablas de caracteres Unicode se han actualizado a la versión estándar 15.1.0. La base de datos de zonas horarias ha sido actualizada.
  • Núcleo (interfaces del núcleo de Windows)
    • La versión predeterminada de Windows que se emite es Windows 10.
    • Para archivos ejecutables en formato PE, se implementa la compatibilidad con la aleatorización del espacio de direcciones (ASLR), pero las direcciones para cargar el código en la memoria aún no están completamente aleatorizadas.
    • Se ha implementado soporte para un montón débilmente fragmentado (LFH, Low Fragmentation Heap), lo que ha aumentado el rendimiento de las operaciones de asignación de memoria.
    • Se agregó soporte para reserva de memoria (marcador de posición) al mecanismo de asignación de memoria virtual, lo que permite que una aplicación reserve un área específica de memoria virtual para uso futuro.
    • Los cargadores de 64 bits (cargador y precargador) de bibliotecas y archivos ejecutables se compilan en formato PIE (ejecutables independientes de la posición) para liberar parte del espacio de direcciones de 32 bits.
    • Se proporciona un desenrollado correcto de la pila para las llamadas al sistema NT y las llamadas de devolución de llamada del usuario.
  • Funciones de red
    • El motor MSHTML admite el mecanismo de recolección de basura "Recolección cíclica".
    • MSHTML ha agregado soporte para el procesamiento sincrónico de solicitudes XMLHttpRequest.
    • jscript.dll agrega soporte para que un objeto WeakMap funcione con una colección de pares clave/valor en los que la clave es un objeto que puede tener un valor arbitrario adjunto. Se implementaron los métodos WeakMap.get(), WeakMap.delete(), WeakMap.clear() y WeakMap.has().
    • El motor del navegador Gecko se ha actualizado a la versión 2.47.4.
    • Se ha implementado soporte para notificaciones sobre cambios en el estado de la interfaz de red.
  • Criptografía y seguridad
    • Se agregó soporte para tarjetas inteligentes a la biblioteca Winscard.dll, implementada a través de la biblioteca del sistema PCSClite.
    • BCrypt ha agregado soporte para el protocolo de intercambio de claves Diffie-Hellman.
    • Se implementó el paquete Negotiate, que proporciona una capa para usar la interfaz SSPI (Interfaz de proveedor de soporte de seguridad) para acceder a los proveedores de SSP (Proveedor de soporte de seguridad).
  • Aplicaciones integradas
    • Wine Debugger (winedbg) utiliza la biblioteca Zydis para desmontar las instrucciones de la máquina X86.
    • Se agregó la capacidad de exponer versiones anteriores de Windows (pre-XP) en plataformas de 64 bits a la interfaz WineCfg, lo que le permite ejecutar aplicaciones heredadas usando el modo WoW64.
    • Todas las aplicaciones gráficas integradas ahora muestran información de error en un cuadro de diálogo separado, en lugar de mostrarlos en la consola.
    • El programa systeminfo proporciona visualización de información de la base de datos WMI (Instrumental de administración de Windows).
    • Se agregó la aplicación klist para mostrar tickets de Kerberos.
    • La aplicación taskkill implementa la capacidad de finalizar forzosamente procesos secundarios.
    • Se agregó la opción "/machine" a la utilidad de inicio para seleccionar la arquitectura utilizada al ejecutar ejecutables híbridos que admiten x86 y ARM.
    • Se ha implementado la mayor parte de la funcionalidad del programa de lista de tareas.
    • Se agregó una implementación básica de la aplicación findtr.
  • Herramientas de desarrollo
    • La utilidad WineDump brinda la capacidad de mostrar el contenido de los archivos de registro de Windows (formato REGF), así como mostrar datos para todas las arquitecturas (x86/ARM64) compatibles con archivos PE híbridos.
    • El compilador IDL ha agregado soporte para los atributos "componible", "default_overload", "obsoleto" y "protegido".
    • Se eliminó libwine.so, que quedó obsoleto en Wine 6.0 y ya no se usa en Wine durante mucho tiempo. Los programas en formato ELF creados en versiones anteriores de Wine (5.0 y anteriores) con libwine.so requieren reconstrucción para ejecutarse en Wine 9.0.
  • Bibliotecas integradas y dependencias externas
    • Las bibliotecas FluidSynth 2.3.3, Musl 1.2.3 (solo funciones matemáticas) y Zydis 4.0.0 están integradas en el paquete.
    • Los componentes Vkd3d 1.10, Faudio 23.12, OpenLDAP 2.5.16, LCMS2 2.15, LibMPG123 1.32.2, LibPng 1.6.40, LibTiff 4.6.0, LibXml2 2.11.5, LibXslt 1.1.38 y Zlib 1.3 se han actualizado a nuevas versiones. El motor Wine Mono con la implementación de la plataforma .NET se actualizó a la versión 8.1.0.
    • El controlador Winewayland.drv utiliza la biblioteca cliente Wayland como dependencias externas, así como las bibliotecas xkbcommon y xkbregistry.
    • Para admitir tarjetas inteligentes, se utiliza la biblioteca externa PCSClite (en macOS - PCSC).
    • La creación de archivos PE en plataformas que no son i386 ahora requiere un compilador cruzado compatible con directivas ".seh" para manejar excepciones.

Fuente: opennet.ru

Añadir un comentario