1 पॉइंट द्वारा GN⁺ 2024-09-14 | 1 टिप्पणियां | WhatsApp पर शेयर करें

वर्तमान स्थिति

  • फिलहाल SBCL runtime और compiler को Nintendo Switch पर चलाने लायक पोर्ट किया जा चुका है
  • shared libraries के साथ interface भी संभव है, और विभिन्न operating system portability libraries भी पोर्ट की जा चुकी हैं
  • लेकिन SBCL का garbage collector काम करते समय crash हो जाता है
  • audio output उपलब्ध नहीं है, और C callback mechanism में समस्या है
  • performance से जुड़ी समस्याएँ भी अपेक्षित हैं

अवलोकन

  • Switch में ARM64 Cortex-A57 chip और 4GB RAM है, और यह एक proprietary microkernel operating system पर चलता है
  • SBCL के पास पहले से ARM64 Linux port है, इसलिए code generation की समस्या हल हो चुकी है
  • Switch OpenGL graphics library को support करने वाला एकमात्र console है, इसलिए Trial की graphics library को पोर्ट करना आसान है
  • development शुरू करने के लिए Nintendo of Europe से development kit खरीदी गई और SDK install किया गया

SBCL build प्रक्रिया

  1. build-config: build configuration options को इकट्ठा करके पढ़ने योग्य format में output करता है
  2. make-host-1: host Lisp compiler से cross compiler build करता है
  3. make-target-1: target C compiler से C runtime बनाता है
  4. make-host-2: target Lisp system build करता है
  5. make-target-2: target runtime में cold core load करके bootstrap पूरा करता है

Switch के लिए build

  • Switch PC environment नहीं है, और इसमें shell, command line, या compiler नहीं है
  • executable pages नहीं बनाए जा सकते, इसलिए runtime compilation संभव नहीं है
  • अधिकांश code platform-independent है और ARM64 के लिए compile किया जा सकता है
  • runtime compilation के विकल्प के रूप में fasteval का उपयोग किया गया है

garbage collector

  • SBCL का standard GC gencgc है, जो एक generational garbage collector है
  • multithreading environment में object movement की समस्या होती है
  • Unix systems में threads को park करने के लिए signal mechanism का उपयोग किया जाता है, लेकिन Switch पर यह संभव नहीं है
  • safepoints strategy का उपयोग किया गया है ताकि threads खुद को park कर सकें

आगे का काम

  • CLOS को जितना संभव हो fix करना और precompilation की खोज करना
  • Switch के low-performance processor के कारण अतिरिक्त optimization की जरूरत है
  • garbage collector का पूरी तरह काम करना जरूरी है
  • C callback समस्या को हल करना जरूरी है

निष्कर्ष

  • NDA के कारण काम का पूरा विवरण सार्वजनिक नहीं किया जा सकता, लेकिन जो संभव है वह साझा किया जा रहा है
  • Patreon, GitHub, और Ko-Fi के माध्यम से समर्थन का अनुरोध किया गया है

GN⁺ का सार

  • यह लेख Common Lisp runtime को Nintendo Switch पर पोर्ट करने की प्रक्रिया और चुनौतियों पर केंद्रित है
  • Switch के proprietary operating system और hardware constraints के कारण कई तकनीकी कठिनाइयाँ सामने आती हैं
  • garbage collector, multithreading, और runtime compilation से जुड़ी समस्याएँ मुख्य चुनौतियाँ हैं
  • यह परियोजना Common Lisp developers और game developers के लिए उपयोगी जानकारी प्रदान करती है

1 टिप्पणियां

 
GN⁺ 2024-09-14
Hacker News टिप्पणियाँ
  • कुछ हफ्तों तक Trial का उपयोग करके Common Lisp में game development को टेस्ट किया, और यह बहुत ही आनंददायक अनुभव था

    • game चलते समय लगभग हर हिस्से को बदल सकना एक बड़ा फ़ायदा है
    • उम्मीद है कि यह port सफल होगा
  • SBCL एक शानदार language implementation है, और मैं "असल" game console के लिए CL development आज़माना चाहता था

    • यह जानकर हैरानी हुई कि Shinmera यह काम कर रही हैं
    • SBCL के internals पर जब मैंने थोड़ी नज़र डाली थी, तो डर गया था, इसलिए उन्हें सलाम
    • जिज्ञासा है कि क्या SBCL(+threading/SDL2) Raspberry Pi पर काम करता है
  • लेखक को इतना रोचक और विस्तृत लेख लिखने के लिए धन्यवाद

    • इस स्तर की बारीकियाँ आम तौर पर console का जीवनचक्र खत्म होने के बाद ही सामने आती हैं
    • जब भी मैं इस तरह का गहरा काम पढ़ता हूँ, तो दिन भर इस्तेमाल किए जाने वाले अपने नीरस software पर जलन होने लगती है
  • जिज्ञासा है कि official SDK का उपयोग क्यों किया गया

    • हो सकता है Nintendo आधिकारिक रूप से 3rd party SDK से बने games को publish नहीं होने देता हो
  • मैंने Kandria खरीद लिया

    • मैं ज़्यादा games नहीं खेलता, लेकिन Shinmera Lisp दुनिया की सीमाओं को आगे बढ़ा रही हैं, और यह समर्थन करने लायक है
  • SBCL - "Steel Bank Common Lisp"

    • SBCL एक high-performance Common Lisp compiler है, और open source/free software है
    • ANSI Common Lisp के लिए compiler और runtime system के अलावा, यह debugger, statistical profiler, code coverage tools जैसी कई extensions भी देता है
  • उनका काम हैरतअंगेज़ है

    • मेरे जैसे व्यक्ति के लिए, जिसे CL को यहाँ-वहाँ इस्तेमाल करना पसंद है, यह बहुत खुशी की बात है
  • काश Nintendo और Sony ऐसे प्रयासों का समर्थन करते

    • Github Accelerator जैसे program शुरू करना consoles के लिए games (IP) बनाने का एक और तरीका हो सकता है
  • थोड़ा विषय से हटकर, लेकिन Yuzu को Nintendo Switch पर port करना कमाल का होगा

  • मैं HN पर इसी तरह की चीज़ों के लिए आता हूँ

    • OP और उनके सहकर्मी को सलाम
    • अगर Nintendo अपने system के बारे में थोड़ा और खुला हो सके, तो यह बहुत बड़ा वरदान होगा