Day 69: ITypes landed!

autrijus on 2005-04-10T19:23:26

After 10 hours of almost unstopped work, I have checked in this 2500-line patch that completes the ITypes subsystem, which touches pretty much all evaluator code. Lots of features were completed in one go:

  • Nested structure: say $a{1}[2]{3}
  • Autovivification: $a{1}[2]{3} = <b>
  • Tied magic: say %ENV<USER>
  • Proxy scalars: %ENV<PATH> ~= '/tmp'
  • Slice assignment: @x[1,2] = <a b>
  • Anonymous array: [1..10][0] = 0

The implementation itself is quite pleasant to write, making liberal use of GADTs, phantom types, existential types and other handy tools to ensure correctness. However, I didn't find time to remove the vCast construct yet, so Test.pm is currently broken. I expect to fix it by tomorrow, if shapr does not beat me to it. But mandel.p6 still runs, and apparently faster too, so all is well.

Another big news today is that theorbtwo managed to get hs-plugins working, so we can now link against external haskell libraries like SHA1.hs. It needs a hs-plugin snapshot of today or later; note that you need to run make register after make install. The upcoming 6.2.0 will have the neccessary build magic to make the ext/SHA1 extension Just Work.

At my prodding, ingy added his S26 Draft on Perl Documentation formats, and announced it on P6L. Also, ingy is coming to the the YAPC::NA hackathon as well. Yay!

There are lots of PLEAC work today, from Ovid, Juerd, gcomnz, xern and iblech. With a well-populated PLEAC rating, it will be much easier for Perl 5 programmers to learn Perl 6 with confidence. Nice work!

Other than that, there are 40+ changes today as usual:

  • iblech added lots of examples, including the animals guessing game, and a couple of QoTW examples, one being a Turing machine implementation. I guess Pugs is now officially Turing Complete. :-)
  • corion implemented pugs -p and pugs -n, bringing us much closer to the one-liner golfing domain.
  • corion also pinpointed the NaN segfault bug on Win32, as well as worked on some other tests.
  • asavige added some tests for ^^ and xor.
  • ninereasons marked some tests from asavige as TODO, and unmarked several fixed parsefails.
  • stevan cleaned up the test suite and ext/ directory a bit.
  • ovid and stevan continued to work on CGI.pm, making it much prettier.
  • nothingmuch committed a A20-esque writeup about debugging support facilities in Perl 6.
  • shapr tweaked External.Haskell a bit to produce better error messages.

There are undoubtly some other works I've missed, but I really need to sleep now. See you tomorrow, lambdacamels!


Test::Builder

chromatic on 2005-04-10T20:57:36

I hope to start on Test::Builder in a week or so.