
Larry Wall Unveils Perl 6.0.0 - MilnerRoute
http://www.pigdog.org/auto/software_jihad/link/3138.html
======
krylon
I honestly did not expect to see the day Perl 6 gets finished. This must have
been one of the most difficult - if not _the_ most difficult - births in the
history of programming languages.

At work, I have been using Perl 5 increasingly often over the past two years,
mainly because handling unicode in Python 2 is not a lot of fun (and I still
haven't come around to learning Python 3), and I have rediscovered why I used
to like it so much.

So far I have not looked into Perl 6 seriously, because I did not see the
point to do so before it was finished. Guess I know now what I'll be doing
this Christmas. :)

Also, you gotta love Larry for quotes like this one: "This is why we say all
languages are religious dialects of Perl 6..."

~~~
fibo
You can build Perl6 and try it right now if you want, see my [early Perl
6]([http://g14n.info/2015/03/early-perl6/](http://g14n.info/2015/03/early-
perl6/)) article for detailed building instructions.

~~~
JoshMnem
Or use rakudobrew.
[http://codeselfstudy.com/wiki/Perl_6](http://codeselfstudy.com/wiki/Perl_6)

I don't know Perl, but I saw the presentation and was blown away. Installed it
today, and definitely will try building something with it soon.

------
oldmanjay
I haven't looked, but I really hope Perl 6 held on to the 50 different ways to
do any one thing. Pulling out my hair in frustration from trying to deal with
Perl written by other people saved me all manner of haircut money in the 90s.

~~~
Mithaldu
If you had tried to invest a little time to _actually_ learn Perl, you might
still have a beautiful mane on your head.

~~~
Zelphyr
I suspect a lot of people didn't take the time to actually learn Perl which is
why there's so much "there's-more-than-one-way-to-do-it" Perl code in the
wild.

For whatever reason, I went the PHP route and I can say from nearly 20 years
experience that PHP has the same problem even if it doesn't have the same
philosophical approaches as Perl. Too many people who never actually learned
the language producing near unmaintainable code.

~~~
chaostheory
If you have globals, nulls, gotos, or whatever dangerous (but sometimes
useful) features (e.g. states); surprise surprise people will end up using
them at one time or another.

Perl is not the first nor will it be the last (imperative) programming
language helps people fail too easy.

~~~
justinator
Double check me on this, but Perl 6 doesn't yet have a goto statement, nor
does it have globals.

~~~
dragonwriter
> Double check me on this, but Perl 6 doesn't yet have a goto statement, nor
> does it have globals.

AFAIK, Perl 6 has a goto statement in the spec (one big change is that Perl 6
_is_ a spec), it just isn't yet implemented in any of the implementations. But
presumably the target is to have the whole spec implemented for the release
this Christmas. (EDIT: Actually, no, goto won't be in "6.Christmas" [0])

For globals, its has global scope ("our") but variables with global scope are
still namespaced based on where they are declared, so while they are globally
_visible_ , they lack some of the more problematic features associated with
globals.

[0]
[https://gist.github.com/jnthn/040f4502899d39b2cbb4](https://gist.github.com/jnthn/040f4502899d39b2cbb4)

------
haberman
> One of the most impressive things Larry demonstrated was the sequence
> operator, and Perl 6's ability to intuit sequences.
    
    
        say 1, 2, 4 ... 2**32
    

> This correctly produced a nice tidy list of just 32 values -- rather than
> the 4,294,967,296 you might expect.

Someone with more time than me needs to find an IQ test that is based around
sequence questions like this and plug them all into Perl 6. So we can find out
what Perl 6's IQ is and whether it has achieved AI.

~~~
72deluxe
With things like this, it makes me glad I write C++ (and that gets bashed
enough!). I do not miss the days of maintaining a Perl codebase (and trying to
decipher what on earth code was doing). This is insane.

~~~
Mithaldu
Perl is a language sufficiently different from the main bulk of languages that
one must make an earnest effort to learn it before one can read it. Your
complaint is similar to someone declaring Japanese insane just because of the
way its writing system looks like gigantic and erratic complexity to the
inexperienced.

~~~
oldmanjay
You pretty clearly have an emotional attachment to Perl, which is sort of
lovely to see, but it's causing you to be undeservedly condescending to people
who don't have that attachment, which is not lovely.

~~~
raiph
> to be undeservedly condescending ... is not lovely.

It seems like you have just diagnosed someone's behavior without them asking
for a diagnosis and your diagnosis is that they are being condescending. See
the problem there?

And this followed what some might call undeserved condescension: "Pulling out
my hair in frustration from trying to deal with Perl written by other people
saved me all manner of haircut money in the 90s.".

If you think I'm being undeservedly condescending, and this isn't lovely,
perhaps we can find another way to talk about Perl _6_?

~~~
oldmanjay
You can torture my words rhetorically to score emotional points, but I don't
know what you think you prove by it.

If you find my jocular expression of my very real experiences with Perl to be
condescension, I'm going to have to let you know that I don't believe Perl to
be all that worried about it, incapable as it is of having an emotional state.

------
jamespitts
Congrats to the perl community. We should keep an open mind and learn from
what they have accomplished.

If perl 6 turns out to be useful for the larger software engineering community
(and is more widely adopted), this is wonderful. If not, then we still have
another interesting language in the great river of interesting tech things.

Either way, the perl community will continue to do what it does best!

------
atemerev
Some languages are for earning your daily bread (like Java, or Objective-C).
Some, like Haskell, are for intellectual pursuits.

Perl is for poetry. For seeing the impossible and going back.

~~~
rendambathu
You Sir, have the heart of a Poet!

------
thedz
> ++; # An anonymous state variable, for very fast loops

Perl, never stop being you

~~~
inopinatus
Also:

    
    
      react { whenever }	# Code runs when a condition is met. 
    

I can only think this must be a generic
[https://en.wikipedia.org/wiki/COMEFROM](https://en.wikipedia.org/wiki/COMEFROM).
It is sure going to create some viciously subtle bugs.

~~~
cygx
Cf [http://www.jnthn.net/papers/2015-spw-
concurrency.pdf](http://www.jnthn.net/papers/2015-spw-concurrency.pdf)

~~~
raiph
From pages 56 and 57:

> Perl 6 has an asynchronous looping construct called whenever ... runs
> whenever a value arrives ... can live in a ... react block (works like
> entering an event loop)
    
    
      my $code = supply {
        whenever IO::Notification.watch-path($src-dir) {
          emit .path if .path ~~ /<.pm .p6> $/;
        }
      }
    

So now, whenever something in $src-dir changes and its path ends with '.pm' or
'.p6' that path will be emitted -- which in this case means it'll be pushed to
any construct pulling from $code. Such as:

    
    
      react {
        whenever $code -> $path {
          say "Code file $path changed!";
        }
      }

------
vezzy-fnord
Perl 6 appears to be the SNOBOL of our times, with grammars being a first-
class lex, plenty of functional idioms, APL influences and a reasonable object
system.

Given how much of contemporary programming is munging, I can see it really
picking up steam.

------
reuven
Given how long it took to replace Perl 6, and the fact that I (and most others
I know) have moved onto other languages, I can't decide if I'm more (a)
surprised, (b) impressed, or (c) indifferent.

Kudos to Larry for sticking with it, and for (I'm sure) introducing
interesting ideas into the world of programming languages. That said, I have
to wonder how many people will really use Perl 6 in their day-to-day work, and
how many will look at it as a curiosity.

For me, I'm afraid that Python and Ruby have replaced Perl, despite more than
10 years in which Perl was my go-to language. Maybe I'll return to it, but I
sorta doubt it.

~~~
jandrese
I don't know, there's something to be said for a language that isn't a moving
target. You learn it really well inside and out and your effort isn't wasted
as it is thrown away for some hot new fad language in a couple of years or
find that everything you learned is now deprecated because the authors decided
that functional programming is the bees knees.

------
muraiki
I've found these resources helpful for learning Perl 6:

[http://learnxinyminutes.com/docs/perl6/](http://learnxinyminutes.com/docs/perl6/)
is a pretty good intro to Perl 6 if you just want to jump into things.

[http://www.jnthn.net/papers/2015-spw-
perl6-course.pdf](http://www.jnthn.net/papers/2015-spw-perl6-course.pdf) is
more slowly paced but provides greater detail.

Also, the people in #perl6 on Freenode are all awesome and are usually quick
to help beginners unless they are in the middle of fixing some crazy bug.

~~~
the-owlery
Perl 6 has slides, IRC, a skim-through (learnxinyminutes), reference docs,
examples, but alas no solid tutorial. This, IMO, will be a major problem if it
persists until Christmas.

------
tcdent
I'm really surprised this site is the source y'all chose to upvote. Not only
was the second-newest article published in 2012, they also have an assortment
of other questionable content[0][1]. Advertising from rotten.com and a
category named "Jonny Jihad" are also professional touches.

I mean, whatever floats your boat, but HN, is this really one of your go-to
trusted news sources?

[0]
[http://www.pigdog.org/in_the_pink/html/interview_with_a_stri...](http://www.pigdog.org/in_the_pink/html/interview_with_a_stripper.html)
[1] [http://www.pigdog.org/pooniedog/](http://www.pigdog.org/pooniedog/)

~~~
matthewn
I was delighted to see pigdog.org appear on the front page of HN; I thought it
had died years ago (and I guess it mostly did). The Pigdog Journal was a Big
Deal for a certain clique of nerds/technologists in the late 90s/early 00s.
(You know, when Perl was also a Big Deal.) The web was a smaller, zanier place
then; for those that remember that web, pigdog.org brings a wave of nostalgia.

~~~
tcdent
I edited my snark, but I was going to ask if this was "just a Perl thing?"

I guess it's just a Perl thing...

------
ambrice
So is this a real thing? I've never seen this pigdog website before, it's
second newest article was published in 2012, and there's no mention of this on
the perl 6 home page or in the perl 6 announcements mailing list..

~~~
steveklabnik
At FOSDEM earlier this year, Larry gave the presentation they describe, and
said that they were expecting a beta release at Christmas this year. So the
general concept is legit, regardless of the site.

~~~
jlarocco
I don't see how that makes this look any more legitimate. The FOSDEM website
says they had over 5000 people attending, so it's not like Larry's talk was a
big secret. And Perl 6 has been right around the corner forever, so a fake
"Perl 6 is released" page could seem timely and legit in concept at almost any
time in the last 10 years.

Even if it's true, if they want anybody to pay attention they should announce
it on perl6.org or at least a more professional looking page. If I were at
work and opened a page with rotten.com banner ads, and "software jihad" all
over the place, I'd close it immediately and hope nobody saw it.

~~~
kbenson
Not being privy to the talk, my assumption was that the final shipping feature
list was solidified, and that's what was being announced. It's still due at
Christmas, and that was already known. I think the article's meaning was
somewhat ambiguous with the title, and HN just ran with it. Nothing has been
released (but apparently there's two beta's officially planned now, the first
of which is in a week or so).

------
amyjess
Congratulations Larry and the Perl 6 community!

From what little I've played around with the language in the past, I really
like it, and I'm glad the community can put the "still in development" talking
point behind it.

Also, one of my favorite things about Perl 6 is that the Rakudo interpreter
prints some of the _nicest_ error messages I've ever seen. It actually offers
suggested solutions, and it points out Perl 5->6 migration gotchas.

~~~
Narishma
As far as I understand, Rakudo is a compiler, not an interpreter. It compiles
perl 6 source files into bytecode that is executed by a VM.

~~~
amyjess
Yeah, you're right. Total brainfart there.

------
meesterdude
Perl was the first programming language I ever used, and i think 6 was being
worked on even then. I've moved on to ruby as my goto, but my (limited)
memories of perl are fond, and I'm happy to see its still moving forward.

~~~
mst
Every time I try and write ruby I end up giving up because the OO is
boilerplate heavy and restrictive compared to Moo/Moose.

Basically "No method modifiers and I have to write my own constructors?
Really?" always drives me away within a few hours.

~~~
vidarh
Method modification is trivially done through "alias" and then just redefining
the method in Ruby, if you re-open the same class. If you subclass, then
"super" is sufficient. I'm curious what you actually mean here.

As for writing your own constructors, you only need to do so if you actually
need to initialize something, and since instance variables can be used without
having initialized them in a constructor (they'll just default to nil), I'm
curious what you mean here too.

~~~
mst
> Method modification is trivially done through "alias" and then just
> redefining the method in Ruby

I don't know how to convert this into ruby then without needing to manually
gensym a bunch of names:

    
    
        use Class::Method::Modifiers;
        
        sub foo { 2 }
        
        before foo => sub { warn "before foo 1" };
        
        around foo => sub {
            my ($orig, $self) = (shift, shift);
            warn "around foo";
            (1, $orig->$self(@_), 3);
        };
        
        before foo => sub { warn "before foo 2" };
    

> As for writing your own constructors, you only need to do so if you actually
> need to initialize something

Which is required if you're going to use value objects as much as possible
rather than spraying mutable state everywhere.

~~~
steveklabnik
You can do this. I tried to draw up a quick gist, but I am late, and I've been
writing too much Rust...

The basic idea is this:

    
    
      module Mst
        def self.included(base)
          # define a method on base using define_method named :before, which takes an
          # argument and a block
            # in that method, you grab the method with that name, using .method()
            # you then define a new method, named method, which calls the block and
            # then calls the original method
        end
      end
    
      class Foo
        include Mst
    
        def test
          puts "test"
        end
    
        before :test do
          puts "before"
        end
      end
    

Module named after you. You can see how the logic only changes a bit for after
and around. You could then wrap this up as a library, and all you'd need to do
is the include.

[http://api.rubyonrails.org/classes/ActiveSupport/Callbacks/F...](http://api.rubyonrails.org/classes/ActiveSupport/Callbacks/Filters.html)
has an example, I think.

~~~
mst
That's really cute.

I hope, however, that you can understand from the POV of somebody who keeps
being driven off ruby by ruby being too much work, that "you could make it
less work by first porting all the perl5 libraries that make perl5 OO more
pleasant" isn't really a convincing solution :)

~~~
steveklabnik
One of my Twitter followers posted a gist:
[https://gist.github.com/paulodiniz/39698ac1fe5f62e3180e](https://gist.github.com/paulodiniz/39698ac1fe5f62e3180e)

Sure, I was just addressing the "I don't know how to do that." Rails offer
this for models in certain circumstances, for example.

~~~
mst
That's very cute.

Yeah, I was responding to a post that claimed it was trivial; that's cute but
not trivial - although it does demonstrate that using 'alias' to rename isn't
necessary, which is nice to know.

I can absolutely see how I'd turn this into a full Class::Method::Modifiers
re-implementation, so I'll totally stipulate to 'trivial if' :D

~~~
steveklabnik
I'm not interested in being condescended to, so

~~~
mst
Wut? I just complimented the code you posted, and changed my mind from "the
unconstructive guy upthread said trivial, which it isn't, but steve's been
kind enough to give me enough information to see it's trivial if I write a
port of CMM, and said port is basically identical rather than requiring the
crappy alias approach".

I've genuinely no idea why you think I was being condescending.

~~~
kbenson
I don't know where steveklabnik hails from, but in the US "cute" is sometimes
meant with a condescending overtone. I seem to recall you are from the UK
(Scotland?) from the last YAPC I was at, so I suspect this is a dialect
difference causing a misunderstanding.

~~~
mst
Oooh. Yes. In the above comment, "very cute" should be read as being said
genuinely in an approving voice with a big grin, and exactly zero sarcasm.

This may be the first time (yeah, English, but do wear a kilt a fair bit) I've
ever run into a problem with an American overdetecting sarcasm.

~~~
wycats
For what it's worth, I completely agree with the "crappy alias" thing, and
wrote a lot about this topic back when I was working on Rails full time
(example: [http://yehudakatz.com/2009/03/06/alias_method_chain-in-
model...](http://yehudakatz.com/2009/03/06/alias_method_chain-in-models/)).

Ruby eventually added `prepend`, which I demonstrated upthread, and is a
genuinely generic, in-language solution to the problem you're talking about.

~~~
wycats
I dug up my original proposal from 2009, which eventually landed in Ruby 2.0:
[http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-
core/...](http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/25208)

------
jedharris
My sense, playing with Perl 6, is that it could become a "pro tool" \-- very
deep and powerful. It needs to mature some (though it is very solid already)
and to grow its ecosystem (though it can run much of CPAN via Inline::Perl5).

Those who want to play can install from [http://rakudo.org/how-to-get-
rakudo/](http://rakudo.org/how-to-get-rakudo/)

Larry's talk was a lot of fun, especially the way he zipped around between vi
and terminal windows -- no need for presentation software.

~~~
jedharris
A couple of other things that haven't been much highlighted:

\- Perl 6 right now runs very well on two back ends: a custom VM and the JVM.
It is spinning up a Javascript back end, I think primarily for NodeJS.

\- Concrete representations are carefully separated from core semantics, so
Perl 6 currently supports native values from C, Perl 5, Python, etc. It should
be able to support native arrays as required for high performance scientific
computing etc.

~~~
mindcrime
Whatever happened to the ParrotVM? I always thought that it was somehow
intrinsically tied up with Perl6.

~~~
bmn_
[http://www.modernperlbooks.com/mt/2013/02/goodnight-
parrot.h...](http://www.modernperlbooks.com/mt/2013/02/goodnight-parrot.html)

[https://www.ohloh.net/p/parrot](https://www.ohloh.net/p/parrot) (contributor
graph at the bottom)

------
akkartik
Junctions and autothreading seem to be importing the core of APL/J:
[http://doc.perl6.org/type/Junction](http://doc.perl6.org/type/Junction)

(I'm randomly scanning [http://faq.perl6.org](http://faq.perl6.org))

~~~
kbenson
Perl 6 basically hoovered every good programming concept they could think of
(and some that ended up being not so good, which have hopefully been shaken
out over the last decade). If you want a small language, this is not it. If
you want an amazingly powerful language that just allows you to do what you
want with a minimum of fuss, pull up a seat.

~~~
notsony
Whereas Go has gone the other route and jettisoned everything. Not having a
ternary operator is a real pain.

One thing Go does well is provide the gofmt tool. There is only one way to
format code properly.

Does Perl 6 have something like this?

~~~
justinator
Probably soon.

Perl 5 has a Tidy'ing tool[0], as well as a Lint[1] tool. Both are based on
rules created from (originally) Best Practices [2]. These rules of course can
be modified to taste, so you can set your own rules/filters before checking in
your changes to a repo (or, whatever)

[0] [https://metacpan.org/pod/distribution/Perl-
Tidy/lib/Perl/Tid...](https://metacpan.org/pod/distribution/Perl-
Tidy/lib/Perl/Tidy.pod)

[1]
[https://metacpan.org/pod/Perl::Critic](https://metacpan.org/pod/Perl::Critic)

[2]
[http://shop.oreilly.com/product/9780596001735.do](http://shop.oreilly.com/product/9780596001735.do)

~~~
autarch
Perltidy predates PBP by a long time. Perltidy is a bit of a huge mess, and it
has its own parsing code and is nearly impossible to hack on. We really need a
PPI-based re-implementation.

~~~
justinator
There was a very interesting submission to HN on why code formatting utilities
aren't easy things to write, [0] called, The Hardest Program I've Ever Written
[1]

The code of Perl Tidy at least looks pretty good! [2]. Perhaps there's a
reason why PPI isn't used, that I'm not famliar with, other than - as you say,
it predates it. Perl::Critic uses PPI, yes?

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

[1] [http://journal.stuffwithstuff.com/2015/09/08/the-hardest-
pro...](http://journal.stuffwithstuff.com/2015/09/08/the-hardest-program-ive-
ever-written/)

[2] [https://metacpan.org/source/SHANCOCK/Perl-
Tidy-20150815/lib/...](https://metacpan.org/source/SHANCOCK/Perl-
Tidy-20150815/lib/Perl/Tidy.pm)

~~~
Mithaldu
Thanks for the links.

As the current de-facto maintainer of PPI, the answer is rather simple:

P::T predates PPI by almost two years:
[https://metacpan.org/source/SHANCOCK/Perl-
Tidy-20021130/CHAN...](https://metacpan.org/source/SHANCOCK/Perl-
Tidy-20021130/CHANGES#L1685)
[https://metacpan.org/source/ADAMK/PPI-0.1/Changes](https://metacpan.org/source/ADAMK/PPI-0.1/Changes)

and:

For the longest time Perl was considered unparsable, primarily due to the two
features of function parens being optional, and the argument-slurpiness of
function calls being unknowable without introspecting the function reference
that ends up being the final one, at runtime. In the most famous example this
can lead to a / after a function call being considered either the division
operator or the start of a regex; with both interpretations resulting in valid
Perl code. It took a while for anyone to come up with a schema in which Perl
could be parsed while also being round-trippable. It took PPI a while to get
there and be stable, and meanwhile P::T had already become stable itself.

------
raldi
_> Finally, there's a way to stop non-identical strings from matching just
because they have the same numerical value._

Um, this has been there for decades:

    
    
        $a = '123';
        $b = '123.0';
        print $a == $b ? 'y' : 'n';  # prints y
        print $a eq $b ? 'y' : 'n';  # prints n

~~~
kbenson
I read it that way at first, and was going to comment on it, then I figured
the point was smart match being able to distinguish, not being able to do your
own test.

~~~
osswid
'eq' does the test you are asking for.

~~~
kbenson
Yes, I'm aware, but when using smart matching (that is, the given/when pair
which has had it's fair share of trouble, and is currently experimental after
having not been), you sometimes want to be able to distinguish between those
types of tests when doing a _smart match_ [1].

I believe the article was referencing this, and so while yes, _anyone_ who
knows how to use Perl will use the appropriate operator for the appropriate
type of type operation, there are reasons to still want to distinguish what
type of match is done by the smart match operator, '~~'.

1: [http://perldoc.perl.org/perlop.html#Smartmatch-
Operator](http://perldoc.perl.org/perlop.html#Smartmatch-Operator)

------
AceJohnny2
Sounds like a v2.0 with feature bloat.

""Any infix operator can be replaced by itself in square brackets..." Later
someone asked, "In a world of user-defined operators everywhere, how do you
define precedence?" And Larry pulled out is tighter() and is looser(), noting
that Perl 6 even has customizable precedence levels. "You can add an infinite
number...""

It's been said that most of programming is about managing complexity. I'm
unhappy with Perl in general because it makes it really easy to hide
complexity. Perl 6 looks like it makes it even worse.

Yes, it looks like an amazingly powerful and sophisticated language, and an
amazing and respectable accomplishment, but my gut feeling is I'll hate seeing
some in production...

~~~
kbenson
A nice feature is that imports honor scope, so you can use a module and import
functions or operators within a scope and not worry about it causing problems
elsewhere.

------
huangc10
Perl was the first high-level language I learned and I've used it many times
during interviews. I still think I can solve most non language-specific
interview questions extremely efficiently with Perl. Go Perl!

------
a3n
Long ago, Perl as a coding Leatherman, along with C/C++/Java.

Python took Perl's place on my belt. I'm using Python2, because all the
reasons everyone else gives, and because it's Python2 at work. I've been
wondering when I'd finally decide/be able to move to Python3.

And now I'm rubbing that faint Leatherman imprint on my belt, and wondering if
I'll just skip Python3 for Perl6.

------
dasil003
I would never want to use Perl at my day job, but I also wouldn't want to live
in a programming universe where Perl didn't exist. Perl is a place where the
pure joy of coding thrives.

~~~
72deluxe
I always found it obtuse and overly terse to the point of non-maintainability
or readability, far worse than even C++. But that could be due to my lack of
understanding, or being used to C-style languages and syntax.

Good to see it still has a dedicated following.

~~~
dasil003
Hence the first 11 words of my comment.

------
InclinedPlane
Seems too little too late. Is Perl still relevant in 2015? What would you
build in Perl today that you wouldn't build in another language instead?

I used to be a big fan of Perl but it seems to have fallen behind the times, I
doubt Perl 6 is enough to catch up.

~~~
muraiki
Here's something that's normally not too fun to deal with in Python and Ruby:
asynchronous operations. Perl 6 has promises, C#-style async/await, Go-style
channels, and Reactive Extensions-style Supplies built in as first-class ways
to deal with asynchrony, concurrency, and parallelism. It can also take
advantage of as many threads as you'll give it. Since I deal with web services
a lot, this is a huge boon for me.

But I don't really want to give a laundry list of features, because that alone
is not a compelling enough reason to pick a language (P6 obviously needs to
develop an ecosystem). As someone who appreciates both OO and FP, both static
and dynamic typing, P6 really hits a sweet spot. I encourage you to look at
Perl 6 as a new language with the feel of Perl but which solves many modern
problems.

~~~
abc_lisper
Are you talking about Clojure ;)

~~~
peatmoss
As a fan / dilettante of Clojure, I'd say no. The JVM is many nice things,
some nasty things, but definitely not lightweight in terms of things like
startup speed that I'd expect of Perl 6.

~~~
benjaminjackman
"The JVM is many nice things, some nasty things, but definitely not
lightweight in terms of things like startup speed"

The jvm startup speed is actually surprisingly good these days. We were
experimenting with writing several commandline tools with Scala, and didn't
think they would work because of this "well-known" issue. Turns out it was
fast enough even to enable letting Scala handle things like the code
completion and still have it feel very snappy.

~~~
muraiki
I'd agree that the JVM itself isn't so bad in terms of startup time. However,
the last time I compared Clojure and Scala, Clojure took significantly longer
to start up (even though what I was doing in Clojure was nothing compared to
all the libraries I was pulling in with Scala!)

Edit: I should add that there's a Perl 6 JVM backend. While it's not as up-to-
date as the default MoarVM, it could also be ready "for Christmas" :)

------
rjurney
You launch Perl 6 without updating the fucking home page? So Perl. So perl.

~~~
cygx
Launchdate is still Christmas.

Accordingly, the official 6.0 release is also known as 6.Christmas. Right now,
we're only at 6.Birthday.

~~~
iso8859-1
According to [http://rakudo.org/how-to-get-rakudo/](http://rakudo.org/how-to-
get-rakudo/) , Perl 6 is just a specification. What changes do you see in the
specification between now and Christmas?

~~~
cygx
Note that the 'Synopsis' has been demoted to be closer to a set of design docs
than a formal specification - it's more about the test suite these days (cf
first two paragraphs of [http://design.perl6.org/](http://design.perl6.org/)).

Jnthn made a list of things that are supposed to be fixed by Christmas [1] as
well as a list of things that probably won't make it into the 6.0 release [2].

[1]
[https://rt.perl.org/Public/Bug/Display.html?id=123766](https://rt.perl.org/Public/Bug/Display.html?id=123766)

[2]
[https://gist.github.com/jnthn/040f4502899d39b2cbb4](https://gist.github.com/jnthn/040f4502899d39b2cbb4)

------
guelo

        $ brew install rakudo-star
        <.... snip ....>
    
        $ perl6
        > say "hello world, sorry for the wait"
        hello world, sorry for the wait
        >

------
eweise
I've been waiting on the sidelines for 20 years but this release makes me
think its finally time to jump in.

------
ash_gti
I'm pretty excited about the release of perl6. perl6 has a number of
interesting use cases and features. I'll be happy to watch it evolve as more
people pick it up and find new/interesting uses.

------
xtreaky
Here are the official words from Larry. There will be 2 beta releases and the
major one in December.

Larry goes by the handle TimToady

[http://imgur.com/1Vrpl2G](http://imgur.com/1Vrpl2G)

~~~
VanillaCafe
I had to look up GLR: the "Great List Refactor".

[http://pmthium.com/2014/10/apw2014/](http://pmthium.com/2014/10/apw2014/)

"What exactly is the “Great List Refactor” (GLR)? For several years Rakudo
developers and users have identified a number of problems with the existing
implementation of list types — most notably performance. But we’ve also
observed the need for user-facing changes in the design, especially in
generating and flattening lists. So the term GLR now encompasses all of the
list-related changes that seem to want to be made."

------
atomicbeanie
I may not write a bunch of Perl 6, but the planet is better for having Perl 6.
That says a lot about the person who guided Perl 6 to completion, he's a gem
of a guy. Thank you Larry!

------
brudgers
_" If that's what it takes to make Ruby programmers happy..."_

Completely brilliant.

~~~
wycats
It's unnecessarily condescending, especially given that Ruby got `?` and `!`
suffixes from Lisp, which far predates Ruby, and that Ruby itself is in many
ways a descendent of Perl.

~~~
brudgers
_The goal of Ruby is to make programmers happy. I started out to make a
programming language that would make me happy, and as a side effect it’s made
many, many programmers happy. Especially Web developers. But Ruby hasn’t
reached developers who work on embedded devices, mobile devices, controllers,
things like that. I hope to make them happy too._ \-- Matz [1]

Larry Wall's comment recognizes Ruby culture and acknowledges that it is a
good thing. Not surprising given that Perl 6, like Ruby is an everything-is-
an-object language with a lineage from Smalltalk. Programmer
productivity/happiness was one of its goals as well.

[1]: [http://siliconangle.com/blog/2011/08/31/qa-with-yukihiro-
mat...](http://siliconangle.com/blog/2011/08/31/qa-with-yukihiro-matz-
matsumoto-the-creator-of-ruby/)

~~~
kbenson
Well, Ruby also has quite a bit of lineage in _Perl_ , so there's another
layer to that as well. I think a lot of Ruby programmers that are unfamiliar
with Perl would be surprised with how similar they are in some respects.

~~~
brudgers
It would not surprise me that parts of Perl made Matz happy.

------
iso8859-1
Things that won't make it in to 6.christmas (the non-beta release):
[https://gist.github.com/jnthn/040f4502899d39b2cbb4](https://gist.github.com/jnthn/040f4502899d39b2cbb4)

------
z3phyr
When talking about Perl never forget to mention CPAN. Heck this library
ecosystem is still great and running..

~~~
kimi
CPAN installs are the reason I personally avoid perl like the plague today.

~~~
Mithaldu
Why?

~~~
sofaofthedamned
So do I, for the same reasons.

At a previous job perl was used everywhere. As a language, it's quite nice.
CPAN is horrible, though. No staging/stable/whatever versioning, new modules
requires updating versions of existing modules which frequently broke - it's
just not something that's enterprise friendly.

I tried but failed to find a company that would support and curate a subset of
CPAN modules properly. Does one exist now?

~~~
Mithaldu
There are multiple tools to do this on your own, with CPAN::Mini and friends,
or Carton.

I also don't know how long it's been since you last tried, but cpantesters and
the other odds and ends of the ecosystem have helped tremendously in reducing
published bugs. ( [http://matrix.cpantesters.org/?dist=System-
Command%201.115](http://matrix.cpantesters.org/?dist=System-Command%201.115) )

~~~
scopesoft
Checkout Pinto, [http://perlmaven.com/pinto-
tutorial](http://perlmaven.com/pinto-tutorial), which allows you to host your
own CPAN mirror and have stacks. So you could have a "development" stack and a
"production" stack, or a "perl-5.8" stack and a "perl-5.16" stack. Whenever
you add or upgrade a module, it only affects one stack.

------
meshko
Is Duke Nukem Forever out yet?

~~~
mindcrime
Yes, all we're waiting for now is GNU Hurd, and software will be complete.

~~~
alanh
I hate to indulge this thread, but feel obligated to note that Half-Life 3 is
still naught but a name.

~~~
whyever
Half-Life 3 is not even vaporware. It was never announced, was it?

~~~
alanh
The ending of the last-released HL2 episode had a very “to be continued” feel
to it, but more importantly, Valve has made statements about future releases
moving away from “the episodic format” to “smaller releases” and possibly
returning “to genuinely scaring the player,” but it all seems rather dead now.
This section in Wikipedia has some relevant sources:
[https://en.wikipedia.org/wiki/Half-
Life_(series)#cite_ref-37](https://en.wikipedia.org/wiki/Half-
Life_\(series\)#cite_ref-37)

Probably the funniest / saddest / most hopeful part of the whole saga is that
at some point, a group of fans organized a sit-in at Valve HQ to plead for a
commitment to HL3 :)

------
cygx
Some of the code examples suffer from a failure to escape angle brackets...

------
chm
So, for someone who has never read or written Perl code, where should I start?
Perl 5 or 6? I get that they're different languages, but I want to see what
"Perl" is like.

~~~
kbenson
> but I want to see what "Perl" is like

> get that they're different languages

I'm not sure you do get it, unless you are talking about the "feel" of using
it, in which case use either. They aren't just different languages because
there's some things that break backwards compatibility, they are vastly
different in many ways.

If you want to know what current deployed Perl is like, look at Perl 5. If you
want to look at what the "Perl" future is, look at both Perl 5 and Perl 6,
since they'll both be around. If you want to see something new and different,
look at Perl 6.

~~~
chm
I was talking about the "feel", indeed. So for example, if someone wanted to
experience what a Lisp is like, I could point them to Scheme.

I want to know what "Perl" is like, but the fact that Perl 5 and 6 share the
same name is a tad confusing for a newcomer. Precisely because I have no idea
what "standard" Perl is.

I guess Perl 5 it is, since it's already on my machine.

~~~
eCa
The Modern Perl book[1] is highly recommended.

For web development, check out Mojolicious[2] or Dancer2[3]

And Task::Kensho[4] lists recommended modules for various tasks.

[1]
[http://modernperlbooks.com/books/modern_perl_2014/](http://modernperlbooks.com/books/modern_perl_2014/)

[2]
[https://metacpan.org/release/Mojolicious](https://metacpan.org/release/Mojolicious)

[3]
[https://metacpan.org/release/Dancer2](https://metacpan.org/release/Dancer2)

[4]
[https://metacpan.org/pod/Task::Kensho](https://metacpan.org/pod/Task::Kensho)

------
kriro
Someone should implement a Duke Nukem Forever clone in Perl 6.

Pretty excited about Perl 6. Haven't used Perl in a long time but there seems
to be quite a bit of cool stuff and I'm very excited to see what a language
where Larry had more free reign will be like. Xmas reading/coding here we go
(how fitting)

------
tempodox
Oh my. I expect the next version of Perl to read my thoughts and to not
require any source code from fallible mortals. The jury is still out whether
this will produce more bugs than it abolishes. The answer is expected in time
for the end of the universe.

------
protomyth
sidenote: why does a barracuda device consider pigdog.org "Porn"?

~~~
retbull
well they have certain ... associations ... with dog urls so they decided that
dog* was a good ban pattern.

~~~
protomyth
In a perl article, you give a non-matching pattern?

Its just one of those little things we don't think of often, but a lot of
folks buy these devices and its a weird form of censorship beyond what's
normally intended.

------
xiaq
Congrats! But shouldn't some kind of official announcement be made on
perl6.org?

~~~
iso8859-1
There will be, when a stable version is released for christmas.

------
MrPatan
I don't think I'll ever use it again, but I'm glad that it exists.

------
zem
quetion for the early adopters: if i develop an end-user app in perl6 on
linux, how easy is it for me to deliver it to a non-technical windows and/or
mac osx user?

~~~
kbenson
Since Rakudo also targets the JVM, not just MoarVM (the dedicated VM), I
imagine it's not terribly too much work to get to the point where the app,
included modules, and Rakudo/Perl 6 itself can be bundled together for
delivery.

------
iamreverie
oddly enough, a coworker and i were joking about how perl 6 would come out in
the next 100 years on monday and just a few days later larry wall made us look
foolish.

------
the-owlery
Perl 6 needs a good tutorial.

------
bgilroy26
I love Perl [I have been to perl monger meetings and I had to look up how to
'unshift' in python today].

But Python3 is mostly just Python2 with a print function instead of a print
keyword. It is occasionally non-trivial to port large existing code bases from
Python2 to Python3, but it is practically always trivial for a Python2
programmer to write new code in Python3.

I hope Perl 6 will get its own camel book!

~~~
pcmonk
> it is practically always trivial for a Python2 programmer to write new code
> in Python3.

Until you need to use some library that doesn't support python3. I think I've
made the transition from python3 to python2 more than I have the other way
around.

~~~
py3kthrowa
Or until you trip over the API differences between str and bytes in Python 3
that do not exist in Python 2 (because str == bytes in Python 2). Chiefly,
printf-style formatting...

    
    
      >>> b"%u" % 5
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      TypeError: unsupported operand type(s) for %: 'bytes' and 'int'

~~~
Rotten194
Why are you using % at all? It should have been deprecated years ago.

~~~
startling
It's not deprecated, though.

------
curiousjorge
Way too late

------
EGreg
Perhaps it was better veiled :)

------
ryanobjc
Larry Wall Unveils Perl 6 and no comments on hacker news an hour later.

That's the new headline that sums up Perl: an anachronistic programming
language that may never recover from the perl 5->6 decade long 'freeze'. Also
the language is crazy to write substantial programs in!

~~~
krylon
> Also the language is crazy to write substantial programs in!

I would not want to write anything big in Perl 5. But for small-ish scripts
(say, less than a thousand lines) it is pretty hard to beat.

~~~
mikekchar
Perl is awesome for writing big programs in. One of the things that people
find frustrating about Perl is its expressiveness -- that is, there are many
different ways of doing the same thing. The result is sometimes that you get
100 different people doing things 100 different ways.

This is not so much a problem with the language as it is with programmers not
learning to agree on a set of idioms that they will use for a project. They
are not reading each others code and having discussions about what they want
to see.

Languages that impose "the one true way" cut down on the apparent problems,
but you are still going to have massive issues down the road if you build
large projects because nobody is paying attention to what the other people are
doing. Especially on large projects, it is vital that people read and comment
usefully about design issues. In such large projects, removing the choice of
idioms available though language design is a bit like deciding not to carry a
canary down the mine with you because it keeps getting killed by poisonous
gas.

The expressiveness of Perl allows you to choose the idioms that will work best
for your team/project. It is true that it requires more discipline and
communication, but these are the things that are necessary for success on a
big project anyway.

I haven't written any Perl code for years now, but I have always been fond of
it. I find that I can write better code in Perl than in many of the more
restrictive languages that I've used.

~~~
ionforce
> Perl is awesome for writing big programs in.

This isn't even remotely true. No static types, no thank you. Runtime errors
due to misspelled methods? Missing hash keys? Hilarious.

Boy, I hope this scalar isn't undefined!

~~~
esaym
Compile time checks are not a replacement for a good test suite.

~~~
niccaluim
And a good test suite is no replacement for being able to express invariants
in your code. They are complementary tools.

------
rjurney
And nobody cares.

------
bliti
Finally.

------
pbreit
What's Perl?

------
aceperry
Larry Wall is a great guy. Unfortunately, I don't really like Perl. Maybe the
new version will change my mind.

------
Twirrim
> say [+] <3, 1, 4> x __2

It's like the perl developers saw the comments about perl being
indistinguishable from line noise and decided to make it even more so. WTF?

------
meeper16
Give 10 guys the same programming task in Perl, watch 10 completely different
syntactically built innovations come from them.

------
jackdaniel
This rant made me laugh one day: [http://www.schnada.de/grapt/eriknaggum-
perlrant.html](http://www.schnada.de/grapt/eriknaggum-perlrant.html)

Disclaimer: I don't know Perl and I have no opinion if this rant is deserved
or not yet it's an enjoyable read.

~~~
Mithaldu
He admits freely that he is ignorant about Perl, so i am unclear why you would
bother to subject anyone else to such childish insults borne from nothing but
fear and hate of the unknown.

~~~
jackdaniel
I'm not sure what do you mean? I didn't write this rant. I find it amusing
because it has some food for thought – for instance side note about rewarding
idiotic behaviour.

AFAIK Erik Naggum used Perl for a fair amount of time so I wouldn't call it a
"fear and hate of the unknown" and it is about Perl hence also on topic.

So your point is? Did you even bother reading it?

~~~
Mithaldu
> I didn't write this rant.

You bothered to link to it.

> side note about rewarding idiotic behaviour

The raw and naked idea is not entirely incorrect. Literally everything else in
the sentences making up that section is.

> Erik Naggum used Perl for a fair amount of time

> Did you even bother reading it?

Did you? I quote from the screed:

    
    
        I once studied perl enough to read perl code and spot bugs in other
        people's programs [...], but I don't write in it and I don't ever
        plan to use it for anything
    

I don't know about you, but i find that unambiguous.

