Aplikasi Electron Menyebabkan Lag Seluruh Sistem pada macOS 26 Akibat Override API Peribadi

Pasukan Komuniti BigGo
Aplikasi Electron Menyebabkan Lag Seluruh Sistem pada macOS 26 Akibat Override API Peribadi

Keluaran terkini Apple macOS 26 Tahoe telah memperkenalkan isu prestasi yang ketara yang menjejaskan aplikasi popular seperti Discord , VS Code , Slack , dan perisian berasaskan Electron yang lain. Pengguna melaporkan kekangan dan lag seluruh sistem apabila aplikasi-aplikasi ini sedang berjalan, dengan penggunaan GPU melonjak secara dramatik walaupun semasa melakukan tugas mudah seperti pergerakan tetingkap atau skrol.

Masalah ini nampaknya berpunca daripada keputusan Electron untuk override API peribadi macOS yang dipanggil _cornerMask, yang digunakan untuk mencipta sudut licin bagi paparan bergetar dalam aplikasi. Apabila Apple mengubah cara API peribadi ini berfungsi dalam macOS 26, ia mewujudkan interaksi yang tidak dijangka yang menyebabkan proses WindowServer sistem menggunakan sumber GPU yang berlebihan.

Aplikasi yang Terjejas:

  • Discord
  • VS Code
  • Slack
  • Ferdium
  • Bitwarden Desktop
  • SiYuan
  • DeltaChat
  • Yandex Music
  • Jitsi Meet
  • Cursor IDE

Punca Utama: Penyalahgunaan API Peribadi

Siasatan teknikal mendedahkan bahawa Electron telah override API peribadi Apple _cornerMask untuk menggunakan topeng sudut tersuai pada paparan bergetar. Override ini mengganggu saluran paip rendering bayang-bayang baharu macOS 26, menyebabkan sistem terpaksa menggunakan kaedah rendering yang tidak cekap. Isu ini menjadi lebih teruk apabila beberapa aplikasi Electron berjalan serentak, dengan sesetengah pengguna melaporkan penggunaan GPU melonjak ke 100% dan kipas berputar pada kelajuan maksimum.

API peribadi adalah fungsi sistem dalaman yang Apple tandakan sebagai terlarang kepada pembangun kerana ia boleh berubah tanpa notis antara kemas kini sistem.

Kesan Prestasi:

  • Penggunaan GPU melonjak dari 0% kepada 25% dengan satu aplikasi Electron
  • Penggunaan GPU mencapai 100% dengan beberapa aplikasi Electron berjalan
  • Kelewatan dan tersekat-sekat UI seluruh sistem
  • Kelajuan kipas meningkat ke tahap maksimum
  • Masalah diselesaikan apabila aplikasi diminimumkan

Perdebatan Komuniti Mengenai Tanggungjawab

Komuniti pembangun berpecah mengenai siapa yang bertanggungjawab untuk isu ini. Ada yang berhujah bahawa pembangun Electron tidak sepatutnya menggunakan API peribadi, kerana Apple secara jelas memberi amaran terhadap amalan ini. Yang lain berpendapat bahawa Apple sepatutnya menguji kemas kini sistem operasi mereka dengan lebih baik terhadap aplikasi yang digunakan secara meluas sebelum dikeluarkan.

Saya tidak faham apa yang terlintas di fikiran pembangun. Suatu kaedah ditandakan sebagai peribadi. Ia didokumentasikan sebagai tidak boleh digunakan oleh pembangun. Dokumentasi selanjutnya menyatakan bahawa menggunakannya mungkin merosakkan aplikasi anda dengan cara yang pelik sekarang atau pada masa hadapan.

Situasi ini menyerlahkan ketegangan yang lebih luas dalam pembangunan perisian antara mengikuti garis panduan rasmi dan mencapai kefungsian yang diingini apabila API awam tidak menyediakan penyelesaian yang mencukupi.

Penyelesaian Sementara dan Penyelesaian

Beberapa pembetulan sementara telah muncul daripada komuniti. Untuk aplikasi berasaskan Chrome , pengguna boleh menggunakan arahan untuk melumpuhkan ciri autofill tertentu yang nampaknya berinteraksi dengan buruk dengan isu rendering. Walau bagaimanapun, penyelesaian sementara ini datang dengan kaveat bahawa ia mungkin merosakkan kefungsian lain pada masa hadapan.

Pasukan Electron telah mengakui masalah ini dan sedang bekerja pada pembetulan yang betul yang menghapuskan override API peribadi mereka sambil mengekalkan penampilan visual yang dijangkakan pengguna. Apple juga telah dimaklumkan mengenai isu ini melalui sistem maklum balas mereka, walaupun mereka mengekalkan bahawa tanggungjawab terletak pada pembangun yang memilih untuk menggunakan API yang tidak disokong.

Butiran Teknikal:

  • Punca Utama: Electron mengatasi API peribadi _cornerMask AppKit
  • Sistem Terjejas: macOS 26 Tahoe RC pada Apple Silicon ( M1 , M4 )
  • Versi Electron : 37.3.1
  • Penyelesaian Sementara: defaults write com.google.Chrome NSAutoFillHeuristicControllerEnabled -bool false

Kesan Kepada Pengguna dan Aplikasi

Kemerosotan prestasi menjejaskan beberapa aplikasi produktiviti yang paling biasa digunakan pada macOS . Pengguna dengan model M1 dan M4 MacBook Pro melaporkan bahawa walaupun interaksi sistem asas menjadi perlahan apabila aplikasi seperti Discord atau VS Code dibuka dan tidak diminimumkan. Menariknya, meminimumkan aplikasi yang terjejas segera menyelesaikan masalah prestasi, menunjukkan masalah ini secara khusus berkaitan dengan rendering tetingkap aktif.

Situasi ini berfungsi sebagai peringatan mengenai risiko yang terlibat dalam menggunakan ciri sistem yang tidak didokumentasikan, walaupun ia menyediakan kefungsian yang nampaknya penting. Walaupun penggunaan API peribadi oleh Electron bertujuan untuk meningkatkan pengalaman visual, ia akhirnya mewujudkan kebergantungan yang rapuh yang rosak apabila Apple mengemas kini seni bina sistem mereka.

Rujukan: Electron-based apps cause a huge system-wide lag on macOS 26 #48311