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.
pugscc
now accepts nested BEGIN { eval " BEGIN { eval '...' } " }
.
pugscc --parrot
can compile most expressions, user-defined subroutines, as well as string interpolation.
rgs's colleague misc contributed the first Perl 6 IRC bot:
16:27 -!- didie_p6 [~didie_p6@sisay.ephaone.org] has joined #perl6 16:27 < misc> didie_p6: !hello 16:27 < didie_p6> Hello from a perl 6 irc botMuch 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 CGI.pm code, I have fixed some more things:
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.
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/run-smoke.pl
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!