Day 130: Third day at Leo's - Pugs 6.2.7!

autrijus on 2005-06-13T20:19:43

We managed to release 6.2.7 today. I started working on PIR emitting. Patrick is back and worked out with Limbic_Region the way to move Synopsis documents forward, by committing skeletal outlines and integrate community-written drafts. Two of my 45-min proposals, "Perl and I18N" and "Learning Haskell", are accepted to EuroOSCon. I wonder what will happen with the other two Pugs-releated talks. Worked out the calling convention abstraction so I can actually target things with Emit.PIR now. But that needs a working PugsAST intermediate nodes, so I'll work on that now -- it's a lot like Sokoban. Three new committers today -- jrieks, pdcawley, mr_ank -- spent some time reading up on PyPy and concluding it's totally the Right Thing to do -- also I'd really like Ruby's eval_in_the_pad_of_caller_continuation thing -- et cetera -- it's just a blurry of hackings now... So let us tune in to the release announcement:

I'm happy to announce Pugs 6.2.7, with much improved parser speed and error reporting, as well as rudimentary (source filter style) macro support:

Perl6-Pugs-6.2.7.tar.gz
SIZE = 1157780
SHA1 = fc8d80c05a5c896693e395f830d10e85a62f2747

Most of this release's development happened without my direct input, since I was busily writing a talk and a paper about Pugs:

Slides
Paper
I sincerely recommend both of them to people interested in Pugs. Taken together, they cover most of what Pugs Apocryphon 2's scope, and corrects many outdated and incorrect sections in Pugs Apocryphon 1.

My focus for 6.2.8 is compiling Pugs to Parrot. With Leo and Chip's help, I hope to release it before the YAPC::NA hackathon.

Again, thanks to all lambdacamels for making this release possible.

Enjoy,
/Autrijus/

Changes for 6.2.7 (r4612) - June 13, 2005

Pugs Internals

  • Add ::?CLASS, ::?ROLE, and ::?PACKAGE magicals
  • Allow bypassing the Standard Prelude by setting $ENV<PUGS_BYPASS_PRELUDE>
  • Experimental heredoc support via qq:to/END/ ... END
  • Implement is required for subroutine parameters
  • New builtins: caller, Carp::longmess, Scalar::as
  • Obsolete the old open builtin in favor of Prelude's File::open()
  • Rudimentary, source-filter-like macro support added
  • Speed up parsing by 100% by caching dynamic grammar rules
  • Support for lvalue substr()
  • coerce: and other categories from A12 are parsed in sub names
  • is unsafe trait to mark subs unavailable in safe mode
  • method foo ($.x) {} now sets $.x
  • undef($x) is now spelled undefine($x)
Bundled Modules
  • New modules added:
    • FindBin
    • File::Find
    • POE (experimental)
    • URI::Escape
  • Extended tests for Tree
Tests, Examples and Documentations
  • APW talk: "Apocalypse Now" in docs/talks/Apocalypse_Now.spork
  • APW talk: "Eine Einfuehrung in Perl 6" in docs/talks/perl6-apw2005/
  • Documentation for running Pugs in lib/pugs/run.pod
  • Examples of nested loops in examples/nested_loops
  • Haskell Workshop paper on Pugs in docs/talks/hw2005.tex
  • Overview of Pugs source tree in lib/pugs/hack.pod
  • Overview of Rules bootstrapping plan in /docs/other/rules_bootstrap
  • Some new tests; several tests refactored; we now have 7600+ tests
  • Unit manipulation and conversion examples in units.p6
  • examples/algorithms subdir now unifies algorithmic examples
Bug Fixes
  • '\' protects delimiters in rules
  • Chained comparisons now work again (were broken in 6.2.6)
  • Critical evals (use, require, prelude) now raise parsefail exceptions
  • Fix [].method and {}.method to call Array::method and Hash::method
  • Fix ~{1=>2} to stringify correctly to "1\t2\n"
  • Parse errors inside blocks now reported at the position at which they occurred
  • Parse array and hash captures in rules
  • Test::is() now shows the expected result correctly again
  • module Foo {...} now parses