Perl 6 Advent Calendar
perl6advent.wordpress.com · Company blog · on HN since 2009
The Perl 6 Advent Calendar is a community blog of yearly articles on Perl 6 (now Raku) features, releases and examples.
What HN saysHN links it as evidence that Perl 6 was finally released and as a resource on its features, spec tests and tutorials.
57HN people shared it
34linked it in comments
87stories submitted
1.5Kstory points
5 years agolast shared
2009people per year2026
Most-shared posts
- 1Perl 6 Released8 people · 449 points · first shared 2009 · 185 comments on HN
- 2Unicode, Perl 6, and You8 people · 92 points · first shared 2015 · 21 comments on HN
- 3Perl 6.0 Released7 people · 50 points · first shared 2015 · 2 comments on HN
- 4Larry Wall announces that Perl6 is ready for production4 people · 177 points · first shared 2015 · 41 comments on HN
- 5Day 23 macros3 people · first shared 2013
- 6Operators and Meta-operators in Perl 62 people · 44 points · first shared 2013 · 26 comments on HN
- 7Interacting with the command line with MAIN subs (Perl 6)2 people · 8 points · first shared 2010 · discussion on HN
- 8HTTP and Web Sockets with Cro2 people · 6 points · first shared 2017 · discussion on HN
- 9Day 10 – jmp-starting your workflow2 people · 6 points · first shared 2018 · discussion on HN
- 10Asynchronous Programming: Promises and Channels2 people · 5 points · first shared 2013 · discussion on HN
- 11Perl 6 advent: Day 17 – Of a new contributor2 people · 4 points · first shared 2013 · discussion on HN
- 12Perl 6 on the JVM2 people · 4 points · first shared 2013 · discussion on HN
- 13Perl 6 Supplies Reactive Programming2 people · 4 points · first shared 2013 · 2 comments on HN
- 14Perl 6 Advent Day 8 – Grammars generating grammars2 people · 3 points · first shared 2015 · discussion on HN
- 15A Perl 6 Timer: Ready, Set, Go2 people · 2 points · first shared 2014 · discussion on HN
What HN people wrote when they linked it
sulam · 2016-06-08
I am no Perl apologist, but they DID finally release Perl 6:
https://perl6advent.wordpress.com
schoen · 2015-12-27
Definitely still not one-to-one, as you pointed out. A pinyin string with tone will map to lots of characters.
https://en.wiktionary.org/wiki/ch%C4%81o#Mandarin
https://en.wiktionary.org/wiki/zh%C4%81o#Mandarin
The places that I've seen names printed in native scripts are Donald Knuth's books (look at the TAOCP bibliography, with native script names all over the place), and, very recently, the Rakudo Perl 6 release notes.
https://perl6advent.wordpress.com/
I thought Knuth regarded it more as a matter of respect than of academic career benefit or scholarliness, but it has all of those virtues, although at least the Cyrillic and Hebrew ones have fairly low transliteration ambiguity.
ekiru · 2010-08-01
Check out the PDF of the draft of the Perl 6 book in the R * distribution (as docs/UsingPerl6-draft.pdf or something similar).
The Perl 5 to 6 articles at http://perlgeek.de/en/article/5-to-6 are very helpful even if you aren't familiar with Perl 5. One thing to remember about them is that they describe Perl 6 as specified, regardless of whether any of the implementations fully support the relevant features.
The Perl 6 Advent Calendar from last Winter (http://perl6advent.wordpress.com/2009/12/01/perl-6-advent-calendar/) is more of a "Here are some really cool things about Perl 6" series of articles, but they are also pretty good reads for learning the language.
daotoad · 2019-08-30
Let me clear that up for you, if you are still in doubt.
Perl5 had a period of slow releases in the 2000s, this changed in 2010 with the release of version 5.12. Since then, Perl 5 has been on a yearly release cycle. The current release is version 5.30.0. When it became clear Perl6 wasn't coming any time soon, some people left Perl. Others knuckled down and wrote some great code that made Perl5 into a much better language. With many core feature additions and deprecations, new CPAN modules, and tooling to support consistent work by teams, the Perl5 language is more expressive and better than ever.
Perl6 took forever, had major internal conflicts, but managed to survive and ship a specification in December 2015, version 6.c (6.a was an alpha version, and 6.b a beta). The Rakudo Perl6 compiler gets monthly releases, but most people install the Rakudo Star distribution, which bundles some extra modules and just makes life a bit easier. Rakudo Star began shipping "A usable Perl 6 compiler" in 2010. Regular releases tracked changes in the compiler.
The Perl6.c spec was announced in December 2015, and the first Rakudo to implement it was released at the same time. Rakudo Star, lagged a bit and released in January 2016.
Here's the Perl6 release announcement: https://perl6advent.wordpress.com/2015/12/25/christmas-is-here/
The Perl 6.d spec was released in November 2018, and the Rakudo 2018.11 version defaults to supporting it.
Here's a link the Perl6 FAQ with more…
raiph · 2016-04-01
Please reread https://perl6advent.wordpress.com/2015/12/25/christmas-is-here/
Note especially this passage:
...the primary deliverable ... is the language specification, known as “roast” (Repository Of All Spec Tests) ...
In other words it's roast, the digital acceptance test for any candidate Perl 6 compiler, that is arguably the only thing that was officially declared, and hence the only thing that could be construed to have been officially declared any particular thing such as "stable".
Continuing:
... This Rakudo release targets those tests (over 120 thousand of them), and passes them all on at least some architectures when the moon is in the right phase.
Rakudo is a Perl 6 compiler (so that one can try out the announced language).
Note the moon phase comment. While obviously not literal and arguably misleading it is a brilliantly concise and precise explanation of the degree to which Rakudo, the leading Perl 6 compiler, should or could be characterized as officially "stable".
Ultimatt · 2014-12-10
You wont get many opinions of people's experience of Perl6 from Hacker News. Just a lot of rage and assumptions it's somehow just like Perl5, which it's not. There are only a few of us (tens, maybe a hundred very quiet people) actually writing it daily. With no official "released" 6.0.0 version it's not supported that well by Linux distros yet either. Like if you install Rakudo on Debian stable right now it would be about two years out of date iirc. In the last two years a custom Perl6 VM was written with a JIT compiler and tonnes of concurrency stuff was added! You can however easily install it yourself and keep up to date with rakudobrew http://perl6advent.wordpress.com/2014/12/02/day-2-rakudobrew/
My $0.02 is you'd mostly want to learn Perl6 if you were after something like Ruby but perhaps with more room to express yourself and form a community and build new technologies. At least I really love the language and find it very expressive and intuitive to use and it has a lot of features useful for doing Bioinformatics built in (something I'm going to add to the P6 advent calendar on the 15th Dec). The extra level of detail ten years of design puts into a language like all the funky features working together and being consistent helps a lot. So much of the cooler expressive/functional stuff in Python feels out of place like lambda and list comprehensions. Maybe I'm wrong but I wouldn't write anything /that/ complicated or important using Python lambda or list…
cygx · 2012-12-15
Is there a production-grade implementation available yet?
Depends on your use case: There are two reasonably complete and stable Perl6 implementations - Rakudo on Parrot and Niecza on .NET/Mono.
What needs to be addressed before Perl6 can be recommended for arbitrary production use are modules and performance:
The module ecosystem[1] is somewhat ad-hoc and modules may have bit-rotten, so batteries are not included.
Rakudo is more feature-complete, but performance is less-than-awesome and Niecza might be a better choice if that's relevant and you're comfortable with the CLR. The performance issue can be somewhat mitigated by implementing critical code in C (in case of Rakudo) or C# (in case of Niecza), but that's more of a band-aid than a real solution.
You might also want to take a look at the Perl6 advent calendar[2] to gain some insights into the current state of Perl6.
[1] http://modules.perl6.org/
[2] http://perl6advent.wordpress.com/2012/12/01/perl-6-advent-calendar-201…
tadzik_ · 2021-12-18
It was renamed as others mentioned, but 6.c (for Christmas) came out almost 6 years ago, on December 24, 2015.
https://perl6advent.wordpress.com/2015/12/25/christmas-is-here/
systems · 2020-12-18
I understand the difference between introspection and autocomplete
Autocomplete if good tool support is available everywhere,
and some languages have very good dynamic introspection (usable in a repl)
Powershell, Julia, raku .. i think also Ruby and Python also have create introspection, that you can use dynamically in a repl
https://perl6advent.wordpress.com/2015/12/19/day-19-introspection/
So in summary, doesnt repl+introspection+auto completion give the same value
olah_1 · 2019-05-07
I think the semantics of the language is also important.
A ternary operator in a C like language probably is frustrating because it's some magic that was just shoehorned into the language with no rhyme or reason behind it.
However, in a language like Perl 6, each magical operator has an intelligible semantic meaning behind it almost like a natural language. So when you mix and combine different operators, it starts to make sense to you. See this post for an example https://perl6advent.wordpress.com/2017/12/11/all-the-stars-of-perl-6/
slobotron · 2019-01-28
Perl6 allows it, and it's the preferred convention to boot.
Small Intro: https://perl6advent.wordpress.com/2015/12/05/day-5-identifiers-have-hy…
mtmail · 2018-12-19
I get a login page only. URL is likely https://perl6advent.wordpress.com/2018/12/10/day-10-jmp-starting-your-…
nige123 · 2018-08-01
This is a bit like 123.do a Perl 6 powered command line app:
https://perl6advent.wordpress.com/2017/12/18/perl6-powered-work-flow/
totalperspectiv · 2018-07-19
If you're writing a lot of command line scripts and want some of the safety offered by types, but still want the flexibilty of python (+ more flexibility), you should check out perl6.
Gradual typing: https://perl6.party/post/Perl-6-Types--Made-for-Humans
Command line arguments: https://perl6advent.wordpress.com/2010/12/02/day-2-interacting-with-th…
And at the end of the day it's perl, so it's the king of command line scripts.
yesbut · 2018-01-23
Performance has improved a lot since the initial release:
https://perl6advent.wordpress.com/2017/12/16/day-16-%F0%9F%8E%B6-deck-…
pdkl95 · 2017-07-23
> they're more expressive of intent.
You don't control which font will be used when viewing your source, so nothing extra is being expressed to other people about your intent. Using a font with ligatures in your editor when you program doesn't record anything extra in the source code.
> ⇒
I find it strange that you include the proper way of doing this instead of using font ligatures: use the proper Unicode code point. Some languages already support Unicode operators, such as Perl 6 which, for example, accepts « » as a synonym for << >>.
https://perl6advent.wordpress.com/2015/12/07/day-7-unicode-perl-6-and-…
athenot · 2017-06-29
(For those who were wondering, the article is about DSLs in Kotlin).
DSLs can be very elegant ways to improve code readability (as long as the assumptions and language they use is meaningful to the team).
This is an area that I wish node.js had invested in. Perl6 has "slangs" which are extremely powerful, see [1] for some examples that just flow elegantly. Combine that with custom operators to write code like "4.7kΩ ± 5%" that would make sense to electronicians [2] and you can get some really user-friendly syntaxes.
(Again, it bears repeating that a DSL improves readability by sacrificing generality, so a DSL is for audience that's usually a subset of that language's users. That electronics code would be useless to the average web developer.)
[1] https://github.com/tony-o/perl6-slang-sql
[2] https://perl6advent.wordpress.com/tag/dsl/
cannam · 2017-06-16
I believe Perl 6 does so as well, see e.g. https://perl6advent.wordpress.com/2015/12/07/day-7-unicode-perl-6-and-…
brudgers · 2017-02-06
None of the languages mentioned have the goodness of syntactic macros.
https://perl6advent.wordpress.com/2015/12/23/day-23-macros-and-secret-…
ph14nix · 2016-12-01
> UTF-8, for example, allows to encode the character "ä" as \xc3\xa4 OR \x61\xcc\x88. They look visually identical, yet fail any string comparison.
Well-designed high-level programming language (see Perl6) compares strings depending on how they look, not on their binary representation [0].
For example let's play with Perl6 REPL:
> my $a = Blob.new(0xc3, 0xa4)
Blob:0x<c3 a4>
> my $b = Blob.new(0x61, 0xcc, 0x88)
Blob:0x<61 cc 88>
> $a eqv $b
False
> $a.decode() eqv $b.decode()
True
> $a.decode() eq $b.decode()
True
As another example, Python3 would fail:
>>> a = b'\xc3\xa4'
>>> b = b'\x61\xcc\x88'
>>> a == b
False
>>> a.decode() == b.decode()
False
Perl6 is definitely going to dominate the world one day.
[0] https://perl6advent.wordpress.com/2015/12/07/day-7-unicode-perl-6-and-…
SwellJoe · 2016-02-01
Perl 6:
@a «+» @b;
And, for the three (or more arrays, you just keep going) case:
@a «+» @b «+» @c;
These are called "hyper-operators": https://perl6advent.wordpress.com/2009/12/06/day-6-going-into-hyperspa…
Sniffnoy · 2015-12-27
This should be changed to the permalink: https://perl6advent.wordpress.com/2015/12/25/christmas-is-here/
danso · 2015-12-26
Congrats! The new regex features sound exciting ("Dramatically reforms and sets a new standard in regex syntax, which scales up to full grammars – powerful enough to parse Perl 6 itself")
I really liked the post that precedes the submitted one, in which Perl 6 is described as a teenager being adopted into a family, "An Unexpectedly Long-expected Party" https://perl6advent.wordpress.com/2015/12/24/an-unexpectedly-long-expe…
JadeNB · 2015-12-26
Thanks to cygx in another thread (https://news.ycombinator.com/item?id=10793782) for the link to the release announcement: https://perl6advent.wordpress.com/2015/12/25/christmas-is-here .
kamaal · 2015-12-03
>>Why does '+' (and friends) get this special form, but not my functions?
You are right, take a look at Perl 6 infix operators. You can define your own operator(treat it like a function, as such) and then use it.
https://perl6advent.wordpress.com/2013/12/22/day-22-a-catalogue-of-ope…
kbenson · 2015-11-30
Rakudo isn't JVM "based", but the JVM is one VM that it targets (also MoarVM, and Parrot. I imagine at some point the .Net CLR will be added). That said, take a look at this[1].
1: https://perl6advent.wordpress.com/2013/12/03/day-03-rakudo-perl-6-on-t…
perlgeek · 2014-12-26
Recently I wrote about sleepsort for the Perl 6 advent calendar, mostly as a fun topic to talk about threads, promises etc.
http://perl6advent.wordpress.com/2014/12/23/webscale-sorting-of-the-sl…
sciurus · 2014-12-11
For more on MoarVM see http://moarvm.org
According to http://perl6advent.wordpress.com/2014/12/01/the-state-of-perl-6-in-201… "In 2014, MoarVM has become the de facto standard backend for the Rakudo Perl 6 compiler. Parrot and JVM are still supported as backends, but MoarVM provides much lower memory usage, faster startup time, and is significantly faster than parrot at runtime. Rakudo on MoarVM also has concurrency support, including reactive programming."
lelf · 2013-12-22
You can check the whole series: https://perl6advent.wordpress.com/category/table-of-contents/
draegtun · 2012-05-21
Ditto Whatever-star from Perl6 which is more akin to Scala's underscore but using an asterix (http://perl6advent.wordpress.com/2009/12/19/day-19-whatever/)
Here's the Ruby examples in perl6 (all work in Rakudo)...
[10, 11, 12].map: (* + 87).chr;
@owners.map: *<name>;
"alpha\nbeta\ngamma\n".lines.map: *.uc;
NB. A limited version of Whatever-star is also available for perl5 - https://metacpan.org/module/Whatever