November 2015 Archives

Tony Cook writes:

Approximately 42 tickets were reviewed or worked on, and 7 patches were applied.

1.20#120903 review, testing, apply to blead
#120903 fix typo, half-write a perldelta entry and decide not to
0.97#122368 review new patch, comment (eventually)
0.65#123831 review discussion, research and comment
2.52#123867 review newest patches, testing
#123867 review test results, apply to blead
2.98#123981 travis modifications and testing
#123981 review test results, commit authors test change,
post a new patch
0.95#124232 review discussion and reject

Dave Mitchell writes:

I spent October mainly working on two things.

First, I optimised some common arithmetic operators: + - *, so that for the very common case of both args being simple ints in ranges that won't overflow, or both being floats, a simple C-level + or whatever can be directly done. For more complex or mixed args, it falls back to the existing slower code. For ++ and --, I optimised the simple integer case. I also improved the core SET[iun], PUSH[iun] and XPUSH[iun] macros, which set the pad targ to a numeric value and push it on the stack. Since PADTMPs and lex vars (which is typically what a pad targ is) are often used in the same way, e.g. always assigned and used as an integer, those macros now check whether the targ is already of the right type, and if so directly set the value, rather than just blindly calling sv_setiv() etc. The combination of the above makes the nbody benchmark (lots of floating-point vector arithmetic) about a third faster.

Second, I continued overhauling perl's context stack and dynamic scope implementation.


59:16 #124156: death during unwinding causes crash
0:09 [perl #117341] av_undef's POD is confusing
0:33 [perl #125937] 'x' operator on list causes segfault with possible stack corruption
4:35 [perl #126082] unshift to @ISA
1:11 [perl #126145] Problem with stack moving fix for Perl_load_module
2:23 [perl #126170] Assertion failed: S_finalize_op (op.c:2562)
1:55 [perl #126229] POSIX::strerror() clears $!
2:27 [perl #126309] 'x' operator on list causes segfault and confuses valgrind, 64-bit version
0:29 [perl #126472] Bleadperl v5.23.3-33-g6768377 breaks HANENKAMP/Tie-Simple-1.03.tar.gz
0:32 add perldelta entries
13:00 make arithmetic faster
0:34 optimise the Boyer-Moore string finder (as used in REs and index())
11:45 process p5p mailbox

98:49 Total (HH::MM)

As of 2015/10/28: since the beginning of the grant:

106.4 weeks
1600.0 total hours
15.0 average hours per week

There are 0 hours left on the grant.

The Grants Committee has received four grant proposals for the November round. Before the Committee members vote, we would like to solicit feedback from the Perl community on them.

Review the proposals below and please comment there. The Committee members will start the voting process on November 28th and the conclusion will be announced by November 30th.

If your comment does not appear in 24 hours, it is likely that our spam filter did something bad. Contact me at tpf-grants-secretary at


ProposerRequested AmountLink to the Details
Ngangsi Richard AkumboUSD 6,938Women in Technology, Cameroon
Chad 'Exodist' GranumUSD 2,500Test::Simple + Test::Stream stabilization and merge into perl-blead
Chad 'Exodist' GranumUSD 2,000Test::Stream Manual
Will BraswellUSD 1,200RPerl Alioth Benchmarks, Part 2 (*)

(*) This proposal was carried over from the September round.

The grant program wouldn't have been possible without our Sponsors. Thank you so much.

We have received the following grant application "Women in Technology, Cameroon". Please leave feedback in the comments field by November 27th, 2015. If your comment does not appear in 24 hours, contact me at tpf-grants-secretary at

A project proposal for the promotion of technology entrepreneurs, providing a technology hub and training the next generation of technology entrepreneurs by empowering women and girls.

  • Name:

    Ngangsi Richard Akumbo Founder Of Pycon Cameroon Site: Facebook Page: Mobile: (+237)673003303

  • Amount Requested:

    USD 6938

    We are Requesting: 4000 USD to be able to quick start the project since we have very limited resources available to quick start the project.

    We will use this amount to buy the 10 computers, pay for 4 months Internet services.


History of Pycon Cameroon

Pycon Cameroon is a non-profit organization that was founded by Ngangsi Richard Akumbo purposefully to tackle most of the crumbling blogs and issues we face here in Cameroon and Africa. Pycon Cameroon was an independent project form to tackle the technology sector in Cameroon. Pycon Cameroon started up in 14th December 2014. During this first session we held a two days workshop on an introduction in to computer programming using the python programming language. This workshop was to create awareness among women and girls on the essence of computer programming. The workshop lasted for two days. We had an introduction into computer sciences and programming using python programming language. Computer programming is a very rare assert within the society i come from.

In August 2015 we launched a one month program where we trained women and girls on the introduction into Computer sciences using the python programming language. The course was attended by many women and girls in the city of Bamenda. Bamenda is a thriving city in the North west region of Cameroon. Its population is made up of age group ranging from 18 to 30 years old. It is vastly populated by young people. Bamenda is one of the English section of Cameroon since Cameroon is a bilingual country and we represent the minority in the republic of Cameroon. We have less opportunities and the people are in serious hardship because 99% of the government positions in the country is occupied by the French Cameroonians (Franco-phones). So development really does not come that much in our province.

Number of organisation Members: 3 Number of full-time employees: 2 Funding Sources:

Python Software Foundation PO Box 37 Wolfeboro Falls, NH 03896-0037 USA

Benefits to the Perl Community

Firstly this project will begin a new community of Perl developers in Cameroon. The project will increase the amount of Perl developers. It will help to participate in the core development of perl programming when need be. More projects will be developed using the Perl programing language. The project will also help participate in the mailing list of Perl. More Apps will be built using the Perl programming language because of an increase in the community of Perl Developers.


There will we a weekly report that will be sent to the Perl Foundation including details of what is going on with the project and at what stage that we have arrived, the difficulties and the progress which will be made. This report will include videos and pictures with detail account of every progress of the project.

We have received the following grant application "Test::Simple + Test::Stream stabilization and merge into perl-blead". Please leave feedback in the comments field by November 27th, 2015. If your comment does not appear in 24 hours, contact me at tpf-grants-secretary at

Test::Simple + Test::Stream stabilization and merge into perl-blead

  • Name:

    Chad Granum

  • Amount Requested:

    USD 2,500


Stabilize and release the Test-Stream + Test-Simple overhaul.

Benefits to the Perl Community

Test-Simple (an important CPAN distribution which includes Test::Builder and Test::More) is the heart of nearly every test tool for perl. For several years now, the distribution has had very little in the way of progress or development.

For almost two years now, I have been working on revitalizing the project. My work focuses on introducing much needed new features and fixing long-standing issues. I've done all this while maintaining extremely high standards of backwards compatibility.

Here is a list of just some of the benefits:

  • Improved support for UTF-8 and other encodings

    With the current Test::Builder based tools it can be painful to use non-ASCII encodings. The documentation provides an example of iterating over several handles used internally by Test::Builder and changing the encoding one at a time.

    With Test::Stream, the encoding can be changed easily, and on the fly.

  • Better tester-testing capabilities

    There are two tools available for testing tools written on Test::Builder. Both of them have major drawbacks and produce very fragile tests.

    Test::Stream was written with improved tester-testing - writing tests for the library you've written to write tests - as a primary goal. Writing tests for tools built on Test::Stream is very easy and significantly less fragile.

  • API enhancements that learn from the 10+ years of Test::Builder history

    Test::Builder has been at the core of testing in Perl for over 10 years. In this time, many valuable lessons have been learned, usually in the form of design decisions that were wrong but could not be easily reversed. Some stand-out examples are the singleton, monkey patching, and the subtest implementation.

    Test-Stream was developed while taking a hard look at the pain points in Test::Builder. Difficult feature requests and modules forced to use bad-practices to achieve their goals were examined in depth. APIs have been added to address the specific needs that led people to abuse the implementation of the old Test::Builder.

  • Hooks that provide much-requested capabilities

    There are many places in Test::Builder where people have wanted to be able to plug in new functionality. For the most part people had to resort to monkeypatching Test::Builder methods. Monkey patching is not sustainable, and breaks the idea of test-tool interoperability.

    Test::Stream is full of hooks, and is written in a way that new hooks can be easily added if needed.

  • A very complete test suite

    Test::Stream has a very rich and complete test suite. Currently it sits at 95.2% coverage, though this is actually not entirely accurate as Devel::Cover is unable to cover thread tests.

    Note: High coverage does not mean no bugs, and coverage for its own sake is rarely an effective goal.

  • Extremely good backwards compatibility

    Turning Test::Builder into a compatibility wrapper means that a vast majority of existing tools will continue to work unchanged, and will still play nicely with new tools written on Test::Stream. There are a few exceptions to this, but they are rare on CPAN. Generally only modules which need to completely replace the Test::Builder singleton will be broken. Modules which monkeypatch Test::Builder will typically continue to work so long as they follow good practices.

At this point the project is feature-complete and needs to move from rapid-churn into stabilization. The code seems ready, but I need to battle-test it.


  • Test-Stream in bleadperl

    Test-Stream is the new heart of the testing ecosystem. New tools should be built directly on Test-Stream for access to the latest capabilities. Perl's ""blead"" branch is where the next version of perl is developed. Putting Test-Stream in blead is an effective way to get run on many configurations. =item A Test-Simple powered by Test-Stream in perl-blead

    The next Test-Stream will include a Test::Builder that has been modified to defer to Test::Stream under the hood. This will turn Test::Builder into a compatibility wrapper.

    Merging this into blead will result in the new code receiving much more testing against CPAN. Blead is smoked against CPAN very frequently, so it is a good place to put these modules to the test.

  • Completion of the punch-list set by the perl-qa group in Berlin 2015

    At the perl-qa hackathon in Berlin (2015) we had a discussion that resulted in a ""punch list"" of requirements for an overhaul of Test-Simple.

    The list can be found here:

  • A release of Test-Stream without the 'experimental' warnings

  • A non-dev release of Test-Simple that uses Test-Stream under the hood

    This is essentially crossing the finish line, it will effectively put the new code into production.

We have received the following grant application "Test::Stream Manual". Please leave feedback in the comments field by November 27th, 2015. If your comment does not appear in 24 hours, contact me at tpf-grants-secretary at

Test::Stream Manual

  • Name:

    Chad 'Exodist' Granum.

  • Amount Requested:

    USD 2,000


I am proposing to write a Test::Stream manual. The Test::Stream distribution already has very complete module documentation. The manual will build off the individual module documentation and provide very valuable integration and usage details.

Benefits to the Perl Community

Test tool development has been held back for a very long time now. Test::Stream should unblock a lot of areas related to testing, but only if people can figure out how to use it. This manual should make current and future test developments accessible to all perl developers.


  • Test::Stream::Manual

    A brief introduction and table of contents.

  • Test::Stream::Manual::WritingTests

    This section will cover writing tests. This would be a root document with several other page links.

    * The name of the manual page, and the manual layout will need to be finalized.

  • Test::Stream::Manual::Tooling

    This section will cover writing test tools. This would be a root document with several other page links.

    * The name of the manual page, and the manual layout will need to be finalized.

  • Test::Stream::Manual::Maintenance

    This section will cover maintaining Test::Stream itself. This will be a root document pointing to pages that explain the internals, and how they work together.

    * The name of the manual page, and the manual layout will need to be finalized.

We have received the following grant application "RPerl Alioth Benchmarks, Part 2". Please leave feedback in the comments field by November 27th, 2015. If your comment does not appear in 24 hours, contact me at tpf-grants-secretary at

RPerl Alioth Benchmarks, Part 2

  • Name:

    Will Braswell

  • Amount Requested:

    USD 1,200


RPerl v1.2 has been released with a working N-body benchmark, as promised. Thanks to RPerl, we are now able to run N-body at the speed of C++, which was claimed by many in the Perl community to be impossible. This grant proposal is to create 2 additional Alioth benchmark applications.

Benefits to the Perl Community

Alioth is the premier language benchmarking website, and Perl is ranked at-or- near the bottom of several different benchmark applications.

Many members of the general public will be turned away from Perl adoption by the terrible ranking of Perl among other programming languages. The N-body benchmark is 1 step forward, now we need to take 2 more.

The Perl community will benefit by a dramatically more positive public language ranking, and (hopefully) an increase in new Perl users as a result.


Deliverables for this grant proposal are:

1. Mandelbrot fractal benchmark application 2. Any other Alioth benchmark application except regex-dna, as chosen by TPF

Dave Mitchell has requested an extension of $20,000 for his Maintaining the Perl 5 Core grant. This will allow him to dedicate another 400 hours to this work. During this grant he sent weekly reports to the p5p mailing list as well as providing monthly summary reports that have been published on this blog, the most recent of which are linked below:

Report for Month 22
Report for Month 23
Report for Month 24

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

If successful this extension will be funded from the Perl 5 Core Maintenance Fund.

YAPC::NA::2016 Update #1


We know that many of you are concerned about the status of YAPC::NA::2016. Let us assure you, we are working hard towards next year's event. Planning began approximately a month before YAPC::NA::2015 was over, however we've hit a number of roadblocks along the way. We haven't really been able to say much, until now, and that's been frustrating for us as well as for you. Thank you all for your patience.

The information we currently have is still sparse, but hopeful. Over the last few months we've been trying to secure an excellent location for YAPC::NA::2016, and are well on our way to doing just that. We've been steering our selection to a venue east of the Mississippi, with our first choice in Washington, D.C. Unfortunately, we were not able to reach an agreement with a venue there. Our second choice was in Philadelphia. We were unable to work out a viable solution for a venue there either, much to our continued disappointment. As a result, we have steadfastly moved on to Plan C!

Plan C is still in the youth stages. The venue committee has entertained a number of additional proposals. They currently have narrowed it down to a choice between three different states. Depending upon the final location, we are most likely looking at either June 6th to 8th or June 20th to 22nd. The final date is entirely dependent upon the chosen venue's availability.

We are exceedingly grateful for all of the excitement and enthusiasm we've seen expressed so far. Last year's YAPC was a huge success and we are very much looking forward to bringing you an even better event this year! Stay tuned for additional updates as we are able to relay them.

Thank you.

Dave Mitchell writes:

I spent September mainly working on two things.

First, I made the stack grow macros EXTEND and MEXTEND more robust against count truncating and wrapping, especially on platforms where the sizes of ints and pointers differ. The initial impetus to do this was a bug reported against the repeat operator ('x') in list mode on a platform with 32-bit pointers but 64-bit ints; but new compiler warnings generated by the modified macros allowed various other potential issues to be identified and fixed.

Second, I improved the Boyer-Moore string finder - as used by index() with a constant substring arg, and as used by the regex engine to spot fixed substrings and quickly reject or find suitable starting position before running the matching engine proper (i.e. the NFA). It now makes more use of the C library's memchr() function, which on some platforms is written in assembler and is very fast.

On my glibc linux x86_64 systems, this code is now 7 times faster:

$s = "a" x 1000 . "wxyz";
$s =~ /wxyz/ for 1..30000;

Both these changes are currently smoking and should be merged into blead shortly.


5:47 Bleadperl v5.23.1-202-g808ce55 breaks VDB/Test-Dist-Zilla-0.002.tar.gz
3:37 [perl #125907] OPpASSIGN_COMMON work broke net-snmp
26:44 [perl #125937] 'x' operator on list causes segfault with possible stack corruption
0:47 [perl #126082] unshift to @ISA
25:12 optimise the Boyer-Moore string finder (as used in REs and index())
20:06 process p5p mailbox

82:13 Total (HH::MM)

As of 2015/09/30: since the beginning of the grant:

102.4 weeks
1501.2 total hours
14.7 average hours per week

There are 99 hours left on the grant.

Act Voyager Progress as of November 1st

1 Comment

It has been quiet around the Act Voyager project...

but some really important things are slowly coming together!

To build a REST API for Act there are some frameworks that would be suitable... and none of them are perfect. And for a long time I had been pondering if I should use Dancer2 or the Web::Machine. Dancer2 is missing a lot of functionality desperately needed to make HTTP actually work. Web::Machine I always had my doubts about it's correctness of the underlying state-machine (by Basho). And recently I have made up my mind. The Web::Machine state-machine is NOT compliant with the HTTP specs and therefore I am not going to use it. And will invest time and energy in writing plugins for Dancer2 that will follow the RFC's.

Reading the RFC is quite hard, and once understood, writing a Dancer2 plugins is the next step. In my attempt to do a better job then others have tried before me, I need to keep things separate, just like the RFC's:

RFC 7231 Section 5.3: Content Negotiation
RFC 7232: Conditional Requests
RFC 7234: Caching
RFC 7235: Authentication

The last weeks I have been working on the four key technologies mentioned above and many pieces of the HTTP plugins are almost ready for deployment. At least, they work in the example scripts I used, but should have proper tests... and documentation - urmpf! Once those plugins are available for Dancer2 I hope that many developers will follow the simple pattern to write their own API's.

The coming weeks I will finish those plugins and present them in a very comprehensive overview at the London Perl Workshop.

Once finished with those plugins, Act-Voyager can be developed further and can make use of essential parts of the HTTP protocol... Caching, Conditional Requests, Authorization and Content Negotiation...

Oh... and if someone knows about a way to cache responses - RFC compliant - please let me know...

See you at the London Perlworkshop, Saturday 12th December


The Grants Committee is accepting grant proposals all the time. We evaluate them every two months and another evaluation period has come.

If you have an idea for doing some Perl work that will benefit the Perl community, consider sending a grant application. The application deadline for this round is 23:59 November 16th UTC. We will publish the received applications, get community feedback and conclude acceptance by December 1st.

The format will be the same as the previous rounds in 2014-2015.

To apply, please read How to Write a Proposal. Rules of Operation will also help you understand how the grant process works. We also got some grant ideas from the community.

We will confirm the receipt of application within 24 hours.

If you have further questions, please comment here or contact me at tpf-grants-secretary at

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 November 2015 listed from newest to oldest.

October 2015 is the previous archive.

December 2015 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