« October 2006 | Main | December 2006 »

2006.11.26

Weekly Perl 6 mailing list summary for 19-25 November, 2006

This week on the Perl 6 mailing lists

"...of course [that] can't be a bug as there are no specs ;)"

-- Leopold Toetsch, in '[perl #40968] [BUG] :multi doesn't seem to work right'

Continue reading "Weekly Perl 6 mailing list summary for 19-25 November, 2006" »

2006.11.21

Weekly Perl 6 mailing list summary for 12-18 November, 2006

This week on the Perl 6 mailing lists

"Sadly, the hallucinogens are essential, not external."

-- Mark J. Reed in 'List assignment question'

Continue reading "Weekly Perl 6 mailing list summary for 12-18 November, 2006" »

2006.11.16

Intermission.

This is a short update to say that my online time, due to unexpected circumstances, will be reduced severely for another week.  Sorry for the intermission; see y'all on IRC/MailingList/Blog/etc next week. :-)

2006.11.12

Weekly Perl 6 mailing list summary for 5-11 November, 2006

This week on the Perl 6 mailing lists

"...problem 2 is probably just me being confused (though I'd love an explanation, from @leo ;-))."

-- Jonathan Worthington, in 'set_pmc_keyed_int delegates to set_pmc_keyed...?'

Continue reading "Weekly Perl 6 mailing list summary for 5-11 November, 2006" »

2006.11.08

A new home for Pugs!

After a week of planning, and with plenty of help from clkao++, obra++, #jifty, #bps and #perl6, I'm glad to announce that Pugs now has a new, permanent URL for its subversion repository:

Subversion users, please switch your working copy this way:

svn switch --relocate http://svn.openfoundry.org/pugs http://svn.pugscode.org/pugs

SVK users, please update the mirror path:

svk mirror --relocate //mirror/pugs http://svn.pugscode.org/pugs

Commit bits are re-mailed to all existing committers and metacommitters; please set your password again by following the URL in the mail.  If you have not received the new commit bit, please let me know on #perl6 or via email.

Metacommitters can now manage invitations with a prettier interface at http://commitbit.pugscode.org/, powered by CommitBit.

We are still working on restoring the read-only mirrors at openfoundry and svn.perl.org.  Thanks to yet another a soon-to-be-announced open source product from #bps, we plan to turn them into full R/W mirrors, so we can distribute the load by setting up one replication server per continent.

There is a lot more exciting news going on than this administrative change -- such as the MO object model finally landed to the repository, MiniPerl6 parser bootstrapping, etc. -- but they will take separate journal entries to cover.  Until then, have fun spreading the commit bits! :-)

2006.11.06

Weekly Perl 6 mailing list summary for 29 October - 4 November, 2006

This week on the Perl 6 mailing lists

"That fuzziness is classic $Larry. Some of the rest of @Larry can be more *mumble*matic."

-- chromatic in 'where constraints as roles'

Continue reading "Weekly Perl 6 mailing list summary for 29 October - 4 November, 2006" »

2006.11.04

OOPSLA/DLS and the upcoming POPL 2007.

The Belknap Jifty Hackathoners left Portland right after the Pugs talk, so my attendance in this year's OOPSLA/DLS lasted for exactly one hour. However, that was one of the most intense hours in my life, and I'm glad that I emerged alive (and happy).

As is customary by now, before the talk went live, I put the Irssi window to #perl6 on the projector, showing the continuous works from the lambdacamels. Since both Vim and Irssi windows were maximized, and MiniBufExpl's color theme matched that of Irssi's, it apparently created the impression that Vim is my IRC client of choice... :-)

The talk itself went very well. With 240 slides (designed as 12 lightning talks of 5 minutes each), for the first time I've delivered them in just under 50 minutes, leaving plenty of time for questions.  Those were substantial questions that challenged almost all parts of Perl 6 and Pugs... Unlike any other Q&A session in my talks before, this one strongly resembled a thesis defense.

I'll post a separate blog entry, perhaps in the form of a Perl6::FAQ document, to address those questions about our type system, module system, introspection, parallelism, and other high-level design issues.

It was a lot of fun to talk with the researchers whose papers made Pugs possible: Philip Wadler (Monads, Featherweight Java, Links), Matthias Felleisen (Continuations on ordinary VMs, PLT Scheme), William Cook (Mixin-based inheritance), Jeremy Siek (Gradual Typing), and many others whose name sadly escaped me.

After the talk, Felleisen asked me if I'd like to present Pugs at POPL'07, and I said I'd be interested, as it's the conference where most lambdafolks unleash the latest language-design hackerys.  A few days later, I was extremely surprised (and honored) when he informed me that Perl 6 will be the invited opening talk (!).

Last year, that place was held by Odersky's great Scala talk, which influenced the design of Pugs in many ways. So I'll be very, very happy if our unorthodox ideas in Perl 6 can also inspire POPL folks as much as they have inspired us.  See you at the Nice hackathon in January! :-)

2006.11.03

MiniPerl6 Parsed!

Today's hackathon was fruitful; fglock++ and I finished designing the AST nodes for MiniPerl6, and coded up a Grammar that parses most of the sanity tests.  The next step tomorrow is to write an emitter for it... Or maybe two emitters. :-)

In other hackathon news, part of MO's single-inheritance test, ported to MOH by cmarcelo++, now actually compiles and runs. There is still a lot to do to bring the full power onto the GHC runcore (multiple inheritance, C3, roles), but thanks to nothingmuch++'s comprehensive tests, it's a tractable process.

CONISLI begins tomorrow, so that's it for today.  See you!

Sketch of CONSILI talk.

After a lovely brainstorming session, my opening keynote for CONSILI is now available in draft form:

Feedback = most welcome!

Also, much kudos to fglock++ for his imaginative translation. :-)

2006.11.02

MiniPerl6 and use v5;

Today's hackathon with fglock++ focused on the design and implementation of MiniPerl6, an extended surface syntax language for native PIL nodes.  Oud rallying cry is one single Pugs codebase in Perl 6, as we seek to remove the massive code duplication in the current Haskell and Perl 5 runtimes.

As a strict subset of Perl 6, the design of MiniPerl6 removes some of the most complex parts of Perl 6:

  • List context
  • Inheritance
  • BEGIN{...} blocks
  • Runtime-evaluated type constraints
  • Global and package-wide variables
  • Named arguments to positional parameters
  • Distinction between assignment and binding

On the other hand, it still retains many handy Perl 6 constructs that massively simplifies syntax tree construction and deconstruction:

  • Closures and currying
  • Class accessors and delegators
  • Array, Hash, and Object unpacking
  • Type annotations on variables and parameters
  • Deconstructing pattern bindings with smartmatch and Signatures
  • Temporary, hypothetical, state, and constant declarators
  • Class accessors and delegators

To facilitate the migration, I've amended the relevant part of the Modules spec (S11), so now we can trivially inline Perl 5 code inside a Perl 6 programs, with use v5 at the beginning of a lexical block. Such blocks can nest arbitrarily deeply to switch between Perl versions:

    use v6-alpha;
    # ...some Perl 6 code...
    {
        use v5;
        # ...some Perl 5 code...
        {
            use v6-alpha;
            # ...more Perl 6 code...
        }
    }

And indeed, this now Just Works in Pugs:

    sub add_with_perl5 ($x, $y) {
        use v5;
        $x + $y; # This is  Perl 5 code
    }
    say add_with_perl5(21, 21); # 42

With this in place, we can bootstrap the self-hosted MiniPerl6 trivially, by reusing the existing v6.pm code and gradually take away "use v5" declarations in each block.

Because we carefully designed MiniPerl6 to emit to native Perl 5 that has no runtime overhead, that means whatever part bootstrapped in Perl6 -- e.g. the Grammar engine -- will actually gain performance over e.g. fglock++'s hand-coded PCR codebase, effectively make MiniPerl6 a DSL for Perl 5.

That's it for today.  Tomorrow cmarcelo++ will join us, and maybe MiniPerl6 will turn into a DSL for Haskell as well... :-)