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)

Wednesday April 27, 2005
03:49 PM

Day 86: IRC bot, CGI game, Parrot compilation, Fortress.

[ #24411 ]
Today I read the Fortress spec (via the Ultimate) with great interest. Syntax differences aslide, it really reads like a tech spec for Perl 6, which makes my job as an implementor considerably easier. I liked it so much that I posted on p6l about the things we can possibly import to Perl 6.

On the code front, following yesterday's BEGIN block change, I moved the Compile subsystem and the Rule subsystem into the Eval monad, so we can freely share the execution context across the entire parse/compile/run cycle. Some new features fell cleanly from this change:

  • my $var ::= expression works.
  • The interactive shell now preserves both the lexical and the global pad.
  • pugscc now accepts nested BEGIN { eval " BEGIN { eval '...' } " }.
  • pugscc --parrot can compile most expressions, user-defined subroutines, as well as string interpolation.

Much thanks to jhorwitz, Coke, particle and other parrotfolks for helping me with the Parrot IMC backend. Hopefully this will make jhorwitz's work on mod_pugs much easier.

rgs's colleague misc contributed the first Perl 6 IRC bot:

16:27 -!- didie_p6 [] has joined #perl6
16:27 < misc> didie_p6: !hello
16:27 < didie_p6> Hello from a perl 6 irc bot

Much coolness!

In related news, I expanded and fixed andras's addictive CGI memory game, and tweaked the session management library to write to its own temporary directory, with the new primitive File::Spec::tmpdir(). A week or so ago, when andras first submitted it, it took half a minute just to flip a square; now each flip takes less than a second.

Tracing the memory game and code, I have fixed some more things:

  • The dot in 123.ref is now parsed correctly as (123).ref.
  • $x = \$x no longer causes an infinite loop.
  • :todo(1) in tests are changed to :todo for greater clarity.

gaal introduced the VProcess type, then implemented the runInteractiveCommand and openFile primitives on it. It will be used to implement piped opens soon.

obra corrected my fix in util/ to tell the user the smoke result is in smoke.html after make smoke finishes.

adehohum added some tests on lvalue subroutines, operator overloading, and parameter traits.

Corion was extremely productive today. He added many new tests, refactored old tests, and further improved the error handling code for numeric errors.

theorbtwo is working on making the Eval monad a newtype, so we can freely redefine our monadic behaviours. That will pave the way for more catchable errors, as well as for serialized continuations.

That's it for today. See you tomorrow!

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.
  • Well, misc is no longer my colleague, he was only an intern at Mandrakesoft... That said, writing a generic IRC module (à la Bot::BasicBot for example) would be a good idea.