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 ]

autrijus (1505)

  (email not shown publicly)

Journal of autrijus (1505)

Sunday August 14, 2005
02:51 PM

Day 189 (r6253): Pictures, DrIFT(JSON, Binary, XML), MetaMod

[ #26274 ]

Two new pictures joined the Pugs image gallery today:

Some #perl6 folks talked about turning them into T-shirts. I only know about Cafepress and Zazzle -- any better suggestions out there?

After the Visio session, I continued refactoring and adding DrIFT instances. The -C Binary backend enables Pugs to efficiently store and retrieve PIL trees, paving the way to separate compilation for Perl6 modules.

Aankhen suggested me not bothering doing XML backend, so naturally I did it right away. Thanks to Haskell2Xml, this only took a couple lines -- see hello.xml for a sample output. However, I disabled it for now, as there are no active consumer for this, so I don't need to worry about the HaXml dependency right now.

Next in my goal is YAML. I started with the Syck emitting interface, but soon it dawned on me that JSON is a subset of YAML. I can reuse Syck as a JSON parser, and the emitter is downright trivial. Here is the output of pugs -CJSON -e "say 'Hello, World!'":

{"PIL_Environment": {"pilGlob": [{"PSub": {"pSubName": "&*END","pSubType": {"SubPrim": null},"pSubParams": [],"pSubBody": {"PNil": null}}}],"pilMain": {"PStmts": {"pStmt": {"PNoop": null},"pStmts": {"PStmts": {"pStmt": {"PPos": {"pPos": {"MkPos": {"posName": "-e","posBeginLine": 1,"posBeginColumn": 1,"posEndLine": 1,"posEndColumn": 20}},"pExp": null,"pNode": {"PStmt": {"pExpr": {"PExp": {"pLV": {"PApp": {"pCxt": {"TTailCall": [{"TCxtVoid": null}]},"pFun": {"PExp": {"pLV": {"PVar": {"pVarName": "&say"}}}},"pInv": null,"pArgs": [{"PLit": {"pLit": {"PVal": {"pVal": {"VStr": ["Hello, World!"]}}}}}]}}}}}}}},"pStmts": {"PNil": null}}}}}}}

SpiderMonkey seems to like it just fine, so I can start idly wondering about meta-programming Perl 6 with JavaScript... Mmm bad ideas.

On the MetaModel front, nothingmuch hacked the minimetamodel to support various plugins, including C3, multiple inheritance, and autolaoding.

Taking a more refactorial path, Stevan checked in MetaModel 2.0, a much cleaner implementation of the Perl5 metamodel. Following the gnostic naming convention in the metamodel picture, the files are named as,, etc. He also added a that contains primitive utilities that exists a priori.

putter finished the first milestone his long journey in writing a Rules engine in Perl 6. The Pugs parser can now calls back to's rx_ macros, which can then call into a Rules compiler written in pure Perl 6. He recounted some post-mortem thoughts on #perl6. It seems to me that the main takeaway is centralized version-control hinders development; switch to svk today! :-).

fglock produced Perl6::Value implementation of Num, Int, Str and Bit classes, for the Perl 5 runtime.

There's more to chronicle -- eg. my planned .il hackathon in February, but it's $work day tomorrow, so I better sleep now. See you!

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • Hey if you're doing T-shirts I think the previous timeline graphic (which no longer seems to be available online) with the pencils was cuter. I also liked that it had "imaginary" in parens, tantalizingly hinting that it might not actually be imaginary after all ...


    • Thanks, I reflected your suggestions in the new drawing [].

      The old graph was adapted from Simon Peytone-Jones's slides (originally talking about Haskell type classes); I didn't find a publicly-available version with high enough resolution, and I wouldn't feel comfortable uploading that to cafepress. :)