Após um ano de desenvolvimento e 28 versões experimentais lançamento estável da implementação aberta da Win32 API — , que incorpora mais de 7400 mudanças. Entre os principais avanços da nova versão, destaca-se a entrega de módulos incorporados do Wine no formato PE, suporte a configurações de vários monitores, nova implementação da API de áudio XAudio2 e suporte à API gráfica Vulkan 1.1.
No Wine a operação plena de 4869 (anteiormente 4737) programas para Windows, além de outros 4136 (anteiormente 4045) programas que funcionam bem com configurações adicionais e DLLs externas. Em 3635 programas, observam-se pequenos problemas de funcionamento que não impedem o uso das principais funções das aplicações.
Principais Wine 5.0:
- Módulos no formato PE
- Com um compilador MinGW, a maioria dos módulos do Wine agora é compilada no formato de arquivos executáveis PE (Portable Executable, utilizado no Windows) em vez de ELF. O uso de PE resolve problemas de suporte a diferentes esquemas de proteção contra cópia, que realizam a verificação de identidade dos módulos do sistema no disco e na memória;
- Os arquivos executáveis PE agora são copiados para o diretório ~/.wine ($WINEPREFIX) em vez de usar arquivos DLL fictícios, tornando a instalação mais semelhante a uma instalação real do Windows, à custa de um maior consumo de espaço em disco;
- Os módulos convertidos para o formato PE podem usar funções padrão do C e constantes com unicode (por exemplo, L"abc");
- No Wine, foi adicionada suporte à vinculação de arquivos binários compilados no MinGW, que ao compilar DLL agora é utilizada por padrão em vez do runtime do MinGW;
- Subsistema gráfico
- Foi adicionada a capacidade de trabalhar com múltiplos monitores e adaptadores gráficos, incluindo a possibilidade de alterar as configurações dinamicamente;
- O driver para a API gráfica Vulkan foi atualizado, adequando-se à especificação Vulkan 1.1.126;
- Na biblioteca WindowsCodecs foi implementada a capacidade de converter formatos raster adicionais, incluindo formatos com paleta indexada;
- Direct3D
- Durante a execução de aplicações em tela cheia do Direct3D, foi garantido o bloqueio da chamada do protetor de tela;
- No DXGI (Infraestrutura Gráfica do DirectX), foi adicionada a capacidade de informar à aplicação sobre a minimização de sua janela, permitindo que a aplicação reduza a realização de operações que consomem recursos ao minimizar a janela.
- Para aplicativos que utilizam DXGI, foi implementada a capacidade de alternar entre o modo de tela cheia e o modo de janela usando a combinação Alt+Enter;
- As capacidades de implementação do Direct3D 12 foram ampliadas, por exemplo, agora há suporte para alternar entre o modo de tela cheia e o modo de janela, mudar modos de tela, saída com escala e controle do intervalo de troca de buffer de exibição (swap interval);
- Melhorou o tratamento de várias situações limite, como a aplicação de valores de entrada que excedem os intervalos permitidos para testes de transparência e profundidade, renderização com texturas refletidas e buffers, uso de objetos DirectDraw inválidos, , criação de dispositivos Direct3 para janelas inválidas, uso de áreas visíveis cujos valores mínimos são iguais aos máximos, etc.
- No Direct3D 8 e 9, há um rastreamento mais preciso das áreas "" de texturas carregadas;
- Reduzido o tamanho do espaço de endereço necessário ao carregar texturas 3D comprimidas pelo método S3TC (em vez de carregar completamente, as texturas são carregadas em pedaços).
- Foi implementada a interface para proteger seções críticas em aplicativos multi-thread;
- Para aplicativos antigos do DirectDraw, foram feitas várias melhorias e correções relacionadas ao cálculo de iluminação;
- Foram implementadas chamadas adicionais para obter informações sobre shaders na API ;
- No wined3d, foi adicionado suporte ao baseado em CPU para processar recursos comprimidos;
- Ampliado o banco de dados de placas gráficas reconhecidas no Direct3D;
- Novas chaves de registro foram adicionadas em HKEY_CURRENT_USER\Software\Wine\Direct3D: "shader_backend" (backend para trabalhar com shaders: "glsl" para GLSL, "arb" para ARB vertex/fragment e "none" para desativar o suporte a shaders), "strict_shader_math" (0x1 — ativar, 0x0 — desativar a conversão de shaders do Direct3D). A chave "UseGLSL" foi declarada obsoleta (deve-se usar "shader_backend");
- D3DX
- Foi implementado o suporte ao mecanismo de compressão de texturas 3D S3TC (S3 Texture Compression);
- Foram adicionadas implementações corretas de operações como preenchimento de texturas e superfícies não mapeáveis (unmappable);
- Foram feitas várias melhorias e correções no framework de criação ;
- Núcleo (interfaces do núcleo Windows)
- A maioria das funções utilizadas no Kernel32 foi movida para
KernelBase, seguindo as mudanças na arquitetura do Windows; - Capacidade de misturar DLLs de 32 e 64 bits em diretórios utilizados para carga. Garantido o descarte de bibliotecas que não correspondem à arquitetura atual (32/64), caso uma biblioteca correta para a arquitetura atual possa ser encontrada mais adiante no caminho;
- Para drivers de dispositivos, a emulação de objetos de kernel foi aprimorada;
- Implementados objetos de sincronização que operam a nível de kernel, como spinlocks, mutexes rápidos e variáveis associadas a recursos;
- Garantido que os aplicativos sejam informados corretamente sobre o estado da bateria;
- A maioria das funções utilizadas no Kernel32 foi movida para
- Interface do usuário e integração com a área de trabalho
- As janelas minimizadas agora são exibidas com um título, em vez de um ícone no estilo Windows 3.1;
- Novos estilos de botões adicionados (botão com um menu suspenso de ações) e (links em caixas de diálogo usados para avançar para a próxima fase);
- Links simbólicos para as pastas 'Downloads' e 'Templates' foram criados, apontando para os diretórios correspondentes em sistemas Unix;
- Dispositivos de entrada
- Na inicialização, a instalação e o carregamento dos drivers de dispositivos Plug & Play foram garantidos;
- Apoio melhorado para controladores de jogos, incluindo mini-joysticks (hat switches), volantes e pedais de aceleração e freio.
- Apoio ao antigo API de Linux para interagir com joysticks, usado em kernels do Linux até a versão 2.2, foi descontinuado;
- .NET
- O motor Mono foi atualizado para a versão 4.9.4 e agora inclui partes do framework Windows Presentation Foundation (WPF);
- Adicionada a capacidade de instalar complementos com Mono e Gecko em um único diretório compartilhado, com arquivos organizados na hierarquia /usr/share/wine, em vez de copiar para novos prefixos;
- Capacidades de rede
- O motor de navegador Wine Gecko, que é utilizado na biblioteca MSHTML, foi atualizado para a versão 2.47.1. Suporte aos novos APIs HTML foi implementado;
- Suporte a elementos SVG foi implementado no MSHTML;
- Muitas novas funções VBScript foram adicionadas (como manipuladores de erros e exceções, funções Hour, Day, Month, String, LBound, RegExp.Replace, RScriptTypeInfo_* e ScriptTypeComp_Bind* etc.);
- A persistência do estado do código em VBScript e JScript foi garantida;
- 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 foi adicionada;
- Implementada a possibilidade de receber parâmetros de configuração de proxy HTTP através de DHCP;
- Adicionada a suporte para redirecionamento de solicitações de autenticação através do serviço Microsoft Passport;
- Criptografia
- Implementada a suporte para chaves criptográficas baseadas em curvas elípticas (ECC) ao utilizar GnuTLS;
- Adicionada a capacidade de importar chaves e certificados de arquivos no formato PFX;
- Adicionada a suporte para esquema de geração de chaves baseado em senha PBKDF2;
- Texto e fontes
- Na implementação da API DirectWrite, adicionada a suporte para funcionalidades OpenType relacionadas a , que estão habilitadas por padrão para a tipografia Latin, incluindo kerning;
- Aumentada a segurança do processamento de dados de fonte através da verificação da correção de diversas tabelas de dados antes de seu uso;
- As interfaces DirectWrite foram atualizadas para o SDK recente;
- Áudio e vídeo
- Proposta uma nova implementação da API de áudio , construída com base no projeto . O uso do FAudio no Wine permite obter uma qualidade de som superior em jogos e utilizar funcionalidades como mixagem de volumes e efeitos sonoros avançados;
- Adicionados um grande número de novas chamadas à implementação do framework Media Foundation, incluindo suporte para filas assíncronas integradas e personalizadas, API Source Reader, Media Session, etc.
- O filtro de captura de vídeo foi atualizado para utilizar a API v4l2 em vez da API v4l1, o que permitiu ampliar a gama de câmeras suportadas;
- Decodificadores AVI, MPEG-I e WAVE embutidos foram removidos, sendo agora utilizados os GStreamer ou QuickTime do sistema;
- Adicionado um subconjunto de APIs de configuração VMR7;
- Nos drivers de áudio, adicionada a suporte para ajuste de volume de canais individuais;
- Internacionalização
- As tabelas Unicode foram atualizadas para a versão 12.1.0;
- Implementada a suporte para normalização Unicode;
- A instalação automática da região geográfica (HKEY_CURRENT_USER\Control Panel\International\Geo) é baseada na localidade atual;
- RPC/COM
- O typelib adicionou suporte para estruturas complexas e arrays;
- Adicionada a implementação inicial da biblioteca de runtime do Windows Script;
- Adicionada a implementação inicial da biblioteca ADO (Microsoft ActiveX Data Objects);
- Instaladores
- Para o instalador MSI, implementada a suporte para fornecimento de patches (Patch Files);
- Na utilidade WUSA (Windows Update Standalone Installer), agora é possível instalar atualizações no formato .MSU;
- Plataforma ARM
- Para a arquitetura ARM64, foi adicionada a suporte para desempilhamento (stack unwinding) no ntdll. Suporte para a ligação de bibliotecas externas libunwind foi adicionado.
- Para a arquitetura ARM64, foi implementado suporte para proxies sem stub (stubless proxies) para interfaces de objetos.
- Ferramentas de desenvolvimento / Winelib
- Foi adicionada a possibilidade de aplicar o depurador do Visual Studio para depuração remota de aplicativos executados no Wine.
- A biblioteca DBGENG (Debug Engine) foi parcialmente implementada.
- Os arquivos executáveis compilados para Windows não dependem mais do libwine, permitindo sua execução no Windows sem dependências adicionais.
- No Resource Compiler e no IDL Compiler, foi adicionada a opção '—sysroot' para definir o caminho para os arquivos de cabeçalho.
- No winegcc, foram adicionadas as opções '—target', '—wine-objdir',
‘—winebuild’ e ‘-fuse-ld’, simplificando a configuração do ambiente para cross-compilation.
- Aplicativos Embutidos
- Foi implementada a ferramenta CHCP para configurar a codificação do console.
- Foi implementada a ferramenta MSIDB para manipulação de bancos de dados no formato MSI.
- Otimização de desempenho
- Várias funções relacionadas ao tempo foram traduzidas para utilizar funções de sistema de alto desempenho para temporizadores, reduzindo a sobrecarga no ciclo de renderização de muitos jogos.
- Adicionada a possibilidade de uso no sistema de arquivos Ext4 de operação sem distinção entre maiúsculas e minúsculas.
- Foi realizada uma otimização de desempenho na manipulação de um grande número de elementos em diálogos de listas com modo LBS_NODATA.
- Foi adicionada uma implementação mais rápida de bloqueios SRW (Slim Reader/Writer) para Linux, traduzida para Futex.
- Dependências externas
- Para compilar módulos no formato PE, foi utilizado o cross-compiler MinGW-w64.
- A implementação do XAudio2 requer a biblioteca FAudio.
- Para rastrear mudanças em arquivos em sistemas BSD
foi utilizada a biblioteca Inotify. - Para tratamento de exceções na plataforma ARM64, é necessária a biblioteca Unwind.
- Em vez do Video4Linux1, agora é requerida a biblioteca Video4Linux2.
Fonte: opennet.ru
