След една година разработване и 28 предварителни експериментални версии бе представена отворената реализация на Win32 API – Wine 5.0, в който са направени 7400 промени. Сред ключовите нововъведения са използването на модули с PE формат във Wine 5.0, поддръжката на компютърни конфигурации с повече от един монитор, нова реализация на звуковия API XAudio2 интерфейс и поддръжката на API Vulkan 1.1.
В новия Wine се поддържа 100% работата на 4869 програми за Windows (преди една година те бяха 4737). Още 4136 работят перфектно чрез допълнителни настройки и външни DLL. При 3645 Windows програми се наблюдават неголеми проблеми при работата, които не пречат на основните функции на тези приложения.
Ключови промени и нововъведения във Wine 5.0
- Модули с PE формат
- След започване използването на компилатора MinGW, вместо в ELF формат, повечето модули на Wine сега се компилират в изпълнимия формат на файловете PE (Portable Executable), който се използва в ОС Windows. Използването на PE решава проблемите с поддръжката на различните методи за защита от копиране, дава възможност за проверка идентичността на системните модули както в диска, така и в оперативната памет
- Изпълнимите PE файлове сега се копират в папката ~/.wine ($WINEPREFIX) и се използват вместо предишните фиктивни DLL файлове. По този начин инсталирането на програма е аналогично на реалното инсталиране във Windows, но се заема малко повече дисково пространство
- Модулите с PE формат могат да използват стандартните wchar Си-функии и константи с уникод (например L“abc“)
- Във Wine C runtime е добавена поддръжката на линкване на двоични файлове, компилирани с MinGW
Графичната подсистема
- Добавена е поддръжката на работа с няколко монитора и няколко видеокарти, включително възможност за динамична промяна на настройките
- Обновен е драйвера за API Vulkan, който сега съответства на спецификациите Vulkan 1.1.126
- В библиотеката WindowsCodecs е реализирана възможност за преобразуване на нови файлови формати, включително формати с индексирана цветова палитра
Direct3D
- При стартирането на Direct3D приложения на цял екран се блокира скрийнсейвъра
- В DXGI (DirectX Graphics Infrastructure) е добавена поддръжката за подаване на информация към приложението, че предстои минимизиране на неговия програмен прозорец. По този начин значително се намаляват използваните системни ресурси при минимизирането на прозореца
- За приложенията, използващи DXGI е реализирана възможност за превключване между пълен екран и прозоречен режим чрез клавишната комбинация Alt+Enter
- Разширени са възможностите на реализацията на Direct3D 12. Вече се поддържа превключване между работата на цял екран или в прозорец, могат да се променят графичните режими на екрана, вече има мащабиране и управление на тайминга на подмяна на графичния буфер (swap interval)
- Подобрена е обработката на граничните ситуации, като например използване на параметри извън техните диапазони – прозрачност, работа с буфери и текстури и други
- В Direct3D 8 и 9 по-точно се проследяват неправилно обработените области на текстурите
- Намален е размерът на необходимото адресно пространство при зареждането на 3D текстурите, компресирани чрез S3TC алгоритъма, при който те се зареждат на части, вместо наведнъж
- Реализиран е ID3D11Multithread интерфейса за защита на критичните секции в многопоточните приложения
- За старите приложения с DirectDraw са направени многобройни подобрения по отношение правилното изчисляване осветяването на сцените
- Реализирани са допълнителни извиквания за получаване на информация за шейдърите в API ShaderReflection
- Във wined3d е добавена поддръжката на работа с компресирани ресурси
- Значително е разширена е базата данни на графичните карти, разпознавани от Direct3D
D3DX
- Вградена е поддръжката на S3TC (S3 Texture Compression) компресирането на триизмерните текстури
- Коригирани са операциите за използване на текстури и повърхности, които не отразяват светлината
- Направени са редица подобрения и нововъведения във фреймуърка за специалните ефекти
Ядрото (интерфейсите на ядрото на Windows)
- Повечето функции, използвани в Kernel32, са преместени в KernelBase, като по този начин се следва оригиналната архитектура на ОС Windows
- Дадена е възможност за смесване на 32 и 64-битовите DLL библиотеки в папките, използване при зареждането на програмите. Ако бъде намерена коректната 32 или 64-битова библиотека, то аналогичната библиотека със същото име се отхвърля
- При драйверите за различните устройства е подобрена емулацията на обектите на ядрото на ОС Windows
- Реализирани са работещи на ниво ядро обекти за синхронизация, като spin блокажи и бързи мютекси
- Осигурено е коректното информиране на приложенията за състоянието на акумулаторната батерия
Потребителски интерфейс и интеграция с десктопа
- Минимизираните прозорци вече могат да се изобразяват и чрез използване на заглавието, а не само на иконките
- Добавени са стандартните стилове на иконките SplitButton и Command Links
- За папките Downloads и Templates са създадени символни препратки, указващи съответните директории в Unix системите
Устройствата за въвеждане на информация
- При стартирането на Windows програмите е осигурено автоматичното зареждане на необходимите драйвери за Plug & Play устройствата
- Подобрена е поддръжката на игровите контролери, включително на мини джойстиците, педалите за газ и спирачка
- Прекратена е поддръжката на стария Linux API, който се използваше в ядрата до версия 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
Криптография
- Вече се поддържат криптографски ключове, базирани на елиптични криви (ECC) при използването на GnuTLS
- Добавена е възможност за импортиране на ключове и сертификати от файловете с PFX формат
- Поддържа се PBKDF2 алгоритъма за формиране на ключ
Текстове и шрифтове
- В реализацията на API DirectWrite е добавена поддръжката възможностите на OpenType, свързани с позиционирането на глифовете, включително кърнинга
- Интерфейсите 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) на базата на текущата локала
ARM платформата
- За ARM64 архитектурата в ntdll е добавена възможност за разгръщане на стека (stack unwinding). Вече се поддържат външни libunwind библиотеки
- За ARM64 архитектурата в реализирана поддръжката на безшевни проксита (stubless proxies)
Инструменти за разработване
- Добавена е възможност за използване на дебъгера от Visual Studio за отдалечено дебъгване на приложенията, стартирани във Wine
- Частично е реализирана библиотеката DBGENG (Debug Engine)
Оптимизация на производителността
- Всички функции за работа с времеви интервали вече използват високопроизводителните системни функции за работа с таймера, което значително е намалило разходите на ресурси при рендирането на почти всички игри
- Добавена е възможност за използването на файловата система Ext4 без значение дали се използват големи или малки букви
- Оптимизирана е производителността при обработката на голям брой списъци с елементи, работещи в режим LBS_NODATA
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!



