Day 181 (r6054): Pugs 6.2.9 released during Ingy's OSCON talk!

autrijus on 2005-08-03T20:50:33

I am glad to announce Pugs 6.2.9, released during Ingy's OSCON talk:

http://pugscode.org/dist/Perl6-Pugs-6.2.9.tar.gz
SIZE = 1439642
SHA1 = efd32419dcddba596044a42564936888a28b3c69

Following last month's plan, this release features a Perl6/PIL to javascript code generator, written in Perl 5, currently passing 64% of the test suite.

We also see the beginning of a code generator from PIL to perl5, and a self-representing Perl 6 object model prototype. The new PIL design and runcore is also progressing nicely, which should give a more robust specification to Perl 6's compile time and runtime semantics.

A live CD is available as usual, courtesy of Ingo Blechschmidt:

http://linide.sf.net/pugs-livecd-6.2.9.iso

Ingy's slides are under the Pugs tree as docs/talks/oscon-apocalypse.spork and online at http://www.kwiki.org/apocalypse/start.html in HTML.

All in all, it's a lot of fun. Check out the two movies we made for the OSCON talk as well:

Change the ".mp4" to ".swf" or ".wmv" for alternate video formats.

Enjoy!
/Autrijus/

Changes for 6.2.9 (r6050) - Aug 4, 2005

Pugs Internals

  • New build system in inc/PugsBuild
    • Configuration preferences are stored in config.yml
    • Presists across builds, overridable via %*ENV<PUGS_BUILD_OPTS>
  • $CALLER::_ is now again usable in defaults.
  • JavaScript Backend
    • Actively progressing in perl5/PIL2JS
    • Passes 64.00% of the Pugs test suite
  • Perl5 Backend
    • Begun in perl5/PIL-Run
    • Primitive interactive shell as crude_repl.pl
  • Object MetaModel
    • Perl 5 prototype is mostly self-hosting
    • New C3-based method dispatch algorithm
    • JavaScript version partially completed
    • Java version begun (in very early stages)
  • Pugs Intermediate Language
    • New runcore design begun in src/PIL
    • QuickCheck-based specification tests added
  • Precompilation for arbitrary modules (not enabled by default)

Bundled Modules

  • New Perl 6 modules:
    • MIME::Base64
    • Recurrence
    • Span
  • Additions to libwww-perl:
    • HTTP::Cookies
    • HTTP::Query
    • HTTP::Request::CGI
    • HTTP::Status
    • URI::Escape
  • Additions to DateTime:
    • DateTime::Set

Test, Examples and Documentations

  • Many new tests and test refactoring, we now have 8100+ tests
  • A number of additions to examples/cookbook
  • Beginning of Rule-based grammars for Perl6 in modules/Grammars
  • SVG generation examples in examples/graphics
  • STATUS document added to the top level to keep track of current progress
  • docs/notes/plan expanded and added macro-related issues
  • examples/algorithms/Newton.pm implements the newton method with currying
  • examples/network/evalbot.p6 gets safe &print primitive
  • examples/network/seenbot.p6 gets pretty duration printing
  • examples/network/svnbot.p6 supports branch information
  • examples/ppt/cat.p6 added to Perl Power Tools
  • iblech's LUGA talk as Anatomie_eines_Compilers_am_Beispiel_von_Pugs.latex
  • ingy's OSCON talk as oscon-apocalypse.spork

Bug Fixes

  • Fix pair binding for functions expecting pairs as arguments
  • Global destruction is now guaranteed upon program exit
  • Parameter's defaults are now evaluated in its original lexical scope
  • Parser for hash subscripting was globbing whitespaces after it
  • Primitive listops now handles Pairs as regular arguments
  • Various +$foos in sub signatures changed to ?$foo in Test.pm
  • %h<x>> was misparsed as %h{'x>'}
  • -Inf now stringifies as -Inf, not -Infinity
  • .end and .elems no longer work as scalar methods
  • /a/ ~~ "a" now works the same way as "a" ~~ /a/