8 पॉइंट द्वारा xguru 2020-11-29 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 के रूप में चल रहा है या नहीं, sysctlbyname function में sysctl.proc_translated flag देकर जाँचा जा सकता है

1 टिप्पणियां

 
xguru 2020-11-29

यह आधिकारिक दस्तावेज़ है, और क्योंकि यह अच्छी तरह व्यवस्थित है, मैंने इसका संक्षिप्त अनुवाद करके यहाँ साझा किया है.

यह महत्वपूर्ण है कि Rosetta emulation नहीं बल्कि "translation" है.