September 2008 Archives

Grant Update: y2038 fix

From a mail on Perl 5 Porters:

Attached is the latest 2038 patch from the y2038 branch.

  • Configure now probes for the safe range of the system's localtime() and gmtime(). Perl will use the system functions inside their safe range. [Thanks Merijn]
  • Perl now ships with its own 64 bit gmtime() and timegm().
  • localtime() is made 2038 safe on 32 bit systems using the algorithm described here
  • Time::Local can now handle past 2038.
  • Time::gmtime tests improved and expanded past 2038 and 1901.
  • Time::localtime tests improved and expanded past 2038.

Open issues

  • localtime64.h and .c need to be wired into the Makefile. I don't now how to do this.
  • The LOCALTIME_EDGECASE_BROKEN special case needs to be reincorporated.
  • This has not been tested on a system with an unsigned or floating point time_t.
  • The configure probes are probably broken with a floating point time_t.

Other notes

  • The clever way Time::Local handles the year (8, 108 and 2008 are all 2008) means there are gaps in what years you can run through timelocal() and timegm().
  • Since localtime64.c now has its own timegm() core time modules could make use of it.

I've hit the limit of what I can do alone. I'd like to see this incorporated into the bleadperl trunk so it can get some cross-platform testing.

Running Grants (2008 - IV)

At the moment, these are the latest updates on the running grants:

No updates from Grant manager.
Leon report: I've ported it to 5.10. I haven't really tested it beyond compiling, but I don't expect difficulties there. I've worked on the exportation code. Exporting variables is now supported. I want to add member variables too, but I'm not sure how the semantics should work. I've added globs and filehandles. I've fixed the way package variables work (being written to was
somewhat problematic until recently). I've started implementing regexps for perl 5.8. The basics work now, the modifiers are next on the to-do list. It's not going to be as performing as the (yet to write) 5.10 implementation but it seems robust so far.

My code is hosted at . The commit log should be a peek into what I'm currently doing. Any feedback is welcome.
No updates from Grant Manager.
No updates from Grant Manager.
No updates from Grant Manager.
No updates since last report.
Michael is working on this task, but no further information was provided.
Accordingly with Michael this is practically implemented and finished.
No updates from Grant Manager.
This is the last report from Daniel: The last two weeks were heavily "concept harvesting"... I'm already working on providing the run time features used by src-s1p/ (which is the default Perl 6 MetaClass Implementation). After a lot of planning, we have figured out how to implement some operators, like "for" and "map".

This discussion is exposing how actual implementation of Perl 6 features need to face this operators, to allow the expected lazyness even in operators like "for". We reached the point where "for" is a synonym for "map", and both receives an iterator in item context and returns an iterator.

Iterators in scalar context should be accessible by using prefix:<=> and return one item at a time (despite each iteration of "map" returning 0 or several items). In List context, creates a generic Lazy List and in Slice context, returns a generic Lazy Slice...

All this is probably going to produce changes in the spec, since Iterator is not yet listed as a Built-in type, while larry had so far agreed with the proposed approach.

It's important to realize, however, the this iterators won't be visible by the "user" most of the time (except when implementing some object that should be lazily-evaluated by "map").

Now it is possible to implement "map". The test already shows how it should look like in low-level, and SMOP should be the first implementation to support lazyness in the 'for' and 'map' operators...

Accordingly with latest updates, this grant is almost finished. We are waiting for a final report from Adam Kennedy.
Google Summer of Code 2008 Wrap Up written by Eric Wilhelm:

Google's Summer of Code 2008 is wrapping up now and I'm very pleased with how well The Perl Foundation's students and mentors have done. The five projects which survived the halfway point have all finished with great results.

Many thanks to all of the mentors and students as well as everyone in the community who helped or supported the process. Also, thanks to Google for putting on the program and to Richard Dice and Jim Brandt at TPF.

But the end is only the beginning. We should really get started on next year now. Perl needs to do a better job of attracting students, but I'll have to address these issues in another post.

Most of the students did a great job of blogging their progress, which I think is an important part of Summer of Code for the rest of the community. If you have been following along with any of the student projects, please drop me a note or leave a comment. I would love to hear more opinions from outside of the active SoC participants. Also, please thank the mentors and students for their work. Of course, they "know" you appreciate their effort -- but it really means something if you actually send them an e-mail or say thanks on irc.

For those just joining us, here is a run-down of the SoC projects and some links.

Flesh out the Perl 6 Test Suite
    student: Adrian Kreher
    mentor: Moritz Lenz
    Blog | Code | Moritz's Recap

    student: Samuel Tyler
    mentors: Herbert Breunung and Jos Boumans
    Blog | Code | CPAN distribution

Native Call Interface Signatures and Stubs Generation for Parrot
    student: Kevin Tew
    mentor: Jerry Gay
    Mail | Code | (older branch)

Incremental Tricolor Garbage Collector
    student: Andrew Whitworth
    mentor: chromatic
    Blog | Code

    student: Thierry Moisan
    mentor: Jonathan Leto
    Blog | Code | CPAN distribution | Jonathan's Recap

Get your PPW talk proposals in by 12 September 2008

Our colleagues, the organizers of the Pittsburgh Perl Workshop, asked us to help get the word out about PPW and to remind people that they are currently accepting talk proposals, up until September 12. You can get more details on their web site at

This will be the third year of the event. The past 2 years it has shown itself to be an exceptional and fun Perl gathering. It's worth the effort to attend if you can work it into your schedule.

This is the final report for the Smolder grant, by Michael Peters:

Here are the original deliverables from my grant proposal:

  1. Remove custom XML format in favor of using plain TAP and TAPx::Parser.
  2. Extend Smolder to handle small CPAN style modules more easily and automatically.
  3. Setup a Smolder server for the CGI::Application community to serve as a testing ground and public display for their 110+ CPAN modules.
  4. Add per-project and per-developer RSS feeds as an alternative to email notification.
Obtained results:

(1) is fulfilled with TAP::Parser::Archive that smolder now uses to get the details of the test run in TAP (and some YAML meta information). TAP::Parser::Archive is not specific to smolder but provides a nice way to bundle up the test run of any TAP producing suite.

(2) is done. This was mostly just making it easier in the UI to have lots of smaller projects.

(3) was changed. After discussing it with Adrian Howard (my grant manager), getting approval from the Grant Committee I decided that the effort would be better spent helping out the Parrot project. So the deliverable was changed to setup a Smolder server for Parrot. Which was easy after #1 and #2. So I went a bit further and added a "make smolder_test" target to Parrot itself. Working with the parrot team I've submitted several patches that have been accepted.

You can see Parrot's smoke tests at

It seems to be really useful to them and their feedback has already prodded me to add more features to Smolder (like being able to directly download the TAP stream for individual test files). I plan on sticking around with parrot and adding the following:

  •  "make smolder_test" will replace "make smoke"
  • Adding smolder setups and targets for languages being built with Parrot (probably starting with Rakudo, Pipp and Cardinal)
  • Improving smolder's search interface so that you can not only look up things by a single tag, but multiple tags (to answer something like "when was the last time tests passed on Linux with GCC 4.1?").
(4) is done. I decided to use Atom feeds instead of RSS feeds, but they are basically the same to most people since it's the readers that handle the differences. And I was able to use the excellent XML::Atom::SimpleFeed module.

Mango Grant Closed

Christopher Laco on Mango Grant:

It has been over two years since I received a grant from the TPF to start work on Mango. What started as a fast paced 3 month project has turned into a 2 year project that has come to crawl. At this point in time, the TPF and I agree that it is best to label this project as 'done as-is' so the grant manager and the TPF can be free to concentrate their resources elsewhere.

Do not despair. As it stands, Mango already has a rather large amount of features, code and tests. While the grant will be closed, this is not the end of Mango development. Now that the pressure of getting Mango finished on a specific deadline is relieved, I'll be starting a conversion to Moose and the Moose-based version of Catalyst when it becomes available. I've also moved the repository to GitHub:

Please feel free to email me for a commit bit in the upcoming conversion adventure. Onward and upward.

Running Grants (2008-III)

This is the third biweekly report. These are the news on currently running grants:

  • Mango - Christopher Laco - This grant will be closed in the next few days, and a report published here.
  • Porting PyYAML to Perl - Ingy döt Net - Ingy gave some updates on his grant. YAML::XS is completed, and a pure Perl implementation is being started. A new deadline was defined: Christmas 2008.
  • Improving Smolder - Michael Peters - As said on previous report, Michaed finished this grant. We are working on the closing bits. A report on this grant should be published soon on this blog.
  • Perl on a Stick - Adam Kennedy - Adam continues working on Perl on a Stick. Several sticks were sold/distributed during OSCON, and more should be distributed soon. I have mine, already!
  • SMOP - Daniel Ruoso - No updates from Grant Manager.
  • Fixing Bugs in the Archive::Zip Perl Module - Alan Haggai Alavi - No updates from Grant Manager.
  • Make localtime() and gmtime() work past 2038 - Michael Schwern - No updates from Grant Manager.
  • Test::Builder 2 - Michael Schwern - No updates from Grant Manager.

Parrot Grant Update for March - August, 2008

Apologies for the long delay in this report, I've had some ongoing health problems over the summer. Allison wrote this report to bring us up-to-date, and then we'll continue with the two-monthly schedule.

Parrot releases continue on their monthly schedule. The 0.6.0 release in March reflected major improvements to both the Parrot VM and the Perl 6 implementation on Parrot (Rakudo). The most notable change for Parrot was the implementation of the PMC design (PDD17), which was done by Allison and chromatic. The 0.6.1 release in April included significant enhancements to the Parrot Compiler Toolkit (PCT), as well as even more improvement in Rakudo. It also included a number of speedups in PCT. The 0.6.2 release in May launched the character sets design document (PDD28), updated the PHP implementation to use PCT, and added support for OpenGL. The 0.6.3 release in June marked substantial progress on the Ruby implementation (Cardinal), added a number of operators to Rakudo, added support for complex return types to PCT, and enhanced Parrot's operation on the g++ and gcc compilers.

The 0.6.4 release in July launched improvements to the Smalltalk implementation (ChitChat), migrated the PHP implementation (Pipp) over to PCT, added complex number operations and generic types to Rakudo, added support for smoke testing of Parrot using Smolder, enabled the latest version of Test::Harness, and made core improvements to bytecode disassembly, lexical subroutine handling, and register allocation. The 0.7.0 release in August included the implementation of the concurrency milestone (PDD25) and substantial improvements to the exception system, by Allison and chromatic. It also included the launch of the design document specifying Parrot's intermediate representation (PIR).

There have been several notable developments on the Parrot front. In June, the Parrot project incorporated the Parrot Foundation, a US non-profit foundation dedicated to supporting the development of Parrot and its language implementations. The management of the NLNet grant has been handed over to the new foundation.

The Perl Foundation recently announced a major new grant to support Perl 6 development. Ian Hague has donated $200,000, Roughly half of this money will go directly to supporting Perl 6 development (including Perl 6 on Parrot), with the rest going to help increase the organizational capacity of the Perl Foundation.

Jonathan Worthington has received funding from several community sources which will allow him to work full time several days a month. Jonathan has been putting this time to use both on the core Parrot VM subsystems and Rakudo. Some of the areas he's worked on include IO and Junctions in Rakudo, as well as the object subsystem in Parrot and Rakudo. He has been documenting his ongoing progress in his use Perl journal.

Patrick has also been doing funded work on Rakudo, including major work on the OO subsystem and compiler tools. He has also been helping put together a plan for future Rakudo work, as well as documenting how Parrot and Rakudo are designed, which is very important in enabling new contributors to the project. Most recently, he worked on implementing list and pair parsing for Rakudo, which are core pieces of the Perl 6 language. Patrick has also been documenting his progress in his use Perl journal.

Parrot participated in Google's Summer of Code program. Andrew Whitworth implemented a new tri-color, incremental garbage collector. This work marks a major step towards making Parrot production-ready. Andrew documented his work in his use Perl journal. Andrew's work will be integrated into the core of Parrot as part of the upcoming garbage collection milestone in the NLNet grant. Kevin Tew, a long-time Parrot contributor, was to work on a tool to parse C header files and generate stubs for hooking Parrot to external libraries. History has shown that good integration with C libraries is a key factor in the adoption of a language, so this is very important work. Finally, Adrian Kreher worked to improve the Perl 6 test suite. This work will be very helpful for Patrick, Jonathan, and anyone else who is participating in Rakudo development.

All of this activity meant that we've made a number of grant payments. Patrick Michaud received $2,000 for the initial implementation of the compiler tools. Jonathan will also receive $2,000 for his implementation of the bytecode format. Allison completed the design for garbage collection (PDD09), funding summer speaking engagements with the $2,000. Simon Cozens worked with Allison on the design for character sets and strings (PDD28), for which he received a $2,000 payment. Allison and chromatic completed implementation of the concurrency design (PDD25), and will the $2,000 milestone payment. Allison and Nuno Carvalho completed implementation of the multiple dispatch design (PDD27), and will share the $2000 milestone payment.

The updated schedule for the NLNet grant noting completed milestones can be found on the Perl Foundation website. Once The Parrot Foundation has its own website, we will move this information to that site.

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

August 2008 is the previous archive.

October 2008 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