LINUX.ORG.RU

Rakudo Star 2015.06

 , ,


1

3

После трёх месяцев разработки представлен очередной релиз наиболее полной на сегодняшний день реализации языка Perl 6 — Rakudo Star 2015.06. Помимо компилятора Rakudo, виртуальной машины MoarVM и базового окружения nqp (Not Quite Perl) пакет программ Rakudo Star содержит набор модулей, портированных на Perl 6, и полностью пригоден как для знакомства с языком, так и для разработки приложений.

Наиболее значимые изменения:

  • улучшенная поддержка Unicode (NFC, NFD, NFG, Uni);
  • значительное ускорение: до 25% для строковых операций Str.codes/chars/uc/lc/tc/tclc/ord/flip;
  • добавлены нативные массивы целых чисел и типы bit и byte.

За прогрессом различных компиляторов в реализации спецификации Perl 6 можно следить на данной странице, также доступен список портированных модулей.

Напомним, релиз Perl 6 ожидается в конце текущего года.

>>> Подробности

★★★★

Проверено: Shaman007 ()
Последнее исправление: Shaman007 (всего исправлений: 1)

Ответ на: комментарий от Twissel

виртиальной машины

Проверено: Shaman007 (03.07.2015 11:11:33)

Всё правильно, что не так?

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

виртиальной машины

Стиральной машины. В контексте перла как раз подходит :-)

anonymous
()

улучшенная поддержка Unicode

Разноцветные принцессы в консоли отображаются?

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

Как я понял, это особенность данной реализации, а отнюдь не языка.

А вот нахрена оно надо — не понял...

gns ★★★★★
()

Напомним, релиз Perl 6 ожидается в конце текущего года.

Вот и подождем. А то придется плодить виртуальные машины. Вот бы от существующих еще избавится бы...

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

А вот накой чорт нам еще одна VM? До сего дня перл прекрасно компилился нативно куда угодно. Шо, неужто перестал?

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

А вот накой чорт нам еще одна VM?

Спецификацию и компилятор дать или сам найдёшь?

d ★★★★
() автор топика

Можно, вкратце, зачем оно нужно в 2015 году?

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

MoarVM пилится ударными темпами

А нафиг? Что там такого интересного?

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

А вот накой чорт нам еще одна VM? До сего дня перл прекрасно компилился нативно куда угодно. Шо, неужто перестал?

Нет, не перестал. Вместо этой возни с VM и типами лучше бы perl5 дальше развили. Мне perl6 не нравится, я больше жду perl11 (perl5+perl6) : http://perl11.org/

anonymous
()

реализации спецификации Perl 6 можно следить на данной странице

goto - не реализовано! Как теперь жить?

rupert ★★★★★
()

Однако, количество портированных модулей уже достигло приличных размеров. Похоже, perl6 можно уже испозовать для реальных задач.

rupert ★★★★★
()

улучшенная поддержка Unicode (NFC, NFD, NFG, Uni);

в перле всё настолько плохо, что в 2015 это «киллер-фича» сборки ??

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

И + ̆ = Й

python2:
>>> "\u0418\u0306" == "\u0419"
False

python3:
>>> "\u0418\u0306" == "\u0419"
False

perl5:
"\x0418\x0306" eq "\x0419"
False

perl6:
"\x0418\x0306" eq "\x0419"
True
d ★★★★
() автор топика
Ответ на: комментарий от Virtuos86

Полноценная поддержка юникода — необходимость. То, что ни второй, ни третий питон не умеет в nfd, ясно говорит о его уровне.

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

Забыл еще perl5 упомянуть наряду с питонами. И все три уже давно работают, в отличие.

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

А вот накой чорт нам еще одна VM? До сего дня перл прекрасно компилился нативно куда угодно.

вы несколько упрощаете.
Те тулзы котрые есть не компилируют перл в двоичный код а просто объединяют в один бинарник VM и код.

MoarVM виглядит интересной, так как изначально была разработан для скриптовых ЯП и уже сечас обеспечивает скорость выполнения Перл6 сопоставимую с JVM. FYI foror

grim ★★☆☆
()
Последнее исправление: grim (всего исправлений: 3)

2015.06

Параллельность, многопоточность?

special-k ★★★
()
Ответ на: И + ̆ = Й от d

Сдаётся мне, что тут именно perl6 неправ.

Алсо, какой именно collation юзается в eq для строк и почему именно он?

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

Во внутренности я не лазил, но вот:

> my $one = Buf.new(0xd0, 0x99)             # Й
Buf:0x<d0 99>
> my $two = Buf.new(0xd0, 0x98, 0xcc, 0x86) # И + ̆
Buf:0x<d0 98 cc 86>
> $one == $two
False
> $one eq $two
False
> my $first = $one.decode('UTF-8')
Й
> my $second = $two.decode('UTF-8')
Й
> $first == $second
Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏Й' (indicated by ⏏)
  in block <unit> at <unknown file>:1

> $first eq $second
True

Строки — это не наборы байтиков. Разные наборы байт могут соответствовать одной и той же строке, о чём ясно говорит спецификация Unicode.

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

Разные наборы байт могут соответствовать одной и той же строке

Нет, они могут быть канонически равны либо совместимо равны. Это означает немного другую вещь.

«ae» and «æ» are eq if you don’t use locales, or if you use the English one, but they are different in the Icelandic locale.

Поэтому я против неявного юникодного сравнения. Если локаль и уровень (позволяющий, например, игнорировать акценты) заданы явно — это ок, если магия молча пытается сделать всё ОК — ну нафиг, это — бомба замедленного действия, которая обязательно рванёт.

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

Как например в Perl5?

perl -MUnicode::Normalize -E 'say NFC "\x{0418}\x{0306}" eq "\x{0419}"'

Unicode::Normalize сore модуль аж с Perl 5.7... правда, не припоминаю,что бы видел в коде использование этих самых нормализаций, видимо, мало кому надо.

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

Строки — это не наборы байтиков. Разные наборы байт могут соответствовать одной и той же строке, о чём ясно говорит спецификация Unicode.

Ну как бы есть всем известные и канонические byte-strings - это строка в виде последовательность октетов и character-strings - это строка в виде последовательности символов. Символы получаются в результате интерпретации октетов по таблице. Unicode - это лишь один из способов представления, и он далеко не единственный.

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

Мы говорим о разных вещах, это вопрос терминологии. Да, любая информация и строки в частности представляется на ЭВМ в виде бит и байт.

В перле строки по определению состоят из символов. Строку можно представить в виде байт в конкретной кодировке, но тогда это уже будет не Str, а Buf. Как именно сравниваются строки («канонически равны либо совместимо равны», как спрашивал x3al), я сказать не могу, в такие тонкости не вникал.

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

Мы говорим о разных вещах, это вопрос терминологии. Да, любая информация и строки в частности представляется на ЭВМ в виде бит и байт.

В перле строки по определению состоят из символов. Строку можно представить в виде байт в конкретной кодировке, но тогда это уже будет не Str, а Buf. Как именно сравниваются строки («канонически равны либо совместимо равны», как спрашивал x3al), я сказать не могу, в такие тонкости не вникал.

Не знаю о каких «разных вещах» вы говорили, но я лишь напомнил про существование byte-strings и character-strings за индустрию вцелом.

Применительно к Perl мои слова выглядят вот так:

perl -MDevel::Peek -E'$str="\x{222}"; say Dump $str; utf8::encode($str); say Dump $str;'

SV = PV(0x92846c8) at 0x92a0f74
  REFCNT = 1
  FLAGS = (POK,IsCOW,pPOK,UTF8)
  PV = 0x92a68b0 "\310\242"\0 [UTF8 "\x{222}"]
  CUR = 2
  LEN = 10
  COW_REFCNT = 1

SV = PV(0x92846c8) at 0x92a0f74
  REFCNT = 1
  FLAGS = (POK,IsCOW,pPOK)
  PV = 0x92a68b0 "\310\242"\0
  CUR = 2
  LEN = 10
  COW_REFCNT = 1

До utf8::encode длина строки $str составляет 1, а после utf8::encode ее длина уже 2.

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

Те тулзы котрые есть не компилируют перл в двоичный код а просто объединяют в один бинарник VM и код.

Rperl

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

Как много нового узнаешь... Ну тем более, я про это не знал, я всю жизнь полагал, что перл — просто интерпретатор.

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

Сейчас мы углубимся в дебри того, что есть VM, а что — интерпретатор плюс исполняющая система. Как я понимаю, перл не преобразовывался в байт-код (или что-то ему подобное.

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

Как я понимаю, перл не преобразовывался в байт-код (или что-то ему подобное.

С чего бы он не преобразовывался?

Не буду тут цитировать «книгу верблюда», тем более что переводной под рукой нет, а это linux.org.ru, но смотрим главу 16. Ещё можно сюда посмотреть http://search.cpan.org/~rurban/B-C-1.52/perlcompile.pod

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

То, что ни второй, ни третий питон не умеет в nfd, ясно говорит о его уровне.

Вообще-то умеет, но только явным образом:

unicodedata.normalize('NFC', "\u0418\u0306")
antiPooH
()
Последнее исправление: antiPooH (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.