Day 42: Eager implementations.

autrijus on 2005-03-14T18:30:22

Today, our Mad Golfer asavige (btw, check out his Saturn obfu if you had not done so) highlighted a weird conflict between lazy list semantics and eager filehandle closing, sparking an ongoing thread to clear up the semantic of = and COW issues. It's nice to see this sort of design problems uncovered early into the implementation, which is why I started Pugs in the first place. :)

In other news, just after 6.0.11's release, obra popped in #perl6, acquired committership, and immediately began refactoring Test.pm to eliminate duplicate code.

During the refactoring, obra uncovered that $?CALLER::CALLER::CALLER:: is not yet implemented, but I was too tired to do that, so I just mumbled a line number in Eval.hs and went to bed. When I wake up, a SubEthaEdit-powered team has already implemented it correctly! Much kudos for nothingmuch, lightstep, lumi, larsen and theorbtwo for successfully deciphering my klugy haskell, and lightstep for subsequently prettifying with a clever use of callCC.

Today is another day of test-driven developments with very fast turnarounds:

  • fayland added testing for x= etc; I implemented them along with Y= and its unicode form.
  • Based on metaperl's junction notes, I discovered that infix junction constructors like | was flattening both sides, which is very bad. Fixed!
  • obra added named argument tests, which requires => to autoquote the left-side identifier; I promptly coded it in.
  • scw highlighted a ?? :: precedence bug, which I don't yet have answers of.
  • kungfuftr committed tests to show that ++ doesn't yet work on array or hash elements; this is an outstanding TODO penting ITypes, which I hope to get around to do soon.
  • malaire added tests and implementations for various useful primitives like uc lc ucfirst lcfirst; thanks to the fact that Haskell's Char is Unicode by default, those primitives automagically do the Right Thing to unicode literals.
  • An anonymous pugsmonk keeps sending bug reports via nopaste bot, most of which (eg. pretty-printing of mutable variables) are promptly resolved.

On the p6c list, Matt Campbell asked some excellent questions for starting to port Perl 5 modules to Pugs, and I tried to answer him. Darren Duncan, the pioneer of porting the Locale::KeyedText module, accepted Alias's call for porter to p6ify Alrogithm::Dependency in the Pugs trunk. Darren++!

Finally, Ingy outlined some thoughts on building FreePAN as a subversion-mirror based distribution network, for distributing Pugs modules, more details will become available in the days leading up to YAPC::Taipei. Stay tuned!