Parrot (перрот або паррот; від англ. parrot — папуга) — віртуальна машина, що використовується інтерпретованими мовами для ефективного виконання байт-коду. Parrot є вільним програмним забезпеченням з відкритим вихідним кодом.
Тип | Віртуальна машина |
---|---|
Розробник | d |
Останнє оновлення | 8.1.0 / Лютий 16, 2016; |
Операційна система | кросплатформова програма |
Мова програмування | C |
Ліцензія | 2.0 |
Репозиторій | https://github.com/parrot/parrot |
Вебсайт | parrot.org |
Parrot планувалося зробити основою інтерпретатора Perl, а також цільовою платформою для компіляції коду Perl 6. Крім реалізованої частини Perl 6, у байткод можна скомпілювати програми іншими мовами, включно з APL, BASIC, Befunge, Brainfuck, Cola, Forth, Jako, Lisp,m4, , , , , PHP, , , , Python, Ruby, Scheme, [[Span[en]]], Tcl, та , але більша частина реалізацій цих мов для Parrot неповна і перебуває в експериментальному стані.
Версія 1.0 зі стабільним інтерфейсом прикладного програмування (API) для розробки була випущена 17 березня 2009 року. Остання версія — випуск 8.1.0 «Andean Parakeet». У 2014 році, у зв'язку з проблемами розвитку Parrot, як альтернативну реалізацію віртуальної машини для Perl 6 було випущено . Parrot офіційно припинив своє існування у серпні 2021 року, після того, як був витіснений у своєму основному використанні (Raku) і так і не став основною віртуальною машиною для жодної з інших підтримуваних ним мов.
Історія
Назва Parrot походить від першоквітневого жарту, в якому було оголошено про гіпотетичну мову, названу Parrot, яка об'єднала б Python та Perl. Пізніше ця назва була перейнята проєктом Parrot (спочатку частиною зусиль з розробки Raku), метою якого була підтримка Raku, Python та інших мов програмування.
Фонд був розпущений у 2014 р. Фонд був створений у 2008 р. з метою збереження авторських прав та торгових марок проєкту Parrot, сприяння розвитку мовних реалізацій та основної кодової бази, забезпечення бази для зростання спільноти Parrot та налагодження зв'язків з іншими мовними спільнотами.
Історичні проєктні рішення задокументовані у вигляді проєктних документів Parrot, або PDD, у репозиторії Parrot.
До кінця 2005 року провідним дизайнером і головним архітектором Parrot був . , давній хакер Perl, ядра Linux і , зайняв цю посаду до середини 2006 року, коли він став провідним розробником. Елісон Рендал, провідний розробник і головний архітектор інструментів компілятора Parrot, була головним архітектором до середини жовтня 2010 року, коли вона пішла у відставку і обрала новим головним архітектором.
Мови
Метою віртуальної машини Parrot було розміщення клієнтських мов і забезпечення взаємодії між ними. На шляху до досягнення цієї мети існувало кілька перешкод, зокрема складність відображення високорівневих концепцій, даних і структур даних між мовами.
Статичні та динамічні мови
Різні властивості статично та динамічно типізованих мов мотивували розробку Parrot. Популярні віртуальні машини, такі як віртуальна машина Java та Common Language Runtime для платформи .NET, були розроблені для статично типізованих мов, в той час, як мови, на які орієнтований Parrot, є .
Віртуальні машини, такі як віртуальна машина Java та поточна віртуальна машина , також базуються на стеку. Розробники Parrot обрали регістрову структуру, мотивуючи це тим, що вона більше нагадує апаратну структуру, що дозволяє використовувати величезну літературу з оптимізації компіляторів для створення байт-коду для віртуальної машини Parrot, який може працювати зі швидкістю, наближеною до машинного коду[джерело не вказано]. Інші реєстрові віртуальні машини надихнули на створення Parrot, зокрема LLVM, та .
Функціональні концепції
Parrot має багату підтримку декількох функцій , включаючи закриття та продовження, обидві з яких можуть бути особливо складними для правильної та портативної реалізації, особливо у поєднанні з обробкою винятків та багатопотоковістю. Найбільшою перевагою є динамічна розширюваність об'єктів з методами, що дозволяє використовувати (PMC) та пов'язані з ними опкоди. Реалізація розв'язання цих проблем на рівні віртуальної машини позбавляє від необхідності розв'язувати ці проблеми в окремих клієнтських мовах.
Інструменти компілятора
Parrot надає набір інструментів для написання компіляторів, який включає (PGE), гібридний синтаксичний аналізатор-генератор, який може виражати як синтаксичний аналізатор рекурсивного спуску, так і синтаксичний аналізатор операторного передування, дозволяючи вільний перехід між ними в одній граматиці. дані до деревовидного граматичного рушія (), який далі трансформує дерево розбору, згенероване , для оптимізації і, зрештою, для генерації коду.
Реалізації
Найповнішими мовними реалізаціями, орієнтованими на , були Raku (відома на той час як ), Lua та нова мова під назвою . Було розпочато проєкти з реалізації багатьох інших мов, зокрема PHP, Python та Ruby, а також езотеричних та демонстраційних мов, таких як Befunge та навчальна мова . Жодному з цих проєктів не вдалося стати основною реалізацією відповідних
Приклади
Регістри
Parrot базується на , як більшість апаратних ЦП, і відрізняється від більшості віртуальних машин, які базуються на стеку.
Parrot надає чотири типи регістрів: I: цілочисельний тип
N:
S: розширені рядкові регістри з підтримкою Unicode
P: PMC, або — тип об'єкта Parrot
Parrot надає довільну кількість регістрів; це число фіксується на етапі компіляції для кожної підпрограми.
Арифметичні операції
В PASM
set I1, 4 inc I1 # I1 тепер 5 add I1, 2 # I1 тепер 7 set N1, 42.0 dec N1 # N1 тепер 41.0 sub N1, 2.0 # N1 тепер 39.0 print I1 print ', ' print N1 print "\n" end
В PIR
.sub 'main' :main $I1 = 4 inc $I1 # $I1 тепер 5 $I1 += 2 # $I1 тепер 7 $N1 = 42.0 dec $N1 # $N1 тепер 41.0 $N1 -= 2.0 # $N1 тепер 39.0 print $I1 print ', ' print $N1 print "\n" .end
Також дивитись
Примітки
- (PDF). web.archive.org. Архів оригіналу (PDF) за 16 серпня 2010. Процитовано 9 грудня 2023.
- . web.archive.org. 15 квітня 2010. Процитовано 9 грудня 2023.
- New supported release 8.1.0 "Andean Parakeet" | Parrot VM. www.parrot.org. Процитовано 9 грудня 2023.
- Inactive Parrot | Parrot VM. www.parrot.org. Процитовано 9 грудня 2023.
- O'Reilly Media - Technology and Business Training. www.oreilly.com (англ.). Процитовано 9 грудня 2023.
- . web.archive.org. 18 липня 2010. Архів оригіналу за 18 липня 2010. Процитовано 9 грудня 2023.
- Corporations and Charities System. ccfs.sos.wa.gov. Процитовано 9 грудня 2023.
- Parrot 8.1.0-devel - Parrot Design Documents (PDDs). docs.parrot.org. Процитовано 9 грудня 2023.
- Otto, Christoph (21 жовтня 2010). reparrot: Parrot has a new architect. What now?. reparrot. Процитовано 9 грудня 2023.
- Languages | Parrot VM. www.parrot.org. Процитовано 9 грудня 2023.
Посилання
- www.parrot.org — офіційний сайт «Parrot».
- Perl 6 and Parrot links
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Parrot perrot abo parrot vid angl parrot papuga virtualna mashina sho vikoristovuyetsya interpretovanimi movami dlya efektivnogo vikonannya bajt kodu Parrot ye vilnim programnim zabezpechennyam z vidkritim vihidnim kodom Virtualna mashina ParrotTipVirtualna mashinaRozrobnikdOstannye onovlennya8 1 0 Lyutij 16 2016 Operacijna sistemakrosplatformova programaMova programuvannyaCLicenziya2 0Repozitorijhttps github com parrot parrotVebsajtparrot org Parrot planuvalosya zrobiti osnovoyu interpretatora Perl a takozh cilovoyu platformoyu dlya kompilyaciyi kodu Perl 6 Krim realizovanoyi chastini Perl 6 u bajtkod mozhna skompilyuvati programi inshimi movami vklyuchno z APL BASIC Befunge Brainfuck Cola Forth Jako Lisp m4 PHP Python Ruby Scheme Span en Tcl ta ale bilsha chastina realizacij cih mov dlya Parrot nepovna i perebuvaye v eksperimentalnomu stani Versiya 1 0 zi stabilnim interfejsom prikladnogo programuvannya API dlya rozrobki bula vipushena 17 bereznya 2009 roku Ostannya versiya vipusk 8 1 0 Andean Parakeet U 2014 roci u zv yazku z problemami rozvitku Parrot yak alternativnu realizaciyu virtualnoyi mashini dlya Perl 6 bulo vipusheno Parrot oficijno pripiniv svoye isnuvannya u serpni 2021 roku pislya togo yak buv vitisnenij u svoyemu osnovnomu vikoristanni Raku i tak i ne stav osnovnoyu virtualnoyu mashinoyu dlya zhodnoyi z inshih pidtrimuvanih nim mov IstoriyaNazva Parrot pohodit vid pershokvitnevogo zhartu v yakomu bulo ogolosheno pro gipotetichnu movu nazvanu Parrot yaka ob yednala b Python ta Perl Piznishe cya nazva bula perejnyata proyektom Parrot spochatku chastinoyu zusil z rozrobki Raku metoyu yakogo bula pidtrimka Raku Python ta inshih mov programuvannya Fond buv rozpushenij u 2014 r Fond buv stvorenij u 2008 r z metoyu zberezhennya avtorskih prav ta torgovih marok proyektu Parrot spriyannya rozvitku movnih realizacij ta osnovnoyi kodovoyi bazi zabezpechennya bazi dlya zrostannya spilnoti Parrot ta nalagodzhennya zv yazkiv z inshimi movnimi spilnotami Istorichni proyektni rishennya zadokumentovani u viglyadi proyektnih dokumentiv Parrot abo PDD u repozitoriyi Parrot Do kincya 2005 roku providnim dizajnerom i golovnim arhitektorom Parrot buv davnij haker Perl yadra Linux i C zajnyav cyu posadu do seredini 2006 roku koli vin stav providnim rozrobnikom Elison Rendal providnij rozrobnik i golovnij arhitektor instrumentiv kompilyatora Parrot bula golovnim arhitektorom do seredini zhovtnya 2010 roku koli vona pishla u vidstavku i obrala novim golovnim arhitektorom MoviMetoyu virtualnoyi mashini Parrot bulo rozmishennya kliyentskih mov i zabezpechennya vzayemodiyi mizh nimi Na shlyahu do dosyagnennya ciyeyi meti isnuvalo kilka pereshkod zokrema skladnist vidobrazhennya visokorivnevih koncepcij danih i struktur danih mizh movami Statichni ta dinamichni movi Rizni vlastivosti statichno ta dinamichno tipizovanih mov motivuvali rozrobku Parrot Populyarni virtualni mashini taki yak virtualna mashina Java ta Common Language Runtime dlya platformi NET buli rozrobleni dlya statichno tipizovanih mov v toj chas yak movi na yaki oriyentovanij Parrot ye Virtualni mashini taki yak virtualna mashina Java ta potochna virtualna mashina takozh bazuyutsya na steku Rozrobniki Parrot obrali registrovu strukturu motivuyuchi ce tim sho vona bilshe nagaduye aparatnu strukturu sho dozvolyaye vikoristovuvati velicheznu literaturu z optimizaciyi kompilyatoriv dlya stvorennya bajt kodu dlya virtualnoyi mashini Parrot yakij mozhe pracyuvati zi shvidkistyu nablizhenoyu do mashinnogo kodu dzherelo ne vkazano Inshi reyestrovi virtualni mashini nadihnuli na stvorennya Parrot zokrema LLVM ta Funkcionalni koncepciyi Parrot maye bagatu pidtrimku dekilkoh funkcij vklyuchayuchi zakrittya ta prodovzhennya obidvi z yakih mozhut buti osoblivo skladnimi dlya pravilnoyi ta portativnoyi realizaciyi osoblivo u poyednanni z obrobkoyu vinyatkiv ta bagatopotokovistyu Najbilshoyu perevagoyu ye dinamichna rozshiryuvanist ob yektiv z metodami sho dozvolyaye vikoristovuvati PMC ta pov yazani z nimi opkodi Realizaciya rozv yazannya cih problem na rivni virtualnoyi mashini pozbavlyaye vid neobhidnosti rozv yazuvati ci problemi v okremih kliyentskih movah Instrumenti kompilyatora Parrot nadaye nabir instrumentiv dlya napisannya kompilyatoriv yakij vklyuchaye PGE gibridnij sintaksichnij analizator generator yakij mozhe virazhati yak sintaksichnij analizator rekursivnogo spusku tak i sintaksichnij analizator operatornogo pereduvannya dozvolyayuchi vilnij perehid mizh nimi v odnij gramatici dani do derevovidnogo gramatichnogo rushiya yakij dali transformuye derevo rozboru zgenerovane dlya optimizaciyi i zreshtoyu dlya generaciyi kodu Realizaciyi Najpovnishimi movnimi realizaciyami oriyentovanimi na buli Raku vidoma na toj chas yak Lua ta nova mova pid nazvoyu Bulo rozpochato proyekti z realizaciyi bagatoh inshih mov zokrema PHP Python ta Ruby a takozh ezoterichnih ta demonstracijnih mov takih yak Befunge ta navchalna mova Zhodnomu z cih proyektiv ne vdalosya stati osnovnoyu realizaciyeyu vidpovidnihPrikladiRegistri Parrot bazuyetsya na yak bilshist aparatnih CP i vidriznyayetsya vid bilshosti virtualnih mashin yaki bazuyutsya na steku Parrot nadaye chotiri tipi registriv I cilochiselnij tip N S rozshireni ryadkovi registri z pidtrimkoyu Unicode P PMC abo tip ob yekta Parrot Parrot nadaye dovilnu kilkist registriv ce chislo fiksuyetsya na etapi kompilyaciyi dlya kozhnoyi pidprogrami Arifmetichni operaciyi V PASMset I1 4 inc I1 I1 teper 5 add I1 2 I1 teper 7 set N1 42 0 dec N1 N1 teper 41 0 sub N1 2 0 N1 teper 39 0 print I1 print print N1 print n end V PIR sub main main I1 4 inc I1 I1 teper 5 I1 2 I1 teper 7 N1 42 0 dec N1 N1 teper 41 0 N1 2 0 N1 teper 39 0 print I1 print print N1 print n endTakozh divitisGraalVMPrimitki PDF web archive org Arhiv originalu PDF za 16 serpnya 2010 Procitovano 9 grudnya 2023 web archive org 15 kvitnya 2010 Procitovano 9 grudnya 2023 New supported release 8 1 0 Andean Parakeet Parrot VM www parrot org Procitovano 9 grudnya 2023 Inactive Parrot Parrot VM www parrot org Procitovano 9 grudnya 2023 O Reilly Media Technology and Business Training www oreilly com angl Procitovano 9 grudnya 2023 web archive org 18 lipnya 2010 Arhiv originalu za 18 lipnya 2010 Procitovano 9 grudnya 2023 Corporations and Charities System ccfs sos wa gov Procitovano 9 grudnya 2023 Parrot 8 1 0 devel Parrot Design Documents PDDs docs parrot org Procitovano 9 grudnya 2023 Otto Christoph 21 zhovtnya 2010 reparrot Parrot has a new architect What now reparrot Procitovano 9 grudnya 2023 Languages Parrot VM www parrot org Procitovano 9 grudnya 2023 Posilannyawww parrot org oficijnij sajt Parrot Perl 6 and Parrot links