23 poin oleh GN⁺ 27 hari lalu | 2 komentar | Bagikan ke WhatsApp
  • Struktur eksekusi game Windows di Linux dirancang ulang sepenuhnya di tingkat kernel, menghilangkan bottleneck sinkronisasi berbasis wineserver yang selama ini ada
  • Driver NTSYNC baru menangani objek sinkronisasi NT langsung di kernel, mencatat peningkatan FPS hingga lebih dari 8x
  • Dengan WoW64 yang kini lengkap, aplikasi Windows 32-bit dapat berjalan di Linux 64-bit tanpa library terpisah
  • Peningkatan driver Wayland, dukungan Vulkan 1.4, perbaikan Bluetooth dan force feedback, serta kompatibilitas yang lebih luas di sisi grafis dan I/O
  • Dampak peningkatan performa dan stabilitas meluas ke seluruh ekosistem berbasis Wine seperti Proton, SteamOS, dan Lutris

Perubahan inti di Wine 11

  • Wine 11 bukan sekadar pembaruan tahunan biasa, melainkan revisi besar yang menulis ulang cara Linux menjalankan game Windows di tingkat kernel

    • Selain akumulasi perbaikan bug dan optimasi performa selama bertahun-tahun, ada perubahan struktural seperti dukungan NTSYNC, WoW64 yang lengkap, dan penguatan driver Wayland
    • Peningkatan performa juga menyebar ke proyek berbasis Wine secara luas seperti Proton dan SteamOS

Keterbatasan lama dan solusi sementara

  • Sebelumnya, Wine tidak mampu mengimplementasikan primitif sinkronisasi NT Windows (mutex, semaphore, event, dll.) secara sempurna di Linux
    • Untuk sinkronisasi antarthread, Wine harus melakukan panggilan RPC ke wineserver setiap saat, dan ribuan panggilan per detik ini memicu frame delay serta timing yang tidak konsisten
  • Esync mengurangi panggilan ke wineserver dengan memanfaatkan eventfd, tetapi menimbulkan masalah batas file descriptor
  • Fsync lebih cepat karena berbasis futex, tetapi membutuhkan patch kernel di luar upstream, sehingga sulit digunakan di distro umum
    • futex_waitv di Linux 5.16 berbeda dari rancangan asli Fsync dan bukan pengganti penuh
  • Keduanya tetap merupakan solusi sementara, dan beberapa API NT (misalnya NtPulseEvent, mode wait-for-all pada NtWaitForMultipleObjects) tidak bisa diimplementasikan secara akurat

NTSYNC — redesain sinkronisasi di tingkat kernel

  • NTSYNC menambahkan driver perangkat /dev/ntsync baru ke kernel Linux untuk memodelkan objek sinkronisasi Windows NT secara langsung
    • Sinkronisasi diproses di dalam kernel, bukan di user space, sehingga tidak perlu lagi bolak-balik ke wineserver
    • Pengelolaan queue, semantik event, dan operasi atomik semuanya ditangani langsung oleh kernel
  • Pengembangnya adalah Elizabeth Figura, yang juga membuat Esync dan Fsync; dipresentasikan pada Linux Plumbers Conference 2023 lalu digabungkan ke Linux 6.14
  • Angka peningkatan performa

    • Dirt 3: 110.6 → 860.7 FPS (naik 678%)
    • Resident Evil 2: 26 → 77 FPS
    • Call of Juarez: 99.8 → 224.1 FPS
    • Tiny Tina’s Wonderlands: 130 → 360 FPS
    • Call of Duty: Black Ops I kini dalam kondisi sepenuhnya bisa dimainkan
  • Perbedaan dibanding fsync

    • Bagi pengguna fsync, peningkatannya mungkin terbatas, tetapi pada game dengan bottleneck multithread hasilnya bisa sangat drastis
    • Karena sudah masuk kernel mainline, tidak perlu patch tambahan dan bisa langsung dipakai di distro terbaru seperti Fedora 42 dan Ubuntu 25.04
    • Sudah aktif secara default di SteamOS 3.7.20 beta dan juga diaktifkan pada Proton GE
    • NTSYNC menjadi kasus pertama dalam sejarah Wine yang menghadirkan implementasi sinkronisasi akurat di tingkat kernel

WoW64 lengkap — penyatuan kompatibilitas 32-bit

  • Implementasi arsitektur WoW64 (Windows 32-bit on Windows 64-bit) kini lengkap di Wine 11
    • Pada sistem Linux 64-bit, aplikasi Windows 32-bit kini bisa dijalankan tanpa perlu memasang library 32-bit terpisah
    • Satu binary dapat mendeteksi bitness executable secara otomatis lalu menanganinya
  • Termasuk dukungan untuk OpenGL memory mapping, SCSI passthrough, hingga aplikasi 16-bit
    • Ini membuat software Windows lawas dari era 1990-an juga bisa dijalankan
  • Dulu eksekusi sering sulit karena perbedaan konfigurasi multilib antar distro, tetapi kini ditangani secara internal oleh Wine

Wayland dan peningkatan penting lainnya

  • Driver Wayland

    • Dukungan copy clipboard dua arah, drag-and-drop, dan scaling compositor saat pergantian resolusi meningkatkan kompatibilitas game lama
    • Banyak masalah kompatibilitas Wine saat berpindah dari X11 ke Wayland kini telah teratasi
  • Grafis dan media

    • Di X11, EGL kini menjadi backend OpenGL default, menggantikan GLX
    • Ditambahkan dukungan Vulkan 1.4 dan dekode akselerasi hardware H.264 berbasis Vulkan Video
  • I/O dan periferal

    • Force feedback ditingkatkan untuk memperkuat dukungan racing wheel dan flight stick
    • Dukungan layanan Bluetooth BLE dan pairing, serta pemrosesan soundfont MIDI yang lebih baik
      • Ditambahkan pula kompresi Zip64, Unicode 17.0.0, pemindaian TWAIN 2.0 (64-bit), dan fitur IPv6 ping
  • Performa dan perluasan platform

    • Manajemen prioritas thread di Linux dan macOS ditingkatkan untuk performa multithread yang lebih baik
    • Dukungan simulasi ukuran halaman 4K di ARM64 menambah kompatibilitas pada perangkat Linux berbasis ARM

Kompatibilitas game dan perbaikan bug

  • Kompatibilitas ditingkatkan untuk judul-judul utama seperti Nioh 2, StarCraft 2, The Witcher 2, Call of Duty: Black Ops II, Final Fantasy XI, dan Battle.net
  • Termasuk ratusan perbaikan bug yang meningkatkan stabilitas dan performa secara keseluruhan

Evaluasi keseluruhan

  • Kombinasi NTSYNC, WoW64 yang lengkap, peningkatan Wayland, dan perbaikan bug skala besar menjadikan Wine 11 rilis paling penting sejak Proton
  • Performa dan kompatibilitas meningkat di semua proyek berbasis Wine seperti Proton, Lutris, dan Bottles
  • Bagi pengguna yang bermain game di Linux, Wine 11 adalah versi yang sangat layak untuk dicoba

2 komentar

 
kh0324 23 hari lalu

Kesimpulannya, hasilnya bakal jadi kompatibilitas mundur untuk beberapa tahun game lama rusak lagi..

Ini sih pertukaran yang setara.

 
GN⁺ 27 hari lalu
Komentar Hacker News
  • Saya punya rasa hormat yang nyaris tak terbatas untuk proyek Wine
    Selama 30 tahun mereka berusaha mereplikasi perilaku Windows yang terdokumentasi maupun tidak terdokumentasi apa adanya; itu terdengar seperti pekerjaan yang membosankan dan minim imbalan, tetapi justru itulah yang membuat Wine menjadi produk yang benar-benar berguna
    Terutama saat melihat game-game lama berjalan lebih baik daripada di Windows, terasa sekali betapa luar biasanya perhatian pada detail dan ketahanan menghadapi penderitaan mereka

    • Dulu saya menghindari bermain game di Linux karena merasa Wine tidak mungkin bisa bekerja dengan baik
      Sesekali saya mencoba menjalankan game sederhana dan berpikir, “oh, ternyata bisa?” tetapi saya tetap tidak menganggapnya bisa diandalkan
      Sekarang saya mengakui penilaian itu sepenuhnya salah
    • Meski proyek ini benar-benar luar biasa, sayang sekali aplikasi bisnis seperti Word, Excel, dan Outlook masih belum berjalan dengan baik
      Katanya Excel 2010 adalah versi terakhir yang mendapat peringkat Platinum
      Menarik bahwa aplikasi seperti ini justru lebih sulit daripada game
    • Wine menjalankan pengujian kompatibilitas otomatis di berbagai platform
      Kalau melihat halaman hasil pengujian, verifikasi yang sistematis seperti ini tampaknya menjadi kunci tingginya kompatibilitas
    • ReactOS juga layak disebut
      Banyak pengetahuan yang diperoleh dari proyek itu mengalir ke pengembangan Wine
    • Saat memakai OS/2 pada era 90-an, untuk menjalankan aplikasi Windows saya harus menyalakan seluruh Windows
      Waktu itu saya ingin membuat sesuatu seperti Wine sendiri, tetapi pengetahuan saya tidak cukup
      Sekarang saya hanya memakai Linux untuk server jadi tidak membutuhkannya, dan saya dengar ada Wine untuk Mac juga, tetapi tidak ada aplikasi Windows yang benar-benar ingin saya jalankan
  • Saya terkejut melihat Proton bisa menaikkan frame rate game sedemikian besar
    Dirt 3 naik dari 110FPS ke 860FPS, dan Resident Evil 2 dari 26FPS ke 77FPS; itu sulit dipercaya
    Saya rasa ini berkat Valve yang mengucurkan banyak dana ke sana

    • Namun angka ini agak dibesar-besarkan karena perbandingannya adalah Wine+ntsync melawan Wine versi dasar
      Jika dibandingkan dengan Wine berbasis fsync yang sudah ada, peningkatannya hanya beberapa persen
      Meski begitu, ntsync tetap jelas merupakan perbaikan
      Jika melihat dokumentasi ntsync, ini adalah driver kernel untuk mengimplementasikan struktur sinkronisasi Windows dengan lebih akurat di Linux
    • Perlu diingat juga bahwa perbandingan ini adalah saat “esync atau fsync tidak digunakan”
    • Saya penasaran hubungan Proton dan Wine — apakah Proton hanya nama untuk Valve/SteamOS, atau memang proyek terpisah
  • Ada juga pendapat agar tidak terlalu bersemangat dengan peningkatan performa ntsync
    Dalam kebanyakan kasus, peningkatannya hanya di kisaran satu digit persen, dan beberapa game bahkan bisa sedikit lebih lambat

    • Bagi orang yang memakai kernel tanpa patch fsync, ceritanya bisa berbeda
    • Ada juga yang berpendapat menarik untuk membandingkan perbedaan performa Wayland dan X11
  • Kalau melihat pembahasan teknologi serendah ini, saya jadi malu karena cuma membuat aplikasi CRUD

    • Tapi CRUD juga bernilai dan baik untuk kesehatan mental
      Saya pernah mendengar kisah seorang pengembang jenius yang kelelahan karena jadwal ekstrem lalu pindah ke pekerjaan CRUD VB sederhana dan menyebutnya “seperti liburan berbayar”
    • Saya juga cuma membantu hal-hal sederhana di Outlook seperti “klik di sini, klik di sana”, tetapi pekerjaan seperti ini juga pekerjaan yang penting
    • Sebaliknya, para pengembang level rendah pun katanya merasa dirinya kurang saat harus menangani sistem level tinggi
    • Bahkan saya yang membuat compiler pun sudah berkali-kali mencoba membuat aplikasi CRUD untuk proyek pribadi dan gagal
      Saya sudah mencoba Rails, Phoenix, dan Django, tetapi tetap tidak mudah
      Belakangan ini ada sedikit kemajuan berkat bantuan Claude
    • Aplikasi CRUD juga tidak bisa diremehkan
      Kebutuhan perusahaan itu kompleks, jadi arsitekturnya bisa mudah runtuh
  • Saya senang ribuan dolar yang saya habiskan di Valve ternyata dipakai untuk meningkatkan Wine
    Saya penasaran berapa banyak pengembang dan kontraktor yang dipekerjakan Valve untuk ini

    • Dua pertiga pengembang Wine berasal dari CodeWeavers, yang punya kontrak dengan Valve dan Proton
      Jadi sebagian besar pendanaan mengalir ke sana
  • Secara paradoks, Wine mungkin merusak dirinya sendiri
    Jika game berjalan baik di Linux, para pengembang mungkin akan membuat port Linux native sehingga Wine tidak lagi dibutuhkan

    • Namun API Wine lebih stabil daripada Linux, jadi justru Wine bisa menjadi target kelas satu
    • Saya rasa kenyataannya justru kebalikannya
      Bahkan jika ada port native, menjalankan versi Windows lewat Proton lebih stabil
      API Windows sudah dikenal dan tidak banyak berubah, jadi pengembang terus menjadikannya acuan utama
    • Sekarang “dukungan Linux” pada dasarnya berarti berjalan baik di Proton
    • Saya menganggap situasi ini sebagai “masalah yang bagus”
    • Lagi pula Wine dipakai untuk banyak hal selain game, jadi meskipun port native bertambah, permintaan tetap akan ada
      Karena ABI Windows masih lebih stabil, lebih efisien untuk hanya memelihara build Windows selama perbedaan performanya kecil
  • Ada pertanyaan apakah memori bersama di ruang pengguna tidak bisa dipakai untuk mengimplementasikan ntsync
    Claude menjelaskan bahwa “untuk 95% game, pendekatan sederhana sudah cukup sehingga tidak ada dorongan untuk mengimplementasikan logika memori bersama yang kompleks, dan ketika akurasi menjadi penting, memindahkannya ke kernel menjadi langkah yang wajar”

    • Namun pada praktiknya itu tidak mungkin karena Linux tidak menyediakan fungsi ruang pengguna seperti itu
      ntsync bukan sekadar pembungkus API sederhana, melainkan adapter level kernel yang mereproduksi perilaku sinkronisasi kernel NT
      Jika melihat kode sumber, terlihat integrasinya sangat erat dengan scheduler kernel
    • Dokumentasi kernel juga menyatakan bahwa “implementasi ruang pengguna tidak dapat menyamai performa dan akurasi tingkat Windows”
      Tautan dokumentasi
  • Menakjubkan melihat Linux mengimplementasikan ulang Windows lalu melakukannya lebih baik
    Di saat Microsoft membuat perangkat lunaknya sendiri makin tidak nyaman digunakan, pencapaian seperti ini terasa luar biasa

    • Terutama fakta bahwa Wine mempertahankan dukungan 16-bit yang sudah hilang di Windows 64-bit itu sangat berarti
      Banyak game lama berbasis 16-bit, dan bahkan untuk game 32-bit pun sering kali penginstalnya masih 16-bit
  • Jika ada pengembang Wine yang membaca ini, saya ingin mereka memberi presentasi terkait ini di Carolina Code Conference 2026
    Pendaftaran pembicara dibuka sampai 31 Maret

  • Jika ingin hal yang sama di macOS, Anda bisa berkontribusi ke repositori ini

    • Tapi jujur saja, game untuk macOS terlalu sedikit sehingga mungkin hampir tidak ada pengembang yang tertarik
      Saya memang punya kenangan bermain game tank Bolo di Mac sekolah dulu, tetapi jumlahnya mungkin bahkan tidak sampai 1% dari game Windows
    • Namun kalau memang harus masuk ke kernel demi alasan performa, saya penasaran mengapa Linux tidak melakukannya di ruang pengguna