Po roku rozwoju i 28 wersjach próbnych zaprezentowano stabilną wersję otwartej implementacji Win32 API — Wine 8.0, która zawiera ponad 8600 zmian. Kluczowym osiągnięciem w nowej wersji jest zakończenie pracy nad konwersją modułów Wine do formatu.
W Wine potwierdzono pełną funkcjonalność 5266 programów dla systemu Windows (rok temu 5156, dwa lata temu 5049), dodatkowo 4370 programów (rok temu 4312, dwa lata temu 4227) działa doskonale z dodatkowymi ustawieniami i zewnętrznymi DLL. U 3888 programów (rok temu 3813, dwa lata temu 3703) występują drobne problemy, które nie przeszkadzają w używaniu podstawowych funkcji aplikacji.
Kluczowe nowości Wine 8.0:
- Moduły w formacie PE
- Po czterech latach pracy w pełni zakończono konwersję wszystkich bibliotek DLL do stosowania formatu plików wykonywalnych PE (Portable Executable, stosowanego w Windows). Użycie PE pozwala na korzystanie z dostępnych dla Windows debugerów oraz rozwiązuje problemy z obsługą różnych mechanizmów ochrony przed kopiowaniem, które sprawdzają tożsamość modułów systemowych na dysku i w pamięci. Rozwiązano również problemy z działaniem aplikacji 32-bitowych na hostach 64-bitowych oraz aplikacji x86 na systemach ARM. Wśród pozostałych zadań, które planuje się rozwiązać w przyszłych wersjach eksperymentalnych Wine 8.x, wymienia się konwersję modułów do interfejsu wywołań systemowych NT zamiast dokonywania bezpośrednich wywołań między poziomami PE a Unix.
- Zrealizowano specjalny menedżer wywołań systemowych, używany do translacji zapytań z PE do bibliotek Unix w celu zmniejszenia kosztów przy wykonywaniu pełnego wywołania systemowego NT. Na przykład, wprowadzona optymalizacja pozwoliła na zmniejszenie spadku wydajności przy korzystaniu z bibliotek OpenGL i Vulkan.
- W aplikacjach Winelib zachowano możliwość korzystania z mieszanych zestawów bibliotek Windows/Unix w formacie ELF (.dll.so), jednak takie aplikacje bez 32-bitowych bibliotek nie będą wspierać funkcjonalności dostępnej poprzez interfejs wywołań systemowych NT, takiej jak WoW64.
- WoW64
- Dla wszystkich bibliotek Unix dostępne są warstwy WoW64 (64-bit Windows-on-Windows), które umożliwiają 32-bitowym modułom w formacie PE dostęp do 64-bitowych bibliotek Unix, co po pozbyciu się bezpośrednich wywołań PE/Unix umożliwia uruchamianie 32-bitowych aplikacji Windows bez instalacji 32-bitowych bibliotek Unix.
- W przypadku braku 32-bitowego ładowarki Wine uruchomienie 32-bitowych aplikacji jest możliwe w nowym eksperymentalnym trybie Windows-podobnym WoW64, w którym kod 32-bitowy działa wewnątrz 64-bitowego procesu. Tryb ten aktywuje się podczas kompilacji Wine z opcją ‘—enable-archs’.
- Podsystem graficzny
- W domyślnej konfiguracji zastosowano jasną motywację („Light”). Temat można zmienić za pomocą narzędzia WineCfg.

- Sterowniki graficzne (winex11.drv, winemac.drv, wineandroid.drv) zostały przekształcone do wykonywania systemowych wywołań na poziomie Unix i dostępu do sterowników przez bibliotekę Win32u.

- Zrealizowana architektura przetwarzania wydruku (Print Processor), stosowana do eliminacji bezpośrednich wywołań między poziomami PE i Unix w sterowniku drukarki.
- W API Direct2D wprowadzono wsparcie dla efektów.
- W API Direct2D dodano możliwość zapisu i odtwarzania list poleceń.
- W sterowniku dla API graficznego Vulkan dodano wsparcie dla specyfikacji Vulkan 1.3.237 (w Wine 7 obsługiwano Vulkan 1.2).
- W domyślnej konfiguracji zastosowano jasną motywację („Light”). Temat można zmienić za pomocą narzędzia WineCfg.
- Direct3D
- Dodano nowy kompilator shaderów dla języka HLSL (High-Level Shader Language), zrealizowany w oparciu o bibliotekę vkd3d-shader. Przygotowano również dezasemblator HLSL oraz preprocesor HLSL oparty na vkd3d-shader.
- Zrealizowano interfejs Thread Pump, który pojawił się w D3DX 10.
- W efektach Direct3D 10 dodano wsparcie dla wielu nowych wyrażeń.
- W dodatkowej bibliotece dla D3DX 9 wprowadzono wsparcie dla projekcji tekstur Cubemap.
- Dźwięk i wideo
- Na bazie frameworka GStreamer wprowadzono wsparcie dla filtrów dekodujących dźwięk w formacie MPEG-1.
- Dodano filtr do odczytu strumieniowego dźwięku i wideo w formacie ASF (Advanced Systems Format).
- Usunięto pośrednią bibliotekę-warstwę OpenAL32.dll, zamiast której teraz wykorzystywana jest rodzinna biblioteka Windows OpenAL32.dll, dostarczana z aplikacjami.
- W Media Foundation Player poprawiono deteckcję typu zawartości.
- Zrealizowano możliwość zarządzania szybkością transferu danych (Rate control).
- Ulepszono wsparcie dla miksera i rysownika (presenter), oferowanych domyślnie w Enhanced Video Renderer (EVR).
- Dodano wstępną implementację API Writer Encoding.
- Ulepszono wsparcie dla ładowania topologii.
- Urządzenia wejściowe
- Znacząco poprawiono wsparcie dla gorącego podłączenia kontrolerów.
- Zaproponowano ulepszoną implementację kodu dla obsługi joysticków opartą na bibliotece SDL.
- Ulepszono wsparcie dla efektu wibracji (Force feedback) przy użyciu joysticków.
- Wprowadzono możliwość kontroli lewego i prawego silnika wibracyjnego, korzystającego z specyfikacji HID Haptic.
- Zmieniony interfejs użytkownika. panelu sterowania joystick.
- Dzięki wykorzystaniu backendu hidraw zapewniono wsparcie dla kontrolerów Sony DualShock i DualSense.
- Zaproponowano moduł WinRT Windows.Gaming.Input z realizacją interfejsu API do obsługi gamepadów, joysticków i joysticków. Nowe API realizuje również powiadomienia o gorącym podłączeniu urządzeń, efekty dotykowe i wibracyjne.
- Międzynarodowa lokalizacja
- Zapewniono generację poprawnej bazy danych lokalizacji w formacie locale.nls z repozytorium Unicode CLDR (Unicode Common Locale Data Repository).
- Funkcje porównywania ciągów Unicode zmieniono na użycie bazy danych i algorytmu Windows Sortkey zamiast algorytmu Unicode Collation, co przybliżyło działanie do Windows.
- W większości funkcji dodano wsparcie dla górnych zakresów kodów (płaszczyzn) Unicode.
- Umożliwiono użycie UTF-8 jako kodowania ANSI.
- Tablice symboli zostały zaktualizowane do specyfikacji Unicode 15.0.0.
- Tekst i czcionki
- Dla większości systemowych czcionek włączono powiązanie czcionek, co pozwoliło rozwiązać problem braku glifów w systemach z chińskimi, koreańskimi i japońskimi lokalizacjami.
- Przeprojektowano powrót do czcionki zapasowej w DirectWrite.
- Jądro (interfejsy jądra Windows)
- Zrealizowano bazę danych ApiSetSchema, która zastąpiła moduły api-ms-* i pozwoliła na zmniejszenie zużycia dysku i przestrzeni adresowej.
- Zapewniono zachowanie atrybutów plików DOS na dysku w formacie zgodnym z Samba, wykorzystując do tego rozszerzone atrybuty systemu plików.
- Możliwości sieciowe
- Dodano wsparcie dla protokołu OCSP (Online Certificate Status Protocol), stosowanego do weryfikacji odwołanych certyfikatów.
- Rozszerzono możliwości EcmaScript dostępne w trybie zgodności ze standardami JavaScript.
- Zrealizowano zbieracz śmieci dla JavaScript.
- W pakiecie z silnikiem Gecko włączono narzędzia dla osób z ograniczoną sprawnością.
- W MSHTML dodano wsparcie dla API Web Storage, obiektu Performance oraz dodatkowych obiektów do przetwarzania zdarzeń.
- Wbudowane aplikacje
- Wszystkie wbudowane aplikacje zostały przetłumaczone na użycie biblioteki Common Controls 6, z wsparciem dla motywów wizualnych i renderowania z uwzględnieniem ekranów o wysokiej gęstości pikseli.
- Rozszerzone możliwości debugowania wątków w debugerze Wine Debugger (winedbg).
- W narzędziach do pracy z rejestrem (REGEDIT i REG) dodano wsparcie dla typu QWORD.
- W Notepad dodano pasek stanu z informacjami o pozycji kursora oraz funkcję Goto Line do przechodzenia do określonego numeru wiersza.
- W wbudowanej konsoli zapewniono wyjście danych w kodowej stronie OEM.
- Do narzędzia sc.exe (Service Control) dodano komendę ‘query’.
- System kompilacji
- Umożliwiono kompilację plików wykonywalnych w formacie PE dla wielu architektur (np. ‘—enable-archs=i386,x86_64’).
- Na wszystkich platformach z 32-bitowym typem long, typy danych zdefiniowane w Windows jako long, w Wine są teraz redefiniowane jako ‘long’ zamiast ‘int’. W Winelib to zachowanie można wyłączyć poprzez zdefiniowanie WINE_NO_LONG_TYPES.
- Dodano możliwość generowania bibliotek bez użycia dlltool (włącza się poprzez zadanie opcji ‘—without-dlltool’ w winebuild).
- Aby zwiększyć efektywność ładowania i zmniejszyć rozmiar bibliotek, które nie zawierają kodu i zawierają tylko zasoby, w winegcc wprowadzono opcję ‘—data-only’.
- Różne
- Zaktualizowane wersje wbudowanych bibliotek Faudio 22.11, LCMS2 2.14, LibJPEG 9e, LibMPG123 1.31.1, LibPng 1.6.39, LibTiff 4.4.0, LibXml2 2.10.3, LibXslt 1.1.37, Zlib 1.2.13.
- Silnik Wine Mono z realizacją platformy .NET został zaktualizowany do wersji 7.4.
- Wprowadzono wsparcie dla szyfrowania opartego na algorytmie RSA oraz cyfrowych podpisów RSA-PSS.
- Dodano wczesną wersję API UI Automation.
- W drzewie źródeł dodano biblioteki LDAP i vkd3d, które są kompilowane w formacie PE, co wyeliminowało konieczność dostarczania unixowych wersji tych bibliotek.
- Zaniechano użycia biblioteki OpenAL.
Źródło: opennet.ru


