Planet Perl Six

March 09, 2010

perl6.announceCalling All Google Summer of Code Mentors by Jonathan Leto

Howdy,

I am working on the application for The Perl Foundation and Parrot
Foundation to participate in Google Summer of Code 2010 [0]. GSoC is a
program where Google funds eligible students to hack on open source
projects for a summer. It is a great opportunity for the students and
the communities that mentor them. You also may be interested in this
summary of our involvement last year [1]. Our application will be
submitted by the end of this week.

Please join us in getting prepared for this year. There is a page for
possible mentors to volunteer [2]* as well as a page for project ideas
[3]. If you would like to help with the wiki, our main GSoC page [4]
is the best place to start. You are also invited to join our mailing
list [5] and come ask question in #soc-help on irc.perl.org .

Thanks!

Duke

[0] http://socghop.appspot.com/
[1] http://google-opensource.blogspot.com/2009/10/perls-of-wisdom-perl-foundation-parrots.html
[2] http://www.perlfoundation.org/perl5/index.cgi?gsoc_mentors
[3] http://www.perlfoundation.org/perl5/index.cgi?gsoc_2010_projects
[4] http://www.perlfoundation.org/perl5/index.cgi?gsoc
[5] http://groups.google.com/group/tpf-gsoc

* If you listed yourself as a mentor last year and you are not
interested this year, please remove yourself from the page.

--
Jonathan "Duke" Leto
jonathan@leto.net
http://leto.net

March 09, 2010 01:12

March 08, 2010

Carl MasakThe ghost of Algol 68

Ever wonder why bash closes if blocks with fi? This practice was inctroduced in Algol 68, a language that Perl 6 was accused of reinventing yesterday on the perl6-language list.

Curious, I went to the Wikipedia article to read up on Algol 68.

ALGOL 68 (short for ALGOrithmic Language 1968) is an imperative computer programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously defined syntax and semantics.

"Successor." "Wider scope of application". "More rigorously defined syntax and semantics". Sound familiar?

ALGOL 68 has been criticized [...] for abandoning the simplicity of ALGOL 60 becoming a vehicle for complex or overly general ideas, and doing little to make the compiler writer's task easy [...]

Oh dear. ☺ We even have the 'do little to make the compiler writer's task easy' meme in Perl 6...

<TimToady> after all, Perl Philosphy is simply to torment the implementors on behalf of the user (#perl6, 2008-10-09)
<pmichaud> aha! I have a quote for my keynote.

Besides that, there's all these other little parallels, such as

So, there are deep similarities between Algol 68 and Perl 6. There's not much to say to that, except perhaps "huh".

If there's anything in it all that's uplifting though, it's the second paragraph of the article:

Contributions of ALGOL 68 to the field of computer science are deep and wide ranging, although some of them were not publicly identified until they were passed, in one form or another, to one of many subsequently developed programming languages.

If that's not spot on for Perl 6, I think it will be in a decade or so.

March 08, 2010 22:01

Herbert Breunungthe low hanging fruits are gone

an impressive post like that one a week ago won't come again so fast. Last days I added Pawel Murias and Gabor and mentioned pixie, but the main part is done here. The timeline (structured and with 33 items) is now also mostly done. You can also see that we exceeded the zenith of edits. The number of articles touched in last 14 days is now sinking rapidly. it So whats next?

Well renee needs the next perl 6 article, which I want deliver this week. All the experience I collected writing the 200+ changes in last 2 weeks will go into that. But my next goal for the TPF wiki will be the translation of my perl 6 tut and the release of Kephra 0.4.3, which is some weeks overdue.

March 08, 2010 01:21

March 04, 2010

Herbert Breunung3 new facts about the TPF wiki

March 04, 2010 23:35

March 02, 2010

Carl MasakI'm a snowplow

Oops. I think excessive distractedness just made me miss a 10-day interval, thereby falling off the Iron Man challenge. Oh well. [Sidenote: Is there a way to easily check one's Ironman status?]

Lately, I've been feeling a bit like the snowplows shuffling snow around outside my office window. I have a lot of things I want to blog about, but I've been pushing them ahead of me. That's exactly what the Iron Man thing is supposed to counter. Guess procrastination won out in this case.

So, how much blog would a masak write if a masak could write blog? Here's a list off the top of my head of the things I've been thinking of blogging about:

Will I have time in the near future to expand these one-liners into full-fledged blog posts? Only time will tell.

March 02, 2010 11:15

chromaticPerl 6 Design Minutes for 24 February 2010

The Perl 6 design team met by phone on 24 February 2010. Larry, Allison, Patrick, and chromatic attended.

Larry:

Patrick:

Allison:

c:

Allison:

Patrick:

Allison:

March 02, 2010 05:12

Herbert BreunungIt's not over yet

The wiki madness continues, I did 2,3 People stubs(Will Coleda, Gabor) and a lot stubs around Parrot: PCT, NQP, Blizkost, PIR, Parrot compiler, PGE but that will slow down. There are some community related things missing like conferences, hackathons and so on and maybe a perl 6 timeline but what I want to show today, are articles which became well formated good content.

Sprixel was done its coauthor Martin.

March 02, 2010 01:15

February 25, 2010

Herbert Breunungwhat we got so far?

Now its's the third time I'm rambling about the recent TPF wiki overhaul. Beside the fresh cleaned frontpages that just containes links to the 5 most important pages and aggregation of recent recent blog posts (was there before), many new pages were created. before we had 3 or 4 pages about wiki contributers now we have:

Kudos to lot of these people who helped me to write their article. Masak is last because the November bug is still there. :) Then we had an article about KP6, SMOP , Rakudo and Parrot. Now we have:

Special thanks here to chromatic++. Yes, yes almost all of them are stubs, but i add constantly. then I also added:

Like said, many of them are very short, but sometimes its only necessary to give form like a crystalization point.

February 25, 2010 23:46

chromaticPerl 6 Design Minutes for 17 February 2010

The Perl 6 design team met by phone on 17 February 2010. Larry, Allison, Patrick, and chromatic attended.

Larry:

Allison:

Patrick:

Allison:

Patrick:

c:

February 25, 2010 00:27

February 23, 2010

Herbert BreunungI'm glad: Conrad Schneiker is back

He was a major writer in the TPF wiki. At least half of the todays visible content is his and ruosos typework, even if I did spit a lot out these days. Because these efforts, other than his 1000$ donation for November, are largely unrecognized I solute him here. That doesn't mean I brag with my stuff too.

He gave the new frontpage the final polish.

Currently I am focussed on entering all major people and implementations into the TPF wiki. So check please if I'm writing something wrong about you. Yes and chromatic, Allison and Damian are still missing.

February 23, 2010 02:53

February 20, 2010

Herbert BreunungI didn't took my mouth too full:

together with mberends++ we revamped the fronpage of the TPF wiki, sorted links, pages, deleted spam and added some minor content. There are still some old links left but camelia smiles now.

February 20, 2010 02:26

Jonathan WorthingtonUnpacking data structures with signatures

My signature improvements Hague Grant is pretty much wrapped up. I wrote a couple of posts already about the new signature binder and also about signature introspection. In this post I want to talk about some of the other cool stuff I've been working on as part of it.

First, a little background. When you make a call in Perl 6, the arguments are packaged up into a data structure called a capture. A capture contains an arrayish part (for positional parameters) and a hashish part (for smok^Wnamed parameters). The thing you're calling has a signature, which essentially describes where we want the data from a capture to end up. The signature binder is the chunk of code that takes a capture and a signature as inputs, and maps things in the capture to - most of the time, anyway - variables in the lexpad, according to the names given in the signature.

Where things get interesting is that if you take a parameter and coerce it to a Capture, then you can bind that too against a signature. And it so turns out that Perl 6 allows you to write a signature within another signature just for this very purpose. Let's take a look.

multi quicksort([$pivot, *@values]) {
    my @before = @values.grep({ $^n < $pivot });
    my @after = @values.grep({ $^n >= $pivot });
    (quicksort(@before), $pivot, quicksort(@after))
}
multi quicksort( [] ) { () }

Here, instead of writing an array in the signature, we use [...] to specify we want a sub-signature. The binder takes the incoming array and coerces it into a Capture, which essentially flattens it out. We then bind the sub-signature against it, which puts the first item in the incoming array into $pivot and the rest into @values. We then just partition the values and recurse.

The second multi candidate has a nested empty signature, which binds only if the capture is empty. Thus when we have an empty list, we end up there, since the first candidate requires at least one item to bind to $pivot. Multi-dispatch is smart enough to know about sub-signatures and treat them like constraints, which means that you can now use multi-dispatch to distinguish between the deeper structure of your incoming parameters. So, to try it out...

my @unsorted = 1, 9, 28, 3, -9, 10;
my @sorted = quicksort(@unsorted);
say @sorted.perl; # [-9, 1, 3, 9, 10, 28]

It's not just for lists either. An incoming hash can be unpacked as if it had named parameters; for that write the nested signature in (...) rather than [...] (we could have use (...) above too, but [...] implies we expect to be passed a Positional). For any other object, we coerce to a capture by looking at all of the public attributes (things declared has $.foo) up the class hierarchy and making those available as named parameters. Here's an example.

class TreeNode { has $.left; has $.right; }
sub unpack(TreeNode $node (:$left, :$right)) {
    say "Node has L: $left, R: $right";
}
unpack(TreeNode.new(left => 42, right => 99));

This outputs:

Node has L: 42, R: 99

You can probably imagine that a multi and some constraints on the branches gives you some interesting possibilities in writing tree transversals. Also fun is that you can also unpack return values. When you write things like:

my ($a, $b) = foo();

Then you get list assignment. No surprises there. What maybe will surprise you a bit is that Perl 6 actually parses a signature after the my, not just a list of variables. There's a few reasons for that, not least that you can put different type constraints on the variables too. I've referred to signature binding a lot, and it turns out that if instead of writing the assignment operator you write the binding operator, you get signature binding semantics. Which means...you can do unpacks on return values too. So assuming the same TreeNode class:

sub foo() {
    return TreeNode.new(left => 'lol', right => 'rofl');
}
my ($node (:$left, :$right)) := foo();
say "Node has L: $left, R: $right";

This, as you might have guessed, outputs:

Node has L: lol, R: rofl

Note that if you didn't need the $node, you could just omit it (put keep the things that follow nested in another level of parentheses). This works with some built-in classes too, by the way.

It works for some built-in types with accessors too:

sub frac() { return 2/3; }
my ((:$numerator, :$denominator)) := frac();
say "$numerator, $denominator";

Have fun, be creative, submit bugs. :-)

February 20, 2010 00:21

February 19, 2010

Carl MasakE03, the modern, pragmatic, honest version, with corners cut

I was a bit optimistic with time. So what else is new.

Anyway, various distractions such as $WORK kept interrupting my translation of E03 today, but now I've finally got it all ported to modern Rakudo-Perl 6. Here it is. Two biggish things remain:

  1. I haven't tried running the code. I'm pretty sure it won't run on the new Rakudo master yet. But I've written it with alpha (the old development branch) in mind, and it should run there.
  2. I haven't looked at SF's E03 translation yet. (Yes, I'm linking to a blog entry which I haven't read yet.) I saw that the title of his post is "first stab", which makes me feel a little better.

Here are a few random comments about the code.

This exigesis-modernising is kinda fun! Now I'm eager to go read what SF++ has been up to.

February 19, 2010 23:30

perl6.announceRakudo Perl 6 development release #26 ("Amsterdam") by Moritz Lenz

On behalf of the Rakudo development team, I'm pleased to announce the
February 2010 development release of Rakudo Perl #26 "Amsterdam".
Rakudo is an implementation of Perl 6 on the Parrot Virtual Machine
(see http://www.parrot.org). The tarball for the February 2010 release
is available from http://github.com/rakudo/rakudo/downloads .

Rakudo Perl follows a monthly release cycle, with each release named
after a Perl Mongers group. The February 2010 release is code named
"Amsterdam" for the largest chapter of the Dutch Perl Mongers. Perl
development enjoys considerable support from the Netherlands, with
donations from NLNet, and hosting of the feather machines and several
important Perl 6 web domains and sites.

This release is the first release based on the new branch of
Rakudo development begun in October 2009. The branch refactors
the grammar, object metamodel, and a number of other key features
to improve compatibility with the Perl 6 specification and give us
a more solid foundation to build on. Indeed, in many ways the
development of this new branch has driven important changes to the
specification in the areas of lists, iterators, slices, and much
more.

However, this release contains a number of significant regressions
from previous compiler releases. We expect to have full functionality
restored in this branch in the next couple of weeks. For those
looking to explore a wide variety of Perl 6 features or who have
applications developed using previous releases of Rakudo, you may
wish to continue to use the January 2010 (#25, "Minneapolis")
release.

This release of Rakudo requires Parrot 2.1.0. One must still
perform "make install" in the Rakudo directory before the "perl6"
executable will run anywhere other than the Rakudo build directory.
For the latest information on building and using Rakudo Perl, see the
README file section titled "Building and invoking Rakudo".

Some of the specific changes and improvements occuring with this
release include:

* Now using nqp-rx for parsing and actions

* Grammar is much closer to STD in many aspects, and makes use of
protoregexes

* Closures and lexical/contextual variable declarations in regexes work

* Laziness is implemented

* All class and role construction is handled through the meta-model

The Perl 6 language specification is still in flux. Please take note of the
following changes, which might affect your existing programs. In the next
release of Rakudo, the deprecated features will likely be gone.

* The root of the object hierarchy has been changed from 'Object' to 'Mu'.
The type 'Object' goes away.

* The term 'undef' is gone. You can replace it with other constructs,
depending on context:
- 'Nil' is undefined in item context, and the empty list in list context
- 'Mu' is the most general undefined value which does not flatten in
list
context
- as a smart matching target, you can replace '$obj ~~ undef'
by '$obj ~~ *.notdef'

* Builtin classes will derive from 'Cool' (which itself derives from 'Any').
Most of the builtin methods on these classes will be defined in the
'Cool' class instead of 'Any'. See Synopsis 2 for more details.

* Starting with the this release, release identifiers are given
as "YYYY.MM" instead of "YYYY-MM" (dot instead of hyphen).
This is intended to simplify building and packaging for other
distribution systems.

The development team thanks all of our contributors and sponsors for
making Rakudo Perl possible. If you would like to contribute,
see http://rakudo.org/how-to-help , ask on the perl6-compiler@perl.org
mailing list, or ask on IRC #perl6 on freenode.

The next release of Rakudo (#27) is scheduled for March 18, 2010.
A list of the other planned release dates and codenames for 2010 is
available in the "docs/release_guide.pod" file. In general, Rakudo
development releases are scheduled to occur two days after each
Parrot monthly release. Parrot releases the third Tuesday of each month.

Have fun!

[1] http://www.frozen-perl.org/
[2] http://use.perl.org/~pmichaud/journal/39779
[3] http://use.perl.org/~pmichaud/journal/39874

February 19, 2010 09:58

perl6.announceAnnouncing Rakudo Perl 6 Development release #26 ("Amsterdam") by Martin Berends

On behalf of the Rakudo development team, I'm pleased to announce the
February 2010 development release of Rakudo Perl #26 "Amsterdam".
Rakudo is an implementation of Perl 6 on the Parrot Virtual Machine
(see http://www.parrot.org). The tarball for the February 2010 release
is available from http://github.com/rakudo/rakudo/downloads .

Rakudo Perl follows a monthly release cycle, with each release named
after a Perl Mongers group. The February 2010 release is code named
"Amsterdam" for the largest chapter of the Dutch Perl Mongers. Perl
development enjoys considerable support from the Netherlands, with
donations from NLNet, and hosting of the feather machines and several
important Perl 6 web domains and sites.

This release is the first release based on the new branch of
Rakudo development begun in October 2009. The branch refactors
the grammar, object metamodel, and a number of other key features
to improve compatibility with the Perl 6 specification and give us
a more solid foundation to build on. Indeed, in many ways the
development of this new branch has driven important changes to the
specification in the areas of lists, iterators, slices, and much
more.

However, this release contains a number of significant regressions
from previous compiler releases. We expect to have full functionality
restored in this branch in the next couple of weeks. For those
looking to explore a wide variety of Perl 6 features or who have
applications developed using previous releases of Rakudo, you may
wish to continue to use the January 2010 (#25, "Minneapolis")
release.

This release of Rakudo requires Parrot 2.1.0. One must still
perform "make install" in the Rakudo directory before the "perl6"
executable will run anywhere other than the Rakudo build directory.
For the latest information on building and using Rakudo Perl, see the
README file section titled "Building and invoking Rakudo".

Some of the specific changes and improvements occuring with this
release include:

* Now using nqp-rx for parsing and actions

* Grammar is much closer to STD in many aspects, and makes use of
protoregexes

* Closures and lexical/contextual variable declarations in regexes work

* Laziness is implemented

* All class and role construction is handled through the meta-model

The Perl 6 language specification is still in flux. Please take note of
the
following changes, which might affect your existing programs. In the next
release of Rakudo, the deprecated features will likely be gone.

* The root of the object hierarchy has been changed from 'Object' to 'Mu'.
The type 'Object' goes away.

* The term 'undef' is gone. You can replace it with other constructs,
depending on context:
- 'Nil' is undefined in item context, and the empty list in list
context
- 'Mu' is the most general undefined value which does not flatten in
list
context
- as a smart matching target, you can replace '$obj ~~ undef'
by '$obj ~~ *.notdef'

* Builtin classes will derive from 'Cool' (which itself derives from
'Any').
Most of the builtin methods on these classes will be defined in the
'Cool' class instead of 'Any'. See Synopsis 2 for more details.

* Starting with the this release, release identifiers are given
as "YYYY.MM" instead of "YYYY-MM" (dot instead of hyphen).
This is intended to simplify building and packaging for other
distribution systems.

The development team thanks all of our contributors and sponsors for
making Rakudo Perl possible. If you would like to contribute,
see http://rakudo.org/how-to-help , ask on the perl6-compiler@perl.org
mailing list, or ask on IRC #perl6 on freenode.

The next release of Rakudo (#27) is scheduled for March 18, 2010.
A list of the other planned release dates and codenames for 2010 is
available in the "docs/release_guide.pod" file. In general, Rakudo
development releases are scheduled to occur two days after each
Parrot monthly release. Parrot releases the third Tuesday of each month.

Have fun!

[1] http://www.frozen-perl.org/
[2] http://use.perl.org/~pmichaud/journal/39779
[3] http://use.perl.org/~pmichaud/journal/39874

February 19, 2010 09:57

perl6.announceParrot 2.1.1 Released by Will Coleda

Wiseman: When you removed the book from the cradle,
did you speak the words?
Ash: Yeah, basically.
Wiseman: Did you speak the exact words?
Ash: Look, maybe I didn't say every single little
tiny syllable, no. But basically I said them, yeah.

-- Army of Darkness

On behalf of the Parrot team, I'm happy to announce Parrot 2.1.1.
Parrot [1] is a virtual machine aimed at running all dynamic languages.

Parrot 2.1.1 is available on Parrot's FTP site [2], or follow the download
instructions [3]. For those who would like to develop on Parrot, or help
develop Parrot itself, we recommend using Subversion [4] on
our source code repository [5] to get the latest and best Parrot code.

Parrot 2.1.1 is a maintenance release which fixes a memory leak identified
in Parrot 2.1.0

Thanks to all our contributors for making this possible, and our sponsors
for supporting this project. Our next scheduled release is 16 March 2010.

Enjoy!

--
[1] http://parrot.org/
[2] ftp://ftp.parrot.org/pub/parrot/releases/devel/2.1.1/
[3] http://parrot.org/download
[4] http://subversion.apache.org/
[5] https://svn.parrot.org/parrot/trunk/

--
Will "Coke" Coleda

February 19, 2010 09:56

chromaticPerl 6 Design Minutes for 10 February 2010

The Perl 6 design team met by phone on 10 February 2010. Larry, Patrick, Will, Jerry, and chromatic attended.

Will:

Jerry:

Larry:

Patrick:

c:

Jerry:

Will:

Jerry:

Will:

Jerry:

Patrick:

Will:

Patrick:

Will:

Patrick:

Will:

Patrick:

February 19, 2010 03:31

February 18, 2010

chromaticPerl 6 Design Minutes for 03 February 2010

The Perl 6 design team met by phone on 03 February 2010. Larry, Patrick, and chromatic attended.

Larry:

Patrick:

c:

February 18, 2010 04:58

Jonathan WorthingtonThe first release from ng is coming!

Tomorrow's regularly scheduled Rakudo release is the first one since the long-running "ng" branch became master. It represents both a huge step forward and at the same time a fairly major regression. Internally, the changes are enormous; some of the biggest include:

Every one of these - and some others I didn't mention - are important for getting us towards the Rakudo * release. The downside is that since we've essentially taken Rakudo apart and put it back together again - albeit on far, far better foundations - we're still some way from getting all of the language constructs, built-in types and functions back in place that we had before. It's often not just a case of copy-paste; many of the list related things now have to be written with laziness in mind, for example.

So anyway, if you download tomorrow's release and your code doesn't compile or run, this post should explain - at least at a higher level - why. After a slower December and January, Rakudo development has now once again picked up an incredible pace, and the last couple of week's efforts by many Rakudo hackers have made this release far better than I had feared it was going to be. If we can keep this up, the March release should be a very exciting one.

February 18, 2010 01:18

February 17, 2010

Herbert BreunungI'm getting green

By that i don't mean environment-friendly, but something Bruce Banner would understand.

In the next days I want to rage through the dormant TPF wiki and especially clean up the frontpages a bit, that easier navigation will be possible and some crucial infos are updated.

I warn now and beforehand, so that anyone willing can participate or complain now.

P.S.: After Andy Lester answered me, I'm still looking for the admit of this wiki.

February 17, 2010 00:52

February 16, 2010

perl6.announceParrot 2.1.0 Released! by Daniel Arbelo

"One must command from each what each can perform, the king went
on. "Authority is based first of all upon reason. If you command your
subjects to jump into the ocean, there will be a revolution. I am
entitled to command obedience because my orders are reasonable."
"Then my sunset?" insisted the little prince, who never let go of
a question once he had asked it.
"You shall have your sunset. I shall command it. But I shall wait,
according to my science of government, until conditions are
favorable."

— Antoine de Saint-Exupéry, The Little Prince

On behalf of the Parrot team, I'm proud to announce Parrot 2.1.0 "As
Scheduled." Parrot is a virtual machine aimed at running all dynamic
languages.

Parrot 2.1.0 is available on Parrot's FTP site, or follow the download
instructions. For those who would like to develop on Parrot, or help
develop Parrot itself, we recommend using Subversion on our source
code repository to get the latest and best Parrot code.

Parrot 2.1.0 News:

- Core changes
+ GC performance and encapsulation were greatly improved.
+ PMC freeze refactored.
+ More Makefile and build improvements.
- API Changes
+ The Array PMC was removed.
+ Several deprecated vtables were removed.
+ The OrderedHash PMC was substantialy improved.
- Platforms
+ Packaging improvements on some operating systems.
- Tools
+ Some cases in pbc_merge are now handled.
+ Improvements were made to the dependency checker.
+ New tool nativecall.pir added.

Thanks to all our contributors for making this possible, and our
sponsors for supporting this project. Our next release is 16 March
2010.

Enjoy!

February 16, 2010 11:29

February 15, 2010

Carl MasakOk, so the ante is upped: E03

So, apparently my challenge on IRC and on SF's blog got at least SF interested. Which means now there's even a challenge. I'm hoping others will jump on as well. It's simple: just blog your modern Perl 6 version of E03 on Friday.

Will E03 be hard? I don't know, maybe. But we're just trying things out. We're exploring a piece of Perl 6 archaeology, and how old documented intents interact with new actual practices. There's no way to lose the contest, but plenty of ways to win it. And remember, while the official price is One Internet (method of delivery unspecified), your contribution might very well end up in a revised modern-day E03. Or something.

Since there's a Rakudo release on Thursday, and since there's no shortage of rakudobugs to report and features to implement till then you should see the activity only this morning! — I suspect I won't have time to actually start porting E03 until Friday morning. But that should be plenty of time.

February 15, 2010 13:40

(March 10, 2010 13:02 GMT)






This site is powered by planetplanet