2012-11-29 16 views
19

में टेलेलॉल उन्मूलन मेरे पास एक .NET 4.0 एप्लिकेशन है जो पूंछ रिकर्सन (एफ # में प्रोग्राम किया गया) का भारी उपयोग करता है। यह .NET VM पर ठीक चलता है, लेकिन यह मोनो-3.0.1 पर ढेर से बाहर चला जाता है।मोनो

मैंने mono --optimize=tailc के साथ चलने का प्रयास किया है लेकिन ऐसा कुछ भी नहीं दिख रहा है।

पूंछ कॉल को खत्म करने के लिए मोनो को मजबूर करने का कोई तरीका है? क्या मोनो में अधिकतम स्टैक आकार बढ़ाने का कोई तरीका है?

+1

https://bugzilla.novell.com/show_bug.cgi?id=476785 - [यह पृष्ठ] (http://www.mono-project.com/Runtime_Projects) का कहना है कि यह काम किया जा रहा है, लेकिन कोई अनुमान नहीं है पूरा करने की तिथि। –

+0

[यह पृष्ठ] (http://www.mono-project.com/Mono_Project_Roadmap) कहता है कि F # में टेल कॉल को संस्करण 2.12 –

+0

2.12 में बदल दिया गया था जिसका नाम बदलकर 3.0 कर दिया गया था; और वैसे भी यह "अनुकूलन" कहता है, न कि "सभी अनुकूलन", इसलिए मुझे लगता है कि निखिल मारने वाला एक व्यक्ति अभी तक तय नहीं है – knocte

उत्तर

1

सहायक जवाब के साथ एक बहुत ही इसी तरह की और हाल ही में सवाल ही नहीं है: Stack size under Mono

रॉबर्ट हार्वे जैसा कि पहले ही टिप्पणी में कहा, एफ # के लिए मोनो टूट गया है/अधूरा पूंछ कॉल समर्थन (bug 476785: Tail call support in F#)। इस समस्या के लिए ठीक करें on Mono's runtime ongoing projects list है।

स्टैक आकार को System.Threading.Thread कन्स्ट्रक्टर या पीई हेडर में या तो बढ़ाया जा सकता है। System.Threading.Thread रास्ता does not work in Mono, हालांकि। पीई बदलने के लिए, आप शायद need MS Visual Studio करेंगे, क्योंकि editbin.exe /stack के लिए कोई विकल्प नहीं हो सकता है।