Day 52: pugscc --runparrot mandel.p6

autrijus on 2005-03-24T20:16:30

Pugs can now compile the mandelbrot generator, example/mandel.p6, into mandel.imc.

Running the line below generates 100 copies of this pretty picture. Time for some benchmarking!

% time pugscc --runparrot examples/mandel.p6 > /dev/null
real    0m5.548s
user    0m5.325s
sys     0m0.078s

Compare this with the perl5 version:

% time perl examples/mandel.p5 > /dev/null
real    0m5.774s
user    0m5.629s
sys     0m0.016s

It is also worth noting that this is on FreeBSD 5-STABLE, where perl5 was built with -O by default. The --runparrot above uses an unoptimized parrot, with vanilla runcore, and with no type inference (so all variables are PMCs). That means even though Pugs/Parrot is heavily handicapped, it still performs better than Perl 5.

Our Mad Porter iblech exhibited superhuman productivity, and ported five CPAN modules to Perl6 in one day:

  • Commands-Guarded
  • Email-Simple
  • Geo-Distance
  • Mail-Address
  • URI

All I can say is "Wow". In other news, after ingy's 2-days-fight with MakeMaker, Inline Haskell/C modules now finally works. It requires GHC 6.4 for the Template Haskell powered wrapper generation code. SHA1.pm is our first working example.

Mad Golfer asavige committed our first golf-based test script, which combines the best parts of golf-driven development with test-driven development. :-) I added in $*EXECUTABLE_NAME and $*PROGRAM_NAME support for him, too.

Stevan asked for s:perl5:g/// to complete his File::Spec port, which I promptly implemented. He also started picking up Haskell, and hacked in -d and -f all by himself. Yay!

Some other developments of today:

  • nothingmuch hacked in pugs -Ilib support.
  • hcchien and viirya both committed tests to make sure that grep {...} @list still works.
  • gaal implemented a nice YAML harness as a replacement for the vanilla Test::Harness.
  • theorbtwo wrote a Test Graphing tool that generates HTML coverage reports from test results produced by the yaml harness.
  • And, in Kwid-related news, ingy and gugod just ported Kwid as a Spork/Kwiki formatter, so YAPC::Taipei speakers can write their slides in Kwid, and have them converted to S5

It's getting late, so I'll sleep now. YAPC::Taipei starts in 30 hour or so. Stay tuned!


On OS X...

schwern on 2005-03-24T22:49:47

0 ~/devel/pugs$ time pugscc --runparrot examples/mandel.p6 > /dev/null

real 0m17.017s
user 0m13.900s
sys 0m0.290s
0 ~/devel/pugs$ time perl examples/mandel.p5 > /dev/null

real 0m9.504s
user 0m8.740s
sys 0m0.020s

That's with the latest parrot and pugs from the repo vs OS X's perl5 (5.8.1RC3). Probably a consequence of Parrot not being as optimized for PPC.

Anyhow, it sure is damned impressive.

Perl 6 golf

rg0now on 2005-03-25T00:33:29

Autrijus!

I can not really tell you, how pleased I am that my humble golfing efforts landed in the Pugs repository. Maybe, some 10 or 20 years from now, some wicked Perl 6 user will dig into the sources of the Perl 6 compiler and find my blatant golfing attempts thare, and will be shocked to recognize, how creative (or stupid?) his ancestors were...:-)

Keep up the fantastic work! and thanks for Mad Golfer too!

rg0now

S5 formatter?

markjugg on 2005-03-25T00:40:04

I've been reading this blog everyday lately. These are exciting developments.

The pointer to S5 was appreciated. That looks like a useful system. However, even after I STFW, I couldn't find the link that translates from kwid into S5. Anyone?

Spork seems to be different from what I can tell.

    Mark

Re:S5 formatter?

gugod on 2005-03-25T04:20:30

So far Spork::S5 is on ingy's svn server, and Spork needs patch, so that we will probablly release both a new Spork, and Spork::S5 to CPAN.