와인 (소프트웨어)

와인(Wine)은 마이크로소프트 윈도우용으로 개발된 응용 소프트웨어와 비디오 게임을 유닉스 계열 운영체제에서 실행할 수 있게 해주는 호환성 계층이다. 와인은 자유-오픈 소스 소프트웨어이며, 저작권 문제를 피하기 위해 주로 블랙박스 검사 역공학을 사용하여 작성된다.

와인은 주로 리눅스, macOS, FreeBSD를 위해 개발된다. 개발자는 윈도우 애플리케이션을 WineLib에 맞춰 컴파일하여 유닉스 계열 시스템으로 이식하는 데 도움을 받을 수 있다. 로제타 2를 사용하여 x86 코드를 ARM 코드로 변환하는 애플 실리콘 맥 컴퓨터를 제외하고는 별도의 코드 에뮬레이션이나 가상화가 발생하지 않는다.

2007년 desktoplinux.com이 38,500명의 리눅스 데스크톱 사용자를 대상으로 실시한 설문 조사에서 응답자의 31.5%가 윈도우 애플리케이션을 실행하기 위해 와인을 사용한다고 답했다. 이 수치는 모든 x86 가상화 프로그램을 합친 것보다 컸으며, 윈도우 애플리케이션을 실행하지 않는다고 답한 27.9%보다도 높았다.

 역사 
초기 프로젝트 리더인 밥 암스타트와 에릭 영데일은 1993년에 리눅스에서 윈도우 애플리케이션을 실행하기 위한 방법으로 와인 프로젝트를 시작했다. 이는 썬 마이크로시스템즈의 두 제품인 솔라리스 운영체제용 Wabi와 공용 윈도우 인터페이스(Public Windows Interface)에서 영감을 얻었다. 후자는 윈도우 API를 ISO 표준으로서 퍼블릭 도메인에 완전히 재구현하려는 시도였으나 1996년 마이크로소프트의 압력으로 거부되었다. 와인은 원래 윈도우 3.x용 16비트 애플리케이션을 대상으로 했으나, 2010년 기준으로는 최신 운영체제에서 표준이 된 32비트 및 64비트 버전에 집중하고 있다. 이 프로젝트는 1993년 6월 유즈넷의 comp.os.linux 토론에서 기원했다. 알렉상드르 쥘리아르가 1994년부터 프로젝트를 이끌고 있다.

이 프로젝트는 윈도우 API에 대한 문서화가 불완전하고 부정확했기 때문에 개발자들에게 많은 시간과 노력이 필요한 어려운 일임이 증명되었다. 마이크로소프트는 대부분의 Win32 서브루틴 함수를 광범위하게 문서화하지만, 파일 형식이나 프로토콜과 같은 일부 영역은 마이크로소프트에서 공개한 완전한 사양이 없다. 또한 윈도우에는 문서화되지 않은 저수준 함수, 문서화되지 않은 동작 및 모호한 소프트웨어 버그가 포함되어 있으며, 일부 애플리케이션이 제대로 작동하려면 와인이 이를 정확하게 복제해야 한다. 결과적으로 와인 팀은 썽킹과 같은 영역에서 많은 함수 호출과 파일 형식을 역공학으로 분석해 왔다.

와인 프로젝트는 원래 X 윈 시스템과 동일한 MIT 허가서에 따라 와인을 출시했으나, 와인의 사유 소프트웨어 버전이 변경 사항을 핵심 프로젝트에 다시 기여하지 않을 것에 대한 우려로 인해, 2002년 3월부터는 라이선스에 LGPL을 사용하고 있다.

와인은 2005년 10월 25일에 버전 0.9로 공식적으로 베타 단계에 진입했다. 15년의 개발 끝에 2008년 6월 17일에 버전 1.0이 출시되었다. 버전 1.2는 2010년 7월 16일에, 버전 1.4는 2012년 3월 7일에, 버전 1.6은 2013년 7월 18일에, 버전 1.8은 2015년 12월 19일에, 그리고 버전 9.0은 2024년 1월 16일에 출시되었다. 개발 버전은 대략 2주마다 출시된다.

Wine-staging은 WineHQ 개발자들이 와인 저장소에 병합하기에 아직 준비되지 않았다고 판단했지만, wine-compholio 포크에서는 여전히 유용하다고 간주되는 공격적인 패치들의 모음이다. 이는 주로 실험적인 기능과 버그 수정을 다룬다. 2017년 1월부터 wine-compholio가 프로젝트를 WineHQ의 핵심 개발자인 앨리스터 레슬리-휴스에게 양도하면서 wine-staging의 패치들이 WineHQ 업스트림에 활발하게 병합되기 시작했다. 2019년 기준 WineHQ는 wine-staging의 사전 빌드 버전도 제공한다.

 기업 후원 
와인의 주요 기업 후원자는 코드위버스이다. 코드위버스는 쥘리아르를 비롯한 많은 와인 개발자들을 고용하여 와인 및 코드위버스의 지원 버전인 CrossOver를 개발하고 있다. CrossOver에는 업스트림 버전에 적합하지 않다고 간주되는 일부 애플리케이션 전용 수정 사항과 추가적인 사유 구성 요소가 포함되어 있다.

캐나다의 소프트웨어 개발사인 코렐도 한동안 쥘리아르 등을 고용하여 프로젝트를 지원했다. 코렐은 자사의 오피스 제품군인 워드퍼펙트 오피스를 리눅스(특히 코렐 리눅스)로 이식하는 데 관심이 있었다. 그러나 마이크로소프트가 코렐에 대규모 투자를 한 이후 코렐은 모든 리눅스 관련 프로젝트를 취소하고 와인 지원을 중단했다.

다른 기업 후원자로는 구글이 있다. 구글은 피카사를 윈도우와 동일한 바이너리를 사용하여 리눅스로 직접 이식할 수 있을 만큼 와인을 수정하기 위해 코드위버스를 고용했다. 구글은 나중에 와인의 어도비 포토샵 CS2 지원 개선을 위해서도 비용을 지불했다. 와인은 또한 구글의 서머 오브 코드(Summer of Code) 프로그램의 정기적인 수혜자이기도 하다.

밸브 코퍼레이션은 코드위버스와 협력하여 리눅스 기반 운영체제에서 마이크로소프트 윈도우 게임을 실행하기 위한 와인 기반 호환성 계층인 프로톤을 개발하고 있다. 프로톤에는 Win32 함수의 리눅스 전용 구현과 같이 여러 이유로 업스트림 와인이 수용하지 않는 여러 패치가 포함되어 있다.

 설계 
와인의 목표는 사용자가 유닉스 계열 시스템 위에서 실행하고자 하는 프로그램에 필요한 윈도우 API를 완전히 또는 부분적으로 구현하는 것이다.

 기본 아키텍처 

마이크로소프트 윈도우의 프로그래밍 인터페이스는 주로 동적 링크 라이브러리(DLL)로 구성된다. 여기에는 커널의 시스템 호출을 위한 방대한 수의 래퍼 서브루틴, 즉 NTOS 커널 모드 프로그램(ntoskrnl.exe)이 포함되어 있다. 일반적인 윈도우 프로그램은 몇몇 윈도우 DLL을 호출하고, 이는 다시 gdi/user32 라이브러리를 호출하며, 이는 다시 시스템 호출을 통해 커널을 처리하는 역할을 하는 kernel32.dll(win32 서브시스템)을 사용한다. 시스템 호출 계층은 문서가 공개적으로 제공되지 않기 때문에 마이크로소프트 프로그래머에게만 비공개인 것으로 간주되며, 공개된 인터페이스는 모두 커널 위에서 실행되는 서브시스템에 의존한다. 이외에도 별도의 프로세스로 실행되는 서비스로 구현된 여러 프로그래밍 인터페이스가 있다. 애플리케이션은 RPC를 통해 사용자 모드 서비스와 통신한다.

와인은 윈도우 커널 모듈이 아닌 응용 프로그램 이진 인터페이스(ABI)를 전적으로 사용자 공간에서 구현한다. 와인은 대부분 계층 구조를 미러링하며, 윈도우에서 커널이 제공하는 서비스는"윈도우 서비스" 문서 참조 대신 wineserver로 알려진 데몬에 의해 제공된다. wineserver의 작업은 기본적인 윈도우 기능을 구현하고, X 윈 시스템과 통합하며, 신호를 네이티브 윈도우 예외로 변환하는 것이다. wineserver가 윈도우 커널의 일부 측면을 구현하기는 하지만, 와인의 기본 아키텍처 때문에 네이티브 윈도우 드라이버를 사용하는 것은 불가능하다.

 라이브러리 및 애플리케이션 
와인은 윈도우 프로그램을 위해 윈도우 DLL과 유닉스 공유 객체를 모두 로드할 수 있도록 한다. 가장 기본적인 윈도우 DLL, 즉 NTDLL, KERNEL32, GDI32, USER32의 내장 구현은 호스트 운영체제의 함수도 사용해야 하기 때문에 공유 객체 방식을 사용한다. WineD3D와 같은 상위 계층 라이브러리는 자유롭게 DLL 형식을 사용할 수 있다. 많은 경우 사용자는 와인이 구현한 것 대신 윈도우의 DLL을 로드하도록 선택할 수 있다. 그렇게 하면 와인에서 아직 구현되지 않은 기능을 제공받을 수 있지만, 와인에 존재하지 않는 다른 것에 의존하는 경우 오작동을 일으킬 수도 있다.

와인은 모든 git 커밋 시 수행되는 자동화된 유닛 테스트를 통해 구현 상태를 추적한다.

 그래픽 및 게임 
대부분의 오피스 소프트웨어는 복잡한 GPU 가속 그래픽 API를 사용하지 않지만, 비디오 게임은 이를 사용한다. 이러한 게임을 제대로 실행하려면 와인은 그리기 명령을 호스트 OS로 전달하고, 심지어 호스트가 이해할 수 있는 것으로 번역해야 한다.

DirectX는 렌더링, 오디오 및 입력을 위한 마이크로소프트 API 모음이다. 2019년 현재 Wine 4.0에는 Vulkan API용 DirectX 12 구현과 OpenGL용 DirectX 11.2가 포함되어 있다. Direct2D 지원은 Direct2D 1.2로 업데이트되었다. 또한 Wine 4.0은 그리기 명령을 호스트 OS에 전달하거나, macOS의 경우 MoltenVK를 통해 Metal API로 번역함으로써 와인이 Vulkan 애플리케이션을 실행할 수 있도록 한다.

 XAudio
 2019년 2월 기준, Wine 4.3은 FAudio 라이브러리를 사용하여 XAudio2 오디오 API를 구현한다(Wine 4.13에는 이에 대한 수정 사항이 포함되었다).
 XInput 및 Raw Input
 와인은 2019년 4.0 버전부터 이러한 라이브러리의 내장 구현을 통해 게임 컨트롤러를 지원한다. 이들은 기본 OS의 컨트롤러 인터페이스, 특히 SDL을 통해 접근해야 하기 때문에 유닉스 공유 객체로 빌드된다.

 Direct3D 
와인의 DirectX 관련 노력 중 많은 부분은 Direct3D 및 다이렉트드로 API 호출을 OpenGL로 변환하는 계층인 WineD3D를 구축하는 데 투입된다. 2019년 현재 이 구성 요소는 DirectX 11까지 지원한다. 2016년 12월 12일 기준으로 와인은 D3D11을 사용하여 오버워치를 실행할 수 있을 만큼 성숙했다. 와인에서 사용되는 것 외에도 WineD3D DLL은 윈도우 자체에서도 사용되어 구형 GPU가 최신 DirectX 버전을 사용하는 게임을 실행하거나 오래된 DirectDraw 기반 게임이 올바르게 렌더링되도록 할 수 있다.

Direct3D 백엔드를 Vulkan API로 옮기기 위한 작업이 진행 중이다. 4.0의 Direct3D 12 지원은 "vkd3d" 서브프로젝트에 의해 제공되며, WineD3D는 2019년에 실험적으로 Vulkan API를 사용하도록 이식되었다. 또 다른 구현인 DXVK는 Vulkan을 사용하여 Direct3D 8, 9, 10, 11 호출을 변환하며 별도의 프로젝트로 존재한다.

패치가 적용된 와인은 OpenGL API 호출로 변환하지 않고 자유-오픈 소스 소프트웨어인 Gallium3D 스테이트 트래커(일명 Gallium3D GPU 드라이버)를 통해 Direct3D 9 API 명령을 직접 실행할 수 있다. 이 경우 Gallium3D 계층은 DX9 그리기 명령을 직접 전달할 수 있어 성능이 최대 2배까지 향상된다. 2020년 현재 이 프로젝트의 이름은 Gallium.Nine이다. 이제 별도의 독립 실행형 패키지로 제공되므로 더 이상 패치된 와인 버전이 필요하지 않다.

 사용자 인터페이스 
와인은 보통 명령 줄 인터페이스에서 wine program.exe와 같이 호출된다.

 winecfg 
섬네일|와인이 32비트 버전에서 윈도우 2.0까지 거슬러 올라가 서로 다른 버전의 윈도우를 모방하도록 설정될 수 있음을 보여주는 스크린샷(64비트 와인은 64비트 버전의 윈도우만 지원한다)

기본 옵션을 조정하기 위한 컨트롤이 있는 그래픽 사용자 인터페이스를 시작하는 유틸리티인 winecfg가 있다. 이는 와인에 포함된 GUI 설정 유틸리티이다. Winecfg는 레지스트리를 직접 편집할 필요 없이 와인을 더 쉽게 설정할 수 있게 해준다. 비록 필요한 경우 포함된 레지스트리 편집기(윈도우의 regedit와 유사)로 편집할 수 있다.

 제3자 애플리케이션 
섬네일|right|플레이온리눅스 

일부 애플리케이션은 제대로 작동하기 위해 특정 윈도우 DLL을 사용하도록 와인을 수동으로 구성하는 등 단순한 설치 이상의 미세 조정이 필요하다. 와인 프로젝트는 이러한 워크아라운드를 와인 코드베이스에 통합하지 않고, 대신 와인의 윈도우 API 구현을 개선하는 데에만 집중하는 것을 선호한다. 이러한 접근 방식은 장기적인 호환성에 중점을 두지만, 사용자가 워크아라운드가 필요한 애플리케이션을 실행하는 데 어려움을 겪게 만든다. 결과적으로 와인 자체에서 아웃 오브 더 박스로 작동하지 않는 애플리케이션의 사용을 돕기 위해 많은 제3자 애플리케이션이 만들어졌다. 와인 위키는 현재 및 구버전의 제3자 애플리케이션 페이지를 유지 관리한다.
 Winetricks는 일부 애플리케이션이 와인에서 올바르게 실행되는 데 필요한 기본 구성 요소(일반적으로 마이크로소프트 DLL 및 글꼴)를 설치하고 설정을 조정하는 스크립트이다. 이는 필요한 워크아라운드를 적용하는 것을 포함하여 여러 애플리케이션과 게임의 설치를 완전히 자동화할 수 있다. Winetricks는 그래픽 사용자 인터페이스(GUI)를 가지고 있다. 와인 프로젝트는 대부분의 제3자 애플리케이션과 달리 Winetricks 사용자의 버그 보고를 수용한다. 이는 와인 개발자인 오스틴 잉글리시가 관리한다.
 Q4Wine은 와인의 고급 설정을 위한 오픈 GUI이다.
 Wine-Doors는 와인에 기능을 추가하는 그놈 데스크톱용 애플리케이션 관리 도구이다. Wine-Doors는 WineTools의 대안으로, WineTools의 기능을 개선하고 더 현대적인 디자인 접근 방식으로 원래 아이디어를 확장하는 것을 목표로 한다.
 IEs4Linux는 버전 4에서 6, 그리고 버전 7(베타)을 포함한 모든 버전의 인터넷 익스플로러를 설치하기 위한 유틸리티이다.
 Wineskin은 와인 엔진 버전을 관리하고 macOS용 래퍼를 생성하는 유틸리티이다.
 플레이온리눅스는 윈도우 애플리케이션(주로 게임)의 설치를 돕는 애플리케이션이다. PlayOnMac이라는 대응하는 매킨토시 버전도 있다.
 Lutris는 리눅스에 윈도우 게임을 설치하기 위한 오픈 소스 애플리케이션이다.
 Bordeaux는 winelib 애플리케이션을 실행하는 사유 Wine GUI 구성 관리자이다. 또한 제3자 유틸리티 설치, 애플리케이션 및 게임 설치, 사용자 지정 구성 사용 기능을 지원한다. Bordeaux는 현재 리눅스, FreeBSD, PC-BSD, 솔라리스, 오픈솔라리스, 오픈인디애나, 및 macOS 컴퓨터에서 실행된다.
 Bottles는 GTK4와 Libadwaita를 기반으로 한 오픈 소스 그래픽 와인 프리픽스 및 러너 관리자이다. 이전 상태를 복구하기 위한 저장소 기반 의존성 설치 시스템과 Bottle 버전 관리를 제공한다.
 WineGUI는 와인을 관리하기 위한 자유-오픈 소스 그래픽 인터페이스이다. 사용자가 Wine bottle을 생성하고 윈도우 애플리케이션이나 게임을 설치할 수 있게 해준다.

 기능 
섬네일|300px|Wine AppDB 테스트 결과에 따른 시간에 따른 앱 호환성 진행 상황.
섬네일|300px|시간에 따른 WineHQ 애플리케이션 등급.
와인의 Direct3D 부문 개발자들은 게임 지원을 늘리기 위해 픽셀 셰이더와 같은 새로운 기능을 계속 구현해 왔다. 와인은 네이티브 DLL을 직접 사용할 수도 있어 기능을 확장할 수 있지만, DLL이 애플리케이션 자체와 함께 배포되지 않은 한 윈도우 사용권이 필요하다.

와인에는 메모장, 워드패드, 제어판, 인터넷 익스플로러, 윈도우 탐색기와 같은 여러 윈도우 프로그램의 자체 오픈 소스 구현도 포함되어 있다.

와인 애플리케이션 데이터베이스(AppDB)는 어떤 윈도우 프로그램이 와인에서 작동하고 얼마나 잘 작동하는지에 대해 커뮤니티가 유지 관리하는 온라인 데이터베이스이다.

 하위 호환성 
와인은 윈도우 3.1x용으로 작성된 프로그램을 포함하여 레거시 윈도우 애플리케이션과의 양호한 하위 호환성을 보장한다. 와인은 윈도우 2.0까지 거슬러 올라가 일부 프로그램에 필요한 서로 다른 윈도우 버전을 모방할 수 있다. 그러나 윈도우 1.x 및 윈도우 2.x 지원은 와인 개발 버전 1.3.12에서 제거되었다. 시스템에 도스박스가 설치되어 있는 경우(아래 #MS-DOS 참조), 와인 개발 버전 1.3.12 이후에서도 모방할 윈도우 버전으로 "Windows 2.0" 옵션을 표시하지만, 현재 MS-DOS와 윈도우 기능이 통합되어 있지 않아 대부분의 윈도우 2.0 프로그램은 여전히 실행되지 않는다.

최신 버전의 윈도우는 사용자가 레거시 윈도우 애플리케이션을 업그레이드하도록 강제할 수 있고 운영체제의 변경 사항에 맞춰 프로그램을 조정해줄 사람이 없으면 지원되지 않는 소프트웨어가 영원히 작동하지 않을 수 있기 때문에, 와인의 하위 호환성은 일반적으로 윈도우보다 우수하다. 많은 경우 와인은 "호환 모드"를 갖춘 최신 버전의 윈도우보다 더 나은 레거시 지원을 제공할 수 있다. 와인은 마이크로소프트 윈도우의 64비트 버전에는 없는 기능인, x86-64(64비트) CPU를 사용하는 64비트 운영체제에서 16비트 윈도우 프로그램(Win16)을 실행할 수 있다. WineVDM을 사용하면 64비트 버전의 윈도우에서 16비트 윈도우 애플리케이션을 실행할 수 있다.

와인은 윈도우 콘솔 애플리케이션을 부분적으로 지원하며, 사용자는 콘솔을 관리하기 위해 어떤 백엔드를 사용할지 선택할 수 있다(선택 사항에는 raw stream, curses, user32가 포함된다). raw stream이나 curses 백엔드를 사용할 때 윈도우 애플리케이션은 유닉스 터미널에서 실행된다.

 64비트 애플리케이션 
2008년 12월 Wine 1.1.10에 64비트 윈도우 애플리케이션에 대한 예비 지원이 추가되었다. 2019년 4월 기준 이 지원은 안정적인 것으로 간주된다. 두 버전의 와인은 별도로 빌드되며, 결과적으로 wine64만 빌드하면 x86-64 애플리케이션만 실행할 수 있는 환경이 생성된다.

2019년 4월 기준 와인은 WoW64 빌드를 안정적으로 지원하여, 동일한 와인 인스턴스 내에서 32비트와 64비트 윈도우 애플리케이션을 모두 실행할 수 있다. 이러한 빌드를 수행하려면 먼저 64비트 버전을 빌드한 다음, 64비트 버전을 참조하여 32비트 버전을 빌드해야 한다. 마이크로소프트의 WoW64와 마찬가지로, 32비트 빌드 프로세스는 32비트 프로그램을 처리하는 데 필요한 부분을 64비트 빌드에 추가한다. 이 기능은 적어도 2010년부터 확인되었다.

 MS-DOS 
초기 버전의 마이크로소프트 윈도우는 MS-DOS 위에서 실행되었으며, 윈도우 프로그램은 사용하기 위해 MS-DOS 프로그램에 의존할 수 있다. 와인은 MS-DOS를 잘 지원하지 않지만, 개발 버전 1.3.12부터 와인은 시스템에 도스박스가 있는 경우 도스박스에서 MS-DOS 프로그램을 실행하려고 시도한다. 버그로 인해 와인은 윈도우 1.x 및 윈도우 2.x 프로그램을 MS-DOS 프로그램으로 오인하여 도스박스에서 실행하려다 실패하기도 한다.

 Winelib 
와인은 윈도우 API의 공유 객체 구현을 유닉스 프로그램의 실제 라이브러리로 사용할 수 있게 해주는 Winelib를 제공한다. 이를 통해 윈도우 코드를 네이티브 유닉스 실행 파일로 빌드할 수 있다. 2010년 10월부터 Winelib은 ARM 플랫폼에서도 작동한다.

 비-x86 아키텍처 
솔라리스 SPARC 지원은 버전 1.5.26에서 중단되었다.

 ARM, 윈도우 CE, 및 윈도우 RT 
와인은 ARM 아키텍처(및 ARM64/AArch64) 프로세서와 그 위에서 실행되는 윈도우 버전에 대해 일부 지원을 제공한다. 2019년 4월 기준, 와인은 잠금 해제된 윈도우 RT 장치용으로 제작된 ARM/Win32 애플리케이션을 실행할 수 있다(단, 윈도우 RT 프로그램은 제외). 윈도우 CE 지원(x86 또는 ARM)은 없으나, WineCE라고 불리는 비공식 프리 알파 개념 증명 버전이 일부 지원을 제공한다.

 안드로이드용 Wine 
섬네일|right|안드로이드의 와인에서 실행 중인 마이크로소프트 솔리테어

2013년 2월 3일 브뤼셀에서 열린 FOSDEM 강연에서 알렉상드르 쥘리아르는 구글의 안드로이드 운영체제에서 실행되는 와인의 초기 데모를 선보였다.

안드로이드용 Wine(x86 및 ARM)의 실험적 빌드는 2017년 말에 출시되었다. 그 이후로 공식 개발자들에 의해 정기적으로 업데이트되고 있다. 기본 빌드는 QEMU를 통한 교차 아키텍처 에뮬레이션을 구현하지 않으므로, ARM 버전은 Win32 API를 사용하는 ARM 애플리케이션만 실행한다.

 마이크로소프트 애플리케이션 
와인은 기본적으로 마이크로소프트의 인터넷 익스플로러와 닷넷 프레임워크를 대체하기 위해 특수 제작된 게코 및 모노의 윈도우 빌드를 사용한다. 와인에는 J스크립트와 VB스크립트의 내장 구현이 포함되어 있다. winetricks를 통하거나 수동으로 이러한 프로그램의 마이크로소프트 설치 프로그램을 다운로드하여 실행할 수 있다.

와인은 대부분의 인터넷 익스플로러(IE) 버전에 대해 양호한 지원을 제공하지 않는 것으로 알려져 있다. 최근 버전 중 윈도우 XP용 인터넷 익스플로러 8만이 와인의 AppDB에서 아웃 오브 더 박스로 사용 가능한 등급을 보고하고 있다. 그러나 구글 크롬은 골드 등급을 받았으며(Wine 5.5-staging 기준), 마이크로소프트의 IE 대체 웹 브라우저인 엣지(Edge)는 해당 브라우저를 기반으로 하는 것으로 알려져 있다. Winetricks는 인터넷 익스플로러 6에서 8까지의 자동 설치를 제공하므로, 이러한 버전은 내장된 워크아라운드를 통해 합리적으로 작동할 것으로 기대할 수 있다.

인터넷 익스플로러를 직접 설치하는 대안은 현재 중단된 IEs4Linux를 사용하는 것이었다. 이는 최신 버전의 와인과 호환되지 않으며, IEs4Linux의 개발은 중단된 상태이다.

 와인의 다른 버전들 
핵심 와인 개발은 윈도우 API 전체의 올바른 구현을 목표로 하며, 때때로 특정 애플리케이션과의 호환성 영역에서 뒤처지기도 했다. 예를 들어 Direct3D는 1998년까지 구현되지 않은 상태로 남아 있었으나, 이후 출시된 버전들은 점점 더 완전한 구현을 갖추게 되었다.

 CrossOver 

코드위버스는 마이크로소프트 오피스와 일부 게임을 포함한 다른 주요 윈도우 애플리케이션을 실행하기 위해 특별히 CrossOver를 마케팅한다. 코드위버스는 알렉상드르 쥘리아르를 고용하여 와인을 개발하도록 하며, LGPL에 따라 대부분의 코드를 와인 프로젝트에 기여한다. 코드위버스는 또한 2007년 1월 10일에 인텔 기반 애플 매킨토시 컴퓨터용 CrossOver Mac이라는 새 버전을 출시했다. 업스트림 와인과 달리 CrossOver는 "wine32on64"라고 알려진 기술을 사용하여 x64 전용 버전의 macOS에서 실행할 수 있다.

2012년 현재 CrossOver에는 CrossOver Games와 CrossOver Pro 라인의 기능이 모두 포함되어 있으므로, CrossOver Games와 CrossOver Pro는 더 이상 단일 제품으로 제공되지 않는다.

CrossOver Games는 윈도우 비디오 게임 실행에 최적화되어 있었다. CrossOver와 달리 가장 안정적인 버전의 와인을 제공하는 데 집중하지 않고, 대신 최신 게임을 지원하기 위해 실험적인 기능을 제공했다.

 프로톤 

2018년 8월 21일, 밸브 코퍼레이션은 자사의 스팀 소프트웨어의 리눅스 버전(리눅스 기반 스팀OS 운영체제 및 스팀 머신 컴퓨터에 내장된 스팀 설치본 포함)과 통합되도록 설계된 프로톤(Proton)이라는 새로운 와인 변형을 발표했다. 프로톤에 대한 밸브의 목표는 리눅스 사용자가 네이티브 리눅스 이식판이 부족한 게임(특히 과거 출시된 게임)을 플레이할 수 있도록 하는 것이며, 궁극적으로 스팀과의 통합 및 메인라인 와인 대비 향상된 게임 지원을 통해 사용자에게 리눅스에서 게임을 네이티브로 플레이하는 것과 "동일한 단순한 플러그 앤 플레이 경험"을 제공하는 것이다. 프로톤은 발표 직후 공개 베타에 진입했다.

밸브는 2016년부터 코드위버스와 협력하여 와인의 게임 성능 개선을 개발해 왔으며, 그중 일부는 업스트림 와인 프로젝트에 병합되었다. 프로톤에 통합된 구체적인 개선 사항으로는 vkd3d를 통한 Vulkan 기반 Direct3D 9, 10, 11, 12 구현, DXVK, D9VK, esync를 통한 멀티스레드 성능 개선, 전체 화면 게임 처리 개선, 그리고 더 나은 자동 게임 컨트롤러 하드웨어 지원 등이 있다.

프로톤은 완전히 오픈 소스이며 깃허브를 통해 사용할 수 있다.

 WINE@Etersoft 

러시아 기업인 Etersoft는 2006년부터 와인의 사유 버전을 개발해 오고 있다. WINE@Etersoft는 인기 있는 러시아 애플리케이션(예: 1C 컴퍼니의 1C:Enterprise)을 지원한다.

 와인 소스 코드를 사용하는 다른 프로젝트들 
와인 소스 코드를 사용하는 다른 프로젝트는 다음과 같다:
 WineVDM(일명 OTVDM): 64비트 윈도우를 위한 16비트 앱 호환성 계층
 ReactOS: 장치 드라이버 수준까지 윈도우 NT 버전 5.x 이상(윈도우 2000 및 그 후속 버전 포함)과 호환되는 운영체제를 작성하려는 프로젝트이다. ReactOS는 와인 소스 코드를 상당히 많이 사용한다. 그러나 아키텍처 차이로 인해 ReactOS는 와인의 NTDLL, USER32, KERNEL32, GDI32 및 ADVAPI32 구성 요소를 직접 재사용할 수 없다. 2009년 7월 ReactOS 프로젝트 리더인 알렉세이 브라긴은 Arwinss라는 새 ReactOS 브랜치를 시작했으며, 2010년 1월에 공식적으로 발표되었다. Arwinss는 핵심 Win32 구성 요소의 대안 구현이며, 대부분 수정되지 않은 와인의 user32.dll 및 gdi32.dll 버전을 사용한다.
 WineBottler: 일반적인 맥 애플리케이션 형태의 와인 래퍼이다. "bottle" 형태로 서로 다른 프로그램에 대해 여러 와인 구성을 관리한다.
 Wineskin: macOS용 오픈 소스 Wine GUI 설정 관리자이다. Wineskin은 일반적인 맥 애플리케이션 형태로 와인 래퍼를 생성한다. 이 래퍼는 소프트웨어의 배포 가능한 "이식판"을 만드는 데에도 사용될 수 있다.
 Odin: OS/2에서 Win32 바이너리를 실행하거나 OS/2 네이티브 형식으로 변환하려는 프로젝트이다. 이 프로젝트는 또한 OS/2용 Win32 프로그램을 컴파일하기 위한 Odin32 API를 제공한다.
 Parallels Desktop for Mac 및 버추얼박스와 같은 가상화 제품은 GPU를 사용하기 위해 WineD3D를 사용한다.
 WinOnX: 애플리케이션 및 가상 머신을 추가하고 관리하기 위한 GUI를 포함하는 macOS용 와인 상용 패키지이다.
 WineD3D for Windows: OpenGL을 사용하여 마이크로소프트가 최근 윈도우 릴리스에서 제거한 오래된 Direct3D 버전과 기능을 에뮬레이트하는 호환성 래퍼이다. 이를 통해 때때로 오래된 게임을 다시 실행할 수 있다.
 애플 게임 포팅 툴킷(Apple Game Porting Toolkit): 2023년 6월 애플의 세계 개발자 회의에서 윈도우 게임을 맥으로 쉽게 이식하기 위해 소개된 소프트웨어 모음이다.
 FEX-Emu는 ARM64 리눅스에서 x86 리눅스 애플리케이션을 실행하며, 와인과 결합하여 윈도우 애플리케이션을 실행할 수 있다.

 중단됨 
 Cedega / WineX: TransGaming Inc.(현재는 소프트웨어 사업부 매각 후 Findev Inc.가 됨)는 사유 Cedega 소프트웨어를 제작했다. 이전에 WineX로 알려졌던 Cedega는 2002년 와인의 마지막 MIT 라이선스 버전에서 포크된 것이었다. CrossOver Games와 마찬가지로 TransGaming의 Cedega는 윈도우 비디오 게임 실행을 목표로 했다. 2011년 1월 7일, TransGaming Inc.는 GameTree 개발자 프로그램에 따라 Cedega 기술의 지속적인 개발을 발표했다. TransGaming Inc.는 회원들이 2011년 2월 28일까지 Cedega ID와 비밀번호를 계속 사용할 수 있도록 허용했다.
 Cider: TransGaming은 또한 인텔 아키텍처 매킨토시용 라이브러리인 Cider를 제작했다. Cider는 최종 사용자 제품이 아니라(Winelib처럼) 개발자가 소스 코드 변경 없이 게임을 인텔 맥에서 네이티브로 실행하도록 조정할 수 있게 해주는 래퍼 라이브러리이다.
 다윈 (프로젝트): 2004년 OpenDarwin 팀에 의해 생성된 PowerPC 및 인텔 x86(32비트) 아키텍처용 다윈 및 맥 OS X용 와인 라이브러리 이식판이다. PowerPC 버전은 QEMU에 의존했다. 다윈 (프로젝트)는 2009년 와인에 다시 병합되었다.
 E/OS LX: 다른 운영체제를 실제로 설치할 필요 없이 모든 운영체제용으로 설계된 모든 프로그램을 실행할 수 있도록 시도하는 프로젝트이다.
 Pipelight: 리눅스 브라우저 내에서 윈도우 NPAPI 플러그인을 위한 래퍼 라이브러리 역할을 하는 와인의 맞춤형 버전(wine-compholio)이다. 이 도구는 리눅스 사용자가 마이크로소프트 실버라이트, 유니티 웹 플러그인 및 다양한 기타 NPAPI 플러그인을 실행할 수 있게 해준다. 이 프로젝트는 업스트림 와인 프로젝트에 대해 광범위한 패치 세트를 제공하며, 그중 일부는 승인되어 업스트림 와인에 추가되었다. 현대 브라우저들이 더 이상 NPAPI 플러그인을 지원하지 않고 실버라이트도 마이크로소프트에 의해 지원이 중단되었기 때문에 Pipelight는 현재 거의 쓰이지 않는다.

 평가 
와인 프로젝트는 수년에 걸쳐 기술적, 철학적 불만과 우려를 받아왔다.

 보안 
와인이 윈도우 바이너리 코드를 실행할 수 있기 때문에, 네이티브 윈도우 바이러스 및 악성 소프트웨어가 유닉스 계열 운영체제에 영향을 미칠 수 있다는 우려가 제기되어 왔다. 실제로 와인은 윈도우용으로 제작된 일부 악성 소프트웨어를 실행할 수 있다. 2018년 보안 분석 결과, 30개의 악성 소프트웨어 샘플 중 5개가 와인을 통해 성공적으로 실행될 수 있음이 밝혀졌는데, 이는 낮은 비율임에도 불구하고 보안 위험을 초래했다. 이러한 이유로 와인 개발자들은 절대로 와인을 슈퍼유저 권한으로 실행하지 말 것을 권장한다. Zero와인과 같은 악성 소프트웨어 연구용 소프트웨어는 악성 소프트웨어를 호스트 시스템으로부터 완전히 격리하기 위해 가상 머신 내의 리눅스에서 와인을 실행한다. 가상 머신 사용에 따른 성능 저하 없이 보안을 개선하는 대안은, Anbox 소프트웨어가 안드로이드에 대해 기본적으로 수행하는 것처럼 와인을 LXC 컨테이너에서 실행하는 것이다.

또 다른 보안 우려는 구현된 사양이 잘못 설계되어 보안 침해를 허용하는 경우이다. 와인은 이러한 사양을 구현하기 때문에, 그 사양에 포함된 보안 취약점도 구현할 가능성이 높다. 이 문제의 한 예는 2006년 윈도우 메타파일 취약점으로, 와인이 취약한 SETABORTPROC 이스케이프를 구현하고 있었다.

 와인 대 네이티브 유닉스 애플리케이션 
와인에 대한 일반적인 우려는 와인의 존재로 인해 벤더들이 네이티브 리눅스, macOS 및 BSD 애플리케이션을 작성할 가능성이 낮아진다는 점이다. 이에 대한 예로 IBM의 1994년 운영체제인 OS/2 Warp를 들 수 있다. 한 기사에서는 OS/2를 몰락시킨 약점들을 설명하는데, 그 첫 번째는 다음과 같다:

그러나 OS/2는 최종 사용자 수용에 많은 문제가 있었다. 아마도 가장 심각한 문제는 이미 판매된 대부분의 컴퓨터에 DOS와 윈도우가 설치되어 있었고, 많은 사람들이 이미 운영체제를 가지고 있었기 때문에 OS/2를 평가하려 하지 않았다는 것이다. DOS와 윈도우의 "끼워팔기"와 이것이 운영체제 시장에 미친 냉각 효과는 미국 정부 대 마이크로소프트 사건에서 자주 언급되었다.

와인 프로젝트 자체는 위키 페이지 중 하나에서 윈도우 API를 위한 지속적인 개발을 "장려"한다는 특정 불만에 대해 다음과 같이 답한다:

또한 와인 위키 페이지는 와인이 데스크톱 리눅스의 닭이 먼저냐, 달걀이 먼저냐 문제를 해결하는 데 도움이 될 수 있다고 주장한다:

게임을 위한 와인의 사용은 리눅스 커뮤니티 내에서 특히 논란이 되어 왔는데, 일부는 이것이 플랫폼에서 네이티브 리눅스 게임의 추가 성장을 막거나 적어도 방해하고 있다고 느끼기 때문이다. 하지만 한 가지 독특한 점은 와인이 이제 현재의 64비트 윈도우 버전에서는 실행되지 않는 16비트 및 특정 32비트 애플리케이션과 게임을 실행할 수 있다는 점이다. 이러한 사례는 리눅스용 윈도우 하위 시스템이나 제3자 가상 머신을 통해 윈도우 자체에서 와인을 실행하거나, Boxed와인이나 otvdm과 같은 수단으로 캡슐화하여 사용하는 것으로 이어졌다.

 마이크로소프트 
2020년까지 마이크로소프트는 와인에 대해 어떠한 공개적인 입장도 내놓지 않았다. 그러나 윈도우 업데이트 온라인 서비스는 와인에서 실행되는 마이크로소프트 애플리케이션에 대한 업데이트를 차단한다. 2005년 2월 16일, 이반 레오 푸오티는 마이크로소프트가 윈도우 레지스트리에서 와인 구성 키를 확인하기 시작했으며 모든 구성 요소에 대해 윈도우 업데이트를 차단한다는 사실을 발견했다. 푸오티가 언급했듯이, "이는 마이크로소프트가 와인의 존재를 인정한 첫 번째 사례이기도 합니다."

2020년 1월, 마이크로소프트는 오라클 대 구글 사건에 대한 법정조언자 요약서에서 API를 재구현할 수 있는 능력의 긍정적인 결과로 와인을 인용했다.

2024년 8월, 마이크로소프트는 닷넷 프레임워크의 재구현인 모노 프로젝트를 와인 개발자들에게 기증했다.

 같이 보기 
 리눅스용 윈도우 하위 시스템

 각주 

 내용주

 외부 링크 


  와인으로 실행되는 응용 프로그램 목록

분류:호환성 계층
분류:컴퓨팅 플랫폼
분류:크로스 플랫폼 소프트웨어
분류:1993년 소프트웨어
분류:C로 작성된 자유 소프트웨어
분류:리눅스 API