Categories

Posts in this category

Sun, 05 Jul 2009

Perl 6 Tidings from June 2009


Permanent link

Specification

Packaging

At the end of May and begin of June we saw several long threads on p6l about how to distribute Perl 6 modules, and if Mark Overmeer's cpan6 project is (part of) the solution.

As far as I could tell the discussion didn't become very productive, partly because the participants tried to discuss too many things at once (for example distribution problems, format of source repositories and binary distributions).

My personal conclusion was that cpan6 isn't going anywhere soon, and not being designed as an evolution of something existing it means that really much would have to happen until something useful comes out. As a consequence I uploaded a Perl 6 module (JSON::Tiny) to the existing CPAN and watched the fallout. My next steps will be to teach proto to install modules from CPAN, and to pester the modules@perl.org mailing list.

Module loading

As the result of a perlmonks discussion Larry broke down module finding and loading into separate steps.

He also addressed the problem of having multiple modules with different authorities.

Strings and Bufs

Larry and I fleshed out the semantics for the Buf types, encoding and decoding and related issues (r27095, r27096, r27097, r27098, r27100, r27106, r27365).

Other changes

  • New built-in method Array.rotate (r27062, r27063, r27073)
  • Clarification on ties and epsilons in multi dispatch (r27313)
  • The constant declarator scopes like our (r27313)

Implementations

Rakudo

Although both jnthn and pmichaud had some vacations, Rakudo has seen some nice progress in June:

  • Martin Berends contributed an implementation of the Temporal type (date and time stuff)
  • Methods now accept additional named arguments (jnthn)
  • jnthn fix the BUILD submethod to be actually usable
  • If you load libraries from other programming languages, the symbols are now declared at compile time (Tene)
  • Type checking of implicitly returned values (jnthn)
  • Improved assignment handling (pmichaud)
  • More introspection (.^parents, .^methods) (jnthn)
  • Allow operators to be defined in the setting (pmichaud)
  • Partially implement series and eqv operators (moritz)
  • Literals in a signature act like where $literal (jnthn)
  • minmax infix operator (pmichaud)
  • take() without gather now warns (masak)
  • extensive multi dispatch refactor. With even better handling of where-clauses, and allows generics in multi dispatch (jnthn)

Currently Rakudo suffers from memory handling problems in parrot, where seemingly randomly the .succ method is called on strings (which is equivalent to the ++ operator) which for example mangles type names (Hash becomes Hasi).

Smop and mildew

pmurias makes great progress in implementing multi dispatch for mildew. Curiously he hits the same speed problems that Rakudo initially faced as the multi dispatch algorithm became more sophisticated.

[/perl-6] Permanent link