Rilis stabil Wine 5.0

Setelah satu tahun pengembangan dan 28 versi eksperimental disajikan rilis stabil dari implementasi terbuka API Win32 - Wine 5.0, yang mencakup lebih dari 7400 perubahan. Pencapaian utama dari versi baru ini mencakup pengiriman modul Wine bawaan dalam format PE, dukungan untuk konfigurasi multi-monitor, implementasi baru dari API audio XAudio2 dan dukungan untuk API grafis Vulkan 1.1.

Dalam Anggur dikonfirmasi pengoperasian penuh 4869 (setahun lalu 4737) program untuk Windows, 4136 program lainnya (setahun lalu 4045) bekerja sempurna dengan pengaturan tambahan dan DLL eksternal. 3635 program memiliki masalah kinerja kecil yang tidak mengganggu penggunaan fungsi dasar aplikasi.

Kunci inovasi Anggur 5.0:

  • Modul dalam format PE
    • Dengan kompiler MinGW, sebagian besar modul Wine sekarang dibangun dalam format file PE (Portable Executable, digunakan pada Windows) yang dapat dieksekusi, bukan ELF. Penggunaan PE memecahkan masalah dengan mendukung berbagai skema perlindungan salinan yang memverifikasi identitas modul sistem pada disk dan memori;
    • Eksekusi PE sekarang disalin ke direktori ~/.wine ($WINEPREFIX) alih-alih menggunakan file DLL tiruan, menjadikannya lebih mirip dengan instalasi Windows sebenarnya, dengan mengorbankan ruang disk tambahan;
    • Modul yang dikonversi ke format PE dapat menggunakan standar apa Fungsi dan konstanta C dengan Unicode (misalnya, L"abc");
    • Runtime Wine C telah menambahkan dukungan untuk menghubungkan dengan binari yang dibangun di MinGW, yang digunakan secara default alih-alih runtime MinGW saat membuat DLL;
  • Subsistem grafis
    • Menambahkan dukungan untuk bekerja dengan banyak monitor dan adaptor grafis, termasuk kemampuan untuk mengubah pengaturan secara dinamis;
    • Driver untuk API grafis Vulkan telah diperbarui agar sesuai dengan spesifikasi Vulkan 1.1.126;
    • Pustaka WindowsCodecs menyediakan kemampuan untuk mengonversi format raster tambahan, termasuk format dengan palet yang diindeks;
  • Direct3D
    • Saat menjalankan aplikasi Direct3D layar penuh, panggilan screen saver diblokir;
    • DXGI (DirectX Graphics Infrastructure) telah menambahkan dukungan untuk menginformasikan aplikasi ketika jendelanya diminimalkan, yang memungkinkan aplikasi mengurangi kinerja operasi intensif sumber daya ketika jendela diminimalkan;
    • Untuk aplikasi yang menggunakan DXGI, kini dimungkinkan untuk beralih antara mode layar penuh dan berjendela menggunakan kombinasi Alt+Enter;
    • Kemampuan implementasi Direct3D 12 telah diperluas, misalnya, kini terdapat dukungan untuk beralih antara mode layar penuh dan berjendela, mengubah mode layar, menskalakan keluaran, dan mengelola interval penggantian buffer rendering (interval swap);
    • Peningkatan penanganan berbagai situasi garis batas, seperti penggunaan nilai input di luar jangkauan untuk pengujian transparansi dan kedalaman, rendering dengan tekstur dan buffer yang dipantulkan, dan penggunaan objek DirectDraw yang salah clip, membuat perangkat Direct3 untuk jendela yang salah, menggunakan area yang terlihat yang nilai parameter minimumnya sama dengan maksimum, dll.
    • Direct3D 8 dan 9 memberikan pelacakan yang lebih akurat"kotor» area dengan tekstur yang dimuat;
    • Ukuran ruang alamat yang diperlukan saat memuat tekstur 3D yang dikompresi menggunakan metode S3TC telah dikurangi (alih-alih memuat seluruhnya, tekstur dimuat dalam potongan).
    • Antarmuka diimplementasikan ID3D11Multithread untuk melindungi bagian penting dalam aplikasi multi-thread;
    • Berbagai perbaikan dan perbaikan terkait penghitungan pencahayaan telah dilakukan untuk aplikasi DirectDraw lama;
    • Menerapkan panggilan tambahan untuk mendapatkan informasi tentang shader di API Refleksi Shader;
    • wined3d sekarang mendukung berkilauan Berbasis CPU untuk memproses sumber daya terkompresi;
    • Basis data kartu grafis yang dikenali di Direct3D telah diperluas;
    • Menambahkan kunci registri baru HKEY_CURRENT_USER\Software\Wine\Direct3D: “shader_backend” (backend untuk bekerja dengan shader: “glsl” untuk GLSL, “arb” untuk simpul/fragmen ARB dan “none” untuk menonaktifkan dukungan shader), “strict_shader_math” ( 0x1 - aktifkan, 0x0 - nonaktifkan konversi shader Direct3D). Tidak lagi menggunakan kunci "UseGLSL" (harus menggunakan "shader_backend");
  • D3DX
    • Dukungan untuk mekanisme kompresi tekstur 3D S3TC (S3 Texture Compression) telah diterapkan;
    • Menambahkan implementasi operasi yang benar seperti pengisian tekstur dan permukaan yang tidak dapat dipetakan;
    • Berbagai perbaikan dan perbaikan telah dilakukan pada kerangka pembuatan efek visual;
  • Kernel (Antarmuka Kernel Windows)
    • Sebagian besar fungsi yang digunakan di Kernel32 telah dipindahkan ke
      KernelBase, mengikuti perubahan arsitektur Windows;

    • Kemampuan untuk menggabungkan DLL 32 dan 64-bit dalam direktori yang digunakan untuk memuat. Memastikan bahwa perpustakaan yang tidak cocok dengan kedalaman bit saat ini diabaikan (32/64), jika lebih jauh di sepanjang jalur dimungkinkan untuk menemukan perpustakaan yang benar untuk kedalaman bit saat ini;
    • Untuk driver perangkat, emulasi objek kernel telah ditingkatkan;
    • Menerapkan objek sinkronisasi yang bekerja di tingkat kernel, seperti spin lock, mutex cepat, dan variabel yang dilampirkan ke sumber daya;
    • Memastikan aplikasi mendapat informasi yang benar tentang status baterai;
  • Antarmuka Pengguna dan Integrasi Desktop
    • Jendela yang diperkecil kini ditampilkan menggunakan bilah judul, bukan ikon gaya Windows 3.1;
    • Menambahkan gaya tombol baru Tombol Pisah (tombol dengan daftar tindakan drop-down) dan Tautan Perintah (link di kotak dialog digunakan untuk melanjutkan ke tahap berikutnya);
    • Tautan simbolis telah dibuat untuk folder 'Unduhan' dan 'Templat', menunjuk ke direktori terkait pada sistem Unix;
  • Perangkat input
    • Saat startup, driver perangkat Plug & Play yang diperlukan diinstal dan dimuat;
    • Peningkatan dukungan untuk pengontrol permainan, termasuk mini-joystick (saklar topi), roda kemudi, pedal gas dan rem.
    • Dukungan untuk API joystick Linux lama yang digunakan di kernel Linux sebelum versi 2.2 telah dihentikan;
  • NET.
    • Mesin Mono telah diperbarui ke rilis 4.9.4 dan sekarang menyertakan bagian dari kerangka Windows Presentation Foundation (WPF);
    • Menambahkan kemampuan untuk menginstal add-on dengan Mono dan Gecko dalam satu direktori umum, menempatkan file dalam hierarki /usr/share/wine alih-alih menyalinnya ke awalan baru;
  • Fitur jaringan
    • Mesin browser Wine Gecko, yang digunakan di perpustakaan MSHTML, telah diperbarui ke rilis 2.47.1. Dukungan untuk API HTML baru telah diterapkan;
    • MSHTML sekarang mendukung elemen SVG;
    • Menambahkan banyak fungsi VBScript baru (misalnya, penangan kesalahan dan pengecualian, fungsi Jam, Hari, Bulan, String, LBound, RegExp.Replace, РScriptTypeInfo_* dan ScriptTypeComp_Bind*, dll.);
    • Menyediakan pelestarian status kode dalam VBScript dan JScript (persistensi skrip);
    • Menambahkan implementasi awal layanan HTTP (WinHTTP) dan API terkait (HTTPAPI) untuk aplikasi klien dan server yang mengirim dan menerima permintaan menggunakan protokol HTTP;
    • Menerapkan kemampuan untuk mendapatkan pengaturan proxy HTTP melalui DHCP;
    • Menambahkan dukungan untuk mengalihkan permintaan otentikasi melalui layanan Microsoft Passport;
  • Kriptografi
    • Dukungan yang diterapkan untuk kunci kriptografi kurva elips (ECC) saat menggunakan GnuTLS;
    • Menambahkan kemampuan untuk mengimpor kunci dan sertifikat dari file dalam format PFX;
    • Menambahkan dukungan untuk skema pembuatan kunci berdasarkan kata sandi PBKDF2;
  • Teks dan font
    • Implementasi DirectWrite API telah menambahkan dukungan untuk fitur OpenType yang terkait dengan posisi mesin terbang, yang diaktifkan secara default untuk gaya Latin, termasuk kerning;
    • Peningkatan keamanan untuk memproses data font dengan memeriksa kebenaran berbagai tabel data sebelum menggunakannya;
    • Antarmuka DirectWrite telah disesuaikan dengan SDK terbaru;
  • Suara dan video
    • Implementasi baru dari API suara telah diusulkan XAudio2, dibangun berdasarkan proyek audio. Menggunakan FAudio dalam Wine memungkinkan Anda mencapai kualitas suara yang lebih tinggi dalam game dan menggunakan fitur seperti pencampuran volume dan efek suara tingkat lanjut;
    • Sejumlah besar panggilan baru telah ditambahkan ke implementasi kerangka Media Foundation, termasuk dukungan untuk antrean asinkron bawaan dan khusus, API Pembaca Sumber, Sesi Media, dll.
    • Filter pengambilan video telah dialihkan menggunakan API v4l2, bukan API v4l1, yang telah memperluas jangkauan kamera yang didukung;
    • Dekoder AVI, MPEG-I, dan WAVE bawaan telah dihapus, dan sekarang sistem GStreamer atau QuickTime digunakan;
    • Menambahkan subset API konfigurasi VMR7;
    • Menambahkan dukungan untuk menyesuaikan volume saluran individual ke driver suara;
  • Penginternasionalan
    • Tabel Unicode diperbarui ke versi 12.1.0;
    • Dukungan yang diterapkan untuk normalisasi Unicode;
    • Menyediakan instalasi otomatis wilayah geografis (HKEY_CURRENT_USER\Control Panel\International\Geo) berdasarkan lokal saat ini;
  • RPC/COM
    • Menambahkan dukungan untuk struktur dan array kompleks ke typelib;
    • Menambahkan implementasi awal perpustakaan runtime Windows Script;
    • Menambahkan implementasi awal perpustakaan ADO (Microsoft ActiveX Data Objects);
  • Pemasang
    • Dukungan untuk pengiriman patch (Patch Files) telah diterapkan untuk penginstal MSI;
    • Utilitas WUSA (Windows Update Standalone Installer) sekarang memiliki kemampuan untuk menginstal pembaruan dalam format .MSU;
  • platform lengan
    • Untuk arsitektur ARM64, dukungan untuk pelepasan tumpukan telah ditambahkan ke ntdll. Menambahkan dukungan untuk menghubungkan perpustakaan libunwind eksternal;
    • Untuk arsitektur ARM64, dukungan untuk proxy yang mulus telah diterapkan untuk antarmuka objek;
  • Alat Pengembangan / Winelib
    • Menambahkan kemampuan untuk menggunakan debugger dari Visual Studio untuk men-debug aplikasi yang berjalan di Wine dari jarak jauh;
    • Pustaka DBGENG (Debug Engine) telah diimplementasikan sebagian;
    • Biner yang dikompilasi untuk Windows tidak lagi bergantung pada libwine, sehingga memungkinkannya berjalan di Windows tanpa ketergantungan tambahan;
    • Menambahkan opsi '--sysroot' ke Resource Compiler dan IDL Compiler untuk menentukan jalur file header;
    • Menambahkan opsi '—target', '—wine-objdir', '—wine-objdir' ke winegcc
      '—winebuild' dan '-fuse-ld', yang menyederhanakan pengaturan lingkungan untuk kompilasi silang;

  • Aplikasi Tertanam
    • Menerapkan utilitas CHCP untuk mengonfigurasi pengkodean konsol;
    • Utilitas MSIDB untuk memanipulasi database dalam format MSI telah diterapkan;
  • Mengoptimalkan kinerja
    • Berbagai fungsi pengaturan waktu telah dimigrasikan untuk menggunakan fungsi pengatur waktu sistem berkinerja tinggi, sehingga mengurangi overhead dalam loop render di banyak game;
    • Menambahkan kemampuan untuk menggunakan Ext4 di FS rezim bekerja tanpa sensitivitas huruf besar-kecil;
    • Kinerja pemrosesan sejumlah besar elemen dalam dialog tampilan daftar yang beroperasi dalam mode LBS_NODATA telah dioptimalkan;
    • Menambahkan implementasi kunci SRW (Slim Reader/Writer) yang lebih cepat untuk Linux, diterjemahkan ke Futex;
  • Dependensi Eksternal
    • Untuk merakit modul dalam format PE, digunakan kompiler silang MinGW-w64;
    • Menerapkan XAudio2 memerlukan perpustakaan FAudio;
    • Untuk melacak perubahan file pada sistem BSD
      perpustakaan Inotify digunakan;

    • Untuk menangani pengecualian pada platform ARM64, diperlukan pustaka Unwind;
    • Daripada Video4Linux1, perpustakaan Video4Linux2 sekarang diperlukan.

Sumber: opennet.ru

Tambah komentar