Стабільний реліз Wine 5.0

Після року розробки та 28 експериментальних версій представлений стабільний реліз відкритої реалізації Win32 API Вино 5.0, який увібрав у себе понад 7400 змін. З ключових здобутків нової версії відзначається постачання вбудованих модулів Wine у ​​форматі PE, підтримка багатомоніторних конфігурацій, нова реалізація звукового API XAudio2 та підтримка графічного API Vulkan 1.1.

У Wine підтверджена повноцінна робота 4869 (рік тому 4737) програм для Windows, ще 4136 (рік тому 4045) програм чудово працюють при додаткових налаштуваннях та зовнішніх DLL. У 3635 програм спостерігаються невеликі проблеми у роботі, які заважають використанню основних функцій додатків.

Ключові нововведення Wine 5.0:

  • Модулі у форматі PE
    • За наявності компілятора MinGW більшість модулів Wine тепер збираються у форматі виконуваних файлів PE (Portable Executable, застосовується у Windows) замість ELF. Застосування PE вирішує проблеми з підтримкою різних схем захисту від копіювання, що здійснюють звіряння ідентичності системних модулів на диску та пам'яті;
    • Виконувані файли PE тепер копіюються в каталог ~/.wine ($WINEPREFIX) замість застосування фіктивних DLL-файлів, що робить начинку більш схожою на реальні установки Windows ціною споживання додаткового дискового простору;
    • Модулі, перетворені на формат PE, можуть використовувати штатні wchar Сі-функцій та константи з юнікодом (наприклад, L»abc»);
    • У Wine C runtime додано підтримку зв'язування з двійковими файлами, зібраними в MinGW, яка при складанні DLL використовується за замовчуванням замість MinGW runtime;
  • графічна підсистема
    • Додано підтримку роботи з кількома моніторами та графічними адаптерами, включаючи можливість динамічної зміни налаштувань;
    • Оновлено драйвер для графічного API Vulkan, який приведений у відповідність до специфікації Vulkan 1.1.126;
    • У бібліотеці WindowsCodecs реалізовано можливість перетворення додаткових растрових форматів, включаючи формати з індексованою палітрою;
  • Direct3D
    • Під час виконання повноекранних програм Direct3D забезпечене блокування виклику зберігача екрана;
    • У DXGI (DirectX Graphics Infrastructure) додана підтримка інформування додатка про мінімізацію його вікна, що дозволяє зменшити виконання ресурсомістких операцій при згортанні вікна;
    • Для додатків, що використовують DXGI, реалізовано можливість перемикання між повноекранним та віконним режимом за допомогою комбінації Alt+Enter;
    • Розширені можливості реалізації Direct3D 12, наприклад, з'явилася підтримка перемикання між повноекранним та віконним режимом, зміни режимів екрану, виведення з масштабуванням та керування інтервалом заміни буферів відтворення (swap interval);
    • Покращено обробку різних прикордонних ситуацій, таких як застосування вихідних значень, що виходять за допустимі діапазони, для тестів прозорості та глибини, малювання з відображеними текстурами та буферами, використання некоректних DirectDraw об'єктів кліпер, створення пристроїв Direct3 для некоректних вікон, використання видимих ​​областей, мінімальні значення параметрів яких дорівнюють максимальним і т.п.
    • У Direct3D 8 і 9 забезпечено більш точне відстеженнябрудних» областей текстур, що завантажуються;
    • Знижено розмір необхідного адресного простору при завантаженні 3D-тектур, стислих методом S3TC (замість завантаження повністю, текстури вантажаться шматками).
    • Реалізовано інтерфейс ID3D11Multithread для захисту критичних секцій у багатопотокових додатках;
    • Для старих програм DirectDraw внесено різні покращення та виправлення, пов'язані з розрахунком освітлення;
    • Здійснено додаткові виклики для отримання інформації про шейдерів в API ShaderReflection;
    • У wined3d додано підтримку бліттера на базі CPU для обробки стислих ресурсів;
    • Розширена БД графічних карток, що розпізнаються в Direct3D;
    • Додані нові ключі реєстру HKEY_CURRENT_USER\Software\Wine\Direct3D: "shader_backend" (бекенд для роботи з шейдерами: "glsl" для GLSL, "arb" для ARB vertex/fragment і "none" для відключення підтримки шейдерів), "strict_shader_math" 0x1 - увімкнути, 0x0 - вимкнути перетворення шейдерів Direct3D). Оголошено застарілим ключ "UseGLSL" (слід використовувати "shader_backend");
  • D3DX
    • Реалізовано підтримку механізму стиснення 3D-текстур S3TC (S3 Texture Compression);
    • Додані коректні реалізації таких операцій, як заливання текстурою та невідбивні (unmappable) поверхні;
    • Внесено різні покращення та виправлення у фреймворк створення візуальних ефектів;
  • Ядро (інтерфейси ядра Windows)
    • Більшість функцій, що використовуються в Kernel32, переміщені в
      KernelBase, слідуючи змінам в архітектурі Windows;

    • Можливість змішування 32- та 64-розрядних DLL у каталогах, що використовуються для завантаження. Забезпечено ігнорування бібліотек, що не відповідають поточній розрядності (32/64), у разі якщо далі в дорозі вдасться знайти коректну для поточної розрядності бібліотеку;
    • Для драйверів пристроїв покращено емуляцію об'єктів ядра;
    • Реалізовані об'єкти синхронізації, що працюють на рівні ядра, такі як spin-блокування, швидкі м'ютекси і змінні, що прикріплюються до ресурсу;
    • Забезпечено коректне інформування програм про стан акумулятора;
  • Інтерфейс користувача та інтеграція з робочим столом
    • Мінімізовані вікна тепер відображаються за допомогою заголовка, а не піктограми в стилі Windows 3.1;
    • Додані нові стилі кнопок SplitButton (кнопка з випадаючим списком дій) та Command Links (Посилання в діалогових вікнах, що використовуються для переходу на наступну стадію);
    • Для папок 'Downloads' та 'Templates' створено символьні посилання, що вказують на відповідні каталоги в Unix-системах;
  • Пристрої введення
    • Під час запуску забезпечено встановлення та завантаження необхідних драйверів пристроїв Plug & Play;
    • Поліпшено підтримку ігрових контролерів, включаючи міні-джойстик (hat switch), кермо, педалі для газу та гальм.
    • Припинено підтримку старого Linux API взаємодії з джойстиками, що використовується в ядрах Linux до версії 2.2;
  • . NET
    • Двигун Mono оновлений до випуску 4.9.4 і тепер включає частини фреймворку Windows Presentation Foundation (WPF);
    • Додана можливість встановлення додатків з Mono та Gecko в один спільний каталог із розміщенням файлів в ієрархії /usr/share/wine замість копіювання в нові префікси;
  • Мережеві можливості
    • Браузерний двигун Wine Gecko, який використовується в бібліотеці MSHTML, оновлено до випуску 2.47.1. Реалізовано підтримку нових HTML API;
    • У MSHTML реалізовано підтримку елементів SVG;
    • Додано багато нових функцій VBScript (наприклад, обробники помилок та винятків, функції Hour, Day, Month, String, LBound, RegExp.Replace, РScriptTypeInfo_* та ScriptTypeComp_Bind* тощо);
    • Забезпечено збереження стану коду в VBScript та JScript (script persistence);
    • Додана початкова реалізація сервісу HTTP (WinHTTP) та пов'язаного з ним API (HTTPAPI) для клієнтських та серверних додатків, які отруюють та приймають запити за допомогою протоколу HTTP;
    • Реалізована можливість отримання параметрів налаштування HTTP-проксі через DHCP;
    • Додано підтримку перенаправлення запитів автентифікації через службу Microsoft Passport;
  • Криптографія
    • Реалізовано підтримку криптографічних ключів на основі еліптичних кривих (ECC) при використанні GnuTLS;
    • Додана можливість імпорту ключів та сертифікатів із файлів у форматі PFX;
    • Додано підтримку схеми формування ключа на основі пароля PBKDF2;
  • Текст і шрифти
    • У реалізації API DirectWrite додано підтримку можливостей OpenType, пов'язаних з позиціонуванням гліфів, які включені за умовчанням для написання Latin, включаючи кернінг;
    • Підвищено безпеку обробки шрифтових даних рахунок перевірки коректності різних таблиць даних перед їх використанням;
    • Інтерфейси DirectWrite приведені у відповідність до нового SDK;
  • Звук та відео
    • Запропоновано нову реалізацію звукового API XAudio2, побудована на основі проекту FAudio. Використання FAudio у Wine дозволяє досягти вищої якості звуку в іграх та задіяти такі можливості як змішування гучності та розширені звукові ефекти;
    • Додано велику кількість нових викликів у реалізацію фреймворку Media Foundation, включаючи підтримку вбудованих і асинхронних черг, Source Reader API, Media Session і т.п.
    • Фільтр захоплення відео переведений на використання API v4l2 замість v4l1 API, що дозволило розширити діапазон камер, що підтримуються;
    • Видалено вбудовані декодувальники AVI, MPEG-I та WAVE, замість яких тепер використовуються системні GStreamer або QuickTime;
    • Додано підмножину конфігураційних API VMR7;
    • У звукові драйвери додано підтримку настроювання гучності окремих каналів;
  • Інтернаціоналізація
    • Таблиці Unicode оновлено до версії 12.1.0;
    • Реалізовано підтримку нормалізації Unicode;
    • Забезпечено автоматичне встановлення географічного регіону (HKEY_CURRENT_USER Control Panel International Geo) на основі поточної локалі;
  • RPC/COM
    • У typelib додано підтримку складних структур і масивів;
    • Додано початкову реалізацію runtime-бібліотеки Windows Script;
    • Додано початкову реалізацію бібліотеки ADO (Microsoft ActiveX Data Objects);
  • Встановлювачі
    • Для установника MSI реалізовано підтримку постачання патчів (Patch Files);
    • В утиліті WUSA (Windows Update Standalone Installer) з'явилася можливість встановлення оновлень у форматі .MSU;
  • Платформа ARM
    • Для архітектури ARM64 до ntdll додано підтримку розкрутки стека (stack unwinding). Додано підтримку підключення зовнішніх бібліотек libunwind;
    • Для архітектури ARM64 реалізовано підтримку безшовних проксі (stubless proxies) для інтерфейсів об'єктів;
  • Інструменти для розробки / Winelib
    • Додано можливість застосування відладчика з Visual Studio для віддаленого налагодження програм, запущених у Wine;
    • Частково реалізовано бібліотеку DBGENG (Debug Engine);
    • Зібрані для Windows файли, що виконуються, більше не залежать від libwine, що дозволяє запускати їх у Windows без додаткових залежностей;
    • У Resource Compiler та IDL Compiler додано опцію '—sysroot' для визначення шляху розміщення заголовних файлів;
    • У winegcc додані опції '—target', '—wine-objdir',
      '-winebuild' і '-fuse-ld', що спрощують налаштування оточення для крос-компіляції;

  • Вбудовані програми
    • Реалізовано утиліту CHCP для налаштування кодування консолі;
    • Реалізовано утиліту MSIDB для маніпуляції з базами у форматі MSI;
  • оптимізація продуктивності
    • Різні функції роботи згодом переведені використання високопродуктивних системних функцій роботи з таймером, що дозволило знизити накладні витрати у циклі відтворення багатьох ігор;
    • Додана можливість використання у ФС Ext4 режима роботи без урахування регістру символів;
    • Проведено оптимізацію продуктивності обробки великого числа елементів у діалогах виведення списків, що працюють у режимі LBS_NODATA;
    • Додано швидшу реалізацію SRW-блокувань (Slim Reader/Writer) для Linux, переведену на Futex;
  • Зовнішні залежності
    • Для складання модулів у форматі PE задіяний крос-компілятор MinGW-w64;
    • Реалізація XAudio2 потребує наявності бібліотеки FAudio;
    • Для відстеження змін файлів на системах BSD
      задіяно бібліотеку Inotify;

    • Для обробки винятків на платформі ARM64 потрібна бібліотека Unwind;
    • Замість Video4Linux1 тепер потрібна бібліотека Video4Linux2.

Джерело: opennet.ru

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