Stories
Slash Boxes
Comments

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Allison (3003)

Allison
  (email not shown publicly)

Human (I think).

Journal of Allison (3003)

Wednesday August 15, 2007
03:22 PM

Perl and LaTeX

I'm working on the final typesetting for the mod_perl 2 User's Guide. My brain is filled with style conventions, and index items, and installation options, Oh My! In the process, I've nearly tripled the size of chromatic's Pod::PseudoPod::LaTeX (a subclass of my Pod::PseudoPod), carrying it from the styles needed for a novel (text and headings), to the styles needed for a full-powered technical book.

I have to say, I'm really loving LaTeX. It has a package for everything. A bit like Perl, really. Also like Perl in its lovably quirky nature.

Tuesday June 19, 2007
08:03 PM

Parrot 0.4.13 "Clifton" Released

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

Parrot 0.4.13 can be obtained via CPAN (soon), or follow the download instructions.

Parrot 0.4.13 News:

- Languages:
+ Updated Lisp, Lua, PHP ("Plumhead"), Python ("Pynie"), ABC,
   WMLScript, and Tcl ("ParTcl").
+ Perl 6 passes all of the sanity tests.
+ PGE supports latest Perl 6 grammar syntax. Perl 6, Python
   ("Pynie"), and ABC parsers updated to match.
+ Updated PHP ("Plumhead") to Antlr 3.0.
+ Lua added the beginnings of a PGE/TGE based compiler (not yet
   replacing the Perl/Yapp compiler).
+ Lisp updated for current features, added a test suite.
- Core Implementation:
+ Filled in features and backward compatibility for PDD 15 objects.
   New object metamodel passes 85% of old test suite.
+ GCC API symbols are visible externally only when explicitly exported.
+ Added generated GCC compiler attributes to increase warnings, and
   cleaned up resulting warnings.
+ Code cleanup efforts and fixed memory leaks by the cage cleaners,
   resulting in notable speed increases.
- Misc:
+ Updated Parrot distribution to Artistic License 2.0, from dual
   Artistic 1/GPL license.
+ SDL examples brought up-to-date with current features.

For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Subversion or SVK on our source code repository to get the latest and best Parrot code. The next scheduled release is July 17, 2007.

Thanks to all our contributors for making this possible, and our sponsors for supporting this project.

Enjoy!

Friday January 12, 2007
04:27 AM

Perl saves the day

Tuesday January 02, 2007
02:51 AM

Punie tests all pass again

I converted Punie over to using PAST-pm's way of representing conditionals. I tried out altering Punie's parsing of conditionals to match Perl 6's, but it turns out parsing else/elsif blocks recursively results in simpler parse->past transformation rules than the iterative way Perl6 is parsing them. So, I kept Punie's existing parse rules.

I had to set the 'pasttype' attribute in the PAST::Op node for '=' to 'assign' rather than setting the 'pirop' attribute to 'assign'. This stops the PIR generator from trying to assign 3 values to a string. It's an oddish work-around, possibly a bug in the past->post transformation, I'll come back and look at it later.

I had to set Punie variables to vivify as undef, by setting the 'viviself' attribute on PAST::Var nodes to '.Undef'.

I changed all the builtin operator names to have 'infix:' on the front. This is the Perl 6 way of naming operators, and I haven't decided if I want to keep it. I'll come back to it later.

And finally, I had to set '&&' operators to a 'pasttype' of 'if', and '||' operators to a 'pasttype' of 'unless'.

With those changes, all Punie test pass, so I'm checking it in. The next step is some refactoring and cleanup.

Sunday December 24, 2006
03:46 AM

Punie printing again

I'm in the process of porting Punie to the new Partridge (PAST-pm) toolchain. Tonight I got single and double quoted strings to work, thanks to Patrick's solution of leaving off the 'ctype' attribute from the PAST::Val node, and by retrieving the full matched string including surrounding quotes instead of the bare string contents (so it can pass through exactly as parsed).

I also switched comma ops over from the custom parse I was using before to a standard operator-precedence parse, and fixed up the AST transforms to handle the restructured parse tree. With these two changes, all of Punie's t/io_print.t is now passing.

The remaining failing test files are t/base_cond.t, t/base_if.t, and t/comp_cmdopt.t. All of these depend on conditionals, so there's a good chance that updating Punie to use the new toolchain's way of producing conditionals will be the final step of the port.

Monday November 27, 2006
06:38 PM

The 6 Days of Christmas

Now we really have to call Parrot's compiler tool chain Partridge. Thanks to Jonathan Worthington.

On the first day of Christmas my true love sent to me,
A Partridge with a parse tree,

On the second day of Chritmas my true love sent to me,
Two ASTs,
And a Partridge with a parse tree,

On the third day of Chritmas my true love sent to me,
Three POST nodes,
Two ASTs,
And a Partridge with a parse tree,

On the forth day of Chritmas my true love sent to me,
Four bytes of bytecode,
Three POST nodes,
Two ASTs,
And a Partridge with a parse tree,

On the fifth day of Chritmas my true love sent to me,
FIVE LANGUAGES COMPILING!
Four bytes of bytecode,
Three POST nodes,
Two ASTs,
And a Partridge with a parse tree,

On the sixth day of Chritmas my true love sent to me,
Six versions of Perl,
FIVE LANGUAGES COMPILING!
Four bytes of bytecode,
Three POST nodes,
Two ASTs,
And a Partridge with a parse tree.

03:36 AM

Partridge Ketchup

Okay, I'm not even going to try to catch up with all the Parrot stuff I've done since I last posted. The mailing list archives pretty much cover it.

On Friday I visited Jerry Gay and his wife Bethany. Jerry and I spent some time hacking on Parrot, and I made a good bit of progress on converting Punie over to Patrick's new PAST, POST, and HLLCompiler module. Over the weekend I've pushed the port to the point where it's generating valid PIR for many of Punie's basic low-level constructs. Some of the larger pieces are going to need a serious conceptual refactor: the top-level structure of the AST, conditionals, comma lists, etc. The new PAST has ways of handling them, they're just very different than Punie's current implementation.

On a related note, here's why the new compiler toolchain should be called "Partridge":

partridge
p......ge
...t...ge
par[s]..e
pa.tri[ck]

Obvious, isn't it?

Tuesday September 12, 2006
03:11 AM

My other journal

This is Allison's other journal. Not a replacement, just an addition.

Oh yeah, I've got quite a bit of Parrot stuff to catch up on here.

Friday June 16, 2006
01:39 AM

Pick up, dust off, keep walking...

My past month hasn't been entirely absorbed by troubleshooting failing hardware and setting up new hardware. Despite working on a different box pretty much every week, I've made significant progress on TGE. I still have more refactors planned, but I'll be spending the next couple of weeks working on Punie, to see how far I can push it before my YAPC::NA talk.

Yesterday I added scalar variables and the assignment operator to Punie. Today I added the comparison operators ==, !=, <, >, <=, >=, eq, ne, lt, gt, le, and ge. I'm impressed by how much easier and faster it is to develop Punie after all the TGE improvements.

Today is a milestone for Punie: it passed its first complete test file from the Perl 1 test suite.

Saturday June 03, 2006
03:00 AM

Dapperiffic

I just installed Ubuntu 6.06 ("Dapper Drake") on my shiny new linux desktop. I'm quite happy with it. It seems almost too easy. X works, the sound works. I didn't spend hours tweaking the configuration. It just works. It comes with Perl 5.8.7, and a quick aptitude command got me SVK 1.06 (okay, they're a version behind on both, but it's a liveable lag, instead of the usual painful gap). I've been using Debian for years now, and I didn't expect the bit of spit-n-polish on the surface would make much difference. But it does. I can't quite explain it, but it's something like: "Strong reliable server, but also a comfortable desktop."