8 puan yazan xguru 2020-11-29 | 1 yorum | WhatsApp'ta paylaş
  • 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 arm64 komutlarını çalıştırmasını tercih eder. Bir binary hem arm64 hem de x86_64 içerdiğinde kullanıcı, zorla Rosetta ile çalıştırılmasını belirleyebilir. Örneğin belirli bir eklenti arm64 desteği sunmadığında.

  • Sistem, aynı süreç içinde arm64 ve x86_64 kodunun 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_64 komutları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 sysctlbyname işlevine sysctl.proc_translated bayrağı verilerek kontrol edilebilir.

1 yorum

 
xguru 2020-11-29

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.