പൈപൈ

പൈത്തൺ പ്രോഗ്രാമിങ് ഭാഷയുടെ ഒരു ബദലായി **പൈപൈ**(PyPy) പ്രവർത്തിക്കുന്നു. ഇത് പൈത്തൺ, സിപൈത്തൺ എന്നിവയെക്കാൾ അടിസ്ഥാന നടപ്പാക്കൽ വേഗത്തിൽ പ്രവർത്തിക്കുന്നു എന്നതാണ് ഇതിൻറെ പ്രേത്യേകത. പൈത്തൺ ഒരു ഇൻറർപ്രെട്ടർ ആയിരിക്കുമ്പോൾ, പൈപൈ വളരെ വേഗമേറിയതാണ് കാരണം, ഇത് ഒരു ജസ്റ്റ്-ഇൻ-ടൈം കമ്പൈലർ ആണ്. കംപൈലർ എഴുതിയതിനേക്കാൾ എളുപ്പത്തിൽ വ്യാഖ്യാനങ്ങൾ എഴുതുന്നതിനാൽ, എന്നാൽ കമ്പൈലറിനെക്കാൾ സാവധാനത്തിൽ പ്രവർത്തിക്കുകയും, പ്രോഗ്രാമിങ് ഭാഷകൾ ഫലപ്രദമായി നടപ്പിലാക്കാൻ ഈ രീതിക്ക് കഴിയും. പൈപൈയുടെ മെറ്റാ ട്രെയ്സിംഗ് ടൂൾചെയിനെ ആർപൈത്തൺ (RPython) എന്നാണ് വിളിക്കുന്നത്.
## വിശദാംശങ്ങളും പ്രേരണയും
പൈത്തണിൻറെ ഒരു നടപ്പിലാക്കൽ ആണെന്ന് പൈപൈയെ കണക്കാക്കി, പൈത്തൺ പോലുളള ഒരു പ്രോഗ്രാമിങ് ഭാഷയിലാണ് എഴുതപ്പെട്ടത്. മെച്ചപ്പെടുത്താൻ കഴിയുന്ന മേഖലകളെ തിരിച്ചറിയാനും പൈപൈ നിർമ്മിക്കാനും ഇത് എളുപ്പമാക്കുന്നു, സിപൈത്തനൊപ്പം പരീക്ഷിക്കാൻ കൂടുതൽ ലളിതവും എളുപ്പവുമാണ്. 

ഡൈനാമിക് ഭാഷകൾ നടപ്പാക്കാൻ ഒരു സാധാരണ പരിഭാഷയും പിന്തുണ ചട്ടക്കൂടിനും പൈപൈ ലക്ഷ്യമിടുന്നു, ഭാഷാ സ്പെസിഫിക്കേഷനും നടപ്പിലാക്കുന്ന വശങ്ങളും തമ്മിലുള്ള ശുദ്ധമായ വേർതിരിവ് ഊന്നിപ്പറയുന്നു. നിമ്നതലത്തിലുള്ള ചട്ടക്കൂടിൽ പൈത്തൺ പ്രോഗ്രാമിങ് ഭാഷയുടെ ഒത്തുചേരൽ, ഫ്ലെക്സിബിൾ, ഫാസ്റ്റ് ഇംപ്ലിമെൻറുകൾ എന്നിവ ലഭ്യമാക്കാനും ലക്ഷ്യമിടുന്നു. ഇതിലൂടെ പുതിയ തലത്തിലുള്ള വിശദാംശങ്ങൾ എൻകോഡ് ചെയ്യാതെ തന്നെ പുതിയ നൂതന സവിശേഷതകൾ പ്രാപ്തമാക്കാൻ കഴിയും.
## ആർപൈത്തൺ
പൈപൈ ഇൻറർപ്രെട്ടർ തന്നെ നിയന്ത്രിത ഉപഗണമായി ആർപൈത്തൺ (നിയന്ത്രിത പൈത്തൺ) അറിയപ്പെടുന്നു. പൈത്തൺ ഭാഷയിൽ ആർപൈത്തൺ ചില നിയന്ത്രണങ്ങൾ നൽകുന്നു, മാത്രമല്ല ഒരു വേരിയബിളിന്റെ തരം കംപൈൽ സമയത്ത് അനുമാനിക്കാം.

ആർപൈത്തൺ കോഡ് വിശകലനം ചെയ്യുന്ന ഒരു ടൂൾചെയിൻ പൈപൈ പ്രൊജക്റ്റ് വികസിപ്പിച്ചിട്ടുണ്ട്, അതിനെ സി കോഡായി വിവർത്തനം ചെയ്യുന്നു. അത് ഒരു നേറ്റീവ് ഇൻറർപ്രെട്ടർ നിർമ്മിക്കാൻ കമ്പൈൽ ചെയ്യുന്നു. ഗാർബേജ് കളക്ടർമാരെ പ്ലഗ്ഗുചെയ്യാൻ അനുവദിക്കുന്നു, കൂടാതെ ഓപ്ഷണലായി സ്റ്റാക്ക്ലെസ്സ് പൈത്തൺ (Stackless Python) പ്രത്യേകതകൾ പ്രവർത്തന സജ്ജമാക്കുന്നു. ഒടുവിൽ, ഇതിൽ ഒരു ജസ്റ്റ്-ഇൻ-ടൈം (JIT) ജനറേറ്ററും ഉൾപ്പെടുന്നു, ഇത് ഇൻറർപ്രെട്ടർ ഒരു ഇൻ-ടൈം കംപൈലർ നിർമ്മിക്കുന്നു, ഇൻറർപ്രെട്ടർ സോഴ്സ് കോഡിൽ ഏതാനും അനോട്ടേഷൻസ് നൽകിയിരിക്കുന്നു. ജനറേറ്റുചെയ്ത ജെഐടി(JIT) കംപൈലർ എന്നത് ട്രേസിംഗ് ജെഐടി (tracing JIT) ആണ്.

ആർപൈത്തൺ ഇപ്പോൾ പിക്സിയുടെ (Pixie) പോലെയുള്ള പൈത്തൺ ഭാഷാ ഔട്ട്പുട്ടുകളും എഴുതാൻ ഉപയോഗിക്കുന്നു.

## പദ്ധതി നിലവാരം
സിപൈത്തൺ 2.7.10 നോട് പൊരുത്തമുള്ളതാണ് പൈപൈ. 2.3.1 പതിപ്പുമായി പൈപൈ 3 പുറത്തിറങ്ങി, സിപൈത്തൺ 3.2.5 നോട് അനുരൂപമാണ്. രണ്ട് പതിപ്പുകൾക്കും 32-ബിറ്റ് / 64-ബിറ്റ് x86, എആർഎം പ്രോസസറുകൾ എന്നിവയിൽ ജെഐടി കംപൈലേഷൻ പിന്തുണയുണ്ട്.ഇത് വിൻഡോസ്, ലിനക്സ്, ഓപ്പൺബിഎസ്ഡി, മാക് ഓഎസ് എക്സ് എന്നിവയിൽ നൈറ്റിലി ഓണായി പരീക്ഷിച്ചു നോക്കുന്നു.സിപൈഎക്സ്റ്റ്(CPYExt) എന്ന സിപൈത്തൺ എപിഐ എക്സ്റ്റൻഷനുകൾക്ക് ഒരു പൊരുത്തപ്പെടൽ ലേയർ ഉണ്ട്, അത് അപൂർണ്ണവും പരീക്ഷണാത്മകവുമാണ്. ഇൻറർഫേസു ചെയ്യാനുള്ള മുൻഗണന സി ഷെയേർഡ് ലൈബ്രറികൾ ബിൽറ്റ്-ഇൻ സിഎഫ്എഫ്ഐ(CFFI) അല്ലെങ്കിൽ സിടൈപ്പ്സ് (ctypes) ലൈബ്രറികളിലൂടെയാണ്.

## ചരിത്രം
പൈപൈ സൈക്കോ പ്രോജക്ടിനെ പിന്തുടരുന്നു, പൈത്തണിനുവേണ്ടിയുള്ള ലളിതമായ ഒരു പ്രത്യേക കംപൈലർ, 2002 മുതൽ 2010 വരെയുള്ള കാലയളവിൽ ആർമിൻ റിഗോ(Armin Rigo)യാണ് വികസിപ്പിച്ചെടുത്തത്. പൈപയുടെ ലക്ഷ്യം ഒരു മുഴുസമയ സ്പെഷിലൈസിംഗ് കംപൈലർ സ്കോപ്പോടുകൂടിയുള്ളതാണ്, അത് സൈക്കോയ്ക്ക് ലഭ്യമായിരുന്നില്ല. തുടക്കത്തിൽ, ആർപൈത്തൺ ജാവ ബൈറ്റ്കോഡ്, സിഐഎൽ(CIL), ജാവാസ്ക്രിപ്റ്റ് എന്നീ പ്രോഗ്രാമുകളായും കംപൈൽ ചെയ്യാവുന്നതായിരുന്നു, എന്നാൽ താത്പര്യമില്ലായ്മ കാരണം ഈ ബാക്ക്എൻഡുകൾ നീക്കം ചെയ്തു.

പൈപൈ തുടക്കത്തിൽ പദ്ധതി വികസനവും, ഗവേഷണവുമായിരുന്നു നടന്നിരുന്നത്. 2007 പകുതിയോടെയാണ് പൂർണ്ണമായും വികസിപ്പിച്ചെടുത്ത  1.0 ഔദ്യോഗിക പതിപ്പിറങ്ങിയത്, അടുത്ത ശ്രദ്ധ സിപൈത്തണിൽ കൂടുതൽ അനുരൂപമായുള്ള ഒരു പ്രൊഡക്ഷൻ-റെഡി പതിപ്പ് പുറത്തിറക്കിക്കൊണ്ടാ യിരുന്നു. കോഡിംഗ് സ്പ്രിൻറ് നടന്നുകൊണ്ടിക്കുമ്പോൾ പൈപൈയിൽ പല മാറ്റങ്ങൾക്ക് വിധേയമായിട്ടുണ്ട്.
* 2008 ഓഗസ്റ്റിൽ പൈലോൺസ്(Pylons), പൈഗ്ലെറ്റ്(Pyglet),  നെവോ(Nevow) , ജാങ്കോ (Django) തുടങ്ങിയ പ്രശസ്തമായ പൈത്തൺ ലൈബ്രറികൾ പ്രവർത്തിപ്പിക്കാൻ പൈപൈയ്ക്ക് സാധിച്ചു. 
*2010 മാർച്ച് 12 ന് പിപി 1.2 പുറത്തിറങ്ങി, വേഗതക്കാണ് പ്രാധാന്യം നൽകിയത്. അതിൽ ഒരു പ്രവർത്തനം ഉണ്ടായിരുന്നു, ഇതുവരെ സ്ഥിരതയില്ലാത്ത, ജസ്റ്റ്-ഇൻ-ടൈം കമ്പൈലർ.
* 2011 ഏപ്രിൽ 30 ന് പൈപൈ പതിപ്പ് 1.5 പുറത്തിറങ്ങി, സിപൈത്തൺ 2.7-ന് അനുരൂപമാണ്.
* 2013 മേയ് 9-ന് പൈപൈ 2.0 പുറത്തിറങ്ങി. ആം വെർഷൻ 6 (ARMv6), ആം വെർഷൻ 7 (ARMv7) ജെഐടി (JIT) എന്നിവയിലെ ജെഐടി (JIT) കോമ്പിനേഷനുള്ള ആൽഫ-ക്വാളിറ്റി സപ്പോർട്ട് അവതരിപ്പിച്ചു, കൂടാതെ സ്റ്റാൻഡേർഡ് ലൈബ്രറിയിൽ സിഎഫ്എഫ്ഐ (CFFI) ഉൾപ്പെടുത്തി.
* 2014 ജൂൺ 20 ന് പൈത്തൺ 3 യുമായി സ്ഥിരത ഉറപ്പിക്കുകയും കൂടുതൽ ആധുനിക പൈത്തണുമായി അനുരൂപമാക്കുകയും ചെയ്തു. പൈപൈ 2.3.1 ൻറെ കൂടെ പുറത്തിറങ്ങി, അതേ പതിപ്പ് നമ്പറാണ് പുറത്തിറങ്ങിയത്.
* 2017 മാർച്ച് 21 ന് പൈപൈ, പൈപൈ 3 എന്നിവയുടെ പിപിപി പ്രോജക്റ്റ് 5.7 പുറത്തിറക്കി. പൈത്തൺ 3.5-ന് ബീറ്റാ-ക്വാളിറ്റി സപ്പോർട്ട് അവതരിപ്പിച്ചു.
* 2018 ഏപ്രിൽ 26 ന് 6.0 പതിപ്പ് പുറത്തിറങ്ങി.
## ഫണ്ടിംഗ്
2004 ഡിസംബറിനും 2007 മാർച്ചിനും ഇടയിൽ യൂറോപ്യൻ യൂണിയൻ ഒരു പ്രത്യേക ലക്ഷ്യ ദർശന പദ്ധതി ആയി ധനസഹായം നൽകി.2008 ജൂണിൽ പൈപൈ ഗൂഗിൾ ഓപ്പൺ സോഴ്സ് പ്രോഗ്രാമുകളുടെ ഭാഗമായി ഫണ്ടിംഗ് പ്രഖ്യാപിക്കുകയുണ്ടായി. സിപൈത്തണുമായി കൂടുതൽ പൊരുത്തപ്പെടുന്ന പൈപൈ നിർമ്മിക്കുന്നതിൽ ശ്രദ്ധ കേന്ദ്രീകരിച്ചു. 2008 ജൂണിൽ പൈപൈ ഫൗണ്ടേഷൻ ഗൂഗിൾ ഓപ്പൺ സോഴ്സ് പ്രോഗ്രാമുകളുടെ ഭാഗമായി പ്രഖ്യാപിക്കുകയും പൈപൈ സിപൈത്തണിനെ കൂടുതൽ അനുയോജ്യമാക്കു കയും ചെയ്തു. 2009 ൽ യൂറോപ്യൻ യൂണിയൻ ഫണ്ടിംഗ് ഏജൻസി, പ്രത്യേകിച്ച് എസ്എംഇ(SME's)കളിൽ ശ്രദ്ധ കേന്ദ്രീകരിച്ചു,  പൈപിറ്റ് (PYPIT) പ്രൊജക്റ്റ് അംഗങ്ങളുടെ ഒരു നിർദ്ദേശം സ്വീകരിച്ചു: "പൈജിറ്റ് (PYJIT) - പൈപൈയെ അടിസ്ഥാനമാക്കി ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഭാഷകൾക്ക് വേഗവും നൽകുന്നതിന് സൗകര്യപ്രദവുമായ ടൂൾകിറ്റ്" ആണ്. യൂറോസ്റ്റാർ ഫണ്ടിംഗ് നൽകിയത് ആഗസ്റ്റ് 2011 വരെയാണ്.  പൈകോൺ (PyCon) 2011 ൽ പൈത്തൺ സോഫ്റ്റ് വെയർ ഫൗണ്ടേഷൻ 10,000 ഡോളർ ഗ്രാൻറ് നൽകി. ഇത് പൈപൈയുടെ പ്രകടനവും അനുയോജ്യതയും ഭാഷയുടെ പുതിയ പതിപ്പുകളുമായി തുടരുന്നതിന് വേണ്ടിയാണ്.
എആർഎം (ARM) രൂപകൽപനയിലേക്ക് പോർട്ട് ചെയ്യുന്നതിന് റാസ്ബെറി പൈ ഫൗണ്ടേഷൻ സ്പോൺസർ ചെയ്തു.

പൈപൈ പ്രോജക്റ്റ് അതിൻറെ സ്റ്റാറ്റസ് ബ്ളോഗ് പേജുകളിലൂടെ സംഭാവന സ്വീകരിക്കുന്നു.നിലവിൽ മൂന്ന് ഫണ്ടിംഗ് പ്രോജക്ടുകൾ പുരോഗമിക്കുന്നു: പൈത്തൺ 3 പതിപ്പ് കോംപാറ്റിബിളിറ്റി, ഉത്തമീകരിച്ച അന്തർ നിർമ്മിത  നം‌പൈ (NumPy) പിന്തുണ നൂതന കണക്കുകൾക്കും സോഫ്റ്റ് വെയർ ട്രാൻസാക്ഷണൽ മെമ്മറി പിന്തുണയ്ക്കും മികച്ച സമാന്തരത്വം അനുവദിക്കുന്നതിനായിട്ടാണ്.
## ഇതും കാണുക

* Bootstrapping (compilers)
* Cython
* GraalVM
* Partial evaluation
* Psyco
* Self-hosting
* Self-interpreter
* Unladen Swallow

## അവലംബം

വർഗ്ഗം:പ്രോഗ്രാമിങ് ഭാഷാ കുടുംബങ്ങൾ
വർഗ്ഗം:പൈത്തൺ (പ്രോഗ്രാമിങ്ങ് ഭാഷ)