मैं parser के बजाय ast.parse (जिसके बारे में मुझे पहले नहीं पता था) के उपयोग के संबंध में दूसरा @EliBendersky दृष्टिकोण है। मैं आपको उनके ब्लॉग की समीक्षा करने के लिए भी गर्मजोशी से सलाह देता हूं। मैंने पायथन-> जावास्क्रिप्ट अनुवादक (@ https://bitbucket.org/amirouche/pythonium ) करने के लिए ast.parse का उपयोग किया । मैं पायथनियम डिजाइन के साथ आया हूं, कुछ अन्य कार्यान्वयन की समीक्षा करके और उन्हें अपने दम पर आजमा रहा हूं। मैंने https://github.com/PythonJS/PythonJS जो मैंने भी शुरू किया था, से पायथनियम को फोर्क किया, यह वास्तव में एक पूर्ण पुनर्लेखन है। समग्र डिजाइन PyPy और http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-89-1.pdf पेपर से प्रेरित है ।
सब कुछ मैंने कोशिश की, शुरुआत से लेकर सबसे अच्छे समाधान तक, भले ही यह पाइथोनियम विपणन जैसा दिखता हो, यह वास्तव में नहीं है (मुझे यह बताने में संकोच न करें कि क्या कुछ नेटिकट के लिए सही नहीं लगता है):
प्रोटोटाइप वंशानुक्रम का उपयोग करके प्लेन ओल्ड जावास्क्रिप्ट में पायथन सिमेंटिक को लागू करें: AFAIK जेएस प्रोटोटाइप ऑब्जेक्ट सिस्टम का उपयोग करके पायथन मल्टीपल इनहेरिटेंस को लागू करना असंभव है। मैंने बाद में अन्य तरकीबों का उपयोग करके इसे करने की कोशिश की (cf. getattribute)। जहां तक मुझे पता है कि जावास्क्रिप्ट में पायथन मल्टीपल इनहेरिटेंस का कार्यान्वयन नहीं है, तो जो सबसे अच्छा मौजूद है वह सिंगल इनहर्टेंस + मिक्सिन्स है और मुझे यकीन नहीं है कि वे हीरे की विरासत को संभाल रहे हैं। स्कल्प्चर के समान लेकिन गूगल क्लोजर के बिना।
मैंने Google clojure के साथ कोशिश की, जैसे कि वास्तव में Skulpt कोड #fail पढ़ने के बजाय Skulpt (कंपाइलर)। वैसे भी जेएस प्रोटोटाइप आधारित वस्तु प्रणाली अभी भी असंभव है। बाइंडिंग बनाना बहुत मुश्किल था, आपको जावास्क्रिप्ट और बहुत सारे बॉयलरप्लेट कोड लिखने की ज़रूरत है (cf. https://github.com/skulpt/sk रौशनी / कैंची / ५० जहाँ मैं भूत हूँ)। उस समय बिल्ड सिस्टम में बाइंडिंग को एकीकृत करने का कोई स्पष्ट तरीका नहीं था। मुझे लगता है कि मूर्तिकला एक पुस्तकालय है और आपको HTML में अपनी .py फ़ाइलों को निष्पादित करने के लिए शामिल करना होगा, डेवलपर द्वारा किए जाने के लिए कोई संकलन चरण की आवश्यकता नहीं है।
पाइयोडो (संकलक) की कोशिश की, लेकिन बाइंडिंग बनाना (पायथन कोड से जावास्क्रिप्ट कोड को कॉल करना) बहुत मुश्किल था, हर बार बनाने के लिए बहुत अधिक बॉयलरप्लेट कोड था। अब मुझे लगता है कि पायथोनियम वही है जो पायथनियम के पास है। pyjaco को Python (ast.parse) में लिखा गया है, लेकिन बहुत कुछ जावास्क्रिप्ट में लिखा गया है और यह प्रोटोटाइप इनहेरिटेंस का उपयोग करता है।
मैं वास्तव में पजामा # फेल चलाने में कभी सफल नहीं हुआ और कभी भी कोड # फेल को पढ़ने की कोशिश नहीं की। लेकिन मेरे दिमाग में पजामा एपीआई-> एपीआई ट्रांसलेशन (या फ्रेमवर्क टू फ्रेमवर्क) कर रहा था न कि पायथन से जावास्क्रिप्ट अनुवाद। जावास्क्रिप्ट फ्रेमवर्क उस डेटा का उपभोग करता है जो पहले से ही सर्वर से पेज या डेटा में है। पायथन कोड केवल "प्लंबिंग" है। उसके बाद मुझे पता चला कि पजामा वास्तव में एक असली अजगर था-> जेएस अनुवादक।
फिर भी मुझे लगता है कि एपीआई- (एपीआई) (या फ्रेमवर्क-> फ्रेमवर्क) अनुवाद करना संभव है और यह मूल रूप से मैं पायथोनियम में करता हूं, लेकिन निचले स्तर पर। संभवतः पजामा पायथनियम के समान एल्गोरिथ्म का उपयोग करते हैं ...
तब मुझे पता चला कि ब्रायसन पूरी तरह से स्कैल्प की तरह जावास्क्रिप्ट में लिखे गए हैं, संकलन की आवश्यकता नहीं है और बहुत सारे फुलाना ... लेकिन जावास्क्रिप्ट में लिखा है।
इस परियोजना के दौरान लिखी गई प्रारंभिक पंक्ति के बाद से, मैं PyPy के बारे में जानता था, यहां तक कि PyPy के लिए जावास्क्रिप्ट बैकएंड भी। हां, यदि आप इसे पा सकते हैं, तो सीधे PyPy से जावास्क्रिप्ट में Python दुभाषिया उत्पन्न करें। लोग कहते हैं, यह एक आपदा थी। मैंने पढ़ा क्यों नहीं लेकिन मुझे लगता है कि इसका कारण यह है कि इंटरप्रेटर, आरपीथॉन को लागू करने के लिए वे जिस मध्यवर्ती भाषा का उपयोग करते हैं, वह पायथन का एक उपसमूह है, जिसे C (और शायद asm) में अनुवादित किया जाएगा। इरा बाक्सटर का कहना है कि आप हमेशा कुछ बनाते समय धारणा बनाते हैं और संभवत: आप इसे ठीक करते हैं कि यह PyPy: Python-> C अनुवाद के मामले में सबसे अच्छा है। उन मान्यताओं को एक और संदर्भ में प्रासंगिक नहीं माना जा सकता है कि वे खराब हो सकते हैं अन्यथा वे कह सकते हैं कि प्रत्यक्ष अनुवाद सबसे अधिक संभावना हमेशा बेहतर होगा।
पायथन में लिखित दुभाषिया होने से एक (बहुत) अच्छे विचार की तरह लग रहा था। लेकिन मुझे प्रदर्शन के कारणों के लिए एक कंपाइलर में अधिक दिलचस्पी थी, यह वास्तव में व्याख्या करने की तुलना में अजगर के लिए जावास्क्रिप्ट को संकलित करना अधिक आसान है।
मैंने पायथन की शुरुआत पायथन के एक सबसेट को एक साथ रखने के विचार से की थी जिसे मैं आसानी से जावास्क्रिप्ट में अनुवाद कर सकता था। पहले तो मैंने पिछले अनुभव के कारण OO प्रणाली को लागू करने की जहमत नहीं उठाई। पायथन का सबसे बड़ा हिस्सा जो मैंने जावास्क्रिप्ट का अनुवाद करने के लिए हासिल किया है:
- पूर्ण मापदंडों के साथ फ़ंक्शन परिभाषा और कॉलिंग दोनों में शब्दार्थ। यह वह हिस्सा है जिस पर मुझे सबसे अधिक गर्व है।
- जबकि / अगर / elif / बाकी
- अजगर के प्रकार जावास्क्रिप्ट प्रकार में बदल दिए गए (किसी भी प्रकार का अजगर प्रकार नहीं है)
- केवल जावास्क्रिप्ट सरणियों पर पुनरावृति के लिए (सरणी में)
- जावास्क्रिप्ट तक पारदर्शी पहुँच: यदि आप पायथन कोड में ऐरे लिखते हैं तो इसे जावास्क्रिप्ट में ऐरे में अनुवाद किया जाएगा। यह अपने प्रतिस्पर्धियों पर प्रयोज्य के संदर्भ में सबसे बड़ी उपलब्धि है।
- आप जावास्क्रिप्ट कार्यों के लिए पायथन स्रोत में परिभाषित फ़ंक्शन पास कर सकते हैं। डिफ़ॉल्ट तर्कों को ध्यान में रखा जाएगा।
- इसने विशेष फ़ंक्शन को नया कहा है जिसे जावास्क्रिप्ट नए में अनुवादित किया गया है जैसे: नया (पायथन) (1, 2, स्पैम, "अंडा") का अनुवाद "नया पायथन (1, 2, स्पैम," अंडा ") किया गया है।
- "var" स्वचालित रूप से अनुवादक द्वारा नियंत्रित किया जाता है। (ब्रेट से बहुत अच्छी खोज (PythonJS अंशदाता)।
- वैश्विक कीवर्ड
- बंद
- lambdas
- सूची की समझ
- आवश्यकता के माध्यम से आयात का समर्थन किया जाता है
- classyjs के माध्यम से एकल वर्ग वंशानुक्रम + मिक्सिन
यह पायथन के पूर्ण विकसित शब्दार्थ की तुलना में बहुत लेकिन वास्तव में बहुत संकीर्ण लगता है। यह वास्तव में एक पायथन सिंटैक्स के साथ जावास्क्रिप्ट है।
उत्पन्न जेएस एकदम सही है। ओवरहेड नहीं है, इसे आगे संपादित करके प्रदर्शन के मामले में सुधार नहीं किया जा सकता है। यदि आप उत्पन्न कोड में सुधार कर सकते हैं, तो आप इसे पायथन स्रोत फ़ाइल से भी कर सकते हैं। इसके अलावा, कंपाइलर ने किसी भी जेएस ट्रिक्स पर भरोसा नहीं किया, जिसे आप http://superherojs.com/ द्वारा लिखित .js में पा सकते हैं , इसलिए यह बहुत पठनीय है।
PythonJS के इस हिस्से का सीधा वंशज Pythonium Veloce मोड है। पूर्ण क्रियान्वयन @ https://bitbucket.org/amirouche/pythonium/src/33898da731ee2d768ced392f1c369afd746c25d7/pyloonium/veloce/veloce.py?at=master 793 SLOC + के साथ साझा किए गए अन्य कोड के 100 SLOC के साथ साझा किया जा सकता है ।
वेलोसस मोड cf में pystones.py का एक अनुकूलित संस्करण अनुवादित किया जा सकता है। https://bitbucket.org/amirouche/pythonium/src/33898da731ee2d768ced392f1c369afd746c25d7/pystone/?at=master
बेसिक पायथन-> जावास्क्रिप्ट अनुवाद होने के बाद मैंने पूर्ण पायथन का जावास्क्रिप्ट में अनुवाद करने के लिए एक और रास्ता चुना। लक्ष्य भाषा को छोड़कर ऑब्जेक्ट ओरिएंटेड क्लास आधारित कोड को glib करने का तरीका JS है इसलिए आपके पास सरणियों, मानचित्र जैसी वस्तुओं और कई अन्य ट्रिक्स की पहुंच है और यह सब उस भाग को Python में लिखा गया था। IIRC पायथनियम अनुवादक द्वारा लिखित कोई जावास्क्रिप्ट कोड नहीं है। एकल वंशानुक्रम प्राप्त करना मुश्किल नहीं है, पायथन के साथ पायथनियम को पूरी तरह से बनाने वाले कठिन भाग हैं:
spam.egg
पायथन में हमेशा अनुवाद किया जाता है getattribute(spam, "egg")
मैंने इसे विशेष रूप से प्रोफाइल नहीं किया था लेकिन मुझे लगता है कि जहां यह बहुत समय ढीला है और मुझे यकीन नहीं है कि मैं इस पर asm.js या कुछ और के साथ सुधार कर सकता हूं।
- विधि रिज़ॉल्यूशन ऑर्डर: यहां तक कि पायथन में लिखे एल्गोरिथम के साथ, इसे पायथन वेलोस के संगत कोड में अनुवाद करना एक बड़ा प्रयास था।
- getattributre : वास्तविक गेटअटेयर रिज़ॉल्यूशन एल्गोरिथ्म एक तरह से मुश्किल है और यह अभी भी डेटा डिस्क्रिप्टर का समर्थन नहीं करता है
- मेटाक्लास क्लास आधारित: मुझे पता है कि कोड को कहां प्लग करना है, लेकिन फिर भी ...
- last bu not कम से कम: some_callable (...) को हमेशा "call (some_callable)" में बदल दिया जाता है। AFAIK ट्रांसलेटर का उपयोग बिल्कुल भी नहीं करता है, इसलिए हर बार जब आप कॉल करते हैं तो आपको यह जांचने की आवश्यकता होती है कि यह किस तरह की वस्तु है, इसे कॉल करने के लिए वे इसे कहते हैं।
यह हिस्सा https://bitbucket.org/amirouche/pythonium/src/33898da731ee2d768ced392f1c369afd746c25d7/pythium/compliant/runtime.py?at=master में फैक्टर है, यह पायथन वेलोइस के साथ संगत पायथन में लिखा गया है।
वास्तविक अनुपालन अनुवादक https://bitbucket.org/amirouche/pythonium/src/33898da731ee2d768ced392f1c369afd746c25d7/pyplonium/compliant/compliant.py?at=master सीधे जावास्क्रिप्ट कोड उत्पन्न नहीं करता है और सबसे महत्वपूर्ण बात यह आश्चर्यजनक नहीं करता है-> । मैंने ast-> ast चीज़ और ast की कोशिश की, भले ही cst की तुलना में अच्छे के साथ काम करना अच्छा न हो ।NodeTransformer और इससे भी महत्वपूर्ण बात यह है कि मुझे ast-> ast की ज़रूरत नहीं है।
उदाहरण के लिए, इससे जुड़े कोड को जनरेट करने से पहले मैं किसी समय किसी ब्लॉक की सामग्री का निरीक्षण करता हूं, तो कम से कम मेरे मामले में अजगर का एस्टीम मेरे मामले में प्रदर्शन में सुधार होगा।
- var / Global: कुछ ऐसा करने में सक्षम होने के लिए मुझे पता होना चाहिए कि मुझे क्या चाहिए और var को नहीं। ब्लॉक ट्रैकिंग उत्पन्न करने के बजाय, जो दिए गए ब्लॉक में चर बनाए जाते हैं और इसे उत्पन्न फ़ंक्शन ब्लॉक के शीर्ष पर सम्मिलित करते हैं, मैं सिर्फ रेवलेंट चर असाइनमेंट की तलाश करता हूं, जब मैं संबंधित कोड को उत्पन्न करने के लिए वास्तव में बच्चे के नोड पर जाने से पहले ब्लॉक में प्रवेश करता हूं।
- पैदावार, जनरेटर, अभी तक, जेएस में एक विशेष वाक्यविन्यास है, इसलिए मुझे यह जानना होगा कि पायथन फ़ंक्शन एक जनरेटर है जब मैं "var my_generator = function" लिखना चाहता हूं
इसलिए मैं अनुवाद के प्रत्येक चरण के लिए एक बार प्रत्येक नोड पर नहीं जाता।
समग्र प्रक्रिया के रूप में वर्णित किया जा सकता है:
Python source code -> Python ast -> Python source code compatible with Veloce mode -> Python ast -> JavaScript source code
पायथन बिल्डरों को पायथन कोड (!) में लिखा गया है, IIRC बूटस्ट्रैपिंग प्रकारों से संबंधित कुछ प्रतिबंध हैं, लेकिन आपके पास हर उस चीज तक पहुंच है, जो अनुरूप मोड में पायथनियम का अनुवाद कर सकती है। अच्छी तरह से देखिएHttps://bitbucket.org/amirouche/pythonium/src/33898da731ee2d768ced392f1c369afd746c25d7/pythonium-compliant/builtins/?at=master
पाइथोनियम कंप्लेंट से उत्पन्न जेएस कोड को पढ़ना समझा जा सकता है लेकिन सोर्स मैप्स से काफी मदद मिलेगी।
इस अनुभव के आलोक में मैं आपको जो मूल्यवान सलाह दे सकता हूं, वह है पुराने किस्म के फार्ट्स:
- साहित्य और मौजूदा परियोजनाओं दोनों में स्रोत या मुक्त विषय की बड़े पैमाने पर समीक्षा करें। जब मैंने विभिन्न मौजूदा परियोजनाओं की समीक्षा की तो मुझे इसे और अधिक समय और प्रेरणा देना चाहिए।
- सवाल पूछो! अगर मुझे पहले से पता था कि C / Javascript शब्दार्थ बेमेल के कारण ओवरपीड की वजह से PyPy बैकेंड बेकार था। मैं शायद 6 महीने पहले शायद 3 साल पहले पायथनियम विचार तरीका था।
- पता है कि आप क्या करना चाहते हैं, एक लक्ष्य है। इस परियोजना के लिए मेरे पास अलग-अलग उद्देश्य थे: थोड़ा सा जावास्क्रिप्ट टाइप करें, पाइथन के बारे में अधिक जानें और पाइथन कोड लिखने में सक्षम हों जो ब्राउज़र में चलेगा (अधिक और नीचे)।
- असफलता अनुभव है
- एक छोटा कदम एक कदम है
- छोटा शुरू करो
- बङा सोचो
- डेमो करते हैं
- पुनरावृति
केवल पायथन वेलोस मोड के साथ, मैं बहुत खुश हूँ! लेकिन जिस तरह से मुझे पता चला कि जो मैं वास्तव में खोज रहा था वह मुझे और अन्य लोगों को जावास्क्रिप्ट से मुक्त कर रहा था, लेकिन अधिक महत्वपूर्ण बात यह है कि एक आरामदायक तरीके से बनाने में सक्षम है । यह मुझे स्कीम, डीएसएल, मॉडल और अंततः डोमेन विशिष्ट मॉडल की ओर ले जाता है (cf. http://dsmforum.org/ ) की ओर ले जाता है।
इरा बैक्सटर की प्रतिक्रिया के बारे में क्या:
अनुमान बिल्कुल भी मददगार नहीं हैं। मुझे पाइथनज और पायथोनियम दोनों के लिए कम से कम 6 महीने का खाली समय मिला। इसलिए मैं पूरे 6 महीने से अधिक समय की उम्मीद कर सकता हूं। मुझे लगता है कि हम सभी जानते हैं कि एक उद्यम के संदर्भ में 100 आदमी-वर्ष का क्या मतलब हो सकता है और इसका मतलब बिल्कुल नहीं ...
जब कोई कहता है कि कुछ कठिन या अधिक बार असंभव है, तो मैं उत्तर देता हूं कि "यह केवल एक समस्या का समाधान खोजने में समय लेता है जो असंभव है" अन्यथा कहा कि कुछ भी असंभव नहीं है सिवाय इसके कि इस मामले में एक गणित प्रमाण असंभव साबित हो ...
यदि यह असंभव साबित नहीं होता है, तो यह कल्पना के लिए जगह छोड़ देता है:
- एक प्रमाण खोजना यह साबित करना असंभव है
तथा
- यदि यह असंभव है तो एक "हीन" समस्या हो सकती है जिसका समाधान हो सकता है।
या
- अगर यह असंभव नहीं है, एक समाधान खोजना
यह सिर्फ आशावादी सोच नहीं है। जब मैंने पायथन शुरू किया-> जावास्क्रिप्ट हर कोई कह रहा था कि यह असंभव था। PyPy नामुमकिन। मेटाक्लासेस बहुत कठिन हैं। आदि ... मुझे लगता है कि एकमात्र क्रांति जो योजना के ऊपर PyPy लाती है-> C पेपर (जो 25 वर्ष पुराना है) कुछ स्वचालित JIT पीढ़ी है (आरपीथॉन दुभाषिया में लिखे गए संकेत के आधार पर मुझे लगता है)।
अधिकांश लोग जो कहते हैं कि एक चीज़ "कठिन" है या "असंभव" कारण प्रदान नहीं करते हैं। C ++ को पार्स करना मुश्किल है? मुझे पता है कि, अभी भी वे (मुक्त) C ++ पार्सर हैं। ईविल विस्तार में है? मुझे पता है। यह कहना कि यह असंभव है केवल सहायक नहीं है, यह "मददगार नहीं" से भी बदतर है यह हतोत्साहित करने वाला है, और कुछ लोगों का अर्थ दूसरों को हतोत्साहित करना है। मैंने इस सवाल के बारे में /programming/22621164/how-to-automatically-generate-a-parser-code-to-code-translator-from-a-corpus के माध्यम से सुना ।
आपके लिए पूर्णता क्या होगी ? इस तरह आप अगले लक्ष्य को परिभाषित करते हैं और शायद समग्र लक्ष्य तक पहुँचते हैं।
मुझे यह जानने में अधिक दिलचस्पी है कि मैं किस प्रकार के पैटर्न को लागू कर सकता हूं ताकि अनुवाद को आसान बनाने के लिए कोड (यानी: Io, SOA?) कोड को अनुवाद करने के तरीके से आसान बनाया जा सके।
मैं ऐसा कोई पैटर्न नहीं देखता, जिसे एक भाषा से दूसरी भाषा में अनुवाद न किया जा सके, कम से कम सही तरीके से। चूंकि भाषा से भाषा में अनुवाद संभव है, इसलिए आप इसके लिए पहले से बेहतर लक्ष्य रखेंगे। चूंकि, मुझे लगता है कि http://en.wikipedia.org/wiki/Graph_isomorphism_problem के अनुसार , दो कंप्यूटर भाषाओं के बीच अनुवाद एक पेड़ या DAG isomorphism है। यहां तक कि अगर हम पहले से ही जानते हैं कि वे दोनों पूरा कर रहे हैं, तो ...
फ्रेमवर्क-> फ्रेमवर्क जिसे मैं एपीआई-> एपीआई अनुवाद के रूप में बेहतर रूप से देखता हूं, फिर भी कुछ ऐसा हो सकता है जिसे आप उत्पन्न कोड को बेहतर बनाने के तरीके के रूप में ध्यान में रख सकते हैं। उदाहरण: बहुत विशिष्ट वाक्यविन्यास के रूप में प्रोग्लॉग करें, लेकिन फिर भी आप पायथन में एक ही ग्राफ का वर्णन करके अभिकलन की तरह प्रोग्लॉग कर सकते हैं ... अगर मुझे पायथन अनुवादक के लिए एक प्रोलॉग लागू करना था तो मैं पायथन में एकीकरण लागू नहीं करूंगा लेकिन एक सी लाइब्रेरी में आ सकता हूं। एक "पायथन सिंटैक्स" के साथ जो एक पायथन के लिए बहुत पठनीय है। अंत में, सिंटैक्स केवल "पेंटिंग" है जिसके लिए हम एक अर्थ देते हैं (यही कारण है कि मैंने योजना शुरू की है)। बुराई भाषा के विस्तार में है और मैं वाक्य रचना के बारे में बात नहीं कर रहा हूँ। भाषा में जिन अवधारणाओं का उपयोग किया जाता है मिलती हैंहुक (आप इसके बिना रह सकते हैं) लेकिन पूंछ की पुनरावृत्ति अनुकूलन जैसी वीएम सुविधाओं के साथ सौदा करना मुश्किल हो सकता है। आप परवाह नहीं करते हैं यदि प्रारंभिक कार्यक्रम पूंछ पुनरावृत्ति का उपयोग नहीं करता है और भले ही लक्ष्य भाषा में कोई पूंछ पुनरावृत्ति न हो तो आप इसे ग्रीनलेट्स / इवेंट लूप का उपयोग करके अनुकरण कर सकते हैं।
लक्ष्य और स्रोत भाषाओं के लिए, देखें:
- बड़े और विशिष्ट विचार
- छोटे और सामान्य साझा विचार
इससे यह सामने आएगा:
- जिन चीजों का अनुवाद करना आसान है
- जिन चीजों का अनुवाद करना मुश्किल है
आप शायद यह भी जान पाएंगे कि तेज और धीमे कोड में क्या अनुवाद किया जाएगा।
स्टैडलिब या किसी लाइब्रेरी का भी सवाल है लेकिन कोई स्पष्ट उत्तर नहीं है, यह आपके लक्ष्यों पर निर्भर करता है।
मुहावरेदार कोड या पठनीय उत्पन्न कोड भी समाधान है ...
PHP जैसे प्लेटफ़ॉर्म को लक्षित करना ब्राउज़रों को लक्षित करने की तुलना में बहुत आसान है क्योंकि आप धीमे और / या महत्वपूर्ण पथ का सी-कार्यान्वयन प्रदान कर सकते हैं।
यह देखते हुए कि आप पहली परियोजना में पायथन का PHP में अनुवाद कर रहे हैं, कम से कम PHP3 सबसेट के लिए जो मुझे पता है, veloce.py को अनुकूलित करना आपका सबसे अच्छा दांव है। यदि आप PHP के लिए veloce.py को कार्यान्वित कर सकते हैं तो शायद आप आज्ञाकारी मोड को चलाने में सक्षम होंगे ... इसके अलावा यदि आप PHP को PHP के सबसेट में अनुवाद कर सकते हैं तो आप php_veloce.py के साथ उत्पन्न कर सकते हैं इसका मतलब है कि आप PHP का अनुवाद कर सकते हैं पायथन का सबसेट जो कि veloce.py का उपभोग कर सकता है, जिसका अर्थ है कि आप PHP को जावास्क्रिप्ट में अनुवाद कर सकते हैं। बस केह रहा हू...
आप उन पुस्तकालयों पर भी नज़र डाल सकते हैं:
आप इस ब्लॉग पोस्ट (और टिप्पणियों) से भी रूचि ले सकते हैं: https://www.rfk.id.au/blog/entry/pypy-js-poc-jit/