Apple Rosetta Translation ortamı hakkında
(developer.apple.com)-
Rosetta, Apple Silicon üzerinde x86_64 komutlarıyla oluşturulmuş uygulamaları çalıştırmayı sağlayan bir çeviri sürecidir.
-
Rosetta kullanıcıya görünmez. Çalıştırılabilir dosya yalnızca Intel komutları içerdiğinde macOS otomatik olarak Rosetta'yı çalıştırır ve çeviriyi başlatır.
-
Çeviri tamamlandığında sistem, orijinali yerine çevrilmiş çalıştırılabilir dosyayı başlatır. Bu çeviri süresi başlatma süresine eklendiği için uygulamanın açılması/çalışması yavaş olabilir.
-
Sistem, uygulamanın
arm64komutlarını çalıştırmasını tercih eder. Bir binary hemarm64hem dex86_64içerdiğinde kullanıcı, zorla Rosetta ile çalıştırılmasını belirleyebilir. Örneğin belirli bir eklentiarm64desteği sunmadığında. -
Sistem, aynı süreç içinde
arm64vex86_64kodunun karıştırılmasını engeller. Rosetta, dinamik olarak yüklenen kod modülleri dahil olmak üzere bütüne uygulanır.
Çevrilemeyenler
- JIT derleyicisi içeren uygulamalar da çevrilir, ancak aşağıdakiler çevrilmez:
→ Kernel extension'lar
→ x86_64 bilgisayar platformunu sanallaştıran Virtual Machine'ler
- Rosetta tüm
x86_64komutlarını çevirir, ancak AVX, AVX2, AVX512 gibi daha yeni komut setlerini veya işlemci özelliklerini desteklemez.
→ Kodda bu tür işlevler varsa, çağırmadan önce sysctlbyname gibi bir işlevle gerçekten kullanılabilir olup olmadıkları kontrol edilmelidir.
- Bir binary'nin Rosetta ile çevrilmiş olarak çalışıp çalışmadığını doğrulamak için
sysctlbynameişlevinesysctl.proc_translatedbayrağı verilerek kontrol edilebilir.
1 yorum
Resmi doküman ama oldukça iyi derlenmiş, ben de kısaca çevirip buraya bırakıyorum.
Rosetta'nın Emulation değil, "Translation" olması önemli.