След една година разработване и цели 30 експериментални версии бе представена финалната версия на отворената реализация на Win32 API – Wine 7.0, в която са направени над 9100 промени. Сред ключовите особености на новата версия са прехвърлянето на повечето Wine модули в PE формат, поддръжката на теми, разширяване на стека за джойстици и входни устройства с HID интерфейс, внедряване на архитектурата WoW64 за стартиране на 32-битови програми в 64-битова среда и други.
За Wine 7.0 е потвърдена пълноценната работа на 5156 (5049 преди година) програми за Windows, други 4312 (4227 преди година) програми работят добре с допълнителни настройки и външни DLL библиотеки. Още 3813 програми (преди година те бяха 3703) имат дребни проблеми, които не пречат на използването на основните функции на приложенията.
Основни нововъведения и особености на Wine 7.0
Модули с PE формат
- Почти всички DLL библиотеки са преобразувани да използват изпълнимия файлов формат PE (Portable Executable) вместо ELF. Използването на PE решава проблемите с поддръжката на различни методи за защита от копиране, които проверяват идентичността на системните модули на диска и в паметта.
- Реализирана е възможността PE модулите да взаимодействат с Unix библиотеките, използвайки стандартното системно извикване на ядрото на NT, което прави възможно скриването на достъпа до Unix кода от страна на Windows дебъгерите и наблюдение на регистрацията на нишките.
- Вградените DLL файлове вече се зареждат само ако има съответен PE файл на диска, независимо дали е истинска библиотека или малък фрагмент с код. Тази промяна позволява на приложението винаги да осъществява правилното свързване към PE файлове. Може да се използва променливата на средата WINEBOOTSTRAPMODE, за деактивирането това поведение.
WoW64
- Реализирана е архитектурата WoW64 (64-битови Windows-on-Windows), която позволява стартиране на 32-битови Windows приложения в 64-битови Unix процеси. Поддръжката се осъществява чрез програмен слой, който транслира 32-битовите NT системни извиквания в 64-битови извиквания към NTDLL.
- Съответните софтуерни слоевете на WoW64 са подготвени за повечето Unix библиотеки и дават възможност на 32-битовите PE изпълними модули да имат достъп до 64-битовите Unix библиотеки. След като преобразуването на всички модули във формат PE приключи, ще бъде възможно стартирането на 32-битови Windows приложения без да се налага инсталиране и използване на 32-битови Unix библиотеки.
Най-после теми
- Реализирана е поддръжка за теми. Wine 7 включва скиновете „Light“, „Blue“ и „Classic Blue“, които могат да бъдат избрани чрез конфигуратора WineCfg.
- Добавена е възможност за персонализиране на външния вид на всички интерфейсни контроли чрез темите. Осигурено е автоматичното актуализиране на изгледа на елементите след смяна на темата.
- Поддръжката на теми е добавена и работи за всички вградени Wine приложения. Самите приложенията са адаптирани за дисплеите с висока плътност на пикселите (High DPI).
Графичната подсистема
- Добавена е новата програмна библиотека Win32u, която включва части от библиотеките GDI32 и USER32, които се използват за обработка на графики и управление на програмните прозорци на ниво ядро. В бъдеще ще започне работата по пренасянето на някои компоненти на драйвери като например winex11.drv и winemac.drv към Win32u.
- В драйвера Vulkan е реализирана поддръжка на спецификацията на API Vulkan graphics 1.2.201.
- Осигурена е поддръжката на извеждането чрез API Direct2D на защриховани геометрични обекти, с възможност за проверка на попадение при клик (hit-test).
- В Direct2D API е реализирана първоначалната поддръжка на на визуални ефекти, прилагани с използването на ID2D1Effect интерфейса.
- В API Direct2D е добавена поддръжката на интерфейса ID2D1MultiThread, който се използва за организиране на ексклузивен достъп до ресурсите в многонишковите приложения.
- Наборът от библиотеки WindowsCodecs вече поддържа WMP (Windows Media Photo) декодиране на изображенията и DDS (DirectDraw Surface) кодиране на изображения. Прекратена е поддръжка за кодиранете на изображения във ICNS (за macOS) формат, който не се поддържа в ОС Windows.
Direct3D
- Значително е подобрен новият енджин за рендиране, който прехвърля извикванията на Direct3D към графичния API на Vulkan. В повечето ситуации нивото на поддръжка на Direct3D 10 и 11 в базирания на Vulkan енджин е достигнал паритет със стария базиран на OpenGL енджин. За включването на механизма за изобразяване чрез Vulkan, е необходимо на системната променлива да се зададе значението променливата на Direct3D регистъра от „renderer“ на „vulkan“.
- Реализирани са много функции на Direct3D 10 и 11, включително отложени контексти (Deferred Contexts), работещи в контекста на устройствата обекти на състоянието, постоянни отмествания в буферите, почистване на неподредените представяния на текстурите, копиране на данни между ресурси в нетипизирани формати (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32P32B3) и т.н.
- Добавена е поддръжка на конфигурации с няколко монитора, което дава възможност за избор на монитор за показване на съответното Direct3D приложение в режим на цял екран.
- В DXGI API е реализирана възможност за корекция на гамата на екрана, която може да се използва от приложения, базирани на Direct3D 10 и 11, за промяна на яркостта на екрана. Осигурено е извличането и показването на броячи на виртуалните фреймбуфери (SwapChain).
- В Direct3D 12 е добавена поддръжката на текстурите версия 1.1
- При рендирането с помощта на API Vulkan е увеличена ефективността на обработка на запитванията при наличие на поддръжката в компютърната система на разширението VK_EXT_host_query_reset.
- Добавена е възможност за показване на виртуалните фреймбуфери (SwapChain) чрез GDI, ако OpenGL и/или Vulkan не могат да се използват например, за тяхното извеждане в програмен прозорец, базиран на фреймуърка CEF (Chromium Embedded Framework).
- При използването на GLSL бекенда за извеждане на шейдърни инструкции е осигурено използването на модификатора precise.
- В API DirectDraw е добавено 3D рендирането в системната памет
- В Wine 7.0 за Direct3D са добавени и графичните карти MD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 и NVIDIA GT 1030.
- От системния регистър HKEY_CURRENT_USER\Software\Wine\Direct3D е премахнат ключа UseGLSL, вместо който вече трябва да се използва hader_backend
- За поддръжката на Direct3D 12 вече необходима програмната библиотека vkd3d версия минимум 1.2
D3DX
- В реализацията на D3DX 10 е подобрена поддръжката на фреймуърка за визуални ефекти и е добавена поддръжката на графичния формат Windows Media Photo (JPEG XR).
- Добавени са предоставените в D3DX10 функции за създаване на текстури, включително D3DX10CreateTextureFromMemory().
- Частично са реализирани програмните интерфейси ID3DX10Sprite и ID3DX10Font.
Звук и видео
- В единния общ бекенд WineGStreamer са обединени GStreamer-настройките за DirectShow и за фреймуърка Media Foundation, което опростява разработването на нови API за декодиране на съдържание.
- На базата на бекенда WineGStreamer са реализирани модулите на Windows Media за синхронна и асинхронна работа.
- Почти е приключена работата върху фреймуърка Media Foundation, добавена е поддръжката на функцията IMFPMediaPlayer, подобрена е поддръжката на EVR и на буферите SAR.
- Премахната е програмната библиотека wineqtdecoder, която включваше декодера за QuickTime формата. Сега всички кодери използват GStreamer.
Входните устройства
- Значително е подобрен стекът на входните устройства поддържащи протокола HID (Human Interface Devices). Сега са реализирани редица нови възможности като например разбор на HD дескрипторите, обработване на HID и предоставянето на мини-HID драйвери.
- В драйвера winebus.sys е подобрено транслирането на описанието на устройствата в HID съобщенията
- Добавен е новият бекенд DirectInput за джойстици, поддържащи HID протокола. Реализирана е възможността за използването на обратната връзка при джойстиците. Премахнат е стария драйвер за джойстици winejoystick.drv.
- В модула DInput са добавени нови тестове, базирани на използването на виртуални HID устройства, при които не се изисква наличието на физическо HID устройства.
Ядрото
- При стартирането на непознат файл в средата на Wine 7 (например wine foo.msi) сега се извиква start.exe, който обработва съответния тип файл.
- Добавена е поддръжката на механизмите за синхронизация NtAlertThreadByThreadId и NtWaitForAlertByThreadId, които са много близки до мютексите в Linux.
- Добавени са NT дебъгери, които могат да се използват за настройка на ядрото
- Добавена е поддръжката на динамични ключове в системния регистър.
Мрежови възможности
- Подобрен е режимът на съвместимост с Internet Explorer 11 (IE11), който вече се използва по подразбиране за обработването на HTML документите.
- В библиотеката mshtml е реализиран JavaScript режима ES6 (ECMAScript 2015)
- Добавена е поддръжката на DTLS протокола
- Реализирана е NSI (Network Store Interface) услугата, подаваща иннформация за маршрутизирането и мрежовите интерфейси на компютъра.
- В работния каталог на Wine сега са поставени собствени файлове с мрежовите бази данни, като например /etc/protocols и /etc/networks и сега не се налага по-бавното използване на аналогичните Unix бази данни
Алтернативни операционни системи
- Добавена е поддръжката на устройствата на Apple, базирани на ARM системите върху чипа M1 (Apple Silicon).
- За поддръжката на функциите BCrypt и Secur32 за macOS ос платформата сега се налага инсталирането на програмната библиотека GnuTLS.
- 32-битовите файлове за ARM платформите сега се компилират в режима Thumb-2, по аналогия с Windows. За зареждането на тези файлове се използва preloader
- За FreeBSD е увеличен броят на запитванията на информация за системата от съвсем ниско ниво. Това е информация за състоянието на паметта, за нивото на заряд на акумулаторната батерия и други подобни.
Вградени приложения и софтуерни инструменти за разработчиците
- В помощната програма reg.exe е добавена поддръжката както на 32, така и на 64-битови значения на системния регистър.
- В програмата WineDump е добавена поддръжката на метаданните на Windows и сега се показва детайлна информация за CodeView записите.
- В дебъгера Wine Debugger (winedbg) е реализирана възможността за настройка на 32-битови процеси в 64-битовия дебъгер.
- В компилатора IDL (widl) е добавена възможността за зареждане на библиотеките, интегрирани в РЕ файловете, осигурена е поддръжката на специфичните за WinRT атрибути и конструкции.
Други
- Имената на всички типови директории в потребителската среда (Windows Shell) вече използват схемата, която бе въведа в операционната система Windows Vista. Сега всместо директорията My Documents се създава, а данните се съхраняват в директорията AppData
- В софтуерния слой за OpenCL библиотеката е добавена поддръжката на OpenCL 1.2 спецификацията.
- В драйвера WinSpool е добавена поддръжката на различни размери на страниците при тяхното извеждане на печат
- Добавена е началната поддръжка на MSDASQL, провайдъра на Microsoft OLE DB за ODBC драйверите
- Енджинът Wine Mono с реализацията на .NET е обновен до версия 7.0.0.
- Unicode данните са обновени до спецификацията Unicode 14
- В директорията със сорс кодовете са вградени програмните библиотеки Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt и Zlib, кото се използват в РЕ формата.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook или изтеглете приложението на Kaldata.com за Android, iOS и Huawei!