Versão estável do Wine 5.0

Após um ano de desenvolvimento e 28 versões experimentais apresentado versão estável da implementação aberta da API Win32 - Vinho 5.0, que incluiu mais de 7400 alterações. As principais conquistas da nova versão incluem a entrega de módulos Wine integrados no formato PE, suporte para configurações de vários monitores, uma nova implementação da API de áudio XAudio2 e suporte para a API gráfica Vulkan 1.1.

No vinho confirmado por operação completa de 4869 (há um ano 4737) programas para Windows, outros 4136 (há um ano 4045) programas funcionam perfeitamente com configurações adicionais e DLLs externas. 3635 programas apresentam pequenos problemas de desempenho que não interferem no uso das funções básicas do aplicativo.

Chave inovações Vinho 5.0:

  • Módulos em formato PE
    • Com o compilador MinGW, a maioria dos módulos Wine agora são construídos no formato de arquivo executável PE (Portable Executable, usado no Windows) em vez de ELF. O uso de PE resolve problemas de suporte a vários esquemas de proteção contra cópia que verificam a identidade dos módulos do sistema no disco e na memória;
    • Os executáveis ​​PE agora são copiados para o diretório ~/.wine ($WINEPREFIX) em vez de usar arquivos DLL fictícios, tornando o material mais semelhante a instalações reais do Windows, ao custo de consumir espaço adicional em disco;
    • Módulos convertidos para formato PE podem usar padrão wchar Funções e constantes C com Unicode (por exemplo, L"abc");
    • O tempo de execução Wine C adicionou suporte para vinculação com binários construídos em MinGW, que é usado por padrão em vez do tempo de execução MinGW ao construir DLLs;
  • Subsistema gráfico
    • Adicionado suporte para trabalhar com vários monitores e adaptadores gráficos, incluindo a capacidade de alterar configurações dinamicamente;
    • O driver da API gráfica Vulkan foi atualizado para estar em conformidade com a especificação Vulkan 1.1.126;
    • A biblioteca WindowsCodecs oferece a capacidade de converter formatos raster adicionais, incluindo formatos com paleta indexada;
  • Direct3D
    • Ao executar aplicativos Direct3D em tela inteira, a chamada do protetor de tela é bloqueada;
    • DXGI (DirectX Graphics Infrastructure) adicionou suporte para informar um aplicativo quando sua janela é minimizada, o que permite ao aplicativo reduzir o desempenho de operações que consomem muitos recursos ao minimizar a janela;
    • Para aplicações que utilizam DXGI, agora é possível alternar entre o modo de tela inteira e de janela usando a combinação Alt+Enter;
    • Os recursos de implementação do Direct3D 12 foram expandidos, por exemplo, agora há suporte para alternar entre os modos de tela inteira e janela, alterar os modos de tela, dimensionar a saída e gerenciar o intervalo de substituição do buffer de renderização (intervalo de troca);
    • Tratamento aprimorado de diversas situações limítrofes, como o uso de valores de entrada fora do intervalo para testes de transparência e profundidade, renderização com texturas e buffers refletidos e uso de objetos DirectDraw incorretos clipe, criando dispositivos Direct3 para janelas incorretas, usando áreas visíveis cujos valores mínimos dos parâmetros são iguais aos máximos, etc.
    • Direct3D 8 e 9 fornecem rastreamento mais preciso "sujo» áreas de texturas carregadas;
    • O tamanho do espaço de endereço necessário ao carregar texturas 3D compactadas usando o método S3TC foi reduzido (em vez de carregar inteiramente, as texturas são carregadas em pedaços).
    • Interface implementada ID3D11Multithread proteger seções críticas em aplicativos multithread;
    • Várias melhorias e correções relacionadas aos cálculos de iluminação foram feitas para aplicativos DirectDraw mais antigos;
    • Implementadas chamadas adicionais para obter informações sobre shaders na API ShaderReflection;
    • wined3d agora suporta bolha Baseado em CPU para processamento de recursos compactados;
    • O banco de dados de placas gráficas reconhecidas em Direct3D foi ampliado;
    • Adicionadas novas chaves de registro HKEY_CURRENT_USER\Software\Wine\Direct3D: “shader_backend” (backend para trabalhar com shaders: “glsl” para GLSL, “arb” para vértice/fragmento ARB e “none” para desabilitar o suporte a shaders), “strict_shader_math” ( 0x1 - ativar, 0x0 - desativar a conversão de shader Direct3D). A chave "UseGLSL" foi descontinuada (deveria usar "shader_backend");
  • D3DX
    • Foi implementado suporte para o mecanismo de compactação de textura 3D S3TC (S3 Texture Compression);
    • Adicionadas implementações corretas de operações como preenchimento de textura e superfícies não mapeáveis;
    • Várias melhorias e correções foram feitas na estrutura de criação efeitos visuais;
  • Kernel (interfaces do kernel do Windows)
    • A maioria das funções usadas no Kernel32 foram movidas para
      KernelBase, acompanhando mudanças na arquitetura do Windows;

    • Capacidade de misturar DLLs de 32 e 64 bits em diretórios usados ​​para carregamento. Garante que as bibliotecas que não correspondem à profundidade de bits atual sejam ignoradas (32/64), caso mais adiante no caminho seja possível encontrar uma biblioteca que seja correta para a profundidade de bits atual;
    • Para drivers de dispositivos, a emulação de objetos do kernel foi melhorada;
    • Objetos de sincronização implementados trabalhando no nível do kernel, como spin locks, mutexes rápidos e variáveis ​​anexadas a um recurso;
    • Garante que as aplicações sejam corretamente informadas sobre o estado da bateria;
  • Interface de usuário e integração de desktop
    • As janelas minimizadas agora são exibidas usando uma barra de título em vez de um ícone no estilo do Windows 3.1;
    • Adicionados novos estilos de botão SplitButton (botão com uma lista suspensa de ações) e Links de comando (links em caixas de diálogo usadas para passar para a próxima etapa);
    • Foram criados links simbólicos para as pastas ‘Downloads’ e ‘Templates’, apontando para os diretórios correspondentes nos sistemas Unix;
  • Dispositivos de entrada
    • Na inicialização, os drivers de dispositivo Plug & Play necessários são instalados e carregados;
    • Suporte aprimorado para controladores de jogo, incluindo um mini-joystick (interruptor de chapéu), volante, pedais de acelerador e freio.
    • O suporte para a antiga API de joystick do Linux usada em kernels Linux anteriores à versão 2.2 foi descontinuado;
  • . NET
    • O mecanismo Mono foi atualizado para a versão 4.9.4 e agora inclui partes da estrutura Windows Presentation Foundation (WPF);
    • Adicionada a capacidade de instalar complementos com Mono e Gecko em um diretório comum, colocando arquivos na hierarquia /usr/share/wine em vez de copiá-los para novos prefixos;
  • Oportunidades de networking
    • O mecanismo do navegador Wine Gecko, usado na biblioteca MSHTML, foi atualizado para a versão 2.47.1. O suporte para novas APIs HTML foi implementado;
    • MSHTML agora oferece suporte a elementos SVG;
    • Adicionadas muitas novas funções VBScript (por exemplo, manipuladores de erros e exceções, funções Hora, Dia, Mês, String, LBound, RegExp.Replace, РScriptTypeInfo_* e ScriptTypeComp_Bind*, etc.);
    • Forneceu preservação do estado do código em VBScript e JScript (persistência de script);
    • Adicionada uma implementação inicial do serviço HTTP (WinHTTP) e da API associada (HTTPAPI) para aplicações cliente e servidor que enviam e recebem solicitações usando o protocolo HTTP;
    • Implementada a capacidade de obter configurações de proxy HTTP via DHCP;
    • Adicionado suporte para redirecionamento de solicitações de autenticação por meio do serviço Microsoft Passport;
  • Criptografia
    • Implementado suporte para chaves criptográficas de curva elíptica (ECC) ao usar GnuTLS;
    • Adicionada a capacidade de importar chaves e certificados de arquivos no formato PFX;
    • Adicionado suporte para esquema de geração de chaves baseado na senha PBKDF2;
  • Texto e fontes
    • A implementação da API DirectWrite adicionou suporte para recursos OpenType relacionados a posicionamento de glifo, que estão habilitados por padrão para o estilo latino, incluindo kerning;
    • Segurança aprimorada para processamento de dados de fontes, verificando a exatidão de várias tabelas de dados antes de usá-las;
    • As interfaces DirectWrite foram alinhadas com o SDK mais recente;
  • Som e vídeo
    • Uma nova implementação da API de som foi proposta XÁudio2, construído com base no projeto Fáudio. Usar FAudio no Wine permite obter maior qualidade de som em jogos e usar recursos como mixagem de volume e efeitos sonoros avançados;
    • Um grande número de novas chamadas foram adicionadas à implementação da estrutura Media Foundation, incluindo suporte para filas assíncronas integradas e personalizadas, API Source Reader, Media Session, etc.
    • O filtro de captura de vídeo passou a usar a API v4l2 em vez da API v4l1, o que expandiu a gama de câmeras suportadas;
    • Os decodificadores AVI, MPEG-I e WAVE integrados foram removidos, em vez dos quais agora são usados ​​​​o sistema GStreamer ou QuickTime;
    • Adicionado um subconjunto de APIs de configuração VMR7;
    • Adicionado suporte para ajustar o volume de canais individuais aos drivers de som;
  • Internacionalização
    • Tabelas Unicode atualizadas para a versão 12.1.0;
    • Implementado suporte para normalização Unicode;
    • Fornecida instalação automática da região geográfica (HKEY_CURRENT_USER\Control Panel\International\Geo) com base na localidade atual;
  • RPC/COM
    • Adicionado suporte para estruturas e arrays complexos ao typelib;
    • Adicionada implementação inicial da biblioteca de tempo de execução do Windows Script;
    • Adicionada implementação inicial da biblioteca ADO (Microsoft ActiveX Data Objects);
  • Instaladores
    • O suporte para entrega de patches (Patch Files) foi implementado para o instalador MSI;
    • O utilitário WUSA (Windows Update Standalone Installer) agora tem a capacidade de instalar atualizações no formato .MSU;
  • Plataforma ARM
    • Para a arquitetura ARM64, o suporte para desenrolamento de pilha foi adicionado ao ntdll. Adicionado suporte para conexão de bibliotecas libunwind externas;
    • Para a arquitetura ARM64, foi implementado suporte para proxies contínuos para interfaces de objetos;
  • Ferramentas de Desenvolvimento / Winelib
    • Adicionada a capacidade de usar o depurador do Visual Studio para depurar remotamente aplicativos em execução no Wine;
    • A biblioteca DBGENG (Debug Engine) foi parcialmente implementada;
    • Os binários compilados para Windows não dependem mais do libwine, permitindo que sejam executados no Windows sem dependências adicionais;
    • Adicionada opção '--sysroot' ao Resource Compiler e IDL Compiler para determinar o caminho para arquivos de cabeçalho;
    • Adicionadas opções ‘—target’, ‘—wine-objdir’, ‘—wine-objdir’ ao winegcc
      ‘—winbuild’ e ‘-fuse-ld’, que simplificam a configuração do ambiente para compilação cruzada;

  • Aplicativos incorporados
    • Implementou um utilitário CHCP para configurar a codificação do console;
    • Foi implementado o utilitário MSIDB para manipulação de bancos de dados no formato MSI;
  • Otimização de desempenho
    • Várias funções de temporização foram migradas para usar funções de temporizador de sistema de alto desempenho, reduzindo a sobrecarga no loop de renderização de muitos jogos;
    • Adicionada a capacidade de usar Ext4 no FS regime trabalhar sem distinção entre maiúsculas e minúsculas;
    • O desempenho do processamento de um grande número de elementos em caixas de diálogo de exibição de lista operando no modo LBS_NODATA foi otimizado;
    • Adicionada implementação mais rápida de bloqueios SRW (Slim Reader/Writer) para Linux, traduzidos para Futex;
  • Dependências externas
    • Para montar módulos no formato PE, é utilizado o compilador cruzado MinGW-w64;
    • A implementação do XAudio2 requer a biblioteca FAudio;
    • Para rastrear alterações de arquivos em sistemas BSD
      a biblioteca Inotify é usada;

    • Para lidar com exceções na plataforma ARM64, é necessária a biblioteca Unwind;
    • Em vez de Video4Linux1, a biblioteca Video4Linux2 agora é necessária.

Fonte: opennet.ru

Adicionar um comentário