История изменений
Исправление Lilly, (текущая версия) :
Всё там есть, причём даже на несколько более высоком уровне, чем в ряде других языков, чтобы упростить жизнь пользователю и не мучить его дедлоками и гонками. :)
Хотя, низкоуровневый доступ тоже есть.
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, :
Всё там есть, причём даже на несколько более высоком уровне, чем в ряде других языков, чтобы упростить жизнь пользователю и не мучить его дедлоками и гонками. :)
Хотя, низкоуровневый доступ тоже есть.
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 для скрипта и так далее и так далее.