Revision 20646902 of "PyPy" on srwiki

{{Програмски језик
|назив = PyPy
|слика = Pypy logo.png
|натпис уз слику =Лого
|оригинални назив = {{јез-енгл|PyPy}}
|изговор на српском =Пајпај
|модел = [[Cross-platform]]
|аутори =
|дизајнери = 
|актуелна верзија = 4.0.0
|датум актуелне верзије = 29.10.2015.
|типови =
|имплементације = 
|дијалекти = 
|утицаји = 
|утицао на = 
|лиценца = [[MIT Лиценца]]
|сајт = http://pypy.org/
|сајт документације =
}}
'''PyPy''' је [[Пајтон (програмски језик)|Пајтонов]] [[Интерпретатор (рачунарство)|интерпретатор]] и ''управо-на-време'' компајлер. PyPy се фокусира на брзину, ефикасност и компатибилност са оригиналним интерпретатором [[CPython]].<ref name="mission-statement">{{Cite web|last=Pedroni|first=Samuele|date = March 2007|title = PyPy - Goals and Architecture Overview|url = https://web.archive.org/web/20111105152206/http://codespeak.net/pypy/dist/pypy/doc/architecture.html}}</ref>

PyPy је у почетку био интерпретатор Пајтона написан у самом језику Пајтона. Тренутне верзије PyPy су преведене од [[PyPy#RPython|RPython]] до [[C (програмски језик)|C кода]] и компајловане. PyPy JIT (скраћено и преведно са енглеског "Управо На Време") компајлер има могућност превођења кода Пајтона у машински током покретања.

== Детаљи и мотивације ==
PyPy је осмишљен да буде имплементација Пајтона написаног у програмском језику који је сличан Пајтону. Ово чини да буде једноставно проналажење подручја у ком може бити унапређен и чини PyPy више флексибилним и лакшим за експериментисање него [[CPython]].

PyPy циља да омогући заједнички превод и подршку фрејмворка за производњу имплементација динамичних језика, истакнујући чисту разлику између спецификација језика и аспеката имплементација. Такође циља и да омогући прилагодљиву, флексибилну и брзу имплементацију програмског језика Пајтон коришћењем горе наведеног фрејмворка да омогући нове напредне функције без потребе за мењањем детаља у ниском коду.<ref name="mission-statement-2">{{Cite web|accessdate =  11. 10. 2013|title = PyPy - Goals and Architecture Overview - Mission Statement|url = http://doc.pypy.org/en/latest/architecture.html#mission-statement}}</ref>

=== RPython ===
PyPy интерпретатор је написан у ограниченом подсету Пајтона, назван  RPython (Restricted Python).<ref>[http://doc.pypy.org/en/latest/coding-guide.html#id1 Coding Guide — PyPy documentation{{Ботовски наслов}}]</ref> Само-одржива природа PyPy-а је рефлектујућа у логоу пројекта, који описује змију која гута свој реп у [[уробор]]. RPython поставља нека ограничења на сам Пајтон језик, тиме и типови променљивих могу бити промењене током компајловања.<ref>"It is a proper subset of Python, restricted in a way that enables easy analysis and efficient code generation", Ancona et al., 2007.</ref>

PyPy пројекат је произвео ланац алатке који анализира RPython код и преводи га у [[C (програмски језик)|C]] код, који је затим компајлован да производи нативне интерпретаторе. Такође омогућава опционо омогућавање функција [[Пајтон (Stackless)|Stackless Пајтона]]. Коначно, садржи и ''управо-на-време'' (JIT) генератор који прави ''управо-на-време'' компајлер у интерпретатор, додајући неколико информација у изворни код интерпретатора. Генерисани JIT компајлер је пратећи JIT.<ref>{{Cite conference|title = Tracing the Meta-Level: PyPy’s Tracing JIT Compiler|doi = 10.1145/1565824.1565827|url = https://dx.doi.org/10.1145/1565824.1565827 |last1 = Bolz|first1 = Carl|last2 = Cuni|first2 = Antonio|last3 = Fijalkowski|first3 = Maciej|last4 = Rigo|first4 = Armin|conference = ICOOOLPS '09}}</ref>

RPython се сада такође користи да се напишу имплементације у не-Пајтон коду као што је [[:en:Pixie (programming language)|Пикси]].<ref>[https://medium.com/this-is-not-a-monad-tutorial/indie-languages-interview-pixie-and-timothy-baldridge-cadbc36418dc Timothy Balridge interview]</ref>

== Статус пројекта ==
Последња стабилна верзија PyPy-а, PyPy 4.0.0, је CPython 2.7.10 компатибилна.<ref>{{Cite web|url = http://morepypy.blogspot.co.nz/2015/10/pypy-400-released-jit-with-simd.html |title = PyPy 4.0.0 Released - A Jit with SIMD Vectorization and More|date =  29. 10. 2015}}</ref> PyPy3, ибачен почевши са верзијом 2.3.1, је CPython 3.2.5 компатибилна.<ref name="pypyblogpypy3">{{Cite news|date = 20. 06. 2014.|author = the PyPy team|title = PyPy3 2.3.1 - Fulcrum|publisher = PyPy blog|url = http://morepypy.blogspot.it/2014/06/pypy3-231-fulcrum.html}}</ref> Обе верзије имају JIT компилацијску подршку на 32-bit/64-bit [[x86]] и [[ARM архитектура|ARM]] процесорима.<ref name="lwn2013">{{Cite news|date = 15. 05. 2013.|last=Edge|first=Jake|title = A look at the PyPy 2.0 release|publisher = [[LWN.net]]|url = https://lwn.net/Articles/550427/}}</ref> Ноћима је тестиран на [[Виндоус]], [[Linux]], [[OpenBSD]] и [[Mac OS X]]. PyPy може да покрене чист Пајтон софтвер који се не ослања на имплементационе могућности.<ref>{{Cite web|title = PyPy - Python compatibility|url = http://pypy.org/compat.html}}</ref>

Постоји слој компатибилности за CPython C [[АПИ]] екстензије назван CPyExt, али је недовршен и експетименталан. Преферирани начин за приступање са дељеним библиотекама C-а је кроз уграђене CFFI или ctypes библиотеке.

=== Историја ===
PyPy је наследник пројекта [[Psyco]], управо-на-време специјализован компајлер за Пајтон, програмиран од Армина Ригоа између 2002. и 2010. PyPy-ев циљ је да има управо-на-време специјализовани компајлер са обимом, који није био доступан за Psyco.<sup class="noprint Inline-Template" style="white-space:nowrap;">&#x5B;''[[Википедија:Будите јасни|<span title="what does &quot;with scope&quot; mean? (May 2013)">clarification needed</span>]]''&#x5D;</sup> Иницијално, RPython је такође могао бити компајлован у [[Јава]] биткод,[[:en:Common Intermediate Language| CIL]] и [[Јаваскрипт]], али они су обрисани због мањка интересовања.

PyPy је иницијално био предмет изучавања и пројекат окренут ка истраживању. Постигнујући зрео период развоја и званичну верзију 1.0 избачену средином 2007., његов следећи фокус је био на избацивање верзије која је била спремна за производњу са више компатибилности са CPython. Многе PyPy промене су биле направљене током [[Hackathon|Хакатона]].

Од касне 2008., PyPy је могао покренути популарне Пајтонове библиотеке као што су Pylons,<ref>{{Cite web|title = Running pylons on top of PyPy|url = http://morepypy.blogspot.com/2008/06/running-pylons-on-top-of-pypy.html}}</ref> Pyglet,<ref>{{Cite web|title = Running Pyglet on top of PyPy|url = http://morepypy.blogspot.com/2008/02/running-pyglet-on-pypy.html}}</ref> Nevow<ref>{{Cite web|title = Running Nevow on top of PyPy|url = http://morepypy.blogspot.com/2008/06/running-nevow-on-top-of-pypy.html}}</ref> и Django.<ref>{{Cite web|title = PyPy runs unmodified django 1.0 beta|url = http://morepypy.blogspot.com/2008/08/pypy-runs-unmodified-django-10-beta.html}}</ref>

Током марта 2010., PyPy 1.2 је избачен, фокусирајући се на брзину. Садржао је компајлер управо-на-време који је радио, али није било саветовано покретати га у продукцијским окружењима. Поред верзије 1.2, вебсајт је редизајниран и нови PyPy центар брзине за праћење напретка је осмишљен.<ref name="lwn2010">{{Cite web|last = Corbet|first = Jonathan|title = PyPy: the other new compiler project|publisher = [[LWN.net]]|date = 19. 05. 2012.|url = https://lwn.net/Articles/388160/}}</ref>

Током априла 2011., PyPy верзија 1.5 је избачена, која је достигла компатибилност са CPython 2.7.

Маја 9., 2013., PyPy 2.0 је избачен, који је донео алфа-квалитетну подршку за JIT компилације на ARMv6 и ARMv7 JIT, и укључивао је CFFI у стандардној библиотеци.<ref name="lwn2013" />

Јуна 20., 2014., PyPy3 је декларисан стабилним<ref name="pypyblogpypy3" /> и доноси компатибилност са више модерних имплементација Пајтоновог језика. Избачен је поред PyPy 2.3.1 и има исти број верзије.

=== Финансирање ===
PyPy је финансиран од [[Европска унија|Европске уније]]<ref>{{Cite web|title = EU Community Research and Development Information Service Entry|url = http://cordis.europa.eu/projects/rcn/74481_en.html}}</ref> између децембра 2004. и марта 2007. У јуну 2008., PyPy је најавио финансирање делом од програма отвореног кода из [[Гугл]]а, и пристао на фокусирање у прављењу PyPy више компатибилним са [[CPython]]. Током 2009. Еврозвезда, финансирајућа агенција Европске уније се посебно фокусирала на [[Мала и средња предузећа]],<ref>{{Cite web|title = Eurostars - Aim Higher|url = http://www.eurostars-eureka.eu/}}</ref> прихватила предлог од чланова пројекта PyPy названог: "PYJIT - брз и флексибилан алат за динамично програмске језике базиране на PyPy". Финансирање од Еврозвезда је трајало до августа 2011.<ref>{{Cite web|title = Project Page on Eureka Network|url = https://web.archive.org/web/20120403075231/http://www.eurekanetwork.org/project/-/id/4791}}</ref>
Током PyCon САД 2011, Фондација Софтвера Пајтон је донирала $10,000 за наставак PyPy развоја на перформансама и компатибилности са новијим верзијама језика.<ref>{{Cite web|title = A thank you to the PSF|url = http://morepypy.blogspot.com/2011/03/thank-you-to-psf.html}}</ref>
Порт на АРМ архитектуре је спонзорисан као део Респбери Пај Фондације.<ref name="lwn2013" />

PyPy пројекат такође прихвата донације на својим страницама блога.<ref>{{Cite web|title = PyPy Status Blog: Oh, and btw: PyPy gets funding through "Eurostars"|url = http://morepypy.blogspot.com/2010/12/oh-and-btw-pypy-gets-funding-through.html}}</ref> Постоје три пројекта финансирања тренутно: Python 3 компатибилност, уграђена оптимизована NumPy подршка за нумеричка израчунавања и подршка софтверске контроле меморије да подржи [[Паралелна обрада|паралелну обраду.]]<ref name="lwn2013" />

=== Пројекти који користе алате PyPy-а ===
* [https://github.com/topazproject/topaz Topaz] - имплементација програмског језика [[Руби (програмски језик)|Руби]]
* [http://hippyvm.com/ HippyVM] - имплементација PHP језика коришћењем технологије PyPy.

== Види још ==
* [[Бутстраповање (компајлери)]]
* [[Cython]]
* [[Psyco]]
* [[Self-hosting]]
* [[Интерпретатор (рачунарство)|Интерпретатор]]
* [[Pixie (програмски језик)]]

== Референце ==
{{reflist|2}}

== Извори ==
* Davide Ancona, Massimo Ancona, Antonio Cuni, Nicholas D. Matsakis, 2007. [ftp://ftp.disi.unige.it/pub/person/AnconaD/DLS08.pdf RPython: a Step Towards Reconciling Dynamically and Statically Typed OO Languages]. In Proc. Dynamic Language Symposium (DLS), 2007. ACM Press.
* Carl Friedrich Bolz, Antonio Cuni, Maciej Fijalkowski, 2009. [https://web.archive.org/web/20121115092216/http://codespeak.net/svn/pypy/extradoc/talk/icooolps2009/bolz-tracing-jit-final.pdf Tracing the meta-level: PyPy's Tracing JIT Compiler]. In Proc. ICOOOLPS, 2009. ACM Press.
* {{Cite web|last = Corbet|first = Jonathan|title = A brief experiment with PyPy|publisher = [[LWN.net]]|date =  11. 5. 2011|url = http://lwn.net/Articles/442268/}}
* {{Cite news|last = von Eitzen|first = Chris|title = PyPy 1.7 widens the performance "sweet spot"|newspaper = [[The H]]|publisher = [[Heinz Heise]]|date = November 21, 2011|url = http://www.h-online.com/open/news/item/PyPy-1-7-widens-the-performance-sweet-spot-1382249.html}}
* {{Cite web|last = Rose|first = John|title = A Day with PyPy|publisher = [[Oracle Corporation|Oracle]] developer blog|date =  2. 12. 2011|url = http://blogs.oracle.com/jrose/entry/a_day_with_pypy}}

== Спољашње везе ==
* {{Званични веб-сајт|http://pypy.org/}}
{{Пајтон (програмски језик)}}

[[Категорија:Пајтон (програмски језик)]]
[[Категорија:Слободни софтвер написан у Пајтону]]