Вийшов Wine 5.0

Вийшов Wine 5.021 січня 2020 року відбувся офіційний реліз стабільної версії Вино 5.0 — вільного інструменту для запуску нативних програм у UNIX-середовищі. Це альтернативна, вільна реалізація Windows API. Рекурсивний акронім WINE означає "Wine Is Not an Emulator".

За цією версією — близько року розробки та понад 7400 окремих змін. Провідний розробник Олександр Джулліард (Alexandre Julliard) виділяє чотири:

  • Підтримка модулів у форматі PE. Це вирішує проблеми з різними схемами захисту від копіювання, які проводять звіряння системних модулів на диску та у пам'яті.
  • Підтримка кількох моніторів та кількох GPU, включаючи динамічну зміну налаштувань.
  • Реімплементація XAudio2 на базі проекту FAudio, відкритої реалізації звукових бібліотек DirectX. Перехід на FAudio дозволяє досягти вищої якості звуку в іграх, задіяти змішування гучності, розширені звукові ефекти та ін.
  • Підтримка Vulkan 1.1.


Докладніше про ключові нововведення.

Модулі PE

За наявності компілятора MinGW більшість модулів Wine тепер збираються у форматі файлів PE (Portable Executable, бінарний формат Windows) замість ELF.

Виконувані файли PE тепер копіюються до каталогу ~/.wine замість застосування фіктивних DLL-файлів, що робить програми більш схожими на реальні установки Windows.

Поки що у формат PE конвертовані не всі модулі. Робота продовжується.

графічна підсистема

Як уже було сказано вище, додано підтримку роботи з кількома моніторами та графічними адаптерами.

Драйвер Vulkan поновлено до специфікацій Vulkan 1.1.126.

Крім того, бібліотека WindowsCodecs підтримує додаткові растрові формати, включаючи формати з індексованою палітрою.

Direct3D

Повноекранні програми Direct3D тепер блокують виклик скрінсейвера.

Для додатків DXGI реалізовано можливість перемикання між повноекранним та віконним режимом за допомогою стандартної комбінації Alt+Enter.

Розширені можливості Direct3D 12: підтримка перемикання між повноекранним та віконним режимом, зміни режимів екрану, подання з масштабуванням та інтервали заміни буферів відтворення (swap interval). Всі ці функції вже було реалізовано для попередніх версій Direct3D API.

Учасники проекту ретельно попрацювали та усунули буквально сотні багів, так що покращено обробку Wine різних прикордонних ситуацій. Серед них семплінг ресурсів 2D у семплерах 3D і навпаки, застосування вихідних значень для тестів прозорості та глибини, що виходять за допустимі діапазони, малювання з відображеними текстурами і буферами, використання некоректних кліперів (об'єкт DirectDraw) та багато іншого.

Знижено розмір необхідного адресного простору при завантаженні 3D-тектур, стислих методом S3TC (замість завантаження повністю, текстури вантажаться шматками).

Для старих програм DirectDraw внесено різні покращення та виправлення, пов'язані з розрахунком освітлення.

Розширено базу графічних карт, що розпізнаються в Direct3D.

Мережа та криптографія

Двигун Gecko оновлено до версії 2.47.1 для підтримки сучасних інструментів. Реалізовано низку нових HTML API.

У MSHTML реалізовано підтримку елементів SVG.

Додано багато нових функцій VBScript (наприклад, обробники помилок та винятків).

Реалізована можливість отримання параметрів налаштування HTTP-проксі через DHCP.

У криптографічній частині реалізовано підтримку криптографічних ключів на основі еліптичних кривих (ECC) через GnuTLS, додано можливість імпорту ключів та сертифікатів з файлів у форматі PFX, додано підтримку схеми формування ключа на основі пароля PBKDF2.

Вийшов Wine 5.0
Adobe Photoshop CS6 під Wine

Інші суттєві нововведення

  • Підтримка спінлок ядра NT.
  • Завдяки закінченню патенту на компресію текстур DXTn і S3 стало можливо включити їх у дефолтну реалізацію.
  • Підтримка інсталяції драйверів plug-and-play.
  • Різні покращення DirectWrite.
  • Покращена підтримка Windows Media Foundation API.
  • Найкраща синхронізація примітивів завдяки реалізації на ф'ютексах.
  • Спільне використання Wine-Mono для економії місця замість опенсорсної реалізації .NET на кожен ~/.wine.
  • Підтримка Unicode 12.0 та 12.1.
  • Реалізація початкового HTTP-сервісу (HTTP.sys) як заміна Winsock API і IIS, в результаті чого продуктивність стала вищою, ніж у Windows Sockets API.
  • Найкраща сумісність із налагоджувачами Windows.
  • Найкраща підтримка LLVM MinGW та покращення крос-компіляції WineGCC.

Можна ще згадати поліпшення в інтерфейсі користувача. Наприклад, згорнуті вікна тепер відображаються за допомогою рядка заголовка, а не піктограм у стилі Windows 3.1. Покращена підтримка ігрових контролерів, включаючи хіт switch, кермо та педалі.

З Wine видалено вбудовані декодери AVI, MPEG-I та WAVE, замість яких тепер використовуються системні GStreamer або QuickTime.

Додана можливість застосування відладчика з Visual Studio для віддаленої налагодження програм, запущених у Wine, частково реалізована бібліотека DBGENG (Debug Engine), із файлів, що збираються для Windows, видалена залежність від libwine.

Для оптимізації продуктивності різні функції роботи згодом переведені використання високопродуктивних системних функцій роботи з таймером, що дозволило знизити накладні витрати у циклі відтворення багатьох ігор. Зроблено та інші оптимізації продуктивності.

Повний список змін див. тут.

Вихідний код Wine 5.0, дзеркало
Бінарники для різних дистрибутивів
Документація

На сайті AppDB ведеться база Windows-програм, сумісних з Wine. Ось лідери з кількості голосів:

  1. Final Fantasy XI
  2. Adobe Photoshop CS6 (13.0)
  3. Світ Warcraft 8.3.0
  4. EVE Online Current
  5. Magic: The Gathering Online 4.x

Можна припустити, що ці програми у Wine запускають найчастіше.

Примітка. Реліз Wine 5.0 присвячений пам'яті Юзефа Кучі (Józef Kucia), який трагічно помер у серпні 2019 року у віці 30 років, досліджуючи печеру на півдні Польщі. Юзеф був важливим учасником розробки Direct3D Wine, а також провідним автором проекту VKD3D. За час роботи над Wine він вніс понад 2500 патчів.

Вийшов Wine 5.0

Джерело: habr.com

Додати коментар або відгук