LINUX.ORG.RU

(только «Perl 6», никакого «шестого перла» нет)

Да и для обычных пользователей с него дистрибутив Rakudo Star срежут скоро, так что подождать пару дней. Но обновление хорошее и нужное(не патч, виновный в циферке 1 в версии, а бамп на 03).

Из самого приятного:

* Начали пилить escape analysis в moarvm. Там же больше инлайнинга, плагинов оптимизатора и фиксов. Интегрировали с профайлером.

* Починили несколько мешающих багов в реализации метаобъектного протокола, без релиза приходилось на мастере сидеть.

* И как обычно большое количество исправлений и оптимизаций.

Lilly ()
Последнее исправление: Lilly (всего исправлений: 1)
Ответ на: комментарий от Lilly

«Perl 6» != «6-й Perl»

Неожиданно. Почему же тогда мажорная часть версии 5-го Perl'а застряла на годы и десятилетия? Могли бы уже юзать какой-нибудь Perl 8.14.1 или Perl 10.5.3.

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

Так «исторически сложилось».

Изначально, был полигон для экспериментов над языком, который в шутку называли «Perl 6», но этот полигон отклонялся всё дальше и дальше от самого Perl 5... Потом были написаны спецификации и переписаны и дизайн языка вылизывался годами до того, чтобы стать действительно вкусным. И эта штука затянулась на годы. Были разные реализации всего этого добра, тот же Pugs, но сейчас оно всё неживое и выжил только наиболее вкусный MoarVM + Rakudo комплект(хотя, есть бэкенды под JVM и пилится компиляция в JS с вполне неплохими результатами).

Потом Ларри таки зарелизил язык как «Perl 6» и «6» это именно часть названия, а не версия. Поэтому версии спецификации языка(ведь реализация != спека) имеют буковки в виде версий: 6.c, 6.d и так далее. 6.c, выпущенный в 2015-ом на рождество, в прошлом году сменился на 6.d.

Естественно, такое недоразумение как бы условно «заблокировало» новые версии Perl 5 и имеется много недовольных на этот счёт, но сейчас уже поздно менять название, так что Perl 5 и Perl 6 языки хоть и из, как бы, одного семейства, но несовместимые и весьма разные.

Это же вызывает и проблемы с рекламой, т.к. люди слышат «перл» и сразу думают, что это «старый перл», а не совершенно другой язык, полностью переосмысленный от пятого перла, который избавился от его устарелых проблем и заодно поддавая пинка многим существующим проблемам.

Вообще, в английском проблемы особой нет, но вот в русском в неформальной речи как кратко называть, таки соглашусь, «шестой перл», для меня лично вопрос. Но я бы использовал «Perl 6» в заголовке, чтобы было немного яснее.

Вообще, на мой взгляд, важна техническая часть языка, а название может быть хоть розовым фламинго, но уж как получилось так получилось.

Lilly ()
Ответ на: комментарий от Lilly

Вообще, в английском проблемы особой нет

Вообще, есть ибо Perl Six и Perl Sex очень созвучно. Уже из названия понятно, что язык чисто поржать.

no-such-file ★★★★★ ()
Ответ на: комментарий от grim

Я думаю, что нет.

Есть выполнение Perl 5 кода(включая модули и XS) в Perl 6 с помощью либы Inline::Perl5, но это, насколько я в курсе, проброс значений/вызовов через С, т.е. не чистая реализация. Если такая штука и была (я сам начал писать на языке только пару лет назад, так что почти не в курсе старых драм), что вполне возможно, то вряд ли оно живое. Но работает модуль вроде вполне хорошо.

Я на Perl 5 никогда не писал всерьёз, только немного модули портировал, и держусь от него подальше, т.к. чужеродный он мне.

Вообще, сам язык популярностью пока не пользуется и есть проблемы нетехнического характера вроде почти повсеместной нелюбви к всего лишь слову «Perl», но сообщество очень классное, коммерческий и не очень софт и либы пишутся, фреймворки релизятся, мы буквально недавно зарелизили community edition первой IDE, виртуальная машина и компилятор оптимизируются и возможностей для оптимизации ещё много (скорость главной реализации - одна из основных проблем языка сейчас, как мне кажется), конференции проводятся, в общем, учитывая, что первый релиз был чуть ли не три года назад, вполне неплохо идёт всё.

Lilly ()
Ответ на: комментарий от Lilly

community edition первой IDE

А сделали бы поддерживку Language Server Protocol и сразу бы появилась поддержка во многих IDE и редакторах.

grim ★★☆☆ ()
Ответ на: комментарий от grim

На данный момент, это (Comma) проект, который свои человеко-часы окупает в первую очередь и помогает СПО во вторую, так что...

А идея касательно Language Server Protocol высказывалась и не один раз, кто хочет - тот пусть пилит, open source же, будет только лучше. ;)

Да и базовые плагины есть для вима, эмакса, атома, VS code, хочется больше плюшек не вылезая из эмакса - нужно пилить. Проблема «Слабоватый тулчейн для языка - мало людей, но если мало людей пилит - слабоватый тулчейн для языка» сама собой не решается, как и многие другие похожие курица-яйцо проблемы.

Lilly ()
Ответ на: комментарий от Jopich1

Всё там есть, причём даже на несколько более высоком уровне, чем в ряде других языков, чтобы упростить жизнь пользователю и не мучить его дедлоками и гонками. :)

Хотя, низкоуровневый доступ тоже есть.

https://docs.perl6.org/language/concurrency - вот доки про канкаренси и асинхронность в языке.

https://www.youtube.com/watch?v=JpqnNCx7wVY - вот talk про асинхронность, канкаренси и паралеллизм от непосредственно архитектора, http://jnthn.net/papers/2015-yapcasia-concurrency.pdf - вот слайды.

Есть промисы, есть supplies(асинхронный стримящий механизм с возможностью подписки на события, всё изкоробки, при этом с потокобезопасностью и удобным react/whenever синтаксисом, почитать можно http://jnthn.net/papers/2019-gpw-react-supply-whenever.pdf <- в популярных языках такое если есть, то обычно только сторонними либами и через одно место, на какой-нибудь RXJava смотришь потом как на кхе-кхем(сам архитектор, кстати, пару лет преподавал большим компаниям о многопоточных проблемах, после чего свой опыт использовал для того, чтобы всё спроектировать «красиво»), есть потокобезопасные очереди с множеством писателей/читателей, можно асинхронно запускать и работать с внешними процессами. Плюс можно распареллелить обработку пачки данных просто добавив вызов метода, который сам прикинет размер пула тредов(или можно задать) и будет обрабатывать выборку пачками с сохранением изначального порядка или без, пропагацией ошибок и так далее.

Из низкоуровневого есть треды, локи, можно написать и использовать свой шедулер тредов, если сильно нужно и всё такое.

Т.к. язык проектировался как именно современный, то он изначально заточен на «будущее», а не девяностые, а в будущем нас ждёт(точнее, уже есть) многопоточность/многопроцессорность.

Из других плюшек: читабельные регулярки(наконец-то) и возможность собирать их в «грамматики»(https://modules.perl6.org/dist/JSON::Tiny:cpan:MORITZ/lib/JSON/Tiny/Grammar.pm <- вот грамматика, которая парсит json в дерево, например), возможность выполнять обычный код в compile time без уродливых шаблонов и прочих TemplateHaskell, классы-роли-сабсеты, метаобъектный протокол, gradual typing, есть лень, возможность биндиться к C или Perl5, можно чуть ли не патчить парсер языка с помощью сленгов, динамические методы, MAIN сам генерит простынь help для скрипта и так далее и так далее.

Lilly ()
Последнее исправление: Lilly (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.