Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Allison (3003)

  (email not shown publicly)

Human (I think).

Journal of Allison (3003)

Thursday September 11, 2008
04:30 AM

Installing Pod::Simple on Solaris 9/10

After answering this in several individual emails over a year or so, I figure I'll stick it somewhere googleable. If you're attempting to install Pod::Simple and get something like the following error:

Can't locate Pod/ in @INC (@INC contains: [...]) at /usr/local/lib/perl5/5.8.8/Pod/ line 35.
BEGIN failed--compilation aborted at /usr/local/lib/perl5/5.8.8/Pod/ line 35.
Compilation failed in require at /usr/local/lib/perl5/5.8.8/ExtUtils/Command/ line 92.
*** Error code 2
make: Fatal error: Command failed for target `manifypods'

You've ended up with a version of Pod::Man installed that has a dependency on Pod::Simple, without first installing Pod::Simple. (That shouldn't be possible, since Pod::Man has a check for Pod::Simple in the install process, but that doesn't guarantee it can never happen, especially with a vendor install of Perl.)

So, the thing to do is run the install for Pod::Simple twice. (The first time through you won't get the manpage entries for the modules, but otherwise it'll install fine. The second time through you'll get the manpage entries too.) The first time you'll need to edit the Makefile manually. Find the line that looks like:

# --- MakeMaker top_targets section:
all :: pure_all manifypods

and change it to:

all :: pure_all

Then run 'make', 'make test', and 'make install'. Once you've done that go back and run:

make clean
perl Makefile.PL
make test
make install

Once you have Pod::Simple installed, you won't get that error from Pod::Man anymore, so manifypods should work for everything else you're installing too.

Wednesday August 15, 2007
02: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
07: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.


Friday January 12, 2007
03:27 AM

Perl saves the day

Tuesday January 02, 2007
01: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
02: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
05: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,
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,
Four bytes of bytecode,
Three POST nodes,
Two ASTs,
And a Partridge with a parse tree.

02: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":


Obvious, isn't it?

Tuesday September 12, 2006
02: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
12: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.