The Perl 6 Summary for the week ending 20021117
"Oh! my ears and whiskers, I'm late!"
It's 0650, it's 20021120 and I've only just started writing the summary.
Call me lazy, call me a shirker, call me anything you damn well please,
just don't interrupt me while I'm writing this.
Yup, it's past time for another peek into the lives of those strange
beings we call the Perl 6 development community, starting off, as usual,
with the perl6-internals crew.
Quick Roadmap
Dan returned unscathed from this year's Lightweight Languages workshop
and presented a short roadmap for the next few miles. Dan reckons that
if we hit all those milestones we'll have a complete imperative core.
Which will be nice.
http://makeashorterlink.com/?N1CE21482
Branch Dump
Michael Collins stuck his head above the parapet to report that using
"branch" provoked a core dump on his Linux setup. It turned out to be a
problem with his code. Dan debugged his code and offered a reasonably
full explanation of how parrot's "branch" actually works (and why you
should really use labels in hand written assembler.) Gopal V worried
that allowing branches to non-instructions was unsafe and wondered if,
at least, a "parrot -fverify" switch might be in order. Dan agreed, but
his reasoning was somewhat different.
Elsewhere in the thread Dan tells us that he wants safe interpreters to
be as safe as a locked down VMS system, but he's unsure as to whether
we'll reach that gaol. (Mmm... nice typo there Piers, leave it)
http://makeashorterlink.com/?P2DE44482
http://makeashorterlink.com/?X6EE23482
Parrot BASIC 2
Clinton A. Pierce announced his complete re-write of BASIC for Parrot,
this time modelling his implementation on QuickBASIC. Here's a list of
the new features, lifted from Clint's announcement:
* Compiled directly to Parrot Assembly
* Interpreted
* Richer syntax than Parrot BASIC 1.0, which was based on GW-BASIC
* Much, much faster than Parrot BASIC 1.0
* Support for user defined types
* Support for variable scopes (but apparently, QuickBASIC scoping is
'bizarre')
Nobody said anything -- I think they were rendered speechless. However,
I'd like to take the opportunity to use this platform to say "Yay
Clint!". This is superb news. Okay, so supporting BASIC wasn't exactly
Parrot's initial goal, but it's great to see that a single hacker can
implement such a complete language using Parrot.
http://makeashorterlink.com/?L2FE14482
scope and functions in languages/scheme
Not to be outdone by Clint's BASIC implementation, J�rgen B�mmels has
taken advantage of Jon Sillito's lexical scopes patch to add functions
to scheme (before it was just scheme syntax, now it has some claim to
being really scheme like). Bravo J�rgen!
http://makeashorterlink.com/?H20F35482
Leo T�tsch is the Patch Monster
This week, Leo has been mostly:
* Fixing JIT to make it restartable
* Fixing JIT to make it play well with Perl 6
* Fixing JIT so you can see what's going on when you use gdb.
And generally seeming to pop up with useful contributions in almost
every thread. Where does he find the time?
Bootstrapping Perl 6
Marius Nita asked about the Perl 6 compiler, wondering what language
it'd be written in, Perl or C? Markus Laire thought it'd eventually get
written in Perl 6 or Parrot `or something else which runs on parrot'.
Gopal V worried about the bootstrapping problem and asked that the Perl
6 compiler be written in something other than Perl 6 in an attempt to
avoid a `dependency hellhole'. Brent Dax pointed out that we're pretty
much obliged to write Perl 6 in Perl in order to get the self modifying
parser behaviour and noted that we'd ship it as bytecode. Nicholas Clark
pointed out that, strictly, you can't build perl5 from scratch without
an installation of perl5, but the p5porters get 'round the problem by
shipping the generated headers as part of the perl5 tarball.
Dan points out that the goal is for Parrot to require a C compiler and a
platform shell or Make tool (either should do). Nicholas Clark attempted
to kick off a variant of Monty Python's `Yorkshiremen' skit ("Make tool?
Luxury! We 'ad to make do wi' a console and switches!" "You were lucky!
We used to 'ave to mek waves in' t'mercury delay line wi' us tongues!"),
reckoning that it should be possible to get by with just a C compiler
and asked that we `archive this message and hold it against me when the
time comes, and you're looking for someone to prove it by making it
work'.
http://makeashorterlink.com/?V31F34482
http://makeashorterlink.com/?W32F15482 -- Archive this message
Quick note on JIT bits
Dan announced that he was about to `do exceptions' and wanted to give a
heads up to everyone who does Odd Things (principally the JITterbugs).
The rule appears to be `Don't monkey with the system stack'. Leopold
T�tsch wondered if that was actually the issue Dan thought it was, but
came up with a bunch of other issues to do with register allocation,
both at the parrot level and the processor level. And then it all got
too much for my brain to cope with.
http://makeashorterlink.com/?K53F12482
Perl 6 test organization
Over in perl6-documentation, they're about to start producing Perl 6
language tests, so chromatic posted Brent Dax's suggestion about how
tests should be organized into sub directories. General response was
favourable (the current languages/perl6 tests are somewhat
disorganized.)
http://makeashorterlink.com/?B14F23482
Meanwhile, in perl6-language
The language list was relatively quiet this week. The Operator thread
seems to have reached a c�sura, but most of the current threads seem to
have spun off from issues raised in that monster.
Unifying invocant and topic naming syntax
Discussion of ralph's proposals for changing the function declaration
syntax continued. Damian doesn't like the proposed changes, and has been
explaining to ralph why not. Nicholas Clark worries that a function
being able to access its caller's topic is `an unrestricted licence to
commit action at a distance' (he says that like it's a bad thing).
Andrew Wilson pointed out that, unless you could access the caller's
topic you wouldn't be able to prototype things like "print" (and if you
can't get a prototype for something then you can't fully override it).
Damian added that it's also what Perl 5 does (except Perl 5 does it
without having the decency to declare anything)
http://makeashorterlink.com/?H55F21482
Superpositions and Laziness
I'm not entirely sure why a thread titled `Superpositions and Laziness'
should contain discussion of whether one should have a `pure' property
or a `cached' one. Or both.
Meanwhile, in the `laziness' side of the thread, Piers Cawley saw fit to
post a huge chunk of uncommented code which was described by Larry as
`opaque, and not in a good way'. On rereading, I didn't think it was
*that* bad.
Larry also introduced the possibility of breaking the "operator:" method
of declaring operators up into "prefix:", "infix:", "postfix:" and
"circumfix:".
http://makeashorterlink.com/?I16F13482
http://makeashorterlink.com/?B47F25482
http://makeashorterlink.com/?A28F32482
FMTWYENTK about :=
Last week arcadi declined to expand `FMTWYENTK about :='. This week we
discovered that it stands for `Far More Than What You Ever Needed To
Know' (It was the `what' that foxed me).
This week Damian supplied answers/clarifications. Next week, I'm hoping
for a lovely, consolidated document.
http://makeashorterlink.com/?N19F46482
http://makeashorterlink.com/?G1AF21482 -- Always worth a read
Continuations
Given the subject of the last link, I find it entirely appropriate that
the thread about coroutines and yield should be *called*
`Continuations', but I freely admit to an odd sense of humour.
It turns out that there are several different views as to what
coroutines should do, a few of the alternatives were discussed. Damian
thinks that the actual semantics chosen will probably have a good deal
to do with how Perl 6 iterators work. Luke Palmer, whose name should
live in infamy for this, declared that he was starting to like
coroutines because `the elegantify stuff.'
http://makeashorterlink.com/?L5BF21482
http://makeashorterlink.com/?S4CF22482 -- Dan's expectations
http://makeashorterlink.com/?N2DF12482 -- Damian's initially preferred
coroutines
http://makeashorterlink.com/?I2EF14482 -- `Pythonic' coroutines
More junctions (or, When junctions collapse)
Luke Palmer wondered about collapsing junctions. When a function
collapses a junction, does the junction collapse everywhere, or would
one have to make an explicit 'observation' to precipitate collapse?
Damian offered a reasonably complete discussion of the various
possibilities.
I offer the following without comment:
When a junction hits a function and collapses down to one
will it propagate the changes through the runtime? Oh, what fun!
http://makeashorterlink.com/?N2FF16482
http://makeashorterlink.com/?F50021582
Control Structures I, II and III
Timothy S. Nelson's suggested new control structures got discussed this
week. The general feeling seemed to be that what was proposed didn't
really offer much that was desperately useful over and above the current
control structures.
http://makeashorterlink.com/?I11021582
http://makeashorterlink.com/?Z32012582
http://makeashorterlink.com/?I23032582
String concatenation operator
Andy Wardley wondered if we couldn't overload "+" to work as both
numeric addition and string concatenation. Answer: No.
Richard Proctor wondered if we couldn't get away with doing string
concatenation by juxtaposition ( "string " "foo" evaluates to "string
foo".) Answer: No.
Larry had wise words the on subject of juxtapositional operators.
http://makeashorterlink.com/?B24021582
http://makeashorterlink.com/?L35046582
Meanwhile, over in perl6-documentation
I'm still at something of a loss as to how to summarize this group
effectively. Essentially the goal of the perl6-documentation list is to
thrash out, in detail, the complete behaviour of Perl 6 and to produce
tests and documentation which amount to a detailed spec. Their current
project is `literal values', and the work is ongoing.
There's been some debate as to documentation format of choice (current
thinking is `POD with knobs'). Michael Lazzaro who, if he hasn't
officially been named documentation pumpking is doing a damn good job as
de facto `Bey of the docs' has posted a working outline for Section 1 of
the docs. Garrett Goebel appealed for some docs on writing good tests
for languages, which kicked off some debate about how tests should
communicate with the test harness. Angel Faus put up a first cut at the
`literal values' subsection, and got a good amount of feedback. Dave
Storrs took on the `glossary chap' role, and posted a taster.
Dave is also the coordinator for `Contributor License Forms', which are
rather important. Before you donate any docs to the Perl 6 Documentation
project you must fill in the form assigning the license to the Perl 6
project. Dave's post has the details.
Can you tell it was getting late when I wrote this section?
http://makeashorterlink.com/?P26051582 -- Section 1 outline
http://makeashorterlink.com/?Z37021582
http://makeashorterlink.com/?O18026582 -- Literals, take 1
http://makeashorterlink.com/?T29062582 -- Literals, take 2
http://makeashorterlink.com/?J1A022582 -- Numeric literals, take 1
http://makeashorterlink.com/?X3B052582 -- Glossary
http://makeashorterlink.com/?B2C032582 -- Contributor license forms
In Brief
Clinton A Pierce had problems building under Win32 -- I'm not entirely
sure the issue was resolved.
Jerome Quelin, backed up by Leon Brocard (Yay! I was wondering how I was
going to mention him this week) used his Befunge interpreter to find
bugs in PerlArray and string_append.
Daniel Grunblatt (or a better than reasonable facsimile) is back. This
made Leopold T�tsch and Steve Fink happy. And we like it when they're
happy. Welcome back Daniel.
The 'very complete lexical scopes' patch finally got applied this week.
Tim Bunce pointed us at CCured, which looks interesting:
http://makeashorterlink.com/?Q2D032582
Jonathan Sillito offered a patch to turn parrot subs into closures.
Arcadi wondered if sigils were user extensible. Answer: Yes, but not
necessarily easily.
Who's who in Perl 6?
Who are you?
Leopold T�tsch. I'm an independent software developer, living in
Austria (this is the country near Liechtenstein w/o kangaroos).
What do you do for/with Perl 6?
I'm digging around in Parrot's core, closing holes and pushing new
ideas (or old ideas, which were already discussed before my time
;-).
Where are you coming from?
I started working with computers in the late seventies (e.g. a hard
disc driver for a 10 Meg disc under CP/M 3). Via 8080/Z80 assembler,
Pascal, C, Perl 5 I finally arrived at Perl 6 development, where I
made this run under 5.005.03. While submitting patches towards Perl
6, I realized that IMCC caused a lot of test failures, so I rewrote
IMCC substantially and added the parrot engine. Running PBC inside
IMCC demanded a bunch of patches to the Parrot core, so here I am.
When do you think Perl 6 will be released?
Sept 16th, 2004
Why are you doing this?
For fun, really a lot of.
You have 5 words. Describe yourself.
Parrot for a faster live.
Do you have anything to declare?
No customs here.
Acknowledgements, requests and the usual muttering
This summary was brought to you, late from the comforts of GNER's First
Class carriages, and from Mary Branscombe and Simon Bisson's most
excellent (if somewhat hard to stand up from) sofa. Distractions were
provided by the Kiseido Go Server, XMAME, Mary & Simon's DVD collection
and a visit from Black Dog. Normal service will hopefully be resumed
next week.
Proofreading was once again down to Aspell and myself. We make a much
better team than we did.
A couple of months ago I said of Leo T�tsch that `he turned 44 on the
16th of September 2002, so not only does he contribute really useful
code, he makes Dan and I feel younger. Can this man do no wrong?' I
seems he can't, he's even found time to contribute his answers for the
summary questionnaire. Thanks Leo. Once more, if you participate in the
lists and you've not sent me a set of answers I'd be really grateful if
you'd send your answers to <mailto:[EMAIL PROTECTED]>, current names I'm
targeting include Larry, chromatic, Steve Fink, Clint Pierce, Daves
Whipp & Storrs (Hmm... Now there's a name for a legal practice, 'Pierce,
Whipp & Fink') and anyone else named in a summary who hasn't sent me
answers. As I used to say in my USENET days aTdHvAaNnKcSe.
Now, I hope you're in good voice as we all join in the chorus:
If you didn't like this summary, what are you doing still reading it? If
you did like it, please consider one or both of the following options:
* Send money to the Perl Foundation at
http://donate.perl-foundation.org/ and help support the ongoing
development of Perl 6.
* Send feedback, flames, money and/or a 1920s Vauxhall 30/98 to
<mailto:[EMAIL PROTECTED]>
The fee paid for publication of these summaries on perl.com is paid
directly to the Perl Foundation.
--
Piers
"It is a truth universally acknowledged that a language in
possession of a rich syntax must be in need of a rewrite."
-- Jane Austen?