Wine é uma camada de compatibilidade de código aberto para executar aplicativos Windows em sistemas operacionais baseados em Unix, como Linux e macOS. Ele permite que os usuários executem software Windows sem a necessidade de um sistema operacional Windows.
Wine significa “Wine Is Not an Emulator” porque não emula um ambiente Windows completo, mas traduz as chamadas do sistema Windows em seus equivalentes no sistema host. Isso permite que os aplicativos do Windows sejam executados com mais eficiência e melhor desempenho do que se fossem emulados.
Características
Compatibilidade Binária
- Carrega programas e bibliotecas do Windows 9x/NT/2000/XP/Vista/7/8/10 e Windows 3.x de 64 bits, 32 bits e 16 bits
- Layout de memória compatível com Win32, tratamento de exceções, threads e processos
- Projetado para sistemas operacionais compatíveis com POSIX (por exemplo, Linux, macOS e FreeBSD) e Android
- Compatibilidade “bug por bug” com o Windows
Suporte API Win32
- Suporte para jogos e aplicativos baseados em DirectX (suporte Direct3D até DirectX 12)
- Suporte para jogos e aplicativos baseados em OpenGL e Vulkan
- Suporte DirectShow com uso de GStreamer para codecs
- Direct2D, suporte DirectWrite
- APIs de áudio MMDevice, XAudio, WinMM e DirectSound são suportadas
- Impressão via driver PostScript para o sistema de impressão host (geralmente CUPS)
- Driver de metarquivo aprimorado (EMF) e metarquivo do Windows (WMF)
- Desktop-in-a-box ou janelas misturáveis
Permite que o programa Windows faça interface com:
- Gráficos baseados em X11 que permitem exibição remota em qualquer terminal X
- Gráficos baseados em macOS e Android
- Fontes X11, TrueType (.ttf/.ttc) e Windows Bitmap (.fon)
- Dispositivos de som via ALSA, OSS, PulseAudio, Core Audio, etc.
- Teclados multilíngues e suporte ao método de entrada CJK via XIM
- Modems, dispositivos seriais
- Redes (TCP/IP e IPX)
- Scanners ASPI
- Tablets Windows via XInput (por exemplo, Wacom)
- Dispositivos de captura de vídeo via v4l2
- Dispositivos HID via IOHid (MacOS), evdev (Linux), hidraw (Linux), SDL2
Cobertura e portabilidade de API
- Projetado para compatibilidade binária e de origem com código Win32
- Conjunto de testes da API Win32 para garantir compatibilidade
- Compilável em uma ampla variedade de compiladores C
- Permite a mistura de código Win32 e POSIX
- Permite a mistura de binários ELF (.so) e PE (.dll/.exe) em um espaço de endereço
- Arquivos de cabeçalho compatíveis com Win32
- Documentação API gerada automaticamente
- Compilador de recursos
- Compilador de mensagens
- Compilador IDL
- Amplo suporte Unicode
- Internacionalização – Wine suporta 16 idiomas
- Depurador integrado e mensagens de rastreamento configuráveis
- Suporte para verificador de memória externa usando Valgrind
- Exemplos de programas
O que há de novo
A equipe Wine tem o orgulho de anunciar que a versão estável Wine 9.0 já está disponível.
Uau64
- Todas as transições do código Windows para Unix passam pela interface syscall do NT. Este é um marco importante que marca a conclusão do trabalho plurianual de re-arquitetura para converter módulos para o formato PE e introduzir uma fronteira adequada entre os mundos Windows e Unix.
- Todos os módulos que chamam uma biblioteca Unix contêm conversões WoW64 para permitir a chamada da biblioteca Unix de 64 bits a partir do código PE de 32 bits. Isso significa que é possível executar aplicativos Windows de 32 bits em uma instalação Unix puramente de 64 bits. Isso é chamado de novo modo WoW64, em oposição ao antigo modo WoW64, onde aplicativos de 32 bits são executados dentro de um processo Unix de 32 bits.
- O novo modo WoW64 ainda não está habilitado por padrão. Ele pode ser habilitado passando a opção –enable-archs=i386,x86_64 para configurar. Espera-se que isso funcione para a maioria dos aplicativos, mas ainda existem algumas limitações, em particular:
- Falta de suporte para código de 16 bits.
- Desempenho reduzido do OpenGL e falta de suporte à extensão ARB_buffer_storage.
- O novo modo WoW64 finalmente permite que aplicativos de 32 bits sejam executados em versões recentes do macOS que removeram o suporte para processos Unix de 32 bits.
Motorista Wayland
- Existe um driver gráfico experimental Wayland. Ainda é um trabalho em andamento, mas já implementa muitos recursos, como gerenciamento básico de janelas, vários monitores, escala de alto DPI, eventos de movimento relativo e suporte Vulkan.
- O driver Wayland ainda não está habilitado por padrão. Ele pode ser habilitado por meio da chave de registro HKCU\Software\Wine\Drivers executando:
- wine reg.exe adicionar HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland
- e depois certificando-se de que a variável de ambiente DISPLAY não esteja definida.
Arm64
- A conclusão da separação PE/Unix significa que é possível executar binários existentes do Windows no ARM64.
- O carregador suporta o carregamento de módulos Arm64X e ARM64EC.
- A interface de emulação x86 de 32 bits é implementada. Nenhuma biblioteca de emulação é fornecida com o Wine neste momento, mas uma biblioteca externa que exporta a interface pode ser usada, especificando seu nome na chave de registro HKLM\Software\Microsoft\Wow64\x86. O emulador FEX implementa esta interface quando construído como PE.
- Há suporte inicial para a construção do Wine para a arquitetura ARM64EC, usando um conjunto de ferramentas LLVM experimental. Assim que o conjunto de ferramentas estiver pronto, ele será usado para fazer uma construção adequada do ARM64X e habilitar a emulação x86 de 64 bits.
Gráficos
- O driver PostScript foi reimplementado para funcionar a partir de arquivos de spool no formato Windows e evitar chamadas diretas do lado Unix.
- O tema WinRT suporta uma opção de tema escuro, com uma alternância correspondente no WineCfg.
- O driver Vulkan suporta até a versão 1.3.272 da especificação Vulkan.
- Várias funções do GdiPlus são otimizadas para melhor desempenho gráfico.
Direct3D
- O fluxo de comando multithread fica suspenso em vez de girar quando não está processando comandos de renderização. Isto reduz o consumo de energia em programas que não ocupam toda a largura de banda disponível do fluxo de comandos. O consumo de energia deve ser comparável a quando o fluxo de comando multithread está desabilitado.
- Os efeitos Direct3D 10 suportam muito mais instruções.
- Várias otimizações foram feitas no núcleo do WineD3D e no backend do Vulkan.
- O renderizador Vulkan valida adequadamente se os recursos necessários são suportados pelo dispositivo subjacente e relata o nível de recurso Direct3D correspondente ao aplicativo.
- D3DXFillTextureTX e D3DXFillCubeTextureTX são implementados.
- O back-end de shader OpenGL ARB herdado oferece suporte à amostragem de sombra por meio de ARB_fragment_program_shadow.
- O compilador HLSL suporta sinalizadores de compilação majoritária de matrizes.
- D3DXLoadMeshHierarchyFromX e funções relacionadas oferecem suporte ao carregamento de dados do usuário por meio de ID3DXLoadUserData.
Áudio vídeo
- A base de vários módulos DirectMusic é implementada. Muitos testes são adicionados para validar o comportamento do sequenciador dmime e do sintetizador MIDI dmsynth.
- O carregamento de fontes de som DLS1 e DLS2 é implementado, bem como o formato SF2 para compatibilidade com fontes de som MIDI padrão do Linux.
- A reprodução MIDI é implementada em dmsynth, com a integração do software sintetizador da biblioteca FluidSynth e usando DirectSound para saída de áudio.
- O deslocamento Doppler é compatível com DirectSound.
- O decodificador Indeo IV50 Video for Windows é implementado.
DirectShow
- O decodificador DirectX Media Object (DMO) do Windows Media Video (WMV) é implementado.
- O filtro DirectShow Audio Capture é implementado.
- O filtro DirectShow MPEG®’1 Stream Splitter suporta fluxos de vídeo e de sistema, bem como fluxos de áudio.
- O filtro DirectShow MPEG®’1 Video Decoder é implementado.
Dispositivos de entrada
- Mapas de ação DirectInput são implementados, melhorando a compatibilidade com muitos jogos antigos que usam isso para mapear entradas do controlador para ações no jogo.
Leia as notas de lançamento completas aqui.