
Perl 6 Released - e15ctr0n
https://perl6advent.wordpress.com/
======
SwellJoe
Perl 6 sort of set itself up for a tremendous uphill battle. By taking so long
to "firm up", in terms of specification (or the test suite, in this case),
while Perl 5 had a period of neglect, it lost a whole bunch of its early
momentum to other languages. Sometimes, former Perl programmers have passed
through two or three other languages as their "primary" language since they
last called Perl home (I know there are several formerly reasonably well-known
Perl folks who are more known now for their involvement in JavaScript, Go, or
Haskell, or Rust, etc.).

It would take a ridiculously advanced language to counter that turning of the
tides. Luckily (or, I guess, not due to luck but because Perl 6 developers
realized they had to deliver something amazing to justify the time lost in the
wilderness), Perl 6 is a ridiculously advanced language.

I haven't started a new project in Perl in several years (though my primary
projects, which have existed for 9-17 years, are in Perl), but I'm strongly
considering making my next project a Perl 6 project. It looks like a really
fun language. All the stuff I like about Perl, with almost none of the stuff I
don't, plus some advanced stuff that I don't even know enough to know why I
might want it. But, I know that Higher Order Perl for Perl 5 (which I actually
read while I was mostly working in Python) was a lot of fun and made me a
better programmer, so I assume Perl 6 and its new paradigms will be similarly
eye-opening.

~~~
monk_e_boy
Happened to me, had to choose a language to write a web crawler in ended up
with Python (this was 5 or 6 years ago.)

We got a contractor in who was a Perl guru, he wrote one of the popular web
frameworks but even he couldn't put forwards a good case for using it over
PHP.

And now in the company my brother works for (a cloud hosting provider) they
are currently switching from Perl to Python.

~~~
singingfish
Speaking as the primary author of a book in one of the popular perl web
frameworks (who is having difficulty doing stuff other than perl because a. my
skills in perl are too much in demand, and b. Because for most of my normal
work I haven't found anything perl can't do as easily or easier than other
tools yet) here's my semi-considered opinion.

Meh, all the dynamic languages are basically the same. They're all basically
things that manpipulate strings and C pointers. For perl/python/ruby/js here's
what I'd sort of recommend:

* Pick from your team's strength, unless:

* Lots of turnkey logic, code quality and debug tools are not a priority, and you want to be able to hire fast and cheap: PHP.

* Lots of turnkey logic, per-performance isn't a problem and you want some higher order programming capability: Ruby.

* You want to manage a java-like large team for not so trivial logic, and you prioritise uniformity over expressivity. Python. Also python is a good environment for academic work as it helps the academic programmers not shoot themselves in the foot so much and academic code is a mess. Which is why python is such a good extension language for other tools.

* Async greenfield stuff where you don't need to worry about external libraries much: javascript. Also the only game in town for web front ends (plus its transpiling friends). Javascript is like a syntatically impoverished perl in this regard.

* You've got a whole bunch of mess in business logic and/or systems logic that you need to encapsulate, and you've got a small highly capable team who want to prioritise expressivity over uniformity. Perl excels here. So does python, but it'll make you do even more horrible things papering over the mess.

Regarding the last point, I believe if it reaches a tipping point perl 6 will
be a good thing for async, multicore and parsing related stuff, and should be
long-term productive and reduce the requirement for having as highly capable
and a disciplined team that is really a requirement for non-trivial perl5 code
bases.

Also perl5 is second to none for programming language back compat. I had a
decent sized non-trivial project I'd written for internal (research) purposes,
then neglected for several years. Then I had to look at the running code
again. I'd been through several minor OS upgrades, moved to a completely
different OS _and_ gone through at least three major versions of perl. Aside
from a couple of missing CPAN modules that I had forgotten about in the
Makefile.PL, everything was fine out of the box.

~~~
amenod
I have a nagging feeling that server side JavaScript will soon become the new
PHP. It is getting more and more popular among not-so-good programmers, and
given its loose syntax I think it will lead to disastrous code. Not to mention
that ECMA is working toward ADDING new feature to the language instead of
deprecating some obscure ones, which would make the language easier to use.

Of course, PHP makers made their share of mistakes with their decisions -
register_globals, safe_mode (which was not), inconsistent function naming in
standard libs, myriad of weird bugs (like syntax error (still) throwing HTTP
response 200),...

~~~
tracker1
As a fan of node.js, I'm afraid you are probably right... and not just front
end guys. Some of the most horrific JS code tends to come from (imho)
"enterprise" C# and Java devs... there are some patterns you just do not need
to do in a dynamic language environment... and only complicates things for no
real gain.

There are some really beautiful patterns emerging in the JS community though.
React (mercury and others), Redux, RxJS, Koa, etc... But it takes a different
kind of discipline to break up modules, and write pure functions instead of
relying on typical OO paradigms for systems development. I cringe every time I
see a senseless/useless DI/IoC system in JS that adds nothing but indirection
and complexity (looking at you Angular).

~~~
collyw
" I cringe every time I see a senseless/useless DI/IoC system in JS that adds
nothing but indirection and complexity (looking at you Angular)."

Isn't it supposed to make testing easier? (Personally I never managed to get
the Angular hype, but I am a Python dev mainly).

~~~
tracker1
If you're doing node-style (cjs) modules, you can use something like
proxyquire[1] with testing to inject dependencies without complicating your
modules, or creating logical indirection. If the only reason you have DI is
for testing in a scripted platform, you're probably doing something wrong.

You can write, compose and composite plain objects and pure functions in JS
modules that can be tested very easily without resorting to complex DI systems
(with naming disconnects even).

[1]
[https://www.npmjs.com/package/proxyquire](https://www.npmjs.com/package/proxyquire)

------
bane
This is impossibly exciting. Most people don't realize it yet, but it's like a
programming language hand grenade just went off in the world...little bits of
the new paradigms in Perl 6 are going to start winding their way into
languages of the future.

I first remember learning about rumors around the development of Perl 6 about
the time I picked up Perl 5 for the first time. I had been doing a bunch of C
and C++ code (and a smattering of Java) up to that point, but coding in Perl
was like hitting the idea accelerator. At the time (programming resources on
the Internet were few and far between) I didn't even know where to _look_ to
find resources to do things in C++ that were quick one-off scripts in Perl.
Need CGI? No problem. Mucking around with a database, here ya go.

I jettisoned C++ and dove heavily into Perl for years after that. I'm pretty
sure that Perl made me a much worse programmer (it turns laziness into a kind
of opiate), but a better conceptual developer -- I now had a much better idea
of what computers could do, and didn't have to reinvent an entire civilization
every time I wanted to do something (not a joke, where and when I worked, I
was partially responsible for working on a pre-STL String library for C++,
that's where we were in the world). Perl was really the first time I had
encountered the productivity benefits a true high-level language could bring.

I've since abandoned Perl and have moved onto Python for day-to-day. There's
lots of electrons spilled by many former Perlers who've made similar
transitions. I've never really _liked_ Python in the same way I liked writing
Perl. With Python I've always felt like I'm assembling Tinker Toys or an
erector set into a thing. It's quick to build and it works in the end but
there's not much passion in it. With Perl I always felt like I was writing
poetry -- code just sort of fell out of me.

I thought about checking out Go, but there's something about the sort of terse
opinion the language designers have about the language that's made me feel
like the entire language is a premature optimization that's going to go stale
quick.

Perl 6 feels like we've just entered a new evolutionary period, where we've
been given all new tools, where the opinion is careful inclusionism. It's like
being stuck writing couplets and haiku in Perl 5 and now we can write
anything.

Congratulations Larry et. al. This has been a long time coming, and I hope
this is an amazing start!

~~~
trop
All this progression rings true, but also the initial attraction of Perl. Back
in the late '90s I used Perl at a job where everyone else worked in C. This
was in the days that programmers of compiled languages were skeptical of
interpreted languages. One day a friend invited me by where he worked, where
the sysadmin was a "real computer guy". The sysadmin turned out to be a man
with long hair and a long gray beard. He was using a very thin Sony laptop
with Linux and a command-line TTY (he said he'd never bothered to install
X-Windows) and after he deployed a new release of the company's code using a
single command and started nmap running on the internal network (he wanted to
see who else was running a Unix), he asked me what sort of programming I did.
I was a bit cowed, and apologetically said that I didn't really program, I
only did scripting in Perl. He looked at me in the eye for the first time and
said, "Perl is most bodaciously a real programming language."

Seeing Perl 6 release notes like "Use of EVAL now requires a declaration of
‘use MONKEY-SEE-NO-EVAL’" and "Non-digit unicode characters with a numeric
value (½ and such) can now be used for that numeric value" reminds me of the
nerd coolness of Perl, so different from the straightforward sensible air of
Python. I don't see many deep-hacker sysadmins these days, but I hope the
excitement of Perl 6 can inspire some inefficiently marvelous coders...

~~~
tracker1
Haven't looked at perl in quite a while... just seeing your comments on the
release notes brings a smile to my eye... as opposed to JS not fixing the text
strings to use UTF-8 from UCS16 as it might "break" something... as opposed to
all the new and old code that behaves unexpectedly.

I always loved how simple it was to do simple things in perl... I've been
hoping to find something I need go for, so I can actually dig into it... far
more likely to find an excuse to use perl 6 sooner.

------
doodpants
> We will continue to ship monthly releases, which will continue to improve
> performance and our user’s experience.

Is that a Freudian slip? Do they really only have one user? :-)

~~~
cokebot9000
Ugh, good catch. Looks like someone fixed it up already, thanks.

------
cies
I'm really excited about Perl6, it is so jam packed with interesting novel
features, that it serves as an amazing testbed for stretching the limits of
what programming languages are capable of. I always feel that Ruby was a
language that came out of Perl; a subset of it's features, carefully selected
and implemented with the knowledge of what did not go too well with Perl. This
might just happen again with Perl 6, judging from the exotic features it
brings together.

Thanks Larry and co! So this Christmas it did happen :)

------
danso
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...](https://perl6advent.wordpress.com/2015/12/24/an-unexpectedly-
long-expected-party/)

~~~
Aardwolf
And also interesting unicode features in the regexes... \d matches anything
that is a digit in unicode for example. What if you only want ascii though,
like for computer languages and maybe security?

EDIT: security as in, no similar-looking but different characters to confuse
users etc...

~~~
gkya
Guess one can always do [0-9]+. Though I can't see why, for example, an arabic
numeral pose a security problem. ISIS?

~~~
kjs3
There are a number of security issues, mostly around using "look alike"
Unicode characters in phishing/impersonation attacks. See, for example:

[http://unicode.org/reports/tr36/](http://unicode.org/reports/tr36/)
[http://unicode.org/faq/security.html](http://unicode.org/faq/security.html)
[https://www.blackhat.com/presentations/bh-
usa-09/WEBER/BHUSA...](https://www.blackhat.com/presentations/bh-
usa-09/WEBER/BHUSA09-Weber-UnicodeSecurityPreview-PAPER.pdf)

------
unixhero
Learn X in Y Minutes[0] is a fresh and quick intro to Perl6. It looks jolly
good, readable(!) and quite fun! I hope I get to work on a project in Perl6.

[0]
[https://learnxinyminutes.com/docs/perl6/](https://learnxinyminutes.com/docs/perl6/)

~~~
woah
First thing I read is:

    
    
        #`(
          Multiline comments use #` and a quoting construct.
          (), [], {}, 「」, etc, will work.
        )
    

This level of flexibility in how you make comments seems a bit... odd

~~~
Ulti
Quoting is highly generalised in Perl 6. Comments happen to be more feature
rich and dynamic than other languages. They aren't simply _ignored_ by the
compiler but completely parsed and used in a variety of ways. The flexibility
looks odd because it's meant more for quoted string interpolation, but reuses
the same mechanism for comments. Generality of concepts is a common theme
throughout Perl 6, if something looks round and spins it should be a wheel.

For example all of the literate style POD6 comments are accessible within a
variable as a fully structured tree in the $=pod variable. The 'q' quoting
context in the main language allows you to use any matched quote/bracket from
unicode as the markers of the start and end of a string or regex, or comments
as you've picked up on.

This is super helpful if you want all sorts of weird quotes and brackets
inside of a string and still have it interpolated for variables for example.

    
    
        say q⧚This string has a "'weirdly quoted bit in'"!⧛;
    

Will print out:

    
    
        This string has a "'weirdly quoted bit in'"!
    

To see some examples of how extreme you can have these characters be from
unicode check out
[http://xahlee.info/comp/unicode_matching_brackets.html](http://xahlee.info/comp/unicode_matching_brackets.html)

~~~
pyre
As someone that has spend significant time in Perl5, why would they use
something like `$=pod`? I get that the name starts with '=' just like the pod
syntax, but that doesn't mean it _needs_ to be in the variable name. I would
almost just rather that they have some sort of namespace just for 'special'
variables like Python with their 'dunder' variables (i.e. double-underscore
like __doc__).

~~~
SwellJoe
I find it charming. It doesn't _need_ to be the way that particular special
variable is done, but twigils are a thing in Perl 6, and I think this is a
reasonable use of them.

You still have to check the docs for the dunder variables in Python. Having
the same special character convention (like __var__) doesn't magically make me
aware of what they all are and what they all mean. And, I've done enough
Python programming to know it's a crapshoot to google for them (just as it's a
crapshoot to google for sigils and twigils in Perl). You just have to know
where to look for the right docs or know who to ask for where to look for the
right docs (perldoc perlvar, in the case of Perl...I assume there's something
similar for Perl 6, and I don't remember what it is for Python).

------
kriro
Perl was probably the first language I did interesting stuff in (yay IRC-bots,
who didn't write one in Perl) but I gradually moved on to other languages. I
didn't keep up with it at all, only knew that Perl6 took forever. Then I read
up on Perl6 and now I'm really excited about the language. One of the projects
I want to work on involves building a DSL, most likely an external one. I was
pretty set on using ANTLR4 for it but now I'm seriously thinking about Perl6
as that seems to be one of the strength of the language.

~~~
Ulti
Guess what you can do both at the same time! :D There is already a module
which converts an ANTLR4 grammar into a full Perl 6 grammar which then
provides a ready made parser for you :)
[https://github.com/drforr/perl6-ANTLR4](https://github.com/drforr/perl6-ANTLR4)

------
godzillabrennus
Duke Nukem Forever and Perl 6 in my lifetime? Next thing you'll know we will
have cold fusion.

~~~
schoen
NetHack 3.6 just recently came out too!

[http://www.nethack.org/v360/release.html](http://www.nethack.org/v360/release.html)

~~~
szatkus
SuperTux 0.4.0

What a time to be alive!

[http://supertuxproject.org/](http://supertuxproject.org/)

------
julianpye
My first thought for Perl 6 killerapp: a html5/js build replacement for grunt,
gulp and other such monstrosities.

~~~
DCoder
You can write a replacement for gulp in Perl 6, but if it doesn't have the
plugins, who will use it?

Grunt and gulp have huge plugin ecosystems, which is both a blessing (you can
find ready-made plugins for a lot of tasks) and a curse (everything moves very
rapidly, plugins get abandoned, blacklisted and superseded all the time - if
you want to compile TypeScript files, half the blogposts will recommend gulp-
tsc .. but wait, it's been blacklisted, you should use gulp-typescript instead
).

Grunt: ~5400 plugins: [http://gruntjs.com/plugins](http://gruntjs.com/plugins)

Gulp: ~2000 plugins: [http://gulpjs.com/plugins/](http://gulpjs.com/plugins/)

Gulp's list of blacklisted plugins:
[https://github.com/gulpjs/plugins/blob/master/src/blackList....](https://github.com/gulpjs/plugins/blob/master/src/blackList.json)

~~~
deniska
I personally like the idea of using good old Make for that task. You don't
need "huge plugin ecosystem", you just need executables to use it. And unlike
many other systems it does incremental builds without any special machinery.

~~~
DCoder
That's a valid approach, but "Good old Make" is only good if you are already
familiar with it (and its quirks). If you're a new-ish web developer,
"learning Make" and "learning Gulp" are two equally foreign tasks.

------
marshray
On behalf of a long time onlooker: Congratulations, Perl 6!

~~~
zoffix222
Thank you!

------
BuckRogers
I can't say I'll be using Perl6 for my next project, but I'm glad it's here
because it should push other languages forward in meaningful ways. I think the
PL landscape has been missing something and Perl6 was it.

------
nstart
On a side note, I love how welcoming all the language is around getting people
to join the community. Off to the irc we go :)

------
meesterdude
Perl was the very first language I learned. I was using it to parse incoming
emails to insert records into a timetracking database, so i could log my time
via email. loved it.

But ya know, 15 years is a long time. in fact i was around 16 at the time, and
am 30 now, and remember talk about perl 6.

I'm a ruby guy now, and I don't see how I could ever go back to perl. Is perl
7 going to take another 15? or 30?

Despite whatever features came about; i should not need to wait half my life
to get them. That I think reflects poorly on the perl culture, or its
momentum. And it's not that perl 5 was without issues (though they were rare
for me)

Maybe a revival will come about from this, and maybe a change of pace and
approach; but as it stands the 15 years it took to release feels closer to
failure than to a success, and to tie my code to such neglected foundations
does not jive with me. Or maybe I just really like ruby now.

Honestly, I hope something good comes of it. Even if its just new features
that other languages go on to adopt or take cues from.

~~~
xorcist
IPv6 was over 20 years in the making. When will we get IPv7

Internetworking is clearly something of a failure.

~~~
lmm
Many people do think IPv6 is a failure - it's certainly not an unambiguous
success. IPv4 has continued popularity in a way that perl5... doesn't.

------
scriptdevil
I installed rakudo and played with it a little. However, the repl was
horrible. Is there a repl that accepts multiline subroutines and if possible
readline support?

~~~
zoffix222
I think you may want to install the module called Linenoise. If you have panda
(Perl 6 module installer), just type panda install Linenoise and you should be
all set.
[https://github.com/hoelzro/p6-linenoise](https://github.com/hoelzro/p6-linenoise)

~~~
scriptdevil
Yeah, that fixes the readline situation. Still, if has to type everything in
one line for it to evaluate, the REPL isn't of much use is it?

~~~
zoffix222
No idea :) In my 16-year programming career I never used a REPL of any sort.
Just pop up a temp file and edit it with $editor-of-choice? XD

~~~
SwellJoe
I thought that way until I worked with iPython for a while (back when it was
primarily a clever REPL, and didn't really have the "notebooks" feature at
all, yet, I don't think...this was back when it was new). Having a really
strong REPL when debugging is like having a rocket, when you're used to having
a hot air balloon.

I've always been bothered by the weakness of Perl REPLs. It's only recently
started to improve (in the past five years or so) for Perl 5, but there are
some decent ones, though nothing even in the same league as iPython.

~~~
Ultimatt
Well there's also a debugger for Rakudo. One that will even step through
grammar/regex as they parse which is really nice.
[https://github.com/jnthn/rakudo-debugger](https://github.com/jnthn/rakudo-
debugger) and [https://github.com/jnthn/grammar-
debugger](https://github.com/jnthn/grammar-debugger)

~~~
SwellJoe
That looks really nice. And I like that it defaults to doing the right thing.
I always have to read the docs when using gdb, as it happens so rarely that I
forget the commands for doing things...and it definitely does not default to
useful behaviors, certainly not just hitting "enter" to do the next obvious
thing.

A debugger doesn't take the place of a good REPL, but it's a useful component
of a good REPL.

~~~
Ultimatt
There is a lot of shifting around on the #perl6 chat room in recent months to
get Perl6 interacting with Jupyter aka the iPython notebook. Which means you'd
probably be able to use iPython command line as a command line client, just
without all the Python bells and whistles. If you're interested in seeing that
through I'd make some noise in the chat room. Even just saying you'd want it
will go a long way! Timotimo looks to be the person to hi5 as he already has
some code
[https://github.com/timo/iperl6kernel](https://github.com/timo/iperl6kernel)

~~~
SwellJoe
Competent Jupyter integration would be amazing. I haven't had reason to work
seriously in Python in many years, but iPython is just fantastic, so having
that kind of capability for Perl 6 would make Perl 6 even more attractive for
me. I think a lot of folks just don't realize how cool it is, until they
actually work with it for a while.

------
3dfan
Variable names can contain dashes?

Then how do you know what this means:

    
    
        users=users-churn-rate*time
    

oh, i see ... they are prefixed with $. so it's:

    
    
        $users=$users-$churn-rate*$time
    

Hm... still a bit confusing. But ok. It can be avoided by avoiding dashes in
variable names.

~~~
zoffix222
Something I see no one mentioned, dashes (and apostrophes) aren't the only
neat thing you can use in term names. You can use other languages too.
$контрольная-работа is a valid variable name.

~~~
collyw
That's something I wouldn't like to see in source code, as I wouldn't have a
clue how to type it. How do Russians see that issue? (Is it Russian?)

~~~
zoffix222
I think you've missed the point: you can program in your native tongue. I
think the expectation is a Russian company would not care whether _you_ can
type their variable names :P

------
Sniffnoy
This should be changed to the permalink:
[https://perl6advent.wordpress.com/2015/12/25/christmas-is-
he...](https://perl6advent.wordpress.com/2015/12/25/christmas-is-here/)

------
rsiqueira
Perl6 example:

sub Σ(@array_to_sum) { return [+] @array_to_sum; }

say Σ (1,2,3,4); # It will display 10

------
stesch
Some of the operators use non ASCII characters. Here is how you enter them:
[http://doc.perl6.org/language/unicode_entry](http://doc.perl6.org/language/unicode_entry)

No risk, no fun.

~~~
hahainternet
There are ASCII equivs for most, they're called 'Texas' operators.

~~~
stesch
Larry Wall is a linguist. I'm sure there has to be some reasoning behind
making the language more complex. Do you know of a text by him explaining why
there are two kind of writing the same operators? And why using non ASCII
characters?

~~~
Ultimatt
It's kind of obvious the reasoning behind it... The unicode is the
mathematical or good choice for the operator character, but the majority of
people have no idea how to type it. I have yet to see a keyboard with most of
the unicode maths operators on.

------
bshimmin
I have a lot of fond memories of Perl from a decade or so ago, and would love
to do something more than just installing and tinkering with Perl 6 and then
forgetting all about it. I also conveniently have a little "weekend project"
coming up where I can probably just choose whatever language seems most fun
(and then rewrite it in something sensible later if it grows beyond "weekend"
status).

If I chose Perl 6, what's a nice Sinatra-esque thing, and is there an ORM? And
how do I deploy it and run it in production (copy it into cgi-bin?!)?

------
bad_user
The thing that excited me about Perl6 was Parrot
([http://parrot.org](http://parrot.org)), which is supposed to be this very
ambitious VM targeting dynamic languages.

But unfortunately it seems that Perl6 is Rakudo and they've developed a Rakudo
specific VM. Maybe that's best for Perl6 the language, but it also makes it
less interesting for me.

~~~
hahainternet
Perl6 is actually ROAST, but Rakudo is the first compiler that approaches
implementing it. Parrot was unfortunately discontinued but Rakudo will not be
the only compiler (hopefully!)

~~~
xaduha
> Rakudo will not be the only compiler (hopefully!)

You're correcting people, but sort of wrong yourself.

Rakudo is written in NQP and Perl 6 AFAIK, but NQP can be implemented for
different VMs. A while back it worked on Parrot, MoarVM and JVM. I'd say keep
Rakudo, but add more backends such as CLR/.NET, WebAssembly/LLVM.

------
Thiz
I like what I see. Now make it available at Godaddy, Namecheap and all hosting
providers for it to dethrone PHP as the king of the web.

~~~
SwellJoe
I think "king of the web" is gonna look a lot different in the future than it
does today and did in the past. JavaScript will be, for the foreseeable
future, the king of the web front end, and I suspect it'll also hold a strong
role on the back end. It may even be unstoppable on both ends because of the
incredible resources being thrown at it.

However, systems management, deployment, provisioning, data aggregation,
log/event analysis, etc. on a large scale becomes more important by the day,
and if there is an area where Perl is still quite popular, it is in those back
end tasks. There are trendy tools in newer languages, but you'd be hard press
to find very large deployments (at least on Linux or other UNIX) without a few
hundred thousand lines of Perl running some elements.

Perl 6 with concurrency built-in, grammars and the most advanced regular
expression engine in the world, seems very well-suited for that future. Being
somewhat familiar for old school sysadmins who've always relied on Perl for
their scripting tasks is a bonus (Python has made some inroads in that space
in recent years, particularly with Red Hat and Ubuntu/Debian shipping many
system utilities that are written in Python).

Anyway, on the web front, I think we need a reasonable database abstraction
layer (e.g. Perl DBI/DBD), at the very least, before it gets elevated to
"always available" on hosting providers. I'd say give it another year, and
we'll have a pretty good Perl 6 web development ecosystem to work with.

~~~
Ultimatt
Perl 6 already has its own DBI and even a Slang DSL for writing SQL directly
in Perl 6 as a loop construct. [https://github.com/tony-o/perl6-slang-
sql](https://github.com/tony-o/perl6-slang-sql)

~~~
SwellJoe
Seems pretty immature. No interpolation (in either module), but I hadn't seen
the SLang. That's a wonderful example of creating a DSL! But, probably not
gonna be using it in production today.

~~~
tony-o
Interpolation is on the list of stuff to do. Perl6 is just an afterwork hobby
for me

------
sofaofthedamned
How many times is it going to be posted on HN that Perl 6 is released?!

~~~
Ulti
Once? This is the only time there has been a release of a versioned
specification for the ___language_ __compilers can target. That 's what has
been in development for 15 years! The specification of the actual language.
It's like the difference between JavaScript existing as a language for a while
and then one day ECMAScript 1 was defined. Apart from Perl 6 was always about
the evolution of the spec with various implementations showing the way.

The first major implementation of Perl 6 back in the early/mid 00s was Pugs
written in Haskell where Perl 6 picked up a tonne of functional heritage both
in the compiler at the time and the language spec. The more recent Rakudo
compiler has a lead architect who often works in C# where the compiler and the
language spec picked up and redefined a reactive programming concurrency model
with lots of nice new syntax like the react/whenever block.

Rakudo Perl 6 and Pugs and the host of other early implementations have been
around a while and released often when they were worked on, monthly in the
case of Rakudo with the first publicised release in 2010. Rakudo is also
releasing a version of the compiler compliant with the newly frozen and
released specification.

~~~
pyre
I think that the parent to your post is referring to this:

[https://news.ycombinator.com/item?id=10793029](https://news.ycombinator.com/item?id=10793029)

which already made the front-page.

------
frik
It's impressive how different the languages Perl (5 -> 6), PHP (5 -> 7; no 6)
and Python (2 -> 3) developed in the last 10 years. And how their community
reacted and their transition to newer releases.

------
mintplant
Are there any good tutorials/introductions/blog posts/etc. on using Perl6 for
language parsing/implementation?

~~~
cygx
For Perl6 proper, not that I'm aware of. For the NQP toolchain in which Rakudo
Perl6 is implemented, there's [https://github.com/edumentab/rakudo-and-nqp-
internals-course](https://github.com/edumentab/rakudo-and-nqp-internals-
course)

------
rubyfan
Anyone have an idea of how perl6 performs? All the performance articles I've
read are really old.

~~~
raiph
It has some native typed features that mean one can speed up numeric or raw
byte/bit operations to be faster, sometimes a lot faster than, say, Perl 5,
but it's generally a whole lot slower, 10x and even 100x slower wasn't
uncommon a few months ago. Some users claim it's worth trying it to see how it
works out for the sort of code a given user writes.

This release is about nailing down the language with a compiler that passes a
test suite. Next comes a focus on improving what they have -- nailing bugs,
speeding it up and expanding the test suite while making sure it continues to
pass the test suite and keeps users' code running.

I'd expect some benchmarks to be published on #perl6 in the next few weeks.

~~~
rubyfan
Interesting, does poor performance hold true using JVM? I'd expect MoarVM to
have some performance issues since its new.

Is the multi-vm approach anything more than a novelty or is this expected to
be a feature, i.e. a common spec and intermediate layer with support for
different backend VMs?

~~~
raiph
First of all, no one can yet run 6.c code on the JVM. Maybe the JVM backend
will get there by Christmas 2016.

The JVM's JIT is pretty awesome once it gets well warmed up. MoarVM's JITing
is much less impressive so far but it's early days.

The JVM will almost certainly always underperform relative to MoarVM in these
two ways:

* Much poorer startup time (unless an evalserver "cheat" is used)

* Using much more RAM (I recall a report of something like 5x or so for typical code running on recent versions of the JVM backend compared with the MoarVM backend)

My understanding is that the multi VM approach is strategic for Perl 6, for
the Rakudo Perl 6 compiler, and for the underlying NQP compiler toolchain.

------
nedludd
As if to confirm Perl's descent into obscurity they give the release a name
that 95% of the people of the world can't read.

The cherry on top of the public relations disaster that the introduction of
Perl6 has been...

------
gabesullice
Didn't quite make it by Christmas

~~~
colomon
You might want to read the date on the article...

~~~
sampo
In about half of the countries in Europe, Christmas is generally taken to mean
the Christmas Eve, i.e. the 24th.

~~~
cygx
Colloquially, sure. More properly, that's 'Christmas Eve', 'Heiligabend', ...,
ie the day _before_ Christmas; the 'first day of Chrismas' ('erster
Weihnachtsfeiertag') is the 25th.

So there :p

------
bitmadness
Too little, too late, IMO. The world has moved to Ruby and Go for the
web/cloud and Python for data analysis/scientific computing.

~~~
noblethrasher
Stackoverflow was written in C# when the rest of the world had moved on to
Ruby.

WhatsApp had clients written in Java against J2ME.

JaneStreet is (apparently) killing it with OCaml.

iOS apps were written in Objective-C when the rest of the world hardly even
heard of that language.

This site is written in a niche dialect of Lisp.

~~~
draw_down
The world is not a monoculture, yes. Not sure why that should mean people will
start using this new version of a language that has been dormant for _fifteen_
years.

~~~
JadeNB
As you'll hear from any advocate, Perl 6 is fundamentally a new language, not
just a new version of Perl 5; but, even if you want to think of it as a new
version of Perl 5, then it's hardly true that Perl 5 has been dormant all this
time. See
[https://en.wikipedia.org/wiki/Perl#2000.E2.80.93present](https://en.wikipedia.org/wiki/Perl#2000.E2.80.93present)
, for example.

~~~
draw_down
I just don't see why that means people will use it. That's probably a
negative, don't you think? The people who have been writing Perl have to learn
a new language, and people who haven't been using Perl have so many others to
choose from already.

I'm glad it's finished and all, but this has just seemed like a slow-moving
disaster to me.

~~~
JadeNB
> I just don't see why that means people will use it.

I wasn't arguing for or against that position, just responding to the claim
that it (Perl 6) was a new version of a language that had been dormant for 15
years. In fact I don't know what to expect for Perl 6; as an old lover of Perl
5, who hasn't done any Perl programming for a while, I would love to see a
modern successor, but I'm not sure that I totally disagree with the people who
think that the name now has too many possibly negative connotations.

> The people who have been writing Perl have to learn a new language, and
> people who haven't been using Perl have so many others to choose from
> already.

The same is true for any new language, though, whether or not it has 'Perl' in
its name, and some of them do get adopted!

------
Kabacaru
I'm fairly disappointed with this release. My read through of a tutorial in it
went something like this:

* Oh you're sticking with that confusing % for hashes, @ for arrays then $ for everything else... maybe maybe classes have been sorted out though.

* Hmm, why is the syntax for defining a class totally different to defining functions and variables everywhere else

* Well they can't have made anything WORSE. Oh fields can have minuses in them?? Packages exist and you can define them but you're not supposed to anymore?

* Well at least you can't totally rewrite the language in some arcane way which means every bit of perl you come across is totally different and unreadable for 45min while you work out what the custom DSL does. looks at phasers, Meta operators, fix'es _sigh_

Great that this has finally been released, but it really doesn't solve the
problems that Perl always had that it is TOO expressive and too customisable,
meaning it'll always be vastly different project to project. On top of that it
doesn't have the things that people are really excited about now, which is
channels, selects and other things that make async easy. I think that this
would have been an amazing release when Ruby was getting popular, but I think
it's a few years too late.

~~~
Ultimatt
Yeah I can tell you've now learnt enough of the language to judge it at all...
Or perhaps not at all!
[http://docs.perl6.org/type/Channel](http://docs.perl6.org/type/Channel)
Though supplies with react/whenever is a lot more exciting than channels.

