Versão estável do Wine 7.0

Após um ano de desenvolvimento e 30 versões experimentais, foi apresentada uma versão estável da implementação aberta da API Win32 - Wine 7.0, que incorporou mais de 9100 alterações. As principais conquistas da nova versão incluem a tradução da maioria dos módulos Wine para o formato PE, suporte para temas, expansão da pilha para joysticks e dispositivos de entrada com interface HID e implementação da arquitetura WoW64 para execução de programas de 32 bits em um Ambiente de 64 bits.

O Wine confirmou o funcionamento completo de 5156 (há um ano 5049) programas para Windows, outros 4312 (há um ano 4227) programas funcionam perfeitamente com configurações adicionais e DLLs externas. 3813 programas (3703 anos atrás) apresentam pequenos problemas operacionais que não interferem no uso das principais funções dos aplicativos.

Principais inovações no Wine 7.0:

  • Módulos em formato PE
    • Quase todas as DLLs foram convertidas para usar o formato de arquivo executável PE (Portable Executable, usado no Windows) em vez de ELF. O uso do 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.
    • Foi implementada a capacidade de interagir módulos PE com bibliotecas Unix usando a chamada de sistema padrão do kernel NT, que permite ocultar o acesso ao código Unix dos depuradores do Windows e monitorar o registro de threads.
    • As DLLs integradas agora são carregadas somente se houver um arquivo PE correspondente no disco, independentemente de ser uma biblioteca real ou um stub. Essa alteração permite que o aplicativo sempre veja a ligação correta aos arquivos PE. Para desabilitar esse comportamento, você pode usar a variável de ambiente WINEBOOTSTRAPMODE.
  • Uau64
    • A arquitetura WoW64 (Windows-on-Windows de 64 bits) foi implementada, permitindo executar aplicativos Windows de 32 bits em processos Unix de 64 bits. O suporte é implementado por meio da conexão de uma camada que converte chamadas do sistema NT de 32 bits em chamadas de 64 bits para NTDLL.
    • As camadas WoW64 são preparadas para a maioria das bibliotecas Unix e permitem que módulos PE de 32 bits acessem bibliotecas Unix de 64 bits. Depois que todos os módulos forem convertidos para o formato PE, será possível executar aplicativos Windows de 32 bits sem instalar bibliotecas Unix de 32 bits.
  • Temas
    • O suporte temático foi implementado. Estão incluídos os temas de design “Light”, “Blue” e “Classic Blue”, que podem ser selecionados através do configurador WineCfg.
    • Adicionada a capacidade de personalizar a aparência de todos os controles da interface por meio de temas. A aparência dos elementos é atualizada automaticamente após alterar o tema do design.
    • O suporte ao tema foi adicionado a todos os aplicativos Wine integrados. Os aplicativos foram adaptados para telas com alta densidade de pixels (High DPI).
  • Subsistema gráfico
    • Uma nova biblioteca Win32u foi adicionada, que inclui partes das bibliotecas GDI32 e USER32 relacionadas ao processamento gráfico e gerenciamento de janelas no nível do kernel. No futuro, o trabalho começará na portabilidade de componentes de driver como winex32.drv e winemac.drv para Win11u.
    • O driver Vulkan oferece suporte à especificação 1.2.201 da API gráfica Vulkan.
    • Fornecido suporte para saída de objetos geométricos hachurados por meio da API Direct2D, com a capacidade de verificar se um clique acertou (teste de acerto).
    • A API Direct2D fornece suporte inicial para efeitos visuais aplicados usando a interface ID2D1Effect.
    • A API Direct2D adicionou suporte para a interface ID2D1MultiThread, que é usada para organizar o acesso exclusivo a recursos em aplicativos multithread.
    • O conjunto de bibliotecas WindowsCodecs fornece suporte para decodificação de imagens no formato WMP (Windows Media Photo) e codificação de imagens no formato DDS (DirectDraw Surface). Não oferecemos mais suporte à codificação de imagens no formato ICNS (para macOS), que não é compatível com Windows.
  • Direct3D
    • O novo mecanismo de renderização foi significativamente melhorado, traduzindo chamadas Direct3D para a API gráfica Vulkan. Na maioria das situações, o nível de suporte para Direct3D 10 e 11 no mecanismo baseado em Vulkan foi levado à paridade com o mecanismo mais antigo baseado em OpenGL. Para habilitar o mecanismo de renderização Vulkan, defina a variável de registro Direct3D "renderer" como "vulkan".
    • Muitos recursos do Direct3D 10 e 11 são implementados, incluindo contextos diferidos, objetos de estado operando no contexto do dispositivo, deslocamentos persistentes em buffers, limpeza de visualizações de textura fora de ordem, cópia de dados entre recursos em formatos sem tipo (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS), etc. .
    • Adicionado suporte para configurações de vários monitores, permitindo selecionar um monitor para exibir um aplicativo Direct3D em modo de tela inteira.
    • A API DXGI fornece correção gama de tela, que pode ser usada por aplicativos baseados em Direct3D 10 e 11 para alterar o brilho da tela. Recuperação habilitada de contadores de framebuffers virtuais (SwapChain).
    • Direct3D 12 adiciona suporte para assinaturas raiz da versão 1.1.
    • No código de renderização por meio da API Vulkan, a eficiência do processamento de consultas foi melhorada quando o sistema suporta a extensão VK_EXT_host_query_reset.
    • Adicionada a capacidade de gerar framebuffers virtuais (SwapChain) via GDI se OpenGL ou Vulkan não puderem ser usados ​​​​para exibição, por exemplo, ao enviar para uma janela de diferentes processos, por exemplo, em programas baseados na estrutura CEF (Chromium Embedded Framework).
    • Ao usar o backend do shader GLSL, o modificador "preciso" é garantido para as instruções do shader.
    • A API DirectDraw adiciona suporte para renderização 3D na memória do sistema usando dispositivos de software como "RGB", "MMX" e "Ramp".
    • As placas AMD Radeon RX 3M, AMD Radeon RX 5500/6800 XT/6800 XT, AMD Van Gogh, Intel UHD Graphics 6900 e NVIDIA GT 630 foram adicionadas ao banco de dados da placa gráfica Direct1030D.
    • A chave “UseGLSL” foi removida do registro HKEY_CURRENT_USER\Software\Wine\Direct3D, em vez de, a partir do Wine 5.0, você precisa usar “shader_backend”.
    • Para oferecer suporte ao Direct3D 12, agora você precisa de pelo menos a versão 3 da biblioteca vkd1.2d.
  • D3DX
    • A implementação do D3DX 10 melhorou o suporte para a estrutura de efeitos visuais e adicionou suporte para o formato de imagem Windows Media Photo (JPEG XR)
    • Adicionadas funções de criação de textura fornecidas no D3DX10, como D3DX10CreateTextureFromMemory().
    • As interfaces de software ID3DX10Sprite e ID3DX10Font foram parcialmente implementadas.
  • Som e vídeo
    • Os complementos GStreamer para DirectShow e a estrutura Media Foundation são combinados em um backend WineGStreamer comum, o que deve simplificar o desenvolvimento de novas APIs de decodificação de conteúdo.
    • Com base no backend WineGStreamer, os objetos Windows Media são implementados para leitura síncrona e assíncrona.
    • A implementação da estrutura Media Foundation foi ainda mais refinada, o suporte para a funcionalidade IMFMPediaPlayer e o alocador de amostra foi adicionado, e o suporte para buffers de renderização EVR e SAR foi melhorado.
    • A biblioteca wineqtdecoder, que fornece um decodificador para o formato QuickTime, foi removida (todos os codecs agora usam GStreamer).
  • Dispositivos de entrada
    • A pilha para dispositivos de entrada que suportam o protocolo HID (Dispositivos de Interface Humana) foi significativamente aprimorada, fornecendo recursos como análise de descritores HID, processamento de mensagens HID e fornecimento de drivers mini-HID.
    • Nos backends do driver winebus.sys, a tradução das descrições dos dispositivos em mensagens HID foi melhorada.
    • Adicionado um novo backend DirectInput para joysticks que suportam o protocolo HID. A capacidade de usar efeitos de feedback em joysticks foi implementada. Painel de controle de joystick aprimorado. Interação otimizada com dispositivos compatíveis com XInput. No WinMM, o suporte ao joystick foi movido para DInput, em vez de usar o backend evdev no Linux e IOHID no macOS IOHID. O antigo driver de joystick winejoystick.drv foi removido.
    • Novos testes foram adicionados ao módulo DInput, baseados na utilização de dispositivos HID virtuais e não necessitando de dispositivo físico.
  • Texto e fontes
    • Adicionado objeto Font Set ao DirectWrite.
    • RichEdit implementa corretamente a interface TextHost.
  • Kernel (interfaces do kernel do Windows)
    • Ao executar um arquivo executável não identificado (como 'wine foo.msi') no Wine, start.exe agora é chamado, o que invoca manipuladores associados ao tipo de arquivo.
    • Adicionado suporte para mecanismos de sincronização NtAlertThreadByThreadId e NtWaitForAlertByThreadId, semelhantes aos futexes no Linux.
    • Adicionado suporte para objetos de depuração do NT usados ​​para depurar funções do kernel.
    • Adicionado suporte para chaves de registro dinâmicas para salvar dados de desempenho.
  • Tempo de execução C
    • O tempo de execução C implementa um conjunto completo de funções matemáticas, que são principalmente transportadas da biblioteca Musl.
    • Todas as plataformas de CPU fornecem suporte correto para funções de ponto flutuante.
  • Oportunidades de networking
    • Modo de compatibilidade aprimorado para Internet Explorer 11 (IE11), que agora é usado por padrão para processar documentos HTML.
    • A biblioteca mshtml implementa o modo JavaScript ES6 (ECMAScript 2015), que fornece suporte para recursos como a expressão let e o objeto Map.
    • A instalação de pacotes MSI com adições ao mecanismo Gecko no diretório de trabalho do Wine agora é feita quando necessário, e não durante uma atualização do Wine.
    • Adicionado suporte para o protocolo DTLS.
    • Foi implementado o serviço NSI (Network Store Interface), que armazena e transmite informações sobre roteamento e interfaces de rede do computador para outros serviços.
    • Os manipuladores da API WinSock, como setsockopt e getockopt, foram movidos para NTDLL e o driver afd.sys para se adequar à arquitetura do Windows.
    • Os próprios arquivos de banco de dados de rede do Wine, como /etc/protocols e /etc/networks, agora são instalados no diretório de trabalho do Wine, em vez de acessar bancos de dados Unix semelhantes.
  • Plataformas alternativas
    • Adicionado suporte para equipamentos Apple baseados em chips M1 ARM (Apple Silicon).
    • O suporte para recursos BCrypt e Secur32 no macOS agora requer a instalação da biblioteca GnuTLS.
    • Executáveis ​​de 32 bits para plataformas ARM agora são criados no modo Thumb-2, semelhante ao Windows. Um pré-carregador é usado para carregar esses arquivos.
    • Para plataformas ARM de 32 bits, foi implementado suporte para desenrolar exceções.
    • Para o FreeBSD, o número de consultas suportadas para informações do sistema de baixo nível, como status da memória e nível de carga da bateria, foi expandido.
  • Aplicativos integrados e ferramentas de desenvolvimento
    • O utilitário reg.exe adicionou suporte para visualizações de registro de 32 e 64 bits. Adicionado suporte para cópia de chaves de registro.
    • O utilitário WineDump adicionou suporte para despejar metadados do Windows e exibir informações detalhadas sobre entradas do CodeView.
    • O Wine Debugger (winedbg) oferece a capacidade de depurar processos de 32 bits a partir de um depurador de 64 bits.
    • A capacidade de carregar bibliotecas incorporadas em arquivos PE foi adicionada ao compilador IDL (widl), o suporte para atributos e construções específicos do WinRT foi fornecido e uma pesquisa de biblioteca específica da plataforma foi implementada.
  • Sistema de montagem
    • Em diretórios específicos de arquitetura, as bibliotecas agora são salvas com nomes que refletem a arquitetura e o tipo de executável, por exemplo, 'i386-windows' para o formato PE e 'x86_64-unix' para bibliotecas unix, permitindo suporte para diferentes arquiteturas em um instalação única do Wine e fornece compilação cruzada do Winelib.
    • Para definir uma opção nos cabeçalhos dos arquivos PE que controla a transição para o uso de DLLs nativas, o sinalizador '--prefer-native option' foi adicionado ao winebuild (o processamento de DLL_WINE_PREATTACH em DllMain foi interrompido).
    • Adicionado suporte para a versão 4 do formato de dados de depuração Dwarf, que agora é usado por padrão ao construir bibliotecas Wine.
    • Adicionada opção de compilação '—enable-build-id' para salvar identificadores de compilação exclusivos em arquivos executáveis.
    • Adicionado suporte para usar o compilador Clang no modo de compatibilidade MSVC.
  • Miscelânea
    • Os nomes dos diretórios típicos no shell do usuário (Windows Shell) são fornecidos ao esquema usado a partir do Windows Vista, ou seja, Em vez de 'Meus Documentos', um diretório 'Documentos' é criado e a maioria dos dados é salva no diretório 'AppData'.
    • O suporte para a especificação OpenCL 1.2 foi adicionado à camada da biblioteca OpenCL.
    • O driver WinSpool adicionou suporte para diferentes tamanhos de página durante a impressão.
    • Adicionado suporte inicial para MSDASQL, o provedor Microsoft OLE DB para drivers ODBC.
    • O motor Wine Mono com implementação da plataforma .NET foi atualizado para a versão 7.0.0.
    • Os dados Unicode foram atualizados para a especificação Unicode 14.
    • A árvore de origem inclui as bibliotecas Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt e Zlib, que são compiladas no formato PE e não requerem versão no formato Unix. Ao mesmo tempo, essas bibliotecas também podem ser importadas do sistema para usar montagens externas em vez de opções PE integradas.

Fonte: opennet.ru

Adicionar um comentário