Lanzamiento estable de Wine 5.0

Después de un año de desarrollo y 28 versiones experimentales presentado lanzamiento estable de la implementación abierta de la API Win32 - Vino 5.0, que incluyó más de 7400 cambios. Los logros clave de la nueva versión incluyen la entrega de módulos Wine integrados en formato PE, soporte para configuraciones de múltiples monitores, una nueva implementación de la API de audio XAudio2 y soporte para la API de gráficos Vulkan 1.1.

en vino confirmado por funcionamiento completo de 4869 (hace un año 4737) programas para Windows, otros 4136 (hace un año 4045) programas funcionan perfectamente con configuraciones adicionales y DLL externas. 3635 programas tienen problemas menores de rendimiento que no interfieren con el uso de las funciones básicas de la aplicación.

Llave innovaciones Vino 5.0:

  • Módulos en formato PE
    • Con el compilador MinGW, la mayoría de los módulos Wine ahora están construidos en el formato de archivo ejecutable PE (Portable Executable, usado 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;
    • Los ejecutables PE ahora se copian al directorio ~/.wine ($WINEPREFIX) en lugar de usar archivos DLL ficticios, lo que hace que el material sea más similar a las instalaciones reales de Windows, a costa de consumir espacio adicional en el disco;
    • Los módulos convertidos al formato PE pueden utilizar el estándar wchar Funciones y constantes de C con Unicode (por ejemplo, L"abc");
    • El tiempo de ejecución de Wine C ha agregado soporte para vincular con archivos binarios creados en MinGW, que se usa de forma predeterminada en lugar del tiempo de ejecución de MinGW al crear archivos DLL;
  • Subsistema de gráficos
    • Se agregó soporte para trabajar con múltiples monitores y adaptadores de gráficos, incluida la capacidad de cambiar dinámicamente la configuración;
    • El controlador de la API de gráficos de Vulkan se actualizó para cumplir con la especificación Vulkan 1.1.126;
    • La biblioteca WindowsCodecs brinda la capacidad de convertir formatos ráster adicionales, incluidos formatos con una paleta indexada;
  • Direct3D
    • Cuando se ejecutan aplicaciones Direct3D en pantalla completa, la llamada del protector de pantalla se bloquea;
    • DXGI (DirectX Graphics Infrastructure) ha agregado soporte para informar a una aplicación cuando su ventana está minimizada, lo que permite a la aplicación reducir el rendimiento de las operaciones que consumen muchos recursos al minimizar la ventana;
    • Para aplicaciones que usan DXGI, ahora es posible cambiar entre el modo de pantalla completa y el modo de ventana usando la combinación Alt+Enter;
    • Las capacidades de la implementación de Direct3D 12 se han ampliado, por ejemplo, ahora hay soporte para cambiar entre los modos de pantalla completa y ventana, cambiar los modos de pantalla, escalar la salida y administrar el intervalo de reemplazo del búfer de renderizado (intervalo de intercambio);
    • Manejo mejorado de diversas situaciones límite, como el uso de valores de entrada fuera de rango para pruebas de transparencia y profundidad, renderizado con texturas y buffers reflejados y uso de objetos DirectDraw incorrectos. presilla, creando dispositivos Direct3 para ventanas incorrectas, utilizando áreas visibles cuyos valores mínimos de parámetros son iguales al máximo, etc.
    • Direct3D 8 y 9 proporcionan un seguimiento más preciso "sucio» áreas de texturas cargadas;
    • Se ha reducido el tamaño del espacio de direcciones requerido al cargar texturas 3D comprimidas utilizando el método S3TC (en lugar de cargarlas por completo, las texturas se cargan en trozos).
    • Interfaz implementada ID3D11Multihilo para proteger secciones críticas en aplicaciones multiproceso;
    • Se han realizado varias mejoras y correcciones relacionadas con los cálculos de iluminación para aplicaciones DirectDraw más antiguas;
    • Se implementaron llamadas adicionales para obtener información sobre sombreadores en la API. ShaderReflexión;
    • wined3d ahora es compatible amargo Basado en CPU para procesar recursos comprimidos;
    • Se ha ampliado la base de datos de tarjetas gráficas reconocidas en Direct3D;
    • Se agregaron nuevas claves de registro HKEY_CURRENT_USER\Software\Wine\Direct3D: “shader_backend” (backend para trabajar con sombreadores: “glsl” para GLSL, “arb” para vértice/fragmento ARB y “none” para deshabilitar la compatibilidad con sombreadores), “strict_shader_math” ( 0x1 - habilitar, 0x0 - deshabilitar la conversión de sombreador Direct3D). Se desaprobó la clave "UseGLSL" (debe usar "shader_backend");
  • D3DX
    • Se ha implementado soporte para el mecanismo de compresión de texturas 3D S3TC (S3 Texture Compression);
    • Se agregaron implementaciones correctas de operaciones como relleno de textura y superficies no mapeables;
    • Se han realizado varias mejoras y correcciones en el marco de creación. efectos visuales;
  • Núcleo (interfaces del núcleo de Windows)
    • La mayoría de las funciones utilizadas en Kernel32 se han trasladado a
      KernelBase, tras los cambios en la arquitectura de Windows;

    • Capacidad para mezclar archivos DLL de 32 y 64 bits en directorios utilizados para la carga. Garantiza que se ignoren las bibliotecas que no coinciden con la profundidad de bits actual (32/64), en caso de que más adelante en la ruta sea posible encontrar una biblioteca que sea correcta para la profundidad de bits actual;
    • Para los controladores de dispositivos, se ha mejorado la emulación de objetos del kernel;
    • Objetos de sincronización implementados que funcionan a nivel del kernel, como bloqueos de giro, mutex rápidos y variables adjuntas a un recurso;
    • Garantiza que las aplicaciones estén correctamente informadas sobre el estado de la batería;
  • Interfaz de usuario e integración de escritorio
    • Las ventanas minimizadas ahora se muestran usando una barra de título en lugar de un ícono al estilo de Windows 3.1;
    • Se agregaron nuevos estilos de botones. SplitButton (botón con una lista desplegable de acciones) y Enlaces de comando (enlaces en cuadros de diálogo utilizados para pasar a la siguiente etapa);
    • Se han creado enlaces simbólicos para las carpetas 'Descargas' y 'Plantillas', apuntando a los directorios correspondientes en sistemas Unix;
  • Dispositivos de entrada
    • Al inicio, se instalan y cargan los controladores de dispositivo Plug & Play necesarios;
    • Soporte mejorado para controladores de juegos, incluido un mini joystick (interruptor de sombrero), volante, pedales de acelerador y freno.
    • Se ha descontinuado el soporte para la antigua API de joystick de Linux utilizada en los kernels de Linux anteriores a la versión 2.2;
  • .NET
    • El motor Mono se actualizó a la versión 4.9.4 y ahora incluye partes del marco de trabajo de Windows Presentation Foundation (WPF);
    • Se agregó la capacidad de instalar complementos con Mono y Gecko en un directorio común, colocando archivos en la jerarquía /usr/share/wine en lugar de copiarlos a nuevos prefijos;
  • Funciones de red
    • El motor del navegador Wine Gecko, que se utiliza en la biblioteca MSHTML, se actualizó a la versión 2.47.1. Se ha implementado soporte para nuevas API HTML;
    • MSHTML ahora admite elementos SVG;
    • Se agregaron muchas funciones nuevas de VBScript (por ejemplo, controladores de errores y excepciones, funciones Hora, Día, Mes, Cadena, LBound, RegExp.Replace, РScriptTypeInfo_* y ScriptTypeComp_Bind*, etc.);
    • Se proporcionó preservación del estado del código en VBScript y JScript (persistencia del script);
    • Se agregó una implementación inicial del servicio HTTP (WinHTTP) y la API asociada (HTTPAPI) para aplicaciones cliente y servidor que envían y reciben solicitudes utilizando el protocolo HTTP;
    • Implementó la capacidad de obtener configuraciones de proxy HTTP a través de DHCP;
    • Se agregó soporte para redirigir solicitudes de autenticación a través del servicio Microsoft Passport;
  • Criptografía
    • Se implementó soporte para claves criptográficas de curva elíptica (ECC) cuando se usa GnuTLS;
    • Se agregó la capacidad de importar claves y certificados desde archivos en formato PFX;
    • Se agregó soporte para el esquema de generación de claves basado en la contraseña PBKDF2;
  • Texto y fuentes
    • La implementación de DirectWrite API ha agregado soporte para funciones OpenType relacionadas con posicionamiento de glifos, que están habilitados de forma predeterminada para el estilo latino, incluido el kerning;
    • Seguridad mejorada para procesar datos de fuentes al verificar la exactitud de varias tablas de datos antes de usarlas;
    • Las interfaces DirectWrite se han adaptado al último SDK;
  • sonido y video
    • Se ha propuesto una nueva implementación de la API de sonido. XAudio2, construido sobre la base del proyecto. FAudio. El uso de FAudio en Wine te permite lograr una mayor calidad de sonido en los juegos y utilizar funciones como mezcla de volumen y efectos de sonido avanzados;
    • Se ha agregado una gran cantidad de llamadas nuevas a la implementación del marco de Media Foundation, incluido el soporte para colas asíncronas integradas y personalizadas, API de Source Reader, sesión de medios, etc.
    • El filtro de captura de video se cambió para usar la API v4l2 en lugar de la API v4l1, lo que amplió la gama de cámaras compatibles;
    • Se han eliminado los decodificadores AVI, MPEG-I y WAVE integrados, en lugar de los cuales ahora se utilizan el sistema GStreamer o QuickTime;
    • Se agregó un subconjunto de API de configuración de VMR7;
    • Se agregó soporte para ajustar el volumen de canales individuales a los controladores de sonido;
  • Internacionalización
    • Tablas Unicode actualizadas a la versión 12.1.0;
    • Soporte implementado para la normalización Unicode;
    • Se proporcionó instalación automática de la región geográfica (HKEY_CURRENT_USER\Control Panel\International\Geo) basada en la ubicación actual;
  • RPC/COM
    • Se agregó soporte para estructuras y matrices complejas a typelib;
    • Se agregó la implementación inicial de la biblioteca de tiempo de ejecución de Windows Script;
    • Se agregó la implementación inicial de la biblioteca ADO (Microsoft ActiveX Data Objects);
  • Instaladores
    • Se ha implementado soporte para la entrega de parches (Patch Files) para el instalador MSI;
    • La utilidad WUSA (Windows Update Standalone Installer) ahora tiene la capacidad de instalar actualizaciones en formato .MSU;
  • plataforma brazo
    • Para la arquitectura ARM64, se agregó soporte para desenrollar la pila a ntdll. Se agregó soporte para conectar bibliotecas libunwind externas;
    • Para la arquitectura ARM64, se ha implementado compatibilidad con proxies integrados para interfaces de objetos;
  • Herramientas de desarrollo / Winelib
    • Se agregó la capacidad de usar el depurador de Visual Studio para depurar de forma remota aplicaciones que se ejecutan en Wine;
    • La biblioteca DBGENG (Debug Engine) se ha implementado parcialmente;
    • Los binarios compilados para Windows ya no dependen de libwine, lo que les permite ejecutarse en Windows sin dependencias adicionales;
    • Se agregó la opción '--sysroot' al compilador de recursos y al compilador IDL para determinar la ruta de los archivos de encabezado;
    • Se agregaron las opciones '—target', '—wine-objdir' a winegcc
      '—winebuild' y '-fuse-ld', que simplifican la configuración del entorno para la compilación cruzada;

  • Aplicaciones integradas
    • Implementó una utilidad CHCP para configurar la codificación de la consola;
    • Se ha implementado la utilidad MSIDB para manipular bases de datos en formato MSI;
  • Optimización del rendimiento
    • Se han migrado varias funciones de sincronización para utilizar funciones de temporizador del sistema de alto rendimiento, lo que reduce la sobrecarga en el bucle de renderizado de muchos juegos;
    • Se agregó la capacidad de usar Ext4 en FS. regimen trabajar sin distinguir entre mayúsculas y minúsculas;
    • Se ha optimizado el rendimiento del procesamiento de una gran cantidad de elementos en los cuadros de diálogo de visualización de listas que operan en modo LBS_NODATA;
    • Se agregó una implementación más rápida de bloqueos SRW (Slim Reader/Writer) para Linux, traducida a Futex;
  • Dependencias externas
    • Para ensamblar módulos en formato PE, se utiliza el compilador cruzado MinGW-w64;
    • La implementación de XAudio2 requiere la biblioteca FAudio;
    • Para rastrear cambios de archivos en sistemas BSD
      se utiliza la biblioteca Inotify;

    • Para manejar excepciones en la plataforma ARM64, se requiere la biblioteca Unwind;
    • En lugar de Video4Linux1, ahora se requiere la biblioteca Video4Linux2.

Fuente: opennet.ru

Añadir un comentario