LINUX.ORG.RU
ФорумTalks

Вышел rakudo 2017.09 - реализация Perl 6

 


0

4

Сабж. Changelog:

New in 2017.09:
 + Fixes:
    + Fixed NativeCall signature check for unsupported native types [4077842c]
    + Fixed .made called on a Match on which .make was never called [5db5b1db]
    + Fixed flattening of a typed hash [6cec6b72]
    + Fixed iterator on pairs with Mu's [a5014fd0]
    + Fixed Supply.batch with non-int elems and elems == 1 [98f9fffe][7d1ece80]
    + Improved error message on nameless postfix `.::` [5969f21e]
    + Fixed ::("GLOBAL") [1f6a782c]
    + Refined merging of one() junctions [79604a88]
    + Fixed error message with leaking variable name in FailGoal [ed4f6cc9]
    + Implemented missing Instant.Instant [51709e01]
    + Fixed thread safety issues with signal introspection [1f411693]
    + Fixed thread safety issues in the `signal` sub [13b6a33c]
    + Fixed thread safety of "foo{$x}bar" [59454b03]
    + Made Bool.enums consistent with Enumeration.enums [e7a58806]
    + Fixed doubled path issue in IO::Notification.watch-path [2362dfd6]
    + Disabled interactive REPL for non-TTY input [b6a60236]
    + Fix ignoremark and casechange operations of graphemes which begin with
        Unicode Prepend characters [7f526c1e]
    + Suppress line number in X::Package::Stubbed [edac1d68][7ba9b7cd]
    + Fixed race condition in Channel awaiter [b30ac08a]
    + Fixed NYI compilation of NativeCall sigs with optional params [1818de98]
    + Fixed missing deconts in nqp::eqaddr() tests [880b33e2]
    + Fixed Enumeration:D === Enumeration:D [8d938461]
    + Fixed non-blocking await when holding locks [f26d1e24]
    + Fixed non-blocking await-all to respect Slip [a137c0de]
 + Additions:
    + Added support for Str operations with Junctions [753c9a5e][7cd153f4]
        [95a70ca3][0b19baf0][d2f31bb7][e18291e2][8b5d283c]
    + Added support for Unicode 10 [64dd94c2]
    + Added complete Unicode Collation Algorithm implementation [9b42484a]
        [5f335065][ec18efa0]
    + .collate/coll/unicmp operators are no longer experimental
        (Note: $*COLLATION dynamic variable is still experimental) [5f335065]
    + Added Thread.is-initial-thread method [59a2056a]
    + Added output buffering for non-TTYs [44680029][4b02b8aa]
    + Made temp and let on a Failure throw it [80a3255b]
    + Made sure that open files are properly closed on exit [3c9cfdba]
        [97853564][347da8e5][dd8d0d89]
    + Implement pred() and succ() for the Enumeration role [2645a1e9]
        [8d442a52][8df53f34][43e41ec6][55aa7f28][f925c648][69dae1f3][2ad51a0f]
    + Added isa method to SubsetHOW [0704cd97]
 + Build system:
    + Made t/harness* use 6 TEST_JOBS by default [8019c15b]
    + Added --ignore-errors option to Configure.pl [0bc1c877][1da075f9]
    + Fixed `make test` without `make install` first [fb0b3eb5]
    + Made Configure.pl refuse to work without ExtUtils::Command [3f4a9ffa]
    + Fixed non-installed gdb/valgrind runners [4e3f0fca]
 + Efficiency:
    + Knuth-Morris-Pratt string search has been implemented for string
        indexing operations (needles between 2 and 8192 in length) [593fa5f8]
    + 1.5-2x speedup of most string operations involving strands [5ebbc5ba]
    + 2.5x speedup for eq() for comparing two flat strings (1.7-2x for others)
    + 9x speedup when indexing with a needle one grapheme in length [8a215876]
    + Made `Any ~ Str` and `Str ~ Any` about 25% faster [815faa35]
    + Made index and eqat operations 2x faster [5ebbc5ba]
    + Made all(@a), none(@a), one(@a) about 9x faster [51c3d86c]
    + Various improvements to BUILDPLAN and BUILDALLPLAN [7da0c215][0ca5ffa4]
        [760530a5][80e069a4][2574f883][b706b843][963b28d1][532f7092]
    + Made object creation 25% faster in some cases [62fd5093]
 + Internal:
    + Simplified setting up auto-threading [8a0f6ac1]
    + Streamlined Junction .defined, .Bool, .ACCEPTS [e8137b45]
    + Added --no-merge option to t/harness5 to pass through STDERR [4af1d95c]
        [84b40cf5]
    + Various improvements to INTERPOLATE [215a5fa7][ea57cbec][c6aacafd]
        [47439e69][4c25df74][fc632cd8]
    + Some minor cleanup on R:I.FirstNThenSinkAll [9dbc3c50]
    + Fixed --ll-exception to give full thread backtrace [0877278e]
    + Various heap analyzer API changes [bfee5a1e]
    + Streamlined exit / END phaser handling [1adacc72]
    + Made junction optimizer only look at candidates [4de858a5]
    + Assortment of low-level improvements [cbce6721][8a215876]
        [9b42484a][a4ce97ca]
Напоминаю, что Perl 6 заточен строго под юникод и не работает с исходниками в однобайтных кодировках, ругаясь следующим образом:
Error while reading from file: Malformed UTF-8
Т.е., конечно, можно и при однобайтной локали написать скрипт в ASCII - и оно будет работать. Но, если оно выходит за пределы ASCII и не в валидном UTF-8...

Скачать: http://download.openpkg.org/components/cache/rakudo/rakudo-2017.09.tar.gz

★★★★★

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

Язык, на котором приятно писать. От программистов для программистов.

Long live p6!

d ★★★★
()

Хех. Копнул исходники, и вспомнил, что я когда-то уже их смотрел, но до ума так и не довёл. Оно поддерживает однобайтные кодировки, но через iso-8859-1.

> cat koi8perl6test.pl6
#!/usr/bin/perl6 --encoding=iso-8859-1
my $txtstr = 'Оно работает!';
say $txtstr;
> ./koi8perl6test.pl6 | iconv -f utf-8 -t ISO-8859-1
Оно работает!
>

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

Охохо, ~9 лет побыть ждуном, но я выбрал джаву...

foror ★★★★★
()

Ленивость по дефолту и паттерн матчинг там уже есть?

hateyoufeel ★★★★★
()

Только закончил собирать 2017.07 …

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

Какой последний полезный (не старше 2015) года проект на перле ты помнишь? Не модуль для перла, шоп писать на перле, а именно какой-то проект, который решает какую-то нужную задачу.

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

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

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

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

Конечно рассуждения конечного юзера. А для кого по-твоему программы пишутся?

P.S. На Prolog'е до сих пор можно создавать новый код. Но язык-то сдох.

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

Не «для кого», а «кем». Программистами. Конечному юзеру часто вообще всё равно на каком языке написан код, и если завтра появится мейнстримное решение на Prolog'е, которое будет просто работать, то конечные юзеры будут только рады.

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

Не «для кого», а «кем». Программистами. Конечному юзеру часто вообще всё равно на каком языке написан код, и если завтра появится мейнстримное решение на Prolog'е, которое будет просто работать, то конечные юзеры будут только рады.

Но почему-то не появляется. Никогда не задумывался, почему?

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson
[rfbr2] > history | grep perl | tac | sed -n 2p
  512  cat *.bib | sort -u | perl -e 'sub k { my ($y) = $_[0] =~ /\((\d{4})\)/; $y }; print for sort { -(k($a) <=> k($b)) } <>' > bib

Это мой последний (вчерашний) проект, который решает какую-то нужную задачу.

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

«не появляется мейнстримно» ещё не значит «совсем не появляется». В определённых кругах на чём только ни пишут. Fortran, Cobol, Forth,... А то, что есть в узких кругах, однажды может выйти за пределы этих узких кругов.

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

«не появляется мейнстримно» ещё не значит «совсем не появляется». В определённых кругах на чём только ни пишут. Fortran, Cobol, Forth,...

Brainfuck, тьюринг-полный язык на дебажных инструкциях процессора...

Выбор языка определяется задачей. Какую задачу на Cobol можно решить быстрее и надежнее (с возможностью легко пропихнуть в дистрибутивы), чем на более современном языке?

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

Это мой последний (вчерашний) проект, который решает какую-то нужную задачу.

Это не проект, это однострочник. Если вместо перла тут будет shell | awk | python, ничего не изменится.

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

Угу. Отсюда вывод — перл тут ничем не выделяется и может быть заменен чем угодно без каких-либо последствий. Как только все сферы применения языка сводятся к этому, язык можно считать мертвым.

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

Если вместо перла тут будет shell | awk | python, ничего не изменится.

Когда я изучал линукс, после sed мне надо было разобраться с awk или perl --- одним из языков, которые обычно применяются для подобных однострочников. Почитав про них, я пришёл к выводу, что perl мощнее awk и решил, что нет смысла тратить время на изучение awk. Я так до сих пор и не знаю awk, мне всегда было удобно использовать perl для этих задач. Для меня awk --- мёртвый язык. Но если мы объявим мёртвыми их оба, на чём всё-таки писать однострочники?

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

Какой последний полезный (не старше 2015) года проект на перле ты помнишь?

Никакого.
Также я не помню ни одного полезного и не для разработчиков проекта на Java(хотя пишу на ней), Scala, Lua, Python, Smalltalk, Haskel, bash, Javascript

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

Brainfuck, тьюринг-полный язык на дебажных инструкциях процессора...

кстати, калякаю в свободное время для него компилятор. Слава богу что он есть, есть чем брэйн факать.

Deleted
()

Оптимизации радуют. ^_^

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

Для меня — выделяется. К примеру, сейчас использую для автоматизации в внутренних проектах: у перла есть аналог coreutils, и совмещая это с всеми остальными возможностями и библиотеками на metacpan, перл из клея превращается в реактивную ракету. Даже не приходится обмазываться кашей из бэш-скриптов, python, модулями на Си и т.д. А гибкость и мощность перла (не сравнится с другими скриптовыми, имхо), позволяет каждый модуль оформлять и как отдельную утилиту, и как модуль одновременно: т.е. можно вызывать отдельно, а можно комбинировать, включать из других модулей.

Deleted
()

Зачем шестой перл? Давно уже есть восьмой и он вполне норм.

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

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

Ты не поверишь, но питон может то же самое.

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

Также я не помню ни одного полезного и не для разработчиков проекта на Java(хотя пишу на ней), Scala, Lua, Python, Smalltalk, Haskel, bash, Javascript

На Haskell написан сервер Wire (который мессенджер). На Javascript написана большая часть сайтов. Bash вообще не язык программирования.

kirk_johnson ★☆
()

Напоминаю, что Perl 6 заточен строго под юникод и не работает с исходниками в однобайтных кодировках

Так радуйся, шестопёр никому не нужен. Так же как и однобайтные кодировки, впрочем.

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

Haskell написан сервер Wire (который мессенджер).

Очевидно пользователь его не видит.

Bash вообще не язык программирования

Лол.
Теперь понятно от чего вв такие глупости пишете ;)

Но я так понимаю что по вашему Java, Python, Scala, Lua - мёртвые ЯП?

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

Очевидно пользователь его не видит.

И чо? Оно полезно конечному пользователю? Да.

Но я так понимаю что по вашему Java, Python, Scala, Lua - мёртвые ЯП?

Я ничего не утверждал, это ты про них заговорил.

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

Оно полезно конечному пользователю?

Спорно, так как пользователь им не пользуется а пользуется клиентом.

Я ничего не утверждал

Вы как мерило мертвости ЯП назвали то, есть ли новые проекты полезные пользователю.

А так как нет таких проектов а ЯП не мёртвые, то очевидно ваше мерило неверно ;)

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

Спорно, так как пользователь им не пользуется а пользуется клиентом.

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

Вы как мерило мертвости ЯП назвали то, есть ли новые проекты полезные пользователю.

Безусловно.

А так как нет таких проектов а ЯП не мёртвые, то очевидно ваше мерило неверно ;)

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

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

А еще пользователь не пользуется турбиной самолета, а пользуется креслом.

Вы от темы не уходите.

Не знаю, откуда ты взял «нет проектов».

Потому что

Я просто не назову тебе сходу джава проекты

А отмазка

я джавой особо не интересуюсья джавой особо не интересуюсь

Просто шикарна, так как Perl и Perl6 вы очевидно тоже не интересуетесь

А как насчет того что Python мертв и Lua?

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

Ты не поверишь, но питон может то же самое.

я уже спорил на эту тему с форумчанами. Все это сводится к такому: Да, этой фичи в питоне нету, но оно и не нужно.

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

Ээээ... она есть. Я тебе гарантирую. Ты можешь сделать условный вызов main если твой код не подключен модулем.

# hello.py
def hello(to=__name__):
    return "hello, %s" % to

if __name__ == "__main__":
    print hello("world")
kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)

не работает с исходниками в однобайтных кодировках

И правильно делает.

te111011010
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.