(різниться в залежності від реалізації) Rakudo Star / 26 вересня2014; 10 років тому (2014-09-26)[1] Niecza Perl 6 / 26 березня2013; 11 років тому (2013-03-26)[2]
Raku, раніше Perl 6 — мова програмування родини Perl.[4] Створення Perl 6 розпочалось в 2000 році, та вона все ще перебуває у стадії розробки специфікації. Perl 6 може мати багато реалізацій, декілька таких реалізацій у вигляді інтерпретаторів та компіляторів також знаходяться зараз на етапі розробки[5]. В Perl 6 представлені елементи багатьох як сучасних так і забутих мов програмування.
Основною причиною небажання продовжувати розвиток проекту під ім'ям Perl 6 стало те, що Perl 6 не став продовженням Perl 5, як очікувалося спочатку, а перетворився в окрему мову програмування, для якого так і не було підготовлено інструментарію за прозорою міграції з Perl 5. В результаті склалася ситуація, коли під одним ім'ям Perl пропонуються дві паралельно розроблювані самостійні мови, несумісних одна з одною на рівні сирцевих текстів і колом своїх спільнот розробників. Використання одного імені для родинних, але кардинально відрізнених мов, призводило до плутанини, коли багато користувачів продовжують вважати Perl 6 новою версією Perl, а не принципово іншою мовою. При цьому ім'я Perl продовжує зв'язуватися з Perl 5, а згадка Perl 6 вимагає окремого уточнення.
Історія
В Perl 6 ми вирішили, що краще змінити мову, ніж змінювати того, хто на ній пише.
— Ларі Волл
Початок пректування нового Perl було вперше анонсовано 19 липня 2000 року. Тоді, на 4-й день тогорічної конференції Perl[6], Ларі Волл оголосив це у своїй промові State of the Onion 2000 (Стан цибулини 2000)[7]. В той час, основними цілями було позбутись «історичних нашарувань» («historical warts») та в загальному очистити внутрішню структуру мови і інтерфейсів (API). Процес почався із ряду запитів на коментар (RFC). Він був відкритим для всіх бажаючих, та жоден аспект мови не лишився закритим для змін.
По завершенню процесу RFC, Волл розглянув та класифікував кожен із запитів (всього одержано 361). Тоді він почав процес написання декількох «Апокаліпсисів» («Apocalypse»), що значить «відкриття»[8]. Існує серія Екзегезів написаних Демієном Конвеєм (Damian Conway), що описують вміст кожного Апокаліпсису з точки зору практичного застосування. Кожна Екзегеза містить приклади коду разом із обговореннями його застосування та результатами виконання[9].
При розробці Perl 6 використовуються такі найзначніші засоби спілкування:
Perl 6 — це специфікація мови і, так само як у випадку С та С++, для неї може бути створено багато компіляторів. Існує проектна документація[11], на яку в минулому посилалися як на специфікацію. Але цей підхід було змінено і тепер офіційний набір тестів «roast»[12] визначає специфікацію Perl 6. Як стверджують самі творці, «Perl 6 — це будь-що, що успішно проходить офіційні тести»[13]
Реалізації
Розробка Pugs, першої найбільш повної реалізації, почалась у 2005 році, а нині вже існує багато таких проектів по реалізації Perl 6.
Rakudo Perl базується на Parrot і NQP (Not Quite Perl), і випускає нові версії щомісяця. У липні 2010 проект випустив першу дистрибуцію Rakudo Star[14] корисну і зручну добірку реалізацій Perl 6 та пов'язаних матеріалів.
В Niecza, ще одній значній реалізація Perl 6, головна увага приділяється оптимізації етапу компіляції.
STD — офіційна граматика Perl 6, визначає саму граматику і синтаксичний аналіз коду[15]. Розробляється і підтримується Ларі Воллом
Згідність із Perl 5
Perl 6 не сумісний з Perl 5. Хоч їх синтаксис багато в чому і схожий, але це дві абсолютно різні мови програмування. Згідність із Perl 5 не ставилась за ціль, хоча режим згідності передбачається специфікацією.
Існують реалізації можливості підключення модулів Perl 5 всередині Perl 6[16], щоправда, на даний момент бракує відомостей щодо ефективності їх використання.
Система модулів
Специфікація Perl 6 вимагає, щоб модулі визначалися ім'ям, версією та авторством[17]. Є можливість використовувати модуль лише певної версії або два модулі з однаковим ім'ям, які відрізняються версіями або авторством. Для зручності можна використовувати псевдоніми.
Система поширення модулів Perl 5 CPAN поки не підтримує модулі Perl 6. Наразі існує прототип системи модулів.[18]
Основні відмінності від Perl 5
Perl 5 і Perl 6 відрізняються докорінно, хоч передбачалось, щоб Perl 6 був схожим на оригінальний Perl. Більшість змін запроваджено щоб нормалізувати мову, зробити її легшою для розуміння як для новачків, так і для досвідчених програмістів.
Специфікація
Однією з основних відмінностей Perl 6 є те, що, на відміну від Perl 5, він почав своє існування як специфікація[19]. Це означає, що Perl 6 може бути за потреби реалізовано заново, а також, що програміст не мусить звертатися до сирцевого коду для підтвердження певної властивості або функції мови. Документацію Perl 5 оцінюють як відмінну[20], навіть поза Perl спільнотою завжди відзначають її завершеність і повноту. Одначе, вона не вважається офіційним, першоджерельним довідником і лише описує у вільній формі поведінку інтерпретатора. Будь-які невідповідності між документацією і самим інтерпретатором мови можуть призвести до приведення одного з них у відповідність до іншого.
↑About Perl. perl.org. Архів оригіналу за 15 грудня 2014. Процитовано 20 квітня 2013. "Perl" is a family of languages, "Perl 6" is part of the family, but it is a separate language which has its own development team. Its existence has no significant impact on the continuing development of "Perl 5".