Parrot (віртуальна машина)

Віртуальна машина Parrot
ТипВіртуальна машина
РозробникThe Perl Foundationd Редагувати інформацію у Вікіданих
Останнє оновлення8.1.0 / Лютий 16, 2016;
Операційна системакросплатформова програма Редагувати інформацію у Вікіданих
Мова програмуванняC
ЛіцензіяArtistic License 2.0
Репозиторійhttps://github.com/parrot/parrot
Вебсайтparrot.org

Parrot (перрот або паррот; від англ. parrot — папуга) — віртуальна машина, що використовується інтерпретованими мовами для ефективного виконання байт-коду. Parrot є вільним програмним забезпеченням з відкритим вихідним кодом.[1]

Parrot планувалося зробити основою інтерпретатора Perl, а також цільовою платформою для компіляції коду Perl 6. Крім реалізованої частини Perl 6, у байткод можна скомпілювати програми іншими мовами, включно з APL, BASIC, Befunge, Brainfuck, Cola, Forth, Jako, Lisp,m4, Miniperl, Ook!, Parakeet, OpenComal, PHP, Plot, Pheme, Punie, Python, Ruby, Scheme, [[Span[en]]], Tcl, URM та YAL, але більша частина реалізацій цих мов для Parrot неповна і перебуває в експериментальному стані.

Версія 1.0 зі стабільним інтерфейсом прикладного програмування (API) для розробки була випущена 17 березня 2009 року[2]. Остання версія — випуск 8.1.0 «Andean Parakeet»[3]. У 2014 році, у зв'язку з проблемами розвитку Parrot, як альтернативну реалізацію віртуальної машини для Perl 6 було випущено MoarVM. Parrot офіційно припинив своє існування у серпні 2021 року, після того, як був витіснений MoarVM у своєму основному використанні (Raku) і так і не став основною віртуальною машиною для жодної з інших підтримуваних ним мов.[4]

Історія

Назва Parrot походить від першоквітневого жарту, в якому було оголошено про гіпотетичну мову, названу Parrot, яка об'єднала б Python та Perl.[5][6] Пізніше ця назва була перейнята проєктом Parrot (спочатку частиною зусиль з розробки Raku), метою якого була підтримка Raku, Python та інших мов програмування.

Фонд Parrot Foundation був розпущений у 2014 р.[7] Фонд був створений у 2008 р. з метою збереження авторських прав та торгових марок проєкту Parrot, сприяння розвитку мовних реалізацій та основної кодової бази, забезпечення бази для зростання спільноти Parrot та налагодження зв'язків з іншими мовними спільнотами.

Історичні проєктні рішення задокументовані у вигляді проєктних документів Parrot, або PDD, у репозиторії Parrot.[8]

До кінця 2005 року провідним дизайнером і головним архітектором Parrot був Ден Сугальскі. Чіп Зальценберг, давній хакер Perl, ядра Linux і C++, зайняв цю посаду до середини 2006 року, коли він став провідним розробником. Елісон Рендал, провідний розробник Punie і головний архітектор інструментів компілятора Parrot, була головним архітектором до середини жовтня 2010 року, коли вона пішла у відставку і обрала Крістофа Отто новим головним архітектором.[9]

Мови

Метою віртуальної машини Parrot було розміщення клієнтських мов і забезпечення взаємодії між ними. На шляху до досягнення цієї мети існувало кілька перешкод, зокрема складність відображення високорівневих концепцій, даних і структур даних між мовами.

Статичні та динамічні мови

Різні властивості статично та динамічно типізованих мов мотивували розробку Parrot. Популярні віртуальні машини, такі як віртуальна машина Java та Common Language Runtime для платформи .NET, були розроблені для статично типізованих мов, в той час, як мови, на які орієнтований Parrot, є динамічно типізованими.

Віртуальні машини, такі як віртуальна машина Java та поточна віртуальна машина Perl 5, також базуються на стеку. Розробники Parrot обрали регістрову структуру, мотивуючи це тим, що вона більше нагадує апаратну структуру, що дозволяє використовувати величезну літературу з оптимізації компіляторів для створення байт-коду для віртуальної машини Parrot, який може працювати зі швидкістю, наближеною до машинного коду[джерело не вказано]. Інші реєстрові віртуальні машини надихнули на створення Parrot, зокрема LLVM, Lua VM та Inferno's Dis.

Функціональні концепції

Parrot має багату підтримку декількох функцій функціонального програмування, включаючи закриття та продовження, обидві з яких можуть бути особливо складними для правильної та портативної реалізації, особливо у поєднанні з обробкою винятків та багатопотоковістю. Найбільшою перевагою є динамічна розширюваність об'єктів з методами, що дозволяє використовувати поліморфні контейнери (PMC) та пов'язані з ними опкоди. Реалізація розв'язання цих проблем на рівні віртуальної машини позбавляє від необхідності розв'язувати ці проблеми в окремих клієнтських мовах.

Інструменти компілятора

Parrot надає набір інструментів для написання компіляторів, який включає Parser Grammar Engine (PGE), гібридний синтаксичний аналізатор-генератор, який може виражати як синтаксичний аналізатор рекурсивного спуску, так і синтаксичний аналізатор операторного передування, дозволяючи вільний перехід між ними в одній граматиці. PGE подає дані до деревовидного граматичного рушія (TGE), який далі трансформує дерево розбору, згенероване PGE, для оптимізації і, зрештою, для генерації коду.

Реалізації

Найповнішими мовними реалізаціями, орієнтованими на Parrot VM, були Raku (відома на той час як Rakudo Perl 6), Lua та нова мова під назвою «Winxed».[10] Було розпочато проєкти з реалізації багатьох інших мов, зокрема PHP, Python та Ruby, а також езотеричних та демонстраційних мов, таких як Befunge та навчальна мова «squaak». Жодному з цих проєктів не вдалося стати основною реалізацією відповідних

Приклади

Регістри

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

Також дивитись

Примітки

  1. Wayback Machine (PDF). web.archive.org. Архів оригіналу (PDF) за 16 серпня 2010. Процитовано 9 грудня 2023.  [Архівовано 2010-08-16 у Wayback Machine.]
  2. {14} Roadmap Report by Milestone – Parrot. web.archive.org. 15 квітня 2010. Процитовано 9 грудня 2023. 
  3. New supported release 8.1.0 "Andean Parakeet" | Parrot VM. www.parrot.org. Процитовано 9 грудня 2023. 
  4. Inactive Parrot | Parrot VM. www.parrot.org. Процитовано 9 грудня 2023. 
  5. O'Reilly Media - Technology and Business Training. www.oreilly.com (англ.). Процитовано 9 грудня 2023. 
  6. perl.com: Programming Parrot. web.archive.org. 18 липня 2010. Архів оригіналу за 18 липня 2010. Процитовано 9 грудня 2023.  [Архівовано 2010-07-18 у Wayback Machine.]
  7. Corporations and Charities System. ccfs.sos.wa.gov. Процитовано 9 грудня 2023. 
  8. Parrot 8.1.0-devel - Parrot Design Documents (PDDs). docs.parrot.org. Процитовано 9 грудня 2023. 
  9. Otto, Christoph (21 жовтня 2010). reparrot: Parrot has a new architect. What now?. reparrot. Процитовано 9 грудня 2023. 
  10. Languages | Parrot VM. www.parrot.org. Процитовано 9 грудня 2023. 

Посилання

Read other articles:

Austin柯士甸Stasiun angkutan cepat MTRNama TionghoaTionghoa 柯士甸 Yale KantonŌsihdīn TranskripsiTionghoa StandarHanyu PinyinKēshìdiànYue: KantonRomanisasi YaleŌsihdīnJyutpingO1si6din1 Informasi umumLokasiWui Cheung Road × Wui Man Road, Tsim Sha TsuiDistrik Yau Tsim Mong, Hong KongKoordinat22°18′17″N 114°09′59″E / 22.3046°N 114.1665°E / 22.3046; 114.1665Koordinat: 22°18′17″N 114°09′59″E / 22.3046°N 114.1665°E...

 

Contoh peta jenis tanah Provinsi Sumatera Utara Kata tanah seperti banyak kata umum lainnya, memiliki beberapa makna. Dalam arti tradisionalnya, tanah adalah media alami alami untuk pertumbuhan tanaman darat, baik yang memiliki atau tidak memiliki cakrawala tanah yang dapat dilihat. Makna ini masih merupakan makna yang umum dan minat terbesar pada tanah adalah berpusat pada makna ini.[1] Orang menganggap tanah penting karena mendukung tanaman yang memasok makanan, serat, obat-obatan, ...

 

Historical aspects of Paraíba, Brazil Flag of Paraíba. The history of Paraíba began before the discovery of Brazil, when the coastline of the state's current territory was populated by the Tabajara and Potiguara indigenous peoples. When the Portuguese arrived, the region was established as part of the Captaincy of Itamaracá. However, there were difficulties in implementing the Portuguese occupation fronts in the area, especially due to the resistance of the natives and the influence of Fr...

Japanese manga series This article includes a list of references, related reading, or external links, but its sources remain unclear because it lacks inline citations. Please help improve this article by introducing more precise citations. (February 2017) (Learn how and when to remove this template message) Sarutobi EcchanさるとびエッちゃんGenreComedy, magical girl MangaOkashina Okashina Okashina Ano KoWritten byShotaro IshinomoriPublished byShueishaMagazineMargaretDemograp...

 

Questa voce sull'argomento calciatori italiani è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Fortunato Loddi Nazionalità  Italia Altezza 183 cm Peso 81 kg Calcio Ruolo Attaccante Termine carriera 1984 Carriera Squadre di club1 1970-1971 Fortitudo Roma? (?)1971-1972 OMI Roma34 (12)1972-1974 VJS Velletri37 (15)1974 Lazio0 (0)1974-1975→  Sorrento29 (9)1975 Lazio0 (0)1975...

 

Ukrainian writer and politician (1906–1963) This article may require copy editing for grammar, style, cohesion, tone, or spelling. You can assist by editing it. (July 2023) (Learn how and when to remove this template message) Ivan BahrianyiCoin of Ukraine with the image of BahrianyiBornIvan Pavlovych Lozoviaha2 October 1906Kuzemyn, Kharkiv Governorate, Russian EmpireDied25 August 1963(1963-08-25) (aged 56)Neu-Ulm, Bavaria, West GermanyOccupationwriter, translatorLanguageUkrainianNation...

Capture of Syracuse in Sicily by the Aghlabids Siege of SyracusePart of the Muslim conquest of Sicily(Arab–Byzantine wars)The capture of Syracuse, miniature from the Madrid SkylitzesDateAugust 877 – 21 May 878LocationSyracuse, Sicily37°04′09″N 15°17′15″E / 37.06917°N 15.28750°E / 37.06917; 15.28750Result Aghlabid victory, fall of the cityBelligerents Byzantine Empire Aghlabid EmirateCommanders and leaders Unknown patrikios  Ja'far ibn MuhammadAbu I...

 

International version of the television show Pop Idol This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: World Idol – news · newspapers · books · scholar · JSTOR (April 2012) (Learn how and when to remove this message) World IdolAlso known asSuperStar Weltweit (German)SuperStar El Alaam (Arabic)Created bySimon ...

 

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: コルク – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2017年4月) コルクを打ち抜いて作った瓶の栓 コルク(木栓、�...

South Korean film director and screenwriter In this Korean name, the family name is Na. Na Hong-jinBorn1974 (age 49–50)Seoul, South KoreaEducationKorea National University of Arts Master degreeOccupation(s)Film director, screenwriterYears active2007–presentKorean nameHangul나홍진Hanja羅泓軫Revised RomanizationNa Hong-jinMcCune–ReischauerNa Hong-chin Na Hong-jin (Korean: 나홍진, born 1974) is a South Korean film director, producer and screenwriter. Na came...

 

APOF المعرفات الأسماء المستعارة APOF, Apo-F, LTIP, apolipoprotein F معرفات خارجية الوراثة المندلية البشرية عبر الإنترنت 107760 MGI: MGI:104539 HomoloGene: 48030 GeneCards: 319 علم الوجود الجيني الوظيفة الجزيئية • cholesterol binding• signaling receptor binding• lipid transporter activity المكونات الخلوية • low-density lipoprotein particle• high-density lipoprotein parti...

 

本條目存在以下問題,請協助改善本條目或在討論頁針對議題發表看法。 此條目需要編修,以確保文法、用詞、语气、格式、標點等使用恰当。 (2015年7月23日)請按照校對指引,幫助编辑這個條目。(幫助、討論) 此條目內容疑欠准确,有待查證。 (2015年7月23日)請在讨论页討論問題所在及加以改善,若此條目仍有爭議及准确度欠佳,會被提出存廢討論。 此條目之中立性有�...

2016年美國總統選舉 ← 2012 2016年11月8日 2020 → 538個選舉人團席位獲勝需270票民意調查投票率55.7%[1][2] ▲ 0.8 %   获提名人 唐納·川普 希拉莉·克林頓 政党 共和黨 民主党 家鄉州 紐約州 紐約州 竞选搭档 迈克·彭斯 蒂姆·凱恩 选举人票 304[3][4][註 1] 227[5] 胜出州/省 30 + 緬-2 20 + DC 民選得票 62,984,828[6] 65,853,514[6]...

 

Book by Amartya Sen Development as Freedom CoverAuthorAmartya SenLanguageEnglishSubjectInternational developmentPublication date1999Media typePrint Development as Freedom is a 1999 book about international development by Indian economist and philosopher Amartya Sen. The American edition of the book was published by Alfred A. Knopf. Summary Amartya Sen was the winner of the 1998 Nobel Prize in Economics.[1] Development as Freedom was published one year later and argues that develo...

 

Indigenous people in California, United States For other uses, see Yurok (disambiguation). Ethnic group Yurok'O'loolekweesh 'o'l / 'OolekwohYurok man and canoe on the Trinity River by Edward S. Curtis, c. 1923Total population6,567 alone and in combination[1] (2010)Regions with significant populations United States ( California)LanguagesEnglish, Yurok[2]Religiontraditional tribal religion, ChristianityRelated ethnic groupsWiyot[2] The Yurok (Karuk language: Yu...

Methodist denomination This article is about the former denomination. For individual churches of the same name, see Methodist Episcopal Church, South (disambiguation). This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (October 2014) (Learn how and when to remove this message) Methodist Episcopal Church, SouthClassificationProtestantOrientationMethodismPolityEpis...

 

Italian footballer and futsal player Giulia Domenichetti Giulia Domenichetti as manager of SSD Napoli Femminile in 2021-22 seasonPersonal informationFull name Giulia DomenichettiDate of birth (1984-04-29) 29 April 1984 (age 40)Place of birth Ancona, ItalyHeight 1.65 m (5 ft 5 in)[1]Position(s) MidfielderYouth career ACF Ancosped AnconaSenior career*Years Team Apps (Gls)1999–2003 Vigor Senigallia 67 (17)2003–2011 Torres CF 156 (29)2011–2012 Chiasiellis 26 (4)2...

 

留基伯Λεύκιππος留基伯像出生公元前500年逝世公元前440年时代前苏格拉底哲学地区西方哲学主要领域原子论、唯物主義著名思想原子论 受影响于 芝诺、恩培多克勒、阿那克萨哥拉 影响于 德谟克利特 留基伯(希臘文:Λεύκιππος)(西元前500~前440年),古希腊哲学家,率先提出原子论(万物由原子构成),为德谟克利特的老师。 生平 留基伯出生地,一说为米利都�...

Chronologies Données clés 1890 1891 1892 1893 18941895 1896 1897 1898 1899Décennies :1860 1870 1880  1890  1900 1910 1920Siècles :XVIIe XVIIIe  XIXe  XXe XXIeMillénaires :-Ier Ier  IIe  IIIe Calendriers Romain Chinois Grégorien Julien Hébraïque Hindou Hégirien Persan Républicain modifier Les années 1890 couvrent la période de 1890 à 1899. Elle est caractérisée par une reprise économique internationale qui fait suite à la Grande D�...

 

Elementos de la identidad sexual: identidad de género, expresión de género, sexo y orientación sexual. La identidad sexual o identidad de sexo alude a la percepción que un individuo tiene sobre sí mismo respecto a su propio sexo en función de la evaluación que realiza de sus características físicas o biológicas[1]​[2]​[3]​ que «generalmente refleja la apariencia física externa y el rol típicamente vinculado al sexo que uno desarrolla y prefiere».[4]​ En ...