September 2011 Archives

Dave Mitchell has requested an extension of $20,000 for his Fixing Perl5 Core Bugs grant. During this grant he has sent weekly reports to the p5p mailing list as well as providing monthly summary reports that have been published on this blog. He has also provided the following summary of his work to date:

In the course of the last year and a half, I have closed 68 bug tickets directly related to bugs I have fixed, plus a further 9 duplicate tickets. I have have also closed 82 other tickets as part of reviewing the bug queues. This total of 159 closed tickets represents approximately 10% of the tickets that were open at the start of this grant. The oldest ticket I fixed was over 11 years old.

The areas I have spent most time on have been related to security and tainting, segfaults, tieing and overloading issues, and the many issues with /(?{...})/

Before we make a decision on this extension we would like to have a period of community consultation. Please leave feedback in the comments or if you prefer send email with your comments to karen at

Dave Mitchell writes:

As per my grant conditions, here is a report for the August period.

Spent it mainly working on fixing the design flaws in re_evals (i.e. /(?{...})/ ). I now have it mostly fixed for the literal and non-qr case, in the branch davem/re_eval

Over the last month I have averaged 14 hours per week.

As of 2011/08/31: since the beginning of the grant:

77.4 weeks
864.2 total hours
11.2 average hours per week

There are 36 hours left on the grant.

Report for period 2011/08/01 to 2011/08/31 inclusive


Effort (HH::MM):

0:00 diagnosing bugs
65:15 fixing bugs
0:00 reviewing other people's bug fixes
0:00 reviewing ticket histories
0:00 review the ticket queue (triage)
65:15 Total

Numbers of tickets closed:

1 tickets closed that have been worked on
0 tickets closed related to bugs that have been fixed
0 tickets closed that were reviewed but not worked on (triage)
1 Total

Short Detail

62:40 [perl #34161] METABUG - (?{...}) and (??{...}) regexp issues
2:35 [perl #96354] longstanding panic in \H regex, but not on \P{HorizSpace}

Liquid Web Donate to P5 CMF

Liquid Web are the latest company to donate the significant sum of $10,000 (USD) to the Perl 5 Core Maintenance Fund, Liquid Web wish to "assist in the continued development and maintenance of the dynamic and powerful Perl programming language".

Liquid Web, Inc. are a rapidly growing managed Web Hosting company, with locations in Michigan and Arizona with a clear commitment to innovation and development. Liquid Web has developed much of its software using Perl and will continue to do so in the future so consider it essential to help support the Perl community. The programming language serves as an integral tool for the continued development of the company's existing systems such as its billing, support and monitoring programs.

Liquid Web Founder and CEO, Matthew Hill, speaks on the importance of the Perl Community, "Giving back to the Perl community is something we've been interested in for some time. As Liquid Web continues to expand and grow, we find the need for more developers proficient in Perl grows in kind. Supporting Perl's continued excellence ensures that important programs that have proven invaluable to Liquid Web's success will continue to perform to our specific needs."

Karen Pauley, President of the Perl foundation, was delighted with the news of the donation. "This investment in Perl's future from Liquid Web will go a long way to help maintain the viability of Perl 5 as a platform for the many businesses that depend upon it and will deliver a positive impact upon the entire Perl community".

Liquid Web Inc. is a privately held managed web hosting company founded in 1997, with three wholly owned data center facilities located in Lansing, Michigan. In 2010 Liquid Web opened a software development office in Scottsdale, Arizona. Liquid Web is a leader in the professional web hosting market with an unwavering dedication to providing the best hosting products available.  Liquid Web has over 20,000 clients served in over 120 countries.  To service our customers we have assembled a world class Heroic Support staff and a proactive Sonar Server Monitoring team, professionally educated and easily accessible 24 hours a day, 7 days a week. Liquid Web received the INC.5000 Fastest Growing Companies award in 2007, 2008, 2009, 2010 and 2011. 

We have received the following Hague Grant application from Carl Mäsak.

Before we vote on this proposal we would like to have a period of community consultation. Please leave feedback in the comments or if you prefer send email with your comments to karen at


Carl Mäsak

Project Title

Implementation of macros in Rakudo


This project will provide Rakudo Perl with AST-based macros. Recently I started discussing various approaches to implementation with Patrick Michaud, Jonathan Worthington, and Larry Wall. The design we arrived at points to a concrete sequence of steps to implement macros in Rakudo.

Benefits to Perl 6 Development

Macros are a Perl 6.0.0 feature that has been discussed since A06 was released back in 2003. The 6.28318 milestone of Pugs promises to deliver macros, but Pugs was released only up to version 6.2.13 before the project went on indefinite hiatus. Neither Rakudo nor Niecza implement macros yet; the closest thing to a Perl 6 macro implementation is a few unpublished experimental prototypes by Stephen Weeks over the years.

Furthermore, a number of online documents mention macros and their projected semantics; viz. A06, E06, S06, and lately some examples on Rosetta Code. The descriptions of macros and their capabilities in these documents are often unclear, confused, contradictory, or just plain wrong. This is the typical "liquid" phase of specifications, where no implementation exists to validate or falsify the claims made in the descriptions of a feature, and so explanations and expectations vary all over the map.

There's a handful of tests for macros in the spectest repository already, testing such things as macro operators and hygienic macros. More tests, and a more systematic enumeration of test cases, would be needed in order for macros to have sufficient test coverage.

This project aims to provide a powerful, extensive, robust first implementation of macros with good test coverage for Rakudo Perl.


D1. Macro declarations and invocation. Rudimentary quasiquotes.

D2. Quasiquote splicing.

D3. Hygienic macros and the COMPILING:: pseudopackage.

D4. "Delayed" declarations of routines and types within quasiquotes.

D5. Updates to the S06 to align the spec with the implementation.

D6. Spectests to cover the implemented features.

D7. Regular reports on implementation progress.

Project Details

This project will bring the solidity of the specification from "liquid" to "sludgy"; that is, a first implementation of macros will be created, from which the specification can be improved, conclusions can be drawn about what we really want from macros, and further course corrections can be made to specification and implementation(s) so that the the status of the feature can eventually, at a point outside of the scope of this project, be considered "solid".

The D1..D4 deliverables are discrete steps along the way to a full implementation of macros.

The D1 deliverable implements the simplest kind of macro that could possibly work. This partial implementation will allow macros to be declared and then called from code. There are three ways to invoke a macro: as a listop, as a function, and as an operator. All these ways will be provided by this deliverable.

With splicing in D2, quasiquotes go from being "rudimentary" to being fully-implemented. The "splicing" part means injecting Perl6::AST objects into the quasiquote, in analogy with how variables inject string values into double-quoted strings. This way, macros will be able to create different kinds of code depending on their parameters. Note that a quasiquote is parametric at macro parse-time but always fully qualified after it has been evaluated as the macro is executed.

By design, quasiquotes are always declared as being contained in a block of their own -- however, the block is inlined as the macro is applied. "Hygienic macros", delivered through D3, means that a variable $x in the quasiquote won't collide with a variable $x declared in a lexical scope in which its macro was invoked. (This will likely need to be done with gensym rewriting of the quasiquote's variable.) The COMPILING:: pseudopackage is an explicit mechanism to conflate the two variable names in an orderly fashion. It will also be provided by this deliverable.

The big deliverable is D4, because no mechanism like that exists in Rakudo today. As the Perl 6 grammar in Rakudo parses declarations, it triggers actions to register type names and routine names in various scopes. A quasiquote is different, because at the point it is parsed, the declarations are not supposed to result in names being registered in the normal locations. (Name registration still needs to happen, but only at the point of macro application.) For D4, a mechanism needs to be created which (1) registers the name in the quasiquote somehow, so that declared names are recognized inside the quasiquote, and (2) stores them as "registration events" for when the quasiquote is incorporated into mainline code. Note that, since quasiquotes are still parametric at macro parse-time, the registration events need to be parametric in much the same way.

For D5, some required specification changes are already known, but doubtless the need for making changes will also come up as an implementation emerges.

Project Schedule

The project will take approximately four calendar months. The work with the specification (D5), tests (D6), and project reports (D7) are ongoing throughout the project; other work, assuming the grant is accepted in late September, is scheduled as follows:

Early October: D1 complete.

Late October: D2 complete -- halfway point.

Late November: D3 complete.

Mid-January: D4 complete.

By mid-January, D5, D6, and D7 will also be "complete" in the sense that reports will have been regularly made according to the schedule, tests will have been written along with or in anticipation of implementing features, and (the non-conjectural parts of) the spec will, to the best of my efforts, align with and describe the provided macro implementation.

Similarly, at the halfway point, D5/D6/D7 will be caught up with D1/D2.

Report Schedule

I will be able to allocate about 16 hours per week for this project. I plan to blog regularly on By "regularly", I mean at least once every three weeks.

Public Repository

Work will take place in a branch in Rakudo's github repository. The change logs will be viewable through github's web interface.

Grant Deliverables ownership/copyright and License Information

All copyrights for this work, just as for Rakudo itself, will be held by The Perl Foundation, and licensed under the Artistic License 2.0.


I have been an active Perl 6 community member since 2005, and an active bug reporter and occasional committer to Rakudo Perl since 2008. I've wanted to use macros in Perl 6 since A06 came out.

This project will require familiarity with grammars/actions, the meta-object protocol, and serialization contexts. In previous years, I've worked a lot with grammars, and even ported an early Perl 6 grammar engine from PIR to Perl 6. I have a rough grasp of Jonathan Worthington's work on the MOP and serialization contexts, and I'm confident that I'll get up to speed about the rest.

I have a firm grasp of Perl 6 semantics, having spent the past three years writing mid-sized Perl 6 applications. I know a thing or two about the limits and the internals of Rakudo, having submitted more than 1100 RT bug reports on it since 2008. Perhaps more importantly, these two activities give me a sense of my own capabilities with respect to implementing a moderately advanced feature in mostly-Perl 6 inside Rakudo.

Amount Requested

4 months at 40% speed and US$5,000/full month == US$8,000

I'd suggest US$4,000 paid on successful completion up to the halfway point, and US$4,000 paid on successful completion of the whole grant.

I am happy to announce that Dr. Nicholas Clark's grant proposal, Improving Perl 5, has been accepted. Thanks goes to the community members who took time to provide feedback on this proposal, to Jesse Vincent, and to all those who have made donations to the Perl 5 Core Maintenance Fund.

Perlverse: $foo and Renée Bäcker

Series Introduction

This is a series of articles on various elements of the Perl community that I like to refer to as the 'Perlverse'. The series is not in a particular order and election to it is entirely subjective and mostly based around my knowledge of the person or item. They are intended to highlight the rich variety of people, companies, projects and events that happen in the Perl world and can be used as the basis of examining the rich diversity of the Perl culture.

If you would like to add commentary or further information into the body of an article, or if you would like to elect an item to this series for me to write upon then please contact me with your information or proposal.*


*At which point the series will gain further objectivity

Renée Bäcker and $foo Magazine


$foo Magazine is a quarterly publication that is entirely devoted to Perl, it is currently only available in German and is on its nineteenth issue.

The purpose of $foo magazine is to present and discuss projects written in Perl; to keep up-to-date with the latest news in the community including about The Perl Foundation; to publish tutorials on Perl projects such as WxPerl, Perl 6, Moose; it also gives news on CPAN modules (6 new modules are covered in each issue).

$foo Magazine targets itself primarily at senior or advanced developers and project managers working with Perl and is intended as a continuous resource.

$foo Magazine takes its role as a community resource very seriously and seeks to support and promote the community it focuses upon. If you have attended a workshop or YAPC in Europe you will have likely seen $foo on the list of sponsors as they support community events. They are, of course, particularly active in the German Perl world but also in the wider world, they recently gave a generous, and unpublished until now, donation to the Perl 5 Core Maintenance Fund.

$foo Magazine is of course the brain child of Renée Bäcker. Renée runs his own Perl business that offers training, software development with Perl and OTRS customisation.

But of course Renée does far more than just run a business and produce a premiere Perl magazine, he also manages and is an active member of who will organize next year's YAPC Europe to be held in Frankfurt. You can follow the YAPC::EU::2012 blog.

Renée has always sought to be a positive member of his local community and of the larger Perl world and is a regular face at Perl conferences and events. But, he also manages Perl booths at several non-Perl related events like FrOSCon (Germany), FrOSCamp (Switzerland), Chemnitzer LinuxDays (Germany) amongst many others. he is a keen advocate of Perl and hopes to expose the larger community to the progress and evolution in the Perl world.

Despite all of this Renée remains a very modest individual who likes to praise others around him and is a valued member of the Perl community.

GSoC - Final Wrap

This year's Google Summer of Code came to an official close on Monday 29th September 2011. Let me briefly remind you of our students and mentors:

  1. André Walker - Rework Catalyst component setup code Mentored by Tomas Doran and Eden Cardim
  2. Brian Neil Fraser - Making the Perl Core UTF-8 clean Mentored by Florian Ragwitz and Zefram
  3. Carlos Ivan Sosa - Removing the upgrading necessity of the Dancer script with a module Mentored by Sawyer X and Franck Cuny
  4. Marc Green - Standardization of core documentation parsing tools Mentored by Ricardo Signes and David E. Wheeler
  5. Moritz Onken - CPAN search for the modern web Mentored by Clinton Gormley and Olaf Alders
  6. Tadeusz Sośnierz - Pod parser for Rakudo Mentored by Moritz Lenz and Carl Mäsak

In addition we also had Sawyer and Rafl providing a lot of the administrative duties with additional help from mdk (me) in regards to marketing and promotion.

I announced at YAPC::EU, which was the week that we saw the close of development for students, that we (mentors) would be passing all of our students, and that as an organisation we saw a 100% success this year. I can now confirm that Google agrees with us and that every student completed their assigned project. Though to be honest we all achieved a lot more than that.

We have now formalised the manner in which the GSoC can be managed with documents and guidelines for mentors and students to follow yearly that are stored in a central repository to be enhanced and improved in the coming years.

We have developed support structures and practices for the projects and mentors to follow to help them maintain a healthy relationship with the chosen students.

We have started the process of promotion and advertisment of the project and goals which can once more be built upon in the future.

We have demonstrated that communication, report and feedback as a consistent cycle throughout the process results in a success. Also that we can nurture and progress with the students/project during the year and this often creates offshoots and enhancements of that project from the existing community.

I personally feel very humble as there was a great deal of effort from both the students, mentors, project communities and organisers that has been rewarded with this magnificent result. I would also like to thank those people who provided additional support such as Hellkat who provided us with a fast development box so that we could build Perl quickly for one of the students to help with their project.

This has been a great year for the GSoC, it has been an honour for me to play a small part in it and I am hoping the mighty Google renew the project next year so that we can all take this magnificent ride again.

About TPF

The Perl Foundation - supporting the Perl community since 2000. Find out more at

About this Archive

This page is an archive of entries from September 2011 listed from newest to oldest.

August 2011 is the previous archive.

October 2011 is the next archive.

Find recent content on the main index or look in the archives to find all content.


OpenID accepted here Learn more about OpenID
Powered by Movable Type 6.2.2