एक बहु-खिलाड़ी प्रोग्रामिंग गेम के लिए, मैं स्कैला के लिए पृष्ठभूमि संकलन सर्वर पर काम कर रहा हूं जो खिलाड़ियों द्वारा सबमिट किए गए एकाधिक, स्वतंत्र स्रोत पेड़ों के संकलन का समर्थन करता है। मैं Global
संकलक वस्तु instantiating द्वारा संकलक पुन: लोड के बिना तेजी से, अनुक्रमिक संकलन चल करने में सफल रहास्कैला संकलक पुनर्विक्रेता है?
val compilerGlobal = new Global(settings, reporter)
और उसके बाद के माध्यम से मैं अब आदर्श सर्वर parallelize चाहते हैं के माध्यम से
val run = new compilerGlobal.Run
run.compile(sourceFilePathList)
व्यक्ति संकलन नौकरियों चल (यानी एकाधिक संकलन एक साथ चलते हैं), लेकिन फिर भी संकलक को पुनः लोड किए बिना (मुख्य रूप से lib को पुनः पार्स करने से बचने के लिए) प्रत्येक बार स्क्रैच से। क्या यह संभव है, यानी ऊपर दिखाया गया दूसरा भाग है (सुरक्षित रूप से :-) पुन: प्रवेशकर्ता, या क्या यह वैश्विक स्थिति धारण करता है? यदि नहीं, तो क्या मैं कुछ और कोशिश कर सकता हूं? मैं वर्तमान में स्कैला 2.9.1 का समर्थन करने पर केंद्रित हूं।
यह शुरुआत के लिए प्रतीक तालिका का 'वैश्विक स्थिति' रखता है। – EJP
कंपाइलर उदाहरणों के पूल का उपयोग करें। – retronym
@ संक्षिप्त नाम सुझाव के लिए धन्यवाद। मेरा मुख्य सवाल, हालांकि, "मैं कितना रीसायकल कर सकता हूं?"। आपकी टिप्पणी से पता चलता है कि (इन-मेमोरी) कंपाइलर इंस्टेंस (क्लास ग्लोबल) के बीच कोई वैश्विक साझा स्थिति नहीं है, जो एक अच्छी शुरुआत है। लेकिन क्या आप यह भी सुझाव दे रहे हैं कि व्यक्ति डीओ शेयर राज्य चलाता है (पार्स किए गए मानक मुक्ति से परे)? मुझे और जानकारी चाहिए। –