Tired of ads? Upgrade to paid account and never see ads again!

Profiling SMOP
With the loading of the setting (a plain word for the prelude) taking up to 9 seconds I decided to focus on improving mildews speed to an bearable level.
With compiling the bytecode down to C code not making a substantiall improvement I decided to use a profile.
Gprof seemed the most obvious choice, after making scons add the -pg flag in all the required places (which makes gcc add profiling instrumentation)
It turned out that the recent versions of gprof doesn't support shared libraries.
(Which should have been documented instead of being found as result of googling through mailing lists :( )
I briefly tried OProf but I found the documentation incredibly dense I turned to sysprof.
Sysprof uses a kernel module to profile *all* the running programs so I had to upgrade my kernel.
Using sysprof i found out that smop spent lots of time managing pthread locks.
Turning locking off made smop run nearly twice as fast.

mildew now passes the first spec test
As multi methods in mildew will need to be properly tested, I decided to get mildew to run Test.pm.
Attempting to get Test to run uncovered a missing features in Signature, so now positionals can be passed as named parameters,
unrecognised named arguments are not tolerated and named arguments are optional by default.

The following now works:
multi foo($bar,$foo) {
      say $bar,$foo;

Our Test.pm only support &plan,&ok and &is for now but it's enough to pass the first spec test, S06-signature/named-parameters.t

mildew now supports my multi foo(...) {...}
So far I've neglected my GSoC blog so now instead of waiting the whole week for new features to pile up, I'll attempt to blog about them as I add them to mildew.
Mildew now supports the my multi foo(...) {...} which allows you to define a lexically scoped multi.
As a simple example here are a few tests for it:

my multi foo($a) {
    say "ok 7 # calling the inherited candidate";
    my multi foo($a,$b) {
        say "ok 8 # one can localy add candidates";
        say "ok 9 # the lexically added candidates are not visible in outer scopes";

mildew: say "The mildew evalbot is up and running"
After installing a new cabal on the evalbot machine, disabling the runtime limits for mildew, and fixing the m0ld assembler the evalbot once again runs mildew code.

Thats means that p6eval on #perl6 at freenode.org will eval Perl 6 code using mildew when you type  "mildew: Perl 6 code here".

You are viewing pmurias