Stabilna wersja Wine 8.0

Po roku rozwoju i 28 wersjach eksperymentalnych zaprezentowano stabilną wersję otwartej implementacji API Win32 - Wine 8.0, która zawierała ponad 8600 zmian. Kluczowym osiągnięciem nowej wersji jest zakończenie prac nad tłumaczeniem modułów Wine na format.

Wine potwierdziło pełne działanie 5266 (rok temu 5156, dwa lata temu 5049) programów dla Windows, kolejnych 4370 (rok temu 4312, dwa lata temu 4227) programów doskonale współpracuje z dodatkowymi ustawieniami i zewnętrznymi bibliotekami DLL. 3888 programów (rok temu 3813, dwa lata temu 3703) ma drobne problemy operacyjne, które nie zakłócają korzystania z głównych funkcji aplikacji.

Kluczowe innowacje w Wine 8.0:

  • Moduły w formacie PE
    • Po czterech latach prac zakończono konwersję wszystkich bibliotek DLL do korzystania z formatu pliku wykonywalnego PE (Portable Executable, używanego w systemie Windows). Zastosowanie PE pozwala na użycie debuggerów dostępnych dla Windows i rozwiązuje problemy z obsługą różnych schematów ochrony przed kopiowaniem, które weryfikują tożsamość modułów systemu na dysku i w pamięci. Rozwiązano także problemy z uruchamianiem aplikacji 32-bitowych na hostach 64-bitowych oraz aplikacji x86 na systemach ARM. Wśród pozostałych zadań, które planowane są do rozwiązania w kolejnych eksperymentalnych wydaniach Wine 8.x, znajduje się przejście modułów do interfejsu wywołań systemowych NT zamiast wykonywania bezpośrednich wywołań pomiędzy warstwami PE i Unix.
    • Zaimplementowano specjalny menedżer wywołań systemowych, używany do tłumaczenia wywołań z bibliotek PE na biblioteki Unix w celu zmniejszenia narzutu związanego z wykonaniem pełnego wywołania systemowego NT. Na przykład optymalizacja umożliwiła zmniejszenie degradacji wydajności podczas korzystania z bibliotek OpenGL i Vulkan.
    • Aplikacje Winelib zachowują możliwość korzystania z mieszanych zestawów bibliotek ELF (.dll.so) systemu Windows/Unix, ale takie aplikacje bez bibliotek 32-bitowych nie będą obsługiwać funkcji dostępnych poprzez interfejs wywołań systemowych NT, takich jak WoW64.
  • WoW64
    • Warstwy WoW64 (64-bitowy Windows-on-Windows) są dostarczane dla wszystkich bibliotek Unixowych, umożliwiając 32-bitowym modułom w formacie PE dostęp do 64-bitowych bibliotek Unixowych, co po pozbyciu się bezpośrednich wywołań PE/Unix umożliwi możliwe jest uruchamianie 32-bitowych aplikacji Windows bez instalowania 32-bitowych bibliotek Unixowych.
    • W przypadku braku 32-bitowego modułu ładującego Wine, 32-bitowe aplikacje mogą działać w nowym, eksperymentalnym trybie Windows, podobnym do WoW64, w którym 32-bitowy kod jest uruchamiany w 64-bitowym procesie. Tryb jest włączany podczas budowania Wine z opcją „—enable-archs”.
  • Podsystem graficzny
    • Domyślna konfiguracja wykorzystuje jasny motyw („Lekki”). Możesz zmienić motyw za pomocą narzędzia WineCfg.
      Stabilna wersja Wine 8.0
    • Sterowniki graficzne (winex11.drv, winemac.drv, wineandroid.drv) są konwertowane w celu wykonywania wywołań systemowych na poziomie Uniksa i uzyskiwania dostępu do sterowników poprzez bibliotekę Win32u.
      Stabilna wersja Wine 8.0
    • Zaimplementowano architekturę Print Processor, która służy do eliminacji bezpośrednich wywołań pomiędzy poziomami PE i Unix w sterowniku drukarki.
    • Interfejs API Direct2D obsługuje teraz efekty.
    • Interfejs API Direct2D dodał możliwość nagrywania i odtwarzania list poleceń.
    • Sterownik graficznego API Vulkan dodał obsługę specyfikacji Vulkan 1.3.237 (Vulkan 7 był obsługiwany w Wine 1.2).
  • Direct3D
    • Dodano nowy kompilator modułu cieniującego dla języka HLSL (High-Level Shader Language), zaimplementowany w oparciu o bibliotekę vkd3d-shader. W oparciu o vkd3d-shader przygotowano deasembler HLSL i preprocesor HLSL.
    • Zaimplementowano interfejs Thread Pump wprowadzony w D3DX 10.
    • Efekty Direct3D 10 dodają obsługę wielu nowych wyrażeń.
    • Biblioteka obsługi D3DX 9 obsługuje teraz projekcję tekstur Cubemap.
  • Dźwięk i wideo
    • W oparciu o framework GStreamer zaimplementowano obsługę filtrów dekodujących dźwięk w formacie MPEG-1.
    • Dodano filtr do odczytu strumieniowego przesyłania audio i wideo w formacie ASF (Advanced Systems Format).
    • Usunięto pośrednią warstwę biblioteki OpenAL32.dll, zamiast której używana jest natywna biblioteka Windows OpenAL32.dll, dostarczana z aplikacjami.
    • Media Foundation Player ma ulepszone wykrywanie typu zawartości.
    • Zaimplementowano możliwość kontrolowania szybkości przesyłania danych (Rate control).
    • Ulepszona obsługa domyślnego miksera i prezentera w ulepszonym rendererze wideo (EVR).
    • Dodano wstępną implementację API Writer Encoding.
    • Ulepszona obsługa modułu ładującego topologię.
  • Urządzenia wejściowe
    • Znacząco ulepszona obsługa podłączania kontrolerów na gorąco.
    • Zaproponowano ulepszoną implementację kodu służącego do wyznaczania kierownic gry, zbudowanego w oparciu o bibliotekę SDL.
    • Ulepszona obsługa efektu sprzężenia zwrotnego siły podczas korzystania z kółek do gier.
    • Zaimplementowano możliwość sterowania lewym i prawym silnikiem wibracyjnym za pomocą specyfikacji HID Haptic.
    • Zmieniono wygląd panelu sterowania z joystickiem.
    • Obsługa kontrolerów Sony DualShock i DualSense jest zapewniona dzięki wykorzystaniu zaplecza hidraw.
    • Proponowany jest moduł WinRT Windows.Gaming.Input z implementacją interfejsu programowego umożliwiającego dostęp do gamepadów, joysticków i kółek do gier. Dla nowego API zaimplementowano m.in. obsługę powiadamiania o podłączaniu urządzeń na gorąco, efekty dotykowe i wibracyjne.
  • Umiędzynarodowienie
    • Zapewnione jest wygenerowanie poprawnej bazy danych locale w formacie locale.nls z repozytorium Unicode CLDR (Unicode Common Locale Data Repository).
    • Funkcje porównywania ciągów Unicode zostały przeniesione tak, aby korzystały z bazy danych i algorytmu Windows Sortkey zamiast algorytmu Unicode Collation, co przybliża zachowanie do systemu Windows.
    • Większość funkcji dodała obsługę górnych zakresów kodu Unicode (płaszczyzn).
    • Możliwe jest użycie UTF-8 jako kodowania ANSI.
    • Tabele znaków zostały zaktualizowane do specyfikacji Unicode 15.0.0.
  • Tekst i czcionki
    • Dla większości czcionek systemowych włączono łączenie czcionek, co rozwiązuje problem brakujących glifów w systemach z ustawieniami regionalnymi chińskimi, koreańskimi i japońskimi.
    • Przerobiono zastępczą czcionkę w DirectWrite.
  • Jądro (interfejsy jądra systemu Windows)
    • Wdrożono bazę danych ApiSetSchema, która zastąpiła moduły api-ms-* i obniżyła zużycie dysku oraz przestrzeni adresowej.
    • Atrybuty plików DOS są zapisywane na dysku w formacie zgodnym z Sambą przy użyciu rozszerzonych atrybutów FS.
  • Funkcje sieciowe
    • Dodano obsługę protokołu OCSP (Online Certyfikat Status Protocol), używanego do sprawdzania unieważnionych certyfikatów.
    • Rozszerzono zakres funkcji EcmaScript dostępnych w trybie zgodności ze standardami JavaScript.
    • Zaimplementowano moduł zbierający elementy bezużyteczne dla JavaScript.
    • Pakiet silnika Gecko zawiera funkcje dla osób niepełnosprawnych.
    • MSHTML dodaje obsługę interfejsu API Web Storage, obiektu Performance i dodatkowych obiektów do obsługi zdarzeń.
  • Aplikacje wbudowane
    • Wszystkie wbudowane aplikacje zostały przekonwertowane do korzystania z biblioteki Common Controls 6, z obsługą motywów projektowych i renderowania z uwzględnieniem ekranów o dużej gęstości pikseli.
    • Rozszerzone możliwości debugowania wątków w debugerze Wine (winedbg).
    • Narzędzia rejestru (REGEDIT i REG) obsługują teraz typ QWORD.
    • Notatnik dodał pasek stanu z informacją o pozycji kursora oraz funkcję Goto Line umożliwiającą przejście do określonego numeru linii
    • Wbudowana konsola udostępnia dane wyjściowe na stronie kodowej OEM.
    • Do narzędzia sc.exe (Kontrola usług) dodano polecenie „query”.
  • System montażu
    • Udostępniono możliwość budowania plików wykonywalnych w formacie PE dla kilku architektur (na przykład „—enable-archs=i386,x86_64”).
    • Na wszystkich platformach z 32-bitowym typem długim typy danych zdefiniowane jako long w systemie Windows są teraz ponownie definiowane jako „long” zamiast „int” w Wine. W Winelib to zachowanie można wyłączyć za pomocą definicji WINE_NO_LONG_TYPES.
    • Dodano możliwość generowania bibliotek bez użycia narzędzia dlltool (włączane poprzez ustawienie opcji „-without-dlltool” w winebuild).
    • Aby poprawić wydajność ładowania i zmniejszyć rozmiar bezkodowych bibliotek zawierających tylko zasoby, winegcc implementuje opcję „--data-only”.
  • Miscellanea
    • 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 implementacją platformy .NET został zaktualizowany do wersji 7.4.
    • Zaimplementowano obsługę szyfrowania w oparciu o algorytm RSA oraz podpisy cyfrowe RSA-PSS.
    • Dodano początkową wersję API automatyzacji interfejsu użytkownika.
    • Drzewo źródłowe zawiera biblioteki LDAP i vkd3d, które są skompilowane w formacie PE, co eliminuje potrzebę dostarczania uniksowych zestawów tych bibliotek.
    • Biblioteka OpenAL została wycofana.

Źródło: opennet.ru

Dodaj komentarz