Running Grants (2009 - II)

Prepare for a big post! Here are the most recent updates from TPF running grants.

  • Test::Builder 2
    Schwern update: TB2 development has been dead for the last few months, largely because I haven't been programming. I'm getting started again, I've been poking at the code again lately, and I'm making three changes to the way its developed.
    1) Reigning in the TB2 goals back to what was in the grant. For a while I had a huge number of potential additions that kind of ballooned out.
    2) I was originally working bottom up, writing out the low-level TB2 components, and it wasn't working as it lacked direction. I've changed to writing a feature stripe fleshing out enough of TB2 to make Test::Simple work. That seems to be working much better.
    3) I'm still the only one coding on the project, which isn't good. I'm starting up a local weekly hackathon group here in Portland to try and get more people involved and also get a rhythm going.
  • SMOP
    Daniel update: A lot has happened, I'll try to summarize it:
    1) We created a ROADMAP directory in mildew that hosts tests for features that are not yet implemented. The t/ directory hosts only tests that are already implemented.
    2) I started writing a more definitive documentation on SMOP, they are called the SMOP lowdocs, and they reside in the lowdoc directory.
    3) A method in mildew now binds a special variable "$?self" which points to the invocant of that method. That variable is used by the "self" keyword, which is now supported in mildew.
    4) mildew now support implicit return of the value of the last statement run.
    5) SMOP build system is now SConstruct, we hope it fits our needs, as it is the third build system we try.
    6) pmurias++ embedded the p5 interpreter in SMOP, mildew can eval p5 code now, sending and receiving values, there's an example using p5 and other using SDL in mildew/example.
    7) SMOP now support exception handling, this is a major implementation since a lot of stuff in Perl 6 is handled as exceptions, like "return", "warn" and others. SMOP already supports both CONTROL blocks and CATCH blocks, the return function can be implemented with all the proper semantics expected. This is a big deal, since SMOP/mildew is the first to implement return as spec.
    8) mildew supports &?BLOCK and &?ROUTINE as spec.
    9) mildew supports MY:: and CALLER:: pseudo-packages as spec, we use a "FlattenedScope" type that receives .{} calls and implement it as "lookup" in the desired lexical scope.
    10) SMOP raised a very important question on how Capture should behave. The spec currently fails to DWIM in several situations. SMOP currently implements one piece of DWIM, but this issue is still open. This also made larry include the "\" modifier in the signature, which means "non-slurpy capture". If you have a :(|$something) signature, it will contain the signature as it was sent to the invocation while :(\ $something) will treat the first positional argument as a capture. This is important to allow foo(bar(baz(),1),2),3) to delay the context at which each value is used. At the same time, using foo( (|$bar) ) means sending a capture as the first positional argument. The point still open is "what should a capture return when coerced to a context it doesn't provide a value for?".
    11) The return function is now part of the SMOP prelude in src-s1p, but it requires "is export". It turns out that traits are implemented as a multi, so we need to implement Multi before we can have "is export". In the meanwhile, "is export" is handled as a compile hack in mildew, but it doesn't solve the problem for "return", because "return is export (:DEFAULT)", so we need the multi.
    12) When implementing CATCH and CONTROL, we needed to add to call-with-current-continuation in SMOP. Now you can send an additional named parameter "cc" to postcircumfix:<( )> in order to provide the current continuation. The CATCH and CONTROL blocks are executed with the outer of it's outer block as the current continuation.
    13) mildew now supports "our" declarations, but you should notice that, unlike Perl 5, "our" doesn't mean global. It just mean that it is registered in $?PACKAGE. But $?PACKAGE is a lexical variable, so you might have an "our" variable inside a "my" package.
    14) mildew now supports Foo::Bar::.method, which means calling "method" in the Package Foo::Bar. mildew consider that the packages are stored in the lexical scope with the "::" suffix.
    15) mildew was refactored splitting all VAST types in different files, this should make it easier to maintain.
    16) mildew now supports attributes in knowhows, this is a requirement to implement Multi, which is implemented already in the SMOP prelude in Perl 6
    17) mildew now supports "loop" and "unless" statement control, which are also a requirement for Multi.
    18) mildew now supports prefix:<=>.
  • The Perl Survey
    Kieren update: I've got things ready for data analysis now. I've done the bulk of the data munging to get things reasonably consistent and tractable anyway, have to skeleton a report structure together next. I think I need to talk to skud about getting what was on next which has fallen off the net she's on holiday right at the moment though I think.
  • The Mojo Documentation Project
    Sebastian has been planning the first chapter, which will be a introduction to web programming in general. Written much like a CGI tutorial but with modern Mojo based examples.
  • Embeding Perl into C++ Applications
    Leon update: Looking back to the list of deliverables I'd say one of them is completely finished (porting to 5.10). Fixing up exportation is almost finished, but not tested much, I'd make that milestone number one. Re-implementing the regexps for 5.10 (including unit tests and documentation) would probably be milestone number two (that's probably the biggest one). Milestone number three should probably be finishing the rest of the unit tests (not that much work) and number four the same about the documentation (though I'm not really sure when to call documentation finished). I haven't really started porting the build process yet, but Adam Kennedy's recent announcement ( sounds like it will make my life a lot easier, that would be the final milestone.
    I've added support for exporting member variables. I've refactored (and renamed, see documentation) the exportation code based on that. I've added tests for method calling and function exportation. Also I've also started writing the regexp code. So far I'm progressing slower that I had hoped, mostly because documentation is lacking and the regular expression engine isn't exactly the easiest part of the perl source code to read.
  • Moose Docs
    Dave wasn't able to work on his grant the last two weeks. He will get back to the grant as soon as possible.

About TPF

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

About this Entry

This page contains a single entry by Alberto Simões published on January 14, 2009 7:41 PM.

2009Q1 Call for Grants Proposals was the previous entry in this blog.

2009Q1 Grant Proposal: Inline C++/CLI is the next entry in this blog.

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