Virtuální stroj papouška - Parrot virtual machine - Wikipedia
Vývojáři | Parrot Foundation |
---|---|
Stabilní uvolnění | 8.1.0 / 16. února 2016[1] |
Úložiště | ![]() |
Napsáno | C |
Operační systém | Cross-platform |
Typ | Virtuální stroj |
Licence | Umělecká licence 2.0 |
webová stránka | Papoušek![]() |
Papoušek je na základě registrace zpracovat virtuální stroj navržen tak, aby běžel dynamické jazyky efektivně. Je možné sestavit Montážní jazyk papouška a Střední zastoupení papouška (PIR, střední jazyk) Parrotovi bytecode a provést to. Papoušek je volný, uvolnit a otevřený zdroj software.[2]
Papouška spustila Perl komunita a je vyvíjena s pomocí open source a bezplatné softwarové komunity. Ve výsledku se zaměřuje na kompatibilita licencí s Perlem (Umělecká licence 2.0 ), kompatibilita platformy s širokou škálou systémů, kompatibilita architektury procesorů s nejmodernějšími procesory, rychlost provádění, malá velikost (kolem 700k v závislosti na platformě) a flexibilita při řešení různých požadavků kladených Raku a další moderní dynamické jazyky.
Verze 1.0, se stabilní Aplikační programovací rozhraní (API) pro vývoj, byla vydána 17. března 2009.[3] Aktuální verze je vydání 8.1.0 „Andean Parakeet“[1]
Dějiny
Název Papoušek pochází z Blázen vtip, který oznámil hypotetický jazyk, pojmenovaný Papoušek, to by sjednotilo Krajta a Perl.[4][5] Název byl později přijat tímto projektem (původně součástí vývojového úsilí Raku), jehož cílem je podpora Raku, Pythonu a dalších programovacích jazyků. Existuje několik jazyků přeneseno spustit na virtuálním stroji Parrot.[6]
The Parrot Foundation byla vytvořena v roce 2008 jako držitel autorská práva a ochranné známky projektu Parrot, který pomáhá řídit vývoj jazykové implementace a základní codebase, poskytnout základnu pro růst komunity Parrot a oslovit další jazykové komunity.[7]
Jazyky
Cílem virtuálního stroje Parrot je hostovat klientské jazyky a umožnit mezi nimi spolupráci. Při plnění tohoto cíle existuje několik překážek, zejména obtížnost mapování konceptů na vysoké úrovni, dat a datové struktury mezi jazyky.
Statické a dynamické jazyky
Rozdílné vlastnosti staticky a dynamicky zadané jazyky motivovaly design Parrot. Aktuální populární virtuální stroje, jako je Virtuální stroj Java a Common Language Runtime, pro platformu .NET, byly navrženy pro staticky psané jazyky, zatímco jazyky cílené Parrotem jsou dynamicky psány.
Virtuální stroje, jako je virtuální stroj Java a aktuální virtuální stroj Perl 5, jsou také založeno na zásobníku. Vývojáři společnosti Parrot považují zahrnutí registrů společnosti Parrot za výhodu, protože se proto více podobá designu hardwaru, což umožňuje rozsáhlou literaturu o optimalizace kompilátoru má být použit při generování bytecode pro virtuální stroj Parrot, který by mohl běžet rychlostí blíže k strojový kód. Jiné virtuální stroje založené na registrech inspirovaly části designu Parrot, včetně LLVM, Lua VM a pekla Dis.
Funkční koncepty
Parrot má bohatou podporu pro několik funkcí Funkcionální programování počítaje v to uzávěry a pokračování, což může být obzvláště obtížné správně a přenosně implementovat, zejména ve spojení s zpracování výjimek a závitování. Největší výhodou je dynamická rozšiřitelnost objektů metodami, které to umožňují polymorfní nádoby (PMC) a související opcodes. Implementace řešení těchto problémů na úrovni virtuálních strojů odstraňuje potřebu řešit tyto problémy v jazycích jednotlivých klientů.
Nástroje kompilátoru
Parrot poskytuje sadu nástroje pro psaní překladačů[8] který zahrnuje Analyzátor gramatiky (PGE), hybridní analyzátor-generátor, který dokáže vyjádřit a analyzátor rekurzivního sestupu stejně jako analyzátor priority operátorů, což umožňuje volný přechod mezi těmito dvěma v jedné gramatice. PGE se napájí do Stroj na stromovou gramatiku (TGE), který dále transformuje analyzovaný strom generovaný PGE pro optimalizaci a nakonec pro generování kódu.
Existující klientské jazyky
Mnoho jazyků již má front-endy kompilátoru navržené pro Parrot; mnoho z nich je však stále jen částečně funkční.[9] Od července 2013 [potřebuje aktualizaci ], aktivně udržovanými jazyky jsou:[10]
Neaktivní jazyky jsou od července 2013 následující:
- Oblouk
- APL
- před naším letopočtem
- Společný Lisp
- Lisp
- ECMAScript
- Forth
- Obecný imperativní jazyk
- GNU m4
- Jako
- Oktáva[11]
- QuickBASIC 4.5
- Pokec (přes Chitchat)
- .NET bytecode
Následující esoterické programovací jazyky byly také implementovány:
Interní
Existují tři formy programového kódu pro Parrot:
- Bytecode[12] je binární a je nativně interpretován Parrotem. Bytecode je obvykle uložen v souborech s příponou přípona souboru „.pbc“.
- Montážní jazyk papouška (PASM) je jazyk nízké úrovně, který sestavuje až po bytecode. Kód PASM je obvykle uložen v souborech s příponou souboru „.pasm“.
- Střední zastoupení papouška (PIR[13]) je o něco vyšší jazyk než PASM a kompiluje se také na bytecode. Je primárním cílem jazykových implementací. PIR transparentně spravuje inter-rutinní konvence volání Parrot, poskytuje vylepšenou syntaxi, alokaci registrů a další. PIR kód je obvykle uložen v souborech s příponou souboru „.pir“.
Příklady
Registry
Parrot je založen na registrech jako většina hardwaru CPU a na rozdíl od většiny virtuálních strojů, které jsou založeny na zásobníku. Parrot poskytuje čtyři typy registrů:
- I: rodák celé číslo typ
- N: plovoucí bod čísla
- S: pokročilý tětiva registruje se Unicode Podpěra, podpora
- P: PMC, nebo Polymorfní kontejner - Typ objektu papouška
Parrot poskytuje libovolný počet registrů; toto číslo je stanoveno v době kompilace na jeden podprogram.
Aritmetické operace
V PASM
soubor I1, 4 vč I1 # I1 je nyní 5 přidat I1, 2 # I1 je nyní 7 soubor N1, 42.0 prosinec N1 # N1 je nyní 41,0 sub N1, 2.0 # N1 je nyní 39,0 tisk I1 tisk ', ' tisk N1 tisk "\n" konec
V PIR
.sub 'hlavní' :hlavní $ I1 = 4 vč $ I1 # $ I1 je nyní 5 $ I1 += 2 # $ I1 je nyní 7 $ N1 = 42.0 prosinec $ N1 # $ N1 je nyní 41,0 $ N1 -= 2.0 # $ N1 nyní 39,0 tisk $ I1 tisk ', ' tisk $ N1 tisk „ n“ .konec
Rozvoj
Do konce roku 2005, Dan Sugalski byl vedoucím designérem a hlavním architektem společnosti Parrot. Chip Salzenberg, dlouholetý Perl, linuxové jádro a hacker C ++, převzal vedení až do poloviny roku 2006, kdy se stal hlavním vývojářem. Allison Randal, hlavní vývojář společnosti Punie a hlavní architektka nástrojů kompilátoru Parrot, byla hlavní architektkou až do poloviny října 2010, kdy odstoupila a jako nového hlavního architekta si vybrala Christoph Otto.[14]
Diskuse o vývoji probíhají primárně na kanálu #parrot na irc.perl.org. Kromě toho existují týdenní moderované schůzky pro Parrot a vývojáře jazyků hostované v #parrotsketch ve stejné síti. Hodně se diskutuje také na mailing listu parrot-dev, hostovaném na parrot.org.
Diskuse o designu existují v Parrot Design Documents nebo PDD v úložišti Parrot.[15] Hlavní architekt nebo jiný určený designér vytváří tyto dokumenty, aby vysvětlil filozofii prvku, jeho rozhraní a poznámky k návrhu. Hackeři papoušků přeměňují tyto dokumenty na spustitelné testy a poté na existující funkce.
Tým Parrot vydává novou stabilní verzi softwaru každé třetí úterý každého měsíce. Hlavní zadavatelé se střídají při produkci verzí v revolvingovém plánu, kde žádný více autorů není zodpovědný za více verzí v řadě. Tato praxe zlepšila rychlost a stabilitu projektu.[Citace je zapotřebí ]
Viz také
Reference
- ^ A b „Nové podporované vydání 8.1.0“ Andský papoušek"". Parrot Foundation. 2016-02-16. Citováno 2016-09-26.
- ^ „Licenční smlouva s přispěvatelem Parrot 1.0“ (PDF). Parrot Foundation. Citováno 2009-03-18.
- ^ „Parrot Roadmap“. Parrot Foundation. 2008-11-20. Citováno 2008-11-20.
- ^ „The Story Behind the Parrot Prank - O'Reilly Media“. Oreilly.com. 06.04.2001. Citováno 2014-02-25.
- ^ "Programovací papoušek". Perl.com. Archivovány od originál dne 18. 07. 2010. Citováno 2014-02-25.
- ^ "Jazyky | Parrot VM". Parrot.org. 14. 2. 2006. Citováno 2014-02-25.
- ^ Vyhlašujeme Parrot Foundation Archivováno 29. Června 2008 v Wayback Machine
- ^ [1] Archivováno 9. května 2009 v Wayback Machine
- ^ "Jazyky - Papoušek". Trac.parrot.org. Citováno 2014-02-25.
- ^ "Jazyky - Parrot VM". parrot.org. Citováno 19. dubna 2018.
- ^ Bílý rytíř. „Whiteknight / matrixy - GitHub“. Github.com. Citováno 2014-02-25.
- ^ http://www.parrotcode.org/docs/parrotbyte.html
- ^ [2] Archivováno 20. července 2009, v Wayback Machine
- ^ Otto, Christoph (2010-10-21). „reparrot: Papoušek má nového architekta. Co teď?“. Reparrot.blogspot.com. Citováno 2014-02-25.
- ^ "Parrot 6.1.0 - Papouškové designové dokumenty (PDD)". Docs.parrot.org. Citováno 2014-02-25.