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 ]

smash (7262)

  (email not shown publicly)

Journal of smash (7262)

Tuesday June 17, 2008
12:24 PM

Parrot 0.6.3 "Beautiful Parrot" Released!

On behalf of the Parrot team, I'm proud to announce Parrot 0.6.3 "Beautiful Parrot." Parrot is a virtual machine aimed at running all dynamic languages.

Parrot 0.6.3 is available via CPAN (soon), or follow the download instructions. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Subversion on our source code repository to get the latest and best Parrot code.

Parrot 0.6.3 News:

  • Specification
    • updated pdd09_gc.pod
  • Languages
    • Cardinal:
      • dramatically improved parsing speed
      • added support for defining and instantiating classes
      • started fleshing out the builtin class hierarchy
      • added support for hashes and arrays
    • Chitchat: added the start of a smalltalk compiler
    • Pheme: updated to match PGE changes
    • Pynie: return statement, other minor updates
    • Rakudo:
      • added working list and hash contexts
      • added 'return' statements
      • added => pair constructor
      • added ?? !! ternary
      • added Range, range operators, Complex
      • added common List, Hash methods
      • refactored base classes
      • added Mutable, Perl6Scalar classes
      • added type-checking, is readonly/rw/copy for parameters
      • added make localtest, docs/spectest-progress.csv
      • fix named unaries
    • Squaak: implement return statement
    • Tcl: updated control flow exceptions to use new builtin types
  • Compilers
    • All tools converted to P6object metamodel
    • PGE:
      • is now a zero-width match
      • reduced backtracking to improve parsing speed
    • PCT:
      • added "return" PAST.op node type for subroutine returns
      • added "keyed_int" scoping to PAST::Var
      • fixed calls to closures
      • automatically transcode 7-bit unicode to ascii for faster processing
    • NQP: added "return" statement, ?? !! ternary operator
  • Configuration
    • expanded step gen::opengl
  • Implementation
    • updated function and macro names to match pdd09_gc.pod
    • removed Super PMC
    • add ".namespace []" as alternative to ".namespace"
    • "make codetest" target runs standard coding tests
  • Miscellaneous
    • added P6object class for Perl 6 interfaces to objects in Parrot
    • ported OpenGL/GLU/GLUT bindings to Win32, BSD, and more Mac OS X variants
    • generate OpenGL/GLU/GLUT bindings by parsing system headers
    • new OpenGL example shapes.pir, covering basic OpenGL 1.1 / GLUT 3 APIs
    • new float4.pir structure-packing benchmark
    • reduced memory use for variables
    • improved constant string caching
    • made code g++ and gcc (with optimizations) safe
    • the usual collection of bugfixes and optimizations

Thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next release is 15 July 2008.


Sunday April 13, 2008
12:21 PM

Parrot benchmarking, introducing recursion

Recursion is a very common technique used in today's programs. Although recursion is a very easy method to solve problems, it can easily introduce unwanted overhead that can quickly worsen program's performance.

The facts,
1) We created a recursive function to calculate the number of nodes in a full binary tree, given as argument the tree's height.
2) We implemented this function in Parrot, and also on interpreted and compiled languges.
3) We ran the programs several times increasing the height of the tree.

Here are the results:

09:58 AM

Parrot versions benchmarking

This benchamarking covers several Parrot versions. It still uses the very dumb algorithm to calculate how may prime numbers exist between 1 and a given argument, used on previous benchmarkings.

Link to results:

Friday April 11, 2008
01:48 PM

Is your program fast enough?

In the process of submitting an article to about Parrot, we felt the urge to do some simple benchmarking, to have a glimpse of Parrot's current performance.

First, the facts:
1) We created a very dumb algorithm (intentionally not efficient) to calculate how may prime numbers exist between 1 and a given argument.
2) We implemented this algorithm in several well know interpreted languages, in Parrot of course, and also in C and Java to have a bottom line to draw comparisons. Basically we only used whiles and ifs and tried to make all implementations as similar as possible.
3) We run every program (unfortunately on a slow machine) several times, incrementing the argument in steps of 10000, from 10000 to 90000, and watched has they took more and more time to run.

Finally, check the results: