Apple के Rosetta Translation environment के बारे में
(developer.apple.com)-
Rosetta एक translation process है जो Apple Silicon पर x86_64 instructions वाले apps को चलाने में सक्षम बनाता है
-
यूज़र को Rosetta दिखाई नहीं देता। जब executable में केवल Intel instructions होते हैं, तो macOS अपने-आप Rosetta चलाकर translation शुरू कर देता है
-
translation पूरा होने के बाद, system original की जगह translated executable चलाता है। इस translation में launch time लगता है, इसलिए app का शुरू होना/चलना धीमा हो सकता है
-
system app के arm64 instructions को चलाना प्राथमिकता देता है। जब binary में arm64 और x86_64 दोनों हों, तो यूज़र इसे मजबूरन Rosetta के साथ चलाने के लिए सेट कर सकता है। उदाहरण के लिए, जब कोई specific plugin arm64 को support नहीं करता हो
-
system एक ही process के अंदर arm64 और x86_64 code को मिलाने से रोकता है। Rosetta dynamic loading वाले code modules सहित पूरे process पर लागू होता है。
जिनका translation नहीं किया जा सकता
- JIT compiler शामिल करने वाले apps सहित सबका translation किया जाता है, लेकिन नीचे दी गई चीज़ों का translation नहीं होता
→ kernel extensions
→ x86_64 computer platform को virtualize करने वाली Virtual Machines
- Rosetta सभी x86_64 instructions का translation करता है, लेकिन AVX, AVX2, AVX512 जैसे नए या processor-specific features को support नहीं करता
→ अगर code में ऐसे functions हैं, तो sysctlbyname function आदि से यह जाँच लेने के बाद ही उन्हें call करना चाहिए कि वे वास्तव में उपलब्ध हैं या नहीं
- यह जाँचने के लिए कि executable Rosetta-translated binary के रूप में चल रहा है या नहीं,
sysctlbynamefunction मेंsysctl.proc_translatedflag देकर जाँचा जा सकता है
1 टिप्पणियां
यह आधिकारिक दस्तावेज़ है, और क्योंकि यह अच्छी तरह व्यवस्थित है, मैंने इसका संक्षिप्त अनुवाद करके यहाँ साझा किया है.
यह महत्वपूर्ण है कि Rosetta emulation नहीं बल्कि "translation" है.