Tentang lingkungan terjemahan Rosetta Apple
(developer.apple.com)-
Rosetta adalah proses translasi yang memungkinkan aplikasi dengan instruksi x86_64 berjalan di Apple silicon
-
Bagi pengguna, Rosetta tidak terlihat. Saat file eksekusi hanya berisi instruksi Intel, macOS secara otomatis menjalankan Rosetta dan memulai translasi
-
Setelah translasi selesai, sistem menjalankan file eksekusi hasil translasi sebagai pengganti yang asli. Waktu translasi ini menambah waktu peluncuran, sehingga peluncuran/operasi aplikasi bisa terasa lambat
-
Sistem lebih memilih menjalankan instruksi arm64 milik aplikasi. Saat sebuah biner memiliki arm64 dan x86_64 sekaligus, pengguna dapat menentukan agar dijalankan paksa lewat Rosetta. Misalnya ketika plugin tertentu belum mendukung arm64
-
Sistem mencegah pencampuran kode arm64 dan x86_64 dalam proses yang sama. Rosetta diterapkan secara menyeluruh, termasuk pada modul kode yang dimuat secara dinamis.
Hal-hal yang tidak dapat ditranslasikan
- Aplikasi yang menyertakan kompiler JIT tetap ditranslasikan, tetapi hal-hal berikut tidak ditranslasikan
→ Ekstensi kernel
→ Virtual machine yang memvirtualisasikan platform komputer x86_64
- Rosetta menerjemahkan semua instruksi x86_64, tetapi tidak mendukung fitur prosesor yang lebih baru seperti AVX, AVX2, dan AVX512.
→ Jika fungsi-fungsi seperti ini ada di dalam kode, fungsi tersebut harus dipanggil hanya setelah memeriksa apakah benar-benar tersedia, misalnya dengan fungsi sysctlbyname.
- Untuk memeriksa apakah sedang berjalan sebagai biner yang ditranslasikan oleh Rosetta, Anda dapat mengeceknya dengan memberikan flag
sysctl.proc_translatedke fungsisysctlbyname
1 komentar
Ini adalah dokumen resmi, tetapi karena penjelasannya tertata dengan baik, saya terjemahkan secara singkat dan saya unggah di sini.
Poin pentingnya, Rosetta adalah "Translation", bukan Emulation.