Front page | perl.perl6.internals |
Postings from May 2005
Perl 6 Summary for 2005-05-03 through 2005-05-17
From: Matt Fowles
May 18, 2005 20:10
Perl 6 Summary for 2005-05-03 through 2005-05-17
Message ID: email@example.com
Perl 6 Summary for 2005-05-03 through 2005-05-17
Welcome ot another fortnight's summary. Wouldn't it just figure that I
can't think of anything sufficiently non-sequiterish to amuse myself.
Perhaps I need a running gag like Leon Brocard or chromatic's
cummingseque capitalization.... Maybe I should start one and not tell
you. That could be fun.
Sorry for spelling errors, gmails spell checker is busted for the moment.
Perl 6 Compiler
pugs commit emails
If you have ever been foolish enough to want to get an email for every
commit in Pugs, Sam Vilain created a way to help you sip from the
firehose. Have fun.
given when nested
Luke Palmer had a question about how nested when statements in a given
block should act. His intuition disagreed with Pugs, but most others
I don't need to walk around in circles
Autrijus has made Pugs into a registered compiler for Parrot. Since Pugs
already allowed you to embed parrot code (well pir anyway) directly into
perl 6, this allows you to embed the perl 6 in your pir in your perl 6.
Now the possibilities are endless, at least until you blow your mental
stack. Those of you with tail call optimization in your mental stack may
simply go into an infinite loop if you prefer.
xor on lists
Trewth Seeker expressed his opinion about the proper definition of xor
quite strongly. Unfortunately, his opinion is at odds with established
mathematics, as Mark Biggar pointed out to him.
PGE features update
Patrick provided an update on the state of the Perl Grammar Engine. It
has many nifty new features.
Pugs on Cygwin
Rob Kinyon and Gaal Yahas worked to improve Pugs support for Cygwin.
Unfortunately the thread winds down with an unanswered question,
fortunately Stevan clued me in on IRC that things are working just yet.
Pugs gets some objects and some rules
Autrijus announced that Pugs now has basic support for Objects and
Rules. Sometimes he scares me. Usually he just makes me really want to
learn haskell though.
Miroslav Silovic provided a regression test for hyper ops. Some people
just don't appreciate the fun of regressing.
basic test for classes
Stevan Little provided a patch for a simple object test. Autrijus
applied it. Odd, cause I am pretty sure that Stevan has the commit
Juerd provided a link to a big rule that could segfault PGE. Kind
reminds me of a homework assignment I had to create a regular expression
which matched all strings of numbers that did not contain any repeated
digits. Easy in perl, but hard in math. I think the resultant regex was
somewhere around 17 MB.
Pugs 6.2.3 with Live CD
Autrijus released Pugs 6.2.3 which contains 10% more awesome then Pugs
6.2.2. You should check it out on the live CD that Ingo Blechschmidt
<http://xrl.us/f5rh> -- release anouncement
<http://xrl.us/f5ri> -- live CD
PXPerl meets Pugs
Grégoire Péan announced that he has added Pugs binaries to his windows
distribution of Perl. Pretty cool. Autrijus innocently asked him to take
on the slightly larger task of producing binaries of Parrot too, so that
Pugs could be at its more powerful.
Wow did you see how I mentioned Parrot before going into. That was like
an awesome transition. My high school english teachers would be so
Patrick wants character class opcodes of the form find first and find
first not. Leo pointed him to some hysterical raisins who might help.
PGE on MinGW
François Perrad fixed a problem with building PGE on MinGW. Patrick
applied the patch.
PIO_fdopen return value
Luke Palmer both intoduced me to the wonderfully cute phrase "untodid"
and provided a patch making PIO_fdopen return NULL when give bad flags.
Leo applied the patch, but Melvin Smith warned that this might be a bad
idea. Silence after that.
Jeff Horwitz was having trouble embedding PIR into C. Leo provided some
pointers. Jeff was happy.
Previously, Michael G Schwern announced an update to Test::Builder.
chromatic asked if it was worth the upgrade. Michael replied probably,
but I don't think anyone has acted on it.
Robert Spier created a miniparrot at Bernhard Schmalhofer request. This
miniparrot does not replace our make system, but it does make our
website less camel centric.
Autrijus gets the commit bit
Leo, Autrijus, and Chip had one of the nerdiest conversations ever. The
summary of which is that Autrijus gets commit priveledges for Parrot.
The general consensus was that he was too productive in Haskell and we
needed to hobble him with a real mans language like C.
Parrot 0.2.0 "NLnet"
Leo announed the release of Parrot 0.2.0. This one didn't seem to make
it to slashdot. Kinda sad, cause I always get a warm feeling when I know
about stuff before /. Oddly, google groups seems to have lost the email.
really make realclean
make realclean failed to find a few files. A flaw forcefully fixed by
load_bytecode shouldn't segfault
Bob Rogers made it not. Leo applied the patch.
tell me sweet little lies
Patrick put out a request for a rudimentary set of lies and damn lies.
People are welcome to provide benchmarks too.
Leo found that parrot was panic during start up. He rolled that patch
Leo put out a request for a make test target which would invoke parrot
twice, once to compile to PBC and once to run it. Dino Morelli provided
a patch. Leo applied it.
trans test failures
Jens Rieks opened a ticket for some failing test long ago. Now he
wondered if there was a status update. Warnock applies.
Leo noticed that parrotcode.org needed a little loving. Robert Spier
provided it. He also mentioned that people could provide their own
patches for it against
<https://svn.perl.org/perl.org/docs/live/parrotcode/>. Now is your
chance to contribute to parrot's public face.
Jonathan Scott Duff wondered why runtime/parrot/library wasn't in
parrot's search paths. Leo added it for load_bytecode.
on the road to a tiny parrot
Leo began down the road to miniparrot. Creating first a parrot without a
config and using that to generate a config.fpmc for parrot. A larger
parrot is then created with the config information provided.
Bob Rogers posted some questions about how to work with multi subs and
provided a preliminary patch. Leo provided some answers but felt that
the calling conventions should be pinned down before the patch.
commit bit for Matt
Matt Diephouse was given a commit bit. Congrats. Leo took the
opportunity to remind himself to run "make test" before committing.
NULL deref in real_exception
Nicholas Clark found a NULL refer in real_exception. Leo explained that
he needed to call Parrot_run_native to allocate the exception structute
(and set the stack top pointer). Nicholas didn't want to set the stack
top as he was tracking some perl refcount bugs.
Autrijus provided a patch to make PGE escape strings as expected by
Haskell FFI. Patrick suggests a slightly different approach which
Bug in Boolean.pmc
John Lenz found and fixed a bug in Boolean.pmc. Leo applied the patch,
and Juergen Boemmels provided a test.
svn revision number for releases
Andy Dougherty noticed that Configure.pl printed failed for release
tarballs as they don't have .svn directories. He changed it to print
done. Leo applied the patch.
Jeff Horwitz provided a patch which allows spawnw to take an array. Leo
applied it (with a brief reminder on platform specific ettiquette).
dynclasses build problem on Win32
Jerry Gay fixed a problem building dynclasses on Win32. Leo applied the
basic JIT questions
Millsa Erlas had a few basic questions about Parrot's JIT. Leo provided
@ANON tests and test fixes
Jerry Gay fixed some tests and added some more. Leo applied the patch.
Leo put out a request for some filepath and string manipulation support
call syntax abstraction
In a failed attempt to dewarnock himself, Leo reported his call syntax
Nick Glencros suggested renaming (or possibly removing) some old tag
files from our CVS days. Leo was unsure about the removing option, but
liked the renaming one.
MinGW build problems
François Perrad provided a patch to fix some build problems on MinGW.
Leo applied the patch.
omniscient debugging in parrot
Andy Bach wondered how much of Omniscient Debugging would be possibly in
parrot. Leo reasoned that it could be added with some work. It would
involve replacing all mutating vtables with special versions that store
extra information to allow them to roll back.
Jeff Horwitz wondered who else was actively working on mebedding parrot.
Nicholas Clark provided a very uncertain pointer.
OO support in Parrot
Autrijus explained that Parrots current implementation made attribute
access difficult. Leo went further saying that he felt it was wrong. The
concensus is that Parrot needs to allow non-absolute access to
attributes, so Leo did it.
François Perrad found that config.t fails without first doing a make
clean. His initial solution was deemed a little too quick and too dirty
find ops return for not found
Patrick provided a patch which changes the return value of find and
find_not to the strings length (instead of -1) if the character does not
occur. Warnock applies.
clean *_config files
Jerry Gay provided a patch to clean the _config files during make clean.
Leo applied it.
MMD for logical ops
Leo changed the logical ops to return one of their operands as
Jerry Gay provided a patch to remove a warning on Win32. Bernhard
Schmalhofer applied it.
Tim Bunce wondered whether any resolution with respect to namespaces had
been reached. Leo told him not much.
Dino Morelli was trying to add some unit tests when he ran into
questions. Patrick provided some answers but suggested further
conversation move to p6l, which it did.
md5 library clean ups and speed ups
Nick Glencross posted some updates to the MD5 library. This led to a few
rounds of speading it up and comparing its speed with various other MD5
libraries. The final result is: slower than C but MUCH faster than pure
Bob Rogers pointed out that disassemble was sefaulting on some byte
code. Leo fixed it.
s/internal (exception)/real \1/
Jerry Gay provided a patch which changed some internal exceptions to
real ones. Leo applied it.
Tim Bunce reported some failing tests on OSX. Leo fixed them.
small typo in PBC_COMPAT
Uwe Voelker provided a patch fixing a typo in PBC_COMPAT, which
chromatic applied. He also noticed that p6rules/*.t did not have plans.
Patrick welcome all updates to PGE tests.
Dino Morelli added some tests for p6rules. Patrick applied the patch.
index up bug in PGE
Jerry Gay found a bug in PGE involving escaping sequences strangely. Leo
tracked it down, and Patrick fixed it.
Parrot on Python
Kevin Tew wondered what the state of Python on Parrot was. Sam Ruby and
Michal Wallace provided updates. Hopefully it will take off again soon.
paths with spaces need to be quoted
Ron Blaschke provided a patch to quote some paths that needed it in
dynclasses. chromatic wondered if that would break with paths that
already contain quotes.
Juergen Boemmels noticed that the SVN repository still contains some
.cvsignore files. He suggested removing them, but a few things need to
be updated to the svn world before that can happen. Bernhard Schmalhofer
made it happen.
<http://xrl.us/f5s4> -- request
<http://xrl.us/f5s5> -- resolution
Null pointer deref
Adrian Taylor found a NULL pointer problem in Parrot. Leo fixed it.
Parrot embedded in XSLT 2.0
Colin Paul Adams wondered how he could get information back from an
embedded parrot. Autrijus pointed him to Parrot_call_sub with a
signature of "SS" (takes a string and returns a string).
thread detatch hangs on win32
Jerry Gay noticed that thread detatch was hanging on Win32. He provided
a patch to skip it so that other tests could fail in its place. Leo
applied the patch.
Perl 6 Language
Semantics of Coroutines
Joshua Gatcomb wondered whether coroutines could be invoked with new
arguments on successive invocations or not. Some pointed out that
allowing the arguments to change is a more powerful model, but I didn't
see anything definitive.
function composition operator
Michele Dondi wondered if there was a function composition binary
operator. While one does not exist, one can be added (as was
demonstrated much later by Ingo Blechschmidt.
initialization of state vars
Ingo Blechschmidt wondered how state vars and parentheses would
interact. Larry replied that his examples were probably correct.
" ==" > automap?
Brad Bowman wondered if a single arg sub or block would automatically
map when used on the sharp side of a pipe. Luke Palmer thought this
might be too much dwimmery.
J Matisse Enzer wondered if perl 6 would have strong IDE tools like
refactoring supported or automated syntax completion. Larry explained
that he would like to make it possible for Perl 6 to support these
things "just as Perl 1 built in all the system interfaces".
Juerd wondered what the precedence for the reduce metaoperator was. Luke
Palmer informed him that it was listop precedence.
piping into random things
Juerd wondered about piping into various things like arrays, scalars,
hashes, and filehandles. Larry gave one of his characteristically
That's why they call me Mister Bitterness
Juerd wondered what "complain bitterly" meant in the context of the yada
operator. Larry explained that " ... " would fail, " ??? " would warn,
and " !!! " would die.
Stevan Little wondered how isa would act when called with junctions,
nothing, classes, or instances. Larry explained that it would act
intelligently by autothreading, returning a list of all options,
returning a bool, or something I didn't follow.
Juerd created a somewhat lengthy list of available operators, hoping to
inspire someone to come up with a good operator for block labels. This
led to a very meandering thread.
reduce meta operator
Some of you might be confused by my earlier meantion of a reduce
metaoperator. Larry introduced one. Much debate ensued, but Larry seems
fairly set on it.
override built ins
Andrew Savige wondered if he would be able to redefine built in
functions like read in perl 6. Larry explained that perl 6 would give
you so much rope that you could hang yourself from several tree while
blowing off your own foot with it.
Gaal Yahas wondered how to open stdout or a file named "-". Larry
explained that io() would have the dwimmy parts like opening stdout,
while open would not try and dwim.
adverbial blocks explained
Terrence Brannon stumbled upon the phrase "adverbial blocks" but didn't
understand what it meant. Luke Palmer provided a very clear and cogent
Autrijus noticed that the autodereferncing of references would cause an
infinite loop for circular refernce. Larry recanted and decided that the
full on autodrill down was not as cool as he had initially thought, but
he did warn us that next week he might think it was even cooler.
scoping of $/
Ingo Blechschmidt wondered what sort of scope $/ would have. Luke Palmer
replied that it would be lexical just like perl 5. Larry corrected him
pointing out that it would actually be lexical, unlike perl 5.
binding subs return values
Joshua Gatcomb wondered what binding of subs return values would do by
default. Juerd answered that it would not allow modification unless the
sub were declared as an lvalue.
use fatal, no fatal, exceptions, and undef
Aaron Sherman wondered how various scopes fatality levels would
interact. Luke Palmer explained that you need to do 360s on the control
pad while holding block. He also provided some thorough examples.
xml grammar in Perl 6
A while back Juerd wrote a perl 5 script to transform the EBNF spec of
XML into Perl 6 rules. Now that Pugs might be able to support it, he
suggests that it would be a good project for a brave soul. No takers
mailing list indexing
Aaron Sherman posted a link to his initial version of an annotated
version of the mailing list. He asked for comments, but Warnock applies.
Someone who posted to google groups (and got the unfortunate name
mangling of arcadi.sheh...@gmail.com) asked if it made sense for " $a =
stuff @foo, how =" 'scrambled', 1, 2, 3; > to be written as " $a =
:"how('scrambled') stuff @foo, 1, 2, 3; > or some such. Sadly, we will
semantics of split
Autrijus asked if he had the right Pugs was splitting correctly. It
wasn't, but it is now.
Rod Adams announced that he found the real world intruding too much and
was going to have to leave off his work on S29. Sam Vilain, Aaron
Sherman, and Max Maischein all volunteered to take up the effort.
Joshua Gatcomb wondered exactly what "is chomped" did. Larry Wall
explained exactly what "is chomped" does.
Patrick, based on his experience with PGE, suggested a slightly new
syntax for character classes in perl 6. Larry liked the syntax and went
on to muse about other unresolved issues involving character classes.
Numification of match objects
Autrijus noticed that numification of match objects made strings of
digits numify to 1 (i.e. true). He didn't like this. Actually no one
did. So it has been changed to numify as one would expect. After all, it
can numify to 0 but true.
traits and properties API
Stéphane Payrard wondered when and how traits would interact with
properties. Brent 'Dax' Royal-Gordon and Larry provided answers.
single element lists
Jonathan Scott Duff wondered what " (1) " would do. Larry though that
we would have to specialize () to parse as (,).
Thomas Sandlaß, Rod Adams, and Autrijus speculated about ways to deal
with a Void type. Nothing definitive came out of it though...
uniquely identifying objects
Stevan Little wondered if there was a way to uniquely identify objects
in Perl 6. Larry pointed him to the .id and the associated =:= operator.
BEGIN and lexicals
Benjamin Smith wondered if BEGIN could modify lexicals that don't really
exist yet. Larry expressed the opinion that one should be able to modify
compiler state in begin blocks; however, he did not answer the question
of what Benjamin's example does.
:: vs ::: in rules
Patrick confused many people when he asked about the difference between
:: and ::: at the top level of rules. The answer seems to be that :::
will fail the entire match while :: will simply fail it at that offset
in the string on which it is attempting to match.
negatives of junctions
Larry noticed that != and !~ will confuse english speakers when applied
to junctions. Luke noticed that defining "$a != $b " as " !( $a == $b )
" works. And tragedy was averted.
boxed types from builtins
Aaron Sherman worried that many built in functions return boxed types
which could cause a big speed hit. Rod Adams explained that this was
necessary but optimizations would be made available.
Juerd suggested using ./method to mean $?SELF.method (in an attempt to
solve the long standing debate of $?SELF.method vs $_.method). Much
discussion ensued although the general response seems favorable.
Rob Kinyon noted that there seemed to be an extremely large number of
operators. He expressed concern, because he had believed that P6 was
going to have a small core with moduls. Larry explained that most of
these operators were in fact generated by combining a small set of
operators and meta operators in a combinatorially explosive way, giving
the wonderfully lucid example of [»+^=«]. Much discussion ensued.
BUILD and submethods
Ingo Blechschmidt wanted to be sure that all appropriate submethods
would be called when they should and that only the correct one would be
called when they shouldn't all be. Larry answered that it did work as he
<http://xrl.us/f5uc> -- question about subclasses
<http://xrl.us/f5ud> -- same question but with roles
$. vs $:
Luke Palmer was having trouble understanding what the difference between
$. and $: was. Aaron Sherman prointed out a few differences according to
Autrijus wondered what the signature for " not " was in perl 6. Larry
explained that unlike perl 5, perl 6's not function should act like "
multiple colons in MMD
Luke Palmer caught Autrijus off guard when he pointed out that multis
could have multiple levels of : each of which is less important than the
last. Larry surmised that they might not have documented this hard
Carl Franks started a very long thread when he noted that nested
captures caused extra layers in the match array rather than counting
parens like perl 5. This led to discussion of 0 vs 1 indexing.
Discussion ensued and it was decided that $0 == $/ and there was much
'1.28' * '2.56'
Autrijus wondered what path '1.28' * '2.56' shoudl take to arrive at
3.2768. Larry told him that infix * used prefix + to numify non-Num
methods from roles vs classes
Aaron Sherman wants to lazily load a role but only the first time it is
necessary. Luke Palmer assured him that his example would work
currying and defaults
Aaron Sherman, in his efforts to get up to speed on S29, wondered how
currying would interact with default values. Larry explained that
default values would not be bound until the invocation of the curried
precedence of custom infix ops
Ingo Blechschmidt wondered how to define the precedence of custon infix
ops. Luke Palmer pointed out the looser, tighter, and equiv traits (by
default it is equiv( &infix:<+> ) ).
The usual footer
To post to any of these mailing lists please subscribe by sending email
<firstname.lastname@example.org>. If you find these summaries useful
or enjoyable, please consider contributing to the Perl Foundation to
help support the development of Perl. You might also like to send
feedback to email@example.com
<http://donate.perl-foundation.org/> -- The Perl Foundation
<http://dev.perl.org/perl6/> -- Perl 6 Development site
<http://planet.parrotcode.org/> -- Parrot Blog aggregator
Perl 6 Summary for 2005-05-03 through 2005-05-17
by Matt Fowles