Pugs 6.2.8 released! | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net
Set by autrijus on 13 July 2005.
stevan mugwump++ # is_deeply hack .... very nice :) 00:51
iblech: I hope this doesn't mean I have to write the metamodel in JS now too 00:52
:P
mugwump stevan: of course, it doesn't look inside objects. this is an interesting example of requiring a "visitor pattern" 00:56
It will be a design decision what to do with "private" state in this case 01:02
The visitor pattern needs to be a module that runs against the metamodel - it should be capable of visiting both private and public state
which reminds me. We need to think of a term for "visitor pattern" that isn't as long as "generic data traversal iterator" and doesn't sound like the sort of thing a Java freak would say. Any ideas, anyone? 01:06
does anyone _like_ the term, "visitor pattern" ? 01:11
cwest iblech++ # :-) 01:33
svnbot6 r5655, fglock++ | Refactored "Recurrence.pm" out of "Span::Code"; added tests for "Inf" behaviour in infinity.t 03:30
mugwump crosses his fingers and hopes that he can get the $.foo =:= $?SELF.foo() confirmed without anyone talking about "use self" 03:39
svnbot6 r5657, fglock++ | "recurrence" code refactored out to Recurrence.pm; some methods marked with "..."
stevan mugwump: I like "visitor pattern" :) 03:45
mugwump ok, so perhaps it's just me who thinks that "design patterns" is like jizzwords for what should be covered in comp101 03:47
obra mugwump: it's all about having a vocabulary. Not because any of it is hard, but being able to say "you need a facade there, you dork" is useful 03:48
mugwump ok, so "visitor pattern" can be for the iterator that asks for "public" attributes only. and "squatter pattern" can be for the one that gets the private attributes, too ;) 03:51
stevan: maybe it would be better to implement "next" in terms of a single primitive "next" that just returns Code refs for the remainder of the method dispatch queue 03:56
and allows you to set it too, then just jump to the next one 03:57
stevan mugwump: that is kind of what next_METHOD() is doing in the prototype 03:59
the dispatcher is just a closure over a stack of iterators (themselves implemented in closures)
so it is stateful, and next_METHOD just starts up the method search again 04:00
mugwump ok. with the C3 basic, people can sub-class the metamodel to demonstrate new features which can eventually be used as default
s/features/schemes/
stevan I dont understand?
C3 is just one of the dispatch orders
(which I am working on right now BTW) 04:01
mugwump so, once that's in the metamodel as the "canonical" method, then if somebody wants to implement what's in A12 they can prototype it by specialising your metamodel classes
on the "don't implement poorly considered half-baked nice to haves in version 1" principle ;) 04:02
stevan well I am not sure it will be the canonical method
I think it probably should be, but I am not Larry :)
and we already have pre-order and breadth first in the metamodel 04:03
there is a MetaClass::Dispatcher class
which you call like this: $Foo->meta->dispatcher(':preorder');
$Foo->meta->dispatcher(':breadth');, etc 04:04
and it returns something which responds to the next() method and returns the next metaclass in the ordering
WALKMETH and WALKCLASS are implemented in terms of this
if you so insane as to want to write your own dispatcher :) 04:05
then you would likely subclass MetaClass and have it's dispatcher() method return something else
mugwump right... thanks for the insight 04:14
stevan converting python to perl is not as simple as you might think 04:24
but I think I got the C3 stuff down now
just gotta write a bunch more tests :)
autrijus rehi. 04:43
stevan: the C3 order radiates sanity in the insane land of MI. 04:44
stevan autrijus: I agree
autrijus: I am about to commit the converted python C3 code
autrijus ooooh.
stevan I want to add more tests from the Dylan paper too 04:45
autrijus so svn is back, and we can freely release 6.2.9 today/tomorrow if we feel like to
I think I got time for releng; is there any reason we shouldn't do a 6.2.9?
(instead of waiting until (say) next week) 04:46
stevan up to you really
I am about to go to bed though, but I can do some releng in the morning (in about 9 hours)
autrijus that's fine; meanwhile I'll do the usual bug triaging 04:47
really the main benefit of weekly release to me is that I won't neglect bugs for too long :)
dudley has his finger on the smoke button...
autrijus but I'd like to see your C3 code before you sleep :D 04:48
70_MRO.t?
stevan yes, just committed it
it is a ugly port of the Python code
autrijus woot
stevan it could use some perlish-ness
autrijus dudley: you can press the button anytime :)
stevan autrijus: I am thinking that C3 should be the canonical order 04:49
autrijus k
svnbot6 r5658, Stevan++ | Perl6::MetaModel -
r5658, Stevan++ | * first prototype of the C3 ordering in t/70_MOR.t
r5658, Stevan++ | - NOTE: this is
r5658, Stevan++ | not yet added to the metamodel
autrijus stevan: I can't see a reason against that
stevan this way we can check MRO at class composition time
and can croak if things are ambigious
autrijus yes. 04:50
stevan I will need to do some thinking about how next METHOD will work
should it always use the MRO from the original class?
autrijus and the thing that bugs me about p5's preorder MI was its nonmonotonicity
stevan or as it winds it way down, should it use the MRO of those classes
yes, p5 was just pre-order, which is nice and easy, but hard to grok 04:51
actually it's easy to grok, just hard to use :)
autrijus hehe
I'd argue that A12 models the dispatch as a iterator loop
stevan I want to add some of the more complex examples from the Dylan paper too
autrijus over the dispatch order
stevan autrijus: yes, i think you are right (with C3 at least) 04:52
autrijus so 'next' just means 'next' there
stevan with pre-order or breadth first its a little sillier
autrijus i.e. always from original class
stevan yes
I think that will be the least suprising :)
autrijus good, then we agree :)
stevan so we are borrowing from Python and Dylan now too
:) 04:53
Perl 6 : everything and Python too
autrijus eh, p5's OO was borrowed en masse from Python already.
lwall said we should blame python for p5 oo's brokenness ;)
stevan true, but Pythons was much cleaner (at least typing-wise
autrijus nod. 04:54
anyway, I like that "least surprised" r us.
stevan yes me too
autrijus is reminded of why the lucky stiff's "The Least Surprised" comic strip series
stevan I really like that it is sooooo easy to blow up when things are broken
autrijus # redhanded.hobix.com/
stevan as opposed to just doing things wonky
autrijus nodnod. 04:55
stevan the algorithm is really pretty simple actually, once you implement it :) 04:56
of course now I have to write it in Javascript too :P
oh I orderd that "art of the metaobject" book finally 04:57
it should get here this week
autrijus cool 04:58
I don't think it will be that hard to do metaobjects in javascript really :)
prototype-based modeling is clean
stevan it goes into detail about bootstraping, which is what I really need to learn
autrijus 'k. I think I need to finish re-reading TaPL and finish ATTaPL, then I need to get more books 04:59
stevan autrijus: yes, JS wont be that hard, except my JS is rusty old 1.2 knowledge
(more books)++ # can never have enough of them
autrijus I think our friendly rhinocamel friends can help :) 05:00
stevan yes, I have been hanging around the JSAN guys lately
jdv79 nice work with the validator by the way 05:01
stevan robkinyon (who has been JSAN-izing the Prototype library) actually works with me
jdv79: thanks
ok I have to sleep now 05:02
nite all &
autrijus nite! 05:04
validator?
jdv79 openjsan.org/doc/s/st/stevan/HTML/F...index.html 05:05
autrijus ooh. 05:06
mugwump heh, I tried to implement a classical inheritance model in JS, but stumbled on lack of SUPER support 05:13
I got a SUPER implementation from Douglas Crockford's "JS is like LISP" site 05:14
dudley hmm, is javascript worth learning if I harbor a deep hatred of the web?
mugwump After I found it wasn't re-entrant I e-mailed him about it, and he told me I should be using Java 05:15
dudley I never gave it much thought before, but everyone's talking about it lately...
jql I like JS as a language 05:25
web programming is a bit like pulling teeth, but so is writing a perl admin script that works on unix and VMS 05:26
but that doesn't reflect on ECMA-the-script
jdv79 browser diffs and the incompleteness of CSS 2.0 are some of my more agrivating gripes with it 05:27
jql grows weary of the boiler-plate body { text-align: center; } .content { margin: 0em auto 0em auto; } or whatever 05:29
jql kicks IE on general principle
dudley joins jql in the beating 05:30
jdv79 we may have found a bug in it at work even - not sure though
jql I punched out a "standard" html/css webpage and was surprised to find it recognizable when I loaded it in IE4 05:31
not sure what I did wrong. I needed to use more bells or whistles
dudley writing perl scripts that run on unix and vms is actually one of the better parts of my job
jql writing things that work on VMS gives you great respect for CPAN 05:32
dudley maintaining 20-year-old vax basic code that was written without a single function is one of the worst :-(
jql ow 05:33
mugwump goto insanity;
jdv79 MS SQL server stored procedures and old VB isn't very nice to maintain either
dudley yech. 05:34
jql I like MS SQL. I do not like VB + anything
coral mugwump: heh! (re: "should be using Java") 06:01
masak tries writing using the dvorak layout 06:35
difficult
Juerd masak: What's so difficult? 07:08
masak: Use dvorak.nl to get familiar with at least the home row before you do anything else
Otherwise you'll learn dvorak the same way most people learn qwerty, and then you ruin it again for the rest of your life.
masak Juerd: what's difficult is using dvorak in vim 07:09
you'll never know what a keypress does :/ 07:10
Juerd: thx for the url, btw, it's helping 07:13
Juerd masak: In vim, all that's important is to know what a *letter* does
And forget entirely what a certain *key* used to do in kwertie
masak Juerd: yes, i know, but so much is reflex in vim 07:15
i reach for a key, only to discover that it's been remapped 07:16
my muscles don't think "letters" they think coordinates
Juerd Oh, and you should probably NOT remap keys so that you have a hjkl-ishly "sane" mapping again
As that'll hurt only more if you encounter a default vim
If you used hjkl, keep using them
It's a little awkward only the first few days 07:17
But yes, vim is probably the hardest thing to switch layouts with :)
I know someone who has gone as far as mapping all command mode back to qwerty
masak :) 07:18
Juerd while keeping insert mode in dvorak
masak i can see why
Juerd I think it's a foolish concept.
masak it's based on habit
writing text and typing commands are handled differently in the brain
Juerd Habit is exactly the thing you have to unlearn.
And while you're at it, you can make them handled the same way 07:19
When you hit dd, say (if possible, out loud) "dee dee"
masak that's an idea
Juerd It worked for me 07:20
masak i just hope i'll still be able to use vim on qwerty keyboards
Juerd My mom wondered what I was doing when I said xxx, but still, it worked well.
masak :) 07:21
masak vowels to the left, consonants to the right... i like 07:22
skugg Juerd: bah. vim is a doodle compared to emacs's multi-keypress combos. 08:33
castaway was wondering how they translated to dvorak.. 08:34
skugg with great difficulty :)
castaway all a matter of training fingers I guess.. (hard enough using english layout at home, and german at work ,) 08:35
Juerd skugg: I always assumed people smart enough to use Dvorak would also be smart enough to not use Emacs... 08:36
castaway refrains from thumping Juerd :)
Juerd Aw, come on. What's a day without holy wars?
castaway a nice quiet one? ,) 08:37
Juerd What's nice about quiet? ;)
osfameron does anyone get worked up about vim vs emacs anymore?
I thought they just pretended to now!
Juerd I dunno. I don't use emacs myself
And must say it does feel a bit awkward when someone requests this 20 megabyte editor on a box I admin. 08:38
castaway osfameron: I dunno.. though I do think linking it to intelligence is a bit below the belt
osfameron yeah, I guess 08:39
I get annoyed when people do the same about Windows
Juerd -rw-r--r-- 1 root root 2.5M May 25 21:09 /boot/vmlinuz-2.6.11.9
-rwxr-xr-x 1 root root 4.3M Mar 17 22:48 /usr/bin/emacs21-x
osfameron I mean, it's ok to bash microsoft
castaway too
Juerd castaway: Oh, below the belt it certainly was
castaway Juerd, space is cheap
Juerd Still
castaway shrug. 08:40
Juerd The entire linux kernel on feather is 2.5 MB, while a single editor, that doesn't have all the hardware support, is almost twice as large :)
castaway s/$/s/
So?
Juerd shrug.s? ;)
osfameron :-)
castaway woops
well you seem to have X support in, and probably a bundle of addons 08:41
Juerd Only because some people requested that.
castaway it's not really worth complaining about though IMO.. or just say no..
Juerd I installed X for the same reason I installed emacs: user requests
I'm not complaining
If you have a special reason to need openoffice.org on the box, it'll be there 08:42
castaway Ok then
Juerd But I do think it's a huge, slow and inconvenient piece of software
castaway (thats what it sounded like)
you're entitled to your opinion, as long as nobodies forcing you to use it yourself 08:43
Juerd Of course
Although I do sometimes want to sneakily symlink emacs to vim ;)
QtPlatypus wishes that he could edit word files with emacs "Then I would only need one huge slow piece of software."
castaway heh
yeah, needing OOo is annoyig, but such is life 08:44
Juerd Have you logged in at feather with a utf8 capable terminal lately, by the way?
QtPlatypus Actually emacs is light as a feather compared to OOo.
castaway I havent ever been on there, Juerd
Juerd feather isn't all that light
castaway: Oh
castaway but gimme a login and I will :)
Juerd You can request one by mailing, well, the request, including full name and preferred user name 08:45
castaway has emacs symlinked to jed on one machine, btw (much smaller, maybe you should give them that and see if they notive :)
to?
Juerd me
castaway [email@hidden.address]
Juerd That'll work
If you use dvorak, [email@hidden.address] is easier ;) 08:46
castaway grins
castaway cant even 10-finger type.. or even 5-finger..
Juerd I can tell by the amount of spam I get at that address, that dvorak is gaining in popularity. 08:47
castaway: If you have at least 8 fingers and one thumb, you can learn to touch type dvorak within 10 hours
Touch typing qwerty is not a requirement, and not a problem. :)
Weirdly, there are both people who think touch typing qwerty will help, and who think it'll hurt... 08:48
castaway emailed
castaway counts
well, its more like 4 moveable fingers and only one on the left hand (for practical purposes) 08:49
Juerd DAmn
Aankhen`` Juerd >> Your typing tutor is really useful.
castaway I cant move the ones on the left hand worth a damn
Juerd I have to make the email column twice as large now!
castaway why, my email too long? :)
Juerd yea
castaway grins
increasingly, I try to logon places with it, and it gets rejected as invalid (sigh)
Aankhen`` Yay, `svk sync` is at r4226...
ipv6guru Hi All, anything happening 10:41
webmind well.. if anything.. not here 10:47
ipv6guru It seems that way, maybe being in Aus means I get to miss everybody
I will try again later, was only here to have a listen at the moment, cya later. 10:51
masak how would i write @p = (1,2,3) »+« (4,5,6) in perl 5? 12:14
masak fears the perl6 reformatting of his brain has begun
castaway umm, whats it do? :) 12:18
osfameron a for loop that unshifts 2 arrays at same time, much less elegant
masak osfameron: and i'd like if it left the original arrays alone 12:28
osfameron masak: well, you could copy them...
masak castaway: the program or the perl6 reformatting?
osfameron: much less elegant :)
osfameron masak: well, basically you're going to want something like 12:29
@p = hyper { $_[0] + $_[1] } [1,2,3], [4,5,6];
this is probably implemented somewhere on CPAN - dunno, List::Util maybe ? 12:30
masak oftentimes i find myself wishing for a variable that tells me the index of the current element in a map or for
that would make this easier to do, too
osfameron yeah! apparently this is what .kv will do
otherwise you end up having to set up an external iterator, which is annoying
masak yes
.kv++ 12:31
osfameron TT has a nice awareness of its loop iterator position, I think p6 should have that too as well as kv
masak that's a good idea
any thoughts on how?
(syntactically)
autrijus when would you like that instead of .kv? 12:32
masak i'm not sure i follow how to do it with .kv 12:33
i thought .kv was for hashes
castaway masak, i meant the perl6 code you gave 12:34
masak castaway: it's meant to put (5,7, 9) into @p 12:38
it's just that one statement, not part of a bigger code
osfameron autrijus: I guess that I think something like for $x (@foo) { print $x.index } seems nicer than for $k,$v ( @foo.kv) { print $k } # or whatever the syntax is :-(
partly because though I like the idea of kv, I think it's a little confusing
not least because of the name. kv? 12:39
I'll deal, of course.
castaway Oh.. in that case a for loop over the indexes, thats what i'd do anyway.. (or a map over them) - my @p = map {(1,2,3)[$_] + (4,5,6)[$_]} (0..2) ? 12:40
osfameron castaway: cute! 12:41
castaway bows
autrijus osfameron: for @foo.pairs { say .key, .value } 12:43
osfameron oh, well I like pairs much more than .kv - is it kosher ? 12:44
masak castaway: thx
autrijus kosher, as in valid? sure, but currently due to an amazing design bug you need to write
for [1..10].pairs -> Pair $_ { say(.key, .value) } 12:45
I've just p6l'ed it.
castaway mm, fugly :)
autrijus (the key being the explicit "Pair $_")
right. blame larry -- see my new p6l post for details.
osfameron hmmm, "Is this a desirable behaviour?". Very subtle :-) 12:50
btw, did it ever get decided if .head and .tail were synonyms of .key and .value?
castaway hmm, that sounds subtly wrong.. head - first list item, tail - rest of list .. 12:51
osfameron castaway: well, considering that 1 => 2 => 3 is the pair 1=>(2=>3)... e.g. it's a cheeky linked list 12:52
castaway hmm, its not a list though, really 12:55
(and if I see anyone write that I think I'll go quietly mad)
osfameron castaway: as discovered here on #perl6, you can create a linked list by doing [=>] @array 12:57
castaway wonders 12:58
Arathorn that is very sexy
dada osfameron: is [=>] an operator? 13:02
masak dada: [] is the meta-operator "reduce" 13:03
dada never heard of this one
masak it effectively replaces every comma in a list with the operator inside the []
dada I've been away too long :-(
Arathorn i wonder what kind of memory hit you get between (1,2,3) and (1,(2,3)) etc.
Aankhen`` perlbot seen putter 13:05
dada >> `[=>] (1, 2, 3)` is equivalent to `1 => 2 => 3`. 13:06
# which returns (1, undef)
dada Aankhen``: so `[+] (1, 2, 3)` returns 6, right? 13:08
Aankhen`` Yep.
QtPlatypus ?eval [=>] (1,2,3,4)
evalbot6 (1 => undef)
dada ?eval [+] (1,2,3)
evalbot6 6
dada :-)
Aankhen`` ?eval say "My safe_say is working now!"
evalbot6 My safe_say is working now! bool::true
Aankhen`` :-o
castaway why 1, undef ?
QtPlatypus Thouh it looks like [=>] is broken at the moment.
Aankhen`` ?eval 1 => 2 => 3 13:10
evalbot6 (1 => (2 => 3))
dada ?eval my %r = [=>] (1,2,3); %r
evalbot6 {('1' => undef)}
dada oops, they're even 13:11
masak QtPlatypus: is there a corresponding failing test for that? :)
Arathorn ?eval [,] (1,2,3)
evalbot6 (1, 2, 3)
Arathorn :D 13:12
masak :D
dada ?eval say [~" "~] <<foo bar baz>>
evalbot6 Error: unexpected "[" expecting block construct, term, ":", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
masak dada: sorry, just operators
QtPlatypus [~] Is damn usefull.
dada masak: ok, thanks
?eval say [~] <<foo bar baz>> 13:13
evalbot6 foobarbaz bool::true
svnbot6 r5659, iblech++ | PIL2JS:
r5659, iblech++ | * pil2js.pl -- Added option --yaml-dump to dump the parsed PIL as YAML
r5659, iblech++ | (clearness of YAML and other PIL2* compiler writers might benefit).
r5659, iblech++ | * New shell: jspugs.pl, simplifies the usage of pil2js.pl (you can enter
r5659, iblech++ | statements to compile just like in interactive Pugs).
osfameron oh, is [=>] broken now, or is that desired behaviour? 13:17
QtPlatypus That isn't desired behavour. 13:18
[=>] (1,2,3) should be just like 1 => 2 => 3
mja ll 13:27
oops, my bad
Aankhen`` How do I check an altered Prelude without recompiling? 13:35
Nevermind, figured it out. 13:36
gaal++
svnbot6 r5660, iblech++ | * Usual svn props added to ext/Recurrence. 13:48
r5660, iblech++ | * PIL2JS: jspugs.pl -- Some new functions (:js, :l).
r5660, iblech++ | * PIL2JS: PIL::Nodes -- As we know, subs return the value of their last
r5660, iblech++ | statement if there's no return(). Previously, I used JavaScript's eval() to
r5660, iblech++ | simulate that behaviour; Now I analyse at compile-time what the last
r5660, iblech++ | statement is and add an appropriate call to return(). PIL++ for the absence
r5660, iblech++ | of Syn, which'd made this task a lot more complicated! :)
Arathorn this may be a really stupid question, but why is PIL2JS in the pugs/perl5 dir? 13:58
iblech Arathorn: Because it's written in Perl 5? :) 13:59
Arathorn hm ;) 14:00
Arathorn takes a closer look, then
iblech To start, you might want to start ./jspugs.pl
Arathorn right - that makes a whole lot more sense 14:01
iblech And then enter :precomp
And then say 3 + 4
Arathorn :pil say "hello world" # seems out output code rather than a PIL dump, though
iblech And then you'll have a output.html, which, when run in a browser, will output 7 :)
Arathorn (unless i'm missing the point even more than normal)
iblech Oh, right
Fixing
Arathorn :pil.yaml is very pretty, though 14:02
'tis a great hack :)
iblech :)
svnbot6 r5661, iblech++ | * PIL2JS: jspugs.pl -- Fix :pil not getting processed correctly, thanks to 14:05
r5661, iblech++ | Arathorn++ for noticing.
r5661, iblech++ | * PIL2JS: PIL::Nodes -- Better reporting of compilation errors (now with
r5661, iblech++ | line/column info, thanks to PPos).
Arathorn aah, that's more like it 14:06
woo :)
iblech: fwiw, ../../pugs -Ilib6 -CPIL ../../examples/mandel.p6 | ./pil2js.pl --html --preludepc preludepc.js | mozilla 14:28
yields a Error: box.GET is not a function
Source File: arasphere.net/output.html
Line: 53
iblech Yep
Arathorn (from Venkman)
iblech Working on it :)
Arathorn cool :) 14:29
Arathorn tries to wrap his head around the code
iblech The new PIL2JS.Box.Constant(...).GET() are disturbing 14:30
(But in most cases, indispensable)
Arathorn hm, anyone know if there's any way to get a fuzzy stack backtrace in javascript? 14:35
istr that the mangled netscape 3 js engine on Liberate set-top-boxes could give you backtraces.. 14:37
Arathorn rummages around
iblech That would be *really* great
Would simplify debugging extremely 14:38
Arathorn well, Opera can do it, seemingly: my.opera.com/community/dev/jsdebug/
Arathorn upgrades his opera a few major revisions.. 14:41
iblech autrijus: Is it ok to change the definition of show (PPos x y z) to not include the y (the raw Exp)? That'd simplify my parser *extremely* (try pugs -CPIL -we '{42}()' or so -- you'll see VCode, MkEnv, etc...) 14:43
Arathorn iblech: interestingly, Opera's js engine catches the null boxed object in a completely different place, complete with backtrace 14:47
Arathorn has a play
autrijus iblech: sure! 14:48
iblech autrijus: Great! :)
autrijus iblech: looking at your :pil.yaml I'm further convinced that explicit arity is doomed
all nodes should be given with record syntax :)
PStmt { pStmtHead = ..., pStmtTail = ... } 14:49
etc
iblech Yep 14:50
Would further simplify parsing
autrijus also do you think we should split off two version of PApp?
PAppFun and PAppMeth
partly to avoid the Just part 14:51
and partly because the emission sequence is likely different anyway
for the inv and noninv variants
maybe PApp and PInv
iblech Yep, makes sense (but the ->isa("PIL::Just") or ->isa("PIL::Nothing") aren't thaat problematic right now) 14:52
autrijus with that, all positionals would be eliminated from PIL tree, and everything will either be named records or rank-1 atoms 14:53
svnbot6 r5662, iblech++ | Pugs.Compile -- Don't output the raw Exp in the show of PPos to ease the life
r5662, iblech++ | of PIL parser writers.
masak autrijus: how's the tropical cyclone coming along? 14:54
svnbot6 r5663, iblech++ | * PIL2JS: jspugs.pl -- Detect an outdated precompiled Prelude.
r5663, iblech++ | * PIL2JS: PIL::Nodes -- $a = $b returned the unboxed $b, fixed.
r5663, iblech++ | * PIL2JS: pil2js.pl, Prelude::JS, PIL::Nodes -- Support for $?POSITION, and
r5663, iblech++ | &die reports the erroring position, too (as in normal Pugs).
autrijus masak: it's dwindling :)
masak :)
putter Aankhen``: pong? ;) 14:58
autrijus ok, so the new PIL structure will be very YAML friendly 14:59
it's either Scalars (aka atoms, as in PLit values)
Sequences (aka lists, normal Haskell lists)
or Mappings (aka hashes, Haskell named records) 15:00
that's the three node kinds
of course each one is still tagged with the constructor name as the node type.
but the idea is instead of the huge arity table, we only need to record the nodes as belonging to one of the 3 types
autrijus praises yaml for constraining the representation space 15:01
so in yaml the constructor name directly translated to taguri 15:02
and the three node types are all native
putter hmm. not that I disagree, but... the only reason we need arity is because we're parsing hs. which we shouldn't be. when hs walks the tree and outputs something with parens, no arity needed. no? so that shouldnt be a reason to make the switch.
autrijus putter: uh, how is parens going to save us? 15:03
(PApp 1 2 3)
even if you mean (PApp (1, 2, 3))
that is still a datatype relying on positional understanding 15:04
putter arity is explit. need parens for Foo Bar 2 3 -> parse me..!?!
autrijus hrm. the context here is iblech did a yaml serialisation of pil
putter yep. haven't looked at it yet :( 15:05
autrijus jspugs> :pil.yaml 1+1
...
- !perl/@PIL::PApp
- !perl/@PIL::TTailCall
- !perl/@PIL::TCxtVoid []
- !perl/@PIL::PExp
- !perl/@PIL::PVar
- '&infix:+'
- !perl/@PIL::Nothing []
-
- !perl/@PIL::PLit
- !perl/@PIL::PVal
- !perl/@PIL::VInt
- 1
- !perl/@PIL::PLit
- !perl/@PIL::PVal
- !perl/@PIL::VInt 15:06
- 1
sorry for the flood.
but I think that illustrates my point
which is that PApp etc should have named fields
so we get the taguri of %PIL::PApp
!perl/%PIL::PApp even 15:07
so we can avoid code like
putter I don't disagree with named fields (though there is likely a space and speed cost). Just don't think the current arity situation is a valid motivation. 15:08
autrijus if ($self->[2]->[0]->[0]->isa("PIL::PVar")) ...
hm... just to make sure we're on the same page 15:09
I'm talking about
Arathorn eww - opera fails on the JS because it can't handle the trailing , on hash = { foo : "bar", baz : "quux", };
autrijus ./pugs -CPIL_YAML
putter outputing Foo { x=1 y=2} rather than Foo 1 2
autrijus no, outputting YAML directly
putter ooo... "never mind". sorry.
autrijus np :) 15:10
autrijus ponders if ./pugs -CYAML is unambiguous enough
autrijus further ponders if we can canonise YAML and make pugs -CPIL output just that
putter PIL_SEXP, PIL_PLRB (pl rb), PIL_... 15:11
autrijus the point being yaml have good support for named, positional and scalars with tagged constructor names, and the equivalent thing in XML or S-expr are less concise
yeah
ok, I think "-C YAML" for now.
it is in one sense a "codegen".
svnbot6 r5664, iblech++ | * PIL2JS: jspugs.pl -- Minor cosmetic fix. 15:12
r5664, iblech++ | * PIL2JS: pil2js.pl -- Don't emit trailing ","s in hashes, thanks to Arathorn++
r5664, iblech++ | for noticing.
iblech Aankhen``: See if r5664 fixes the problem?
putter there was something here a while back about p5's yaml having issues... I'm not sure what the yaml state of other languages is.
iblech Aankhen``: Err, sorry, meant Arathorn
autrijus other languages are mostly using syck
and they are just fine
only p5 gets to have ancient semibroken YAML library.
obra there's no syck for perl? 15:13
Arathorn yup, that fixes it 15:14
thanks :)
obra or rather syck-wrapper
putter -C PIL_JS ... fast...
autrijus obra: there is very ancient and proof-of-concept search.cpan.org/dist/YAML-Parser-Syck/
putter: eh? :)
-C JSON you mean? 15:15
mmmmm tempting.
but JSON has no taguri
so we are forced to list the constructor as an additional field 15:16
putter re previous conversation, fastest path is for hs to crawl hs tree and emit code in language X which can simply be evaled. -C PIL_PL emits perhaps foo(x=>3,y=>4), -C PIL_JS emits... whatever iblech would find convenient.
autrijus which may actually be a win, not sure
putter: iblech doesn't use PIL_JS. 15:17
he's using perl5 :)
putter PIL_JS doesnt exist. oh, ok, then just -C PIL_PL...
autrijus but I see what you mean. maybe that shouldn't be -C then. dare we take -D for that?
putter hmm... 15:18
autrijus or -P...
because we are fairly sure -P will be Gone and Dead from p6
Arathorn iblech: wow: the backtrace from Opera now that it can compile is quite spectacular for mandel.p6
putter or -C backend outputform ...
autrijus what, mandel.p6 compiles to js?
putter: nah... I think that's overloading things too much 15:19
putter k
Arathorn it doesn't run
autrijus but that's already better than any other backends :)
iblech :) 15:20
Arathorn iblech: fwiw, the backtrace is at pastebot.nd.edu/1824
Arathorn crawls through it
autrijus praises the sheer madness of iblech
Arathorn i guess it's just citing a whole wodge of the preludepc.js
iblech Arathorn: r5665 might actually fix that problem :) 15:21
Arathorn but still, a bit more data than venkman provides
autrijus putter: ok, so worthy -P backends being: XML, YAML, Perl
obra S-expressions? ;)
iblech Arathorn: PThunk wasn't compiled correctly
autrijus the Perl one can actually be shared among p5 and p6 with some luck
Arathorn ah, cool
svnbot6 r5665, iblech++ | PIL2JS: PIL::Nodes -- Fixed compilation of PThunk.
autrijus thru creative use of &bless
obra: first find us a consumer of S-exp :) 15:22
. o O (Perl 6 refactoring browser in Emacs)
putter ruby should be ok with the p5.
obra is just making trouble
iblech Arathorn: Ok, it does not, at least not here. Could you nopaste a new backtrace? :)
Arathorn hm, iblech: that breaks prelude precomping, i think
oh, false alarm - sorry
weird keyboard buffering going on 15:23
that gives an identical backtrace, iblech
autrijus obra: oh, do you know if src of dev.perl.org/perl6/faq.html is kept in some svn repo?
Aankhen`` putter: Hiya. 15:24
autrijus obra: the first entry continue to trouble my conscience, even though it's theoretically SEP
Aankhen`` putter: I was wondering if you could perhaps get sprintf() to handle '%X' correctly?
autrijus actually the second entry is dubious too. as is part of the third :) 15:25
iblech Arathorn: Ok, thanks, investigating
autrijus (so I'm thinking of submitting a patch)
putter foo() 123 1.23 "..." , and if we do named x => . sexp (foo ) ... not sure which => to use. maybe just ",". getting the strings right ends up being the hardest part :(
what's %X
obra autrijus: if it's in a repository, it'd be the perl6 one 15:26
Arathorn iblech: for completeness (and in case i'm being blind/thick): pastebot.nd.edu/1825
autrijus obra: oh, prolly not then
Aankhen`` putter: Uppercase '%x'.
obra autrijus: I'll see about getting it fixed
autrijus obra: thanks for the project managineering :)
putter ok, and in what way isnt it working/ 15:27
iblech Arathorn: Ok. One problem is that empty subs don't return a boxed undef (fixing)
autrijus ?eval sprintf('%X', 1) 15:28
evalbot6 pugs: Printf.printf: bad formatting char X
putter ah, got it.
did you check D U O? 15:29
autrijus ?eval sprintf('%D', 1)
evalbot6 pugs: Printf.printf: bad formatting char D
autrijus ?eval sprintf('%U', 1)
evalbot6 pugs: Printf.printf: bad formatting char U
autrijus ?eval sprintf('%O', 1)
evalbot6 pugs: Printf.printf: bad formatting char O
putter k
iblech autrijus: Possibly bug in Pugs.Compile: loop my $a = 0; ; $a++ {...} 15:32
The first PThunk (the condition, which is empty in this case) is compiled to an empty PThunk 15:33
I.e. returning undef
Causing the loop to not run
autrijus hrmph it should be Noop
iblech Is this a bug in Pugs.Compile (which should instead compile to PThunk(1)) or in &statement_control:<loop>, which should treat undef as true?
autrijus evalCond | unwrap cond == Noop = return True 15:34
this Clearly Does Not Belong in Eval.hs
so I'd say it's P.C's bug
please fix away
iblech Ok
autrijus that's what we have PIL for -- so these reductions are not recomputed endlessly in runtime
Arathorn has a crazy idea 15:38
anyone seen mtasc.org/ before?
Arathorn dreams of replacing the *horribly* broken ActionScript 2.0 with Perl 6 compiled to ActionScript 1.0 (~Javascript 1.4) via pugs 15:39
(and then compiled into .swf using mtasc)
(or perhaps i'm the only person who dirties their hands with the horror that is Flash 'round here) 15:46
wolverian ?eval 1.as('%X') 15:47
evalbot6 pugs: Printf.printf: bad formatting char X
wolverian oh, that's in. yay. 15:48
putter , as he waits for a compile, wonders how one might get economies of scale among the (possibly many?) pugs backends...
autrijus putter: economies of scale? 15:49
(I know the term, but not the type context)
putter hmm, how does one generate an Inf in pugs? 15:52
autrijus Inf
putter ?eval sprintf('%x', Inf)
evalbot6 \'10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' 15:53
putter Inf seems small...
autrijus it's coerced into Int.
putter sprintf patch is in. 5666.
autrijus putter++ 15:54
Aankhen`` putter++ # thanks :-)
svnbot6 r5666, putter++ | sprintf now handles X D U O E G F specifiers without crashing. Aankhen++.
r5667, iblech++ | * Pugs.Compile -- loop foo; ; bar {baz} should be compiled as loop foo;
r5667, iblech++ | bool::true; bar {baz}.
r5667, iblech++ | * PIL2JS: jspugs.pl -- Empty lines don't cause a compile now.
r5667, iblech++ | * PIL2JS: PIL::Nodes, PIL::Parser -- Support for VBool.
Arathorn tries r5667 15:55
iblech Ok, problem. mandel.p6 requires last. last is tricky. Can I create continuations in JavaScript? 15:56
iblech googles
Arathorn yeah, i think you can
iblech How? :)
Arathorn there's an IBM developer works article about it, iirc
Arathorn googles too
autrijus iblech: last doesn't need CC, just EC 15:57
EC can be modelled with try{}.
putter hmm, both perl and pugs now sprintf("%E",<inf>), 10**1000 or Inf, as inf and INF. and I thought it was a kludge...
iblech Arathorn: www-128.ibm.com/developerworks/java...ontin.html is about server-side continuations, I think. I need client-side CCs
err, s/CCs/continuations/
Aankhen`` iblech: Continuations aren't really cleanly possible in JavaScript. 15:58
autrijus but it's just exceptions in this case :)
full CCs are rarely needed in p6
Arathorn iblech: uneval() (if supported)
iblech Aankhen``: Do you mean the code is ugly (which would be fine) or that it isn't working 100%?
autrijus formally last and return are both "leave" style exceptions
Aankhen`` iblech: Both.
iblech Aankhen``: Oh.
Arathorn levelplusplus.blogspot.com/2004/07/...zilla.html looks like it's ugly, but it would work 100% 15:59
assuming you're running js 1.5
Aankhen`` iblech: Try trimpath.com/blog/?p=28
putter re scale, similar things being done n times. how to benefit, and to avoid n*cost. benefit's include see neat things iblech doing with JS and reflect in other backends. avoid cost include move PIL emiter in pugs, perhaps use some common p5-based infrastructure, ...? 16:00
autrijus aw, vararg CPS
pugs needs to have PIL serialiser, there's no doubt about it 16:01
Aankhen`` Bleh, I still don't understand continuations properly. -_-
Arathorn i guess comment 3. on Aankhen``'s URL spells out the limitations fairly well 16:02
iblech autrijus: You mean, basically, loop ... { ...; last(); ... } -> try { loop ... { ...; die "LAST"; ... } }? 16:03
autrijus iblech: right. you need the same for &return anyway. 16:04
iblech autrijus: Ok, easier than I thought :) 16:05
Aankhen`` You can't just use `break`, iblech?
autrijus eg you miscompile, currently
sub foo { { return 1 } } say foo()
putter more common ground... a cps transformed PIL?
autrijus putter: hm? I don't think CPS is applicable in the tree level 16:06
iblech Aankhen``: No, as &last is a separate function (I could of course hardcode &last -> JS::break, though)
Aankhen`` That's what I meant. :-P
Arathorn that seems a bit more functional :) 16:07
s/functional/pragmatic/
autrijus iblech: all nonlocal exits are just different VControl calls
iblech: the try{} blocks implicit around all non-primitive Code bodies are supposed to unwrap them 16:08
S06:
leave Loop, :label<COUNT>; # Same as: last COUNT;
it doesn't need to be mapped exactly that way
but the idea is the try{} block pick up the :label and other flags and either handle it or optionall rethrowl 16:09
iblech Ah, ok, makes sense
autrijus that's where I stopped with CodeGen.PIR 16:10
because the exception handling semantics was Totally Broken Beyond Repair
fortunately it looks like leo-ctx5 has it fixed
iblech :) leo++
autrijus leo++ indeed
putter autrijus: re cps on tree... I'm puzzled, why not? one could cps transform p6 code, so why not PIL? 16:11
autrijus putter: I'm puzzled because I don't recall any of our current backends mandate CPS 16:12
or lambda lifting
all of <PIR Perl5 JS> support inner functions and lexical pads 16:13
so it seems to me that CPS only adds unneccessary overhead
putter but p5 at least doesnt have full continuations... what am I missing?
autrijus but p5 has escape continuations 16:14
and p6, as defined in the AES, only makes use of escape continuations
it's all very well to support something more, but I don't think we need to go full CPS for full conts on p5 16:15
putter ahh. that's the missing bit. I thought p6 had exposed full continuations.
autrijus not formally, no.
the closest thing is coro, and that is still a pugs specific unspeccedness.
so I don't think PIL need to worry about that just yet 16:16
it's also perfectly fine to have the Perl5 backend just die on a call/cc.
because I don't think any of Prelude will require that 16:17
kungfuftr autrijus: has Bamboo stalled?
putter ok.
autrijus kungfuftr: Bamboo wants a sane runtime :)
kungfuftr: which is also part of the new PIL evaluator's goals (serialized continuations) 16:18
Arathorn presumably there is no hope in hell of p6->js objects working without stevan's metamodel stuff being somehow wrapped into PIL2JS? 16:19
kungfuftr eeeepppp!
autrijus: surely a serialized state machine would work?
autrijus kungfuftr: not when the state machine relies on C pointers!
(see Coro.pm)
kungfuftr ah... gotcha
iblech Arathorn: Think so, too. .ref and .isa are currently just very simple stubs
autrijus kungfuftr: point being I'd like arbitary closures to participate in Bamboo logic
Arathorn nods 16:20
autrijus kungfuftr: the more I worked toward the bamboo minilang, the more it resembles PIL
and at some point it doesn't make sense anymore to not unify them :)
svnbot6 r5668, Aankhen++ | * URI::Escape: fixed &uri_escape<Str,Str> and &fail_hi.
kungfuftr gotcha
svnbot6 r5669, iblech++ | PIL2JS: Prelude::PS, pil2js.pl -- Initial support for &last. 16:22
r5668, Aankhen++ | * URI::Escape: fixed &uri_escape<Str,Str> and &fail_hi.
autrijus wow, initial support for &last.
Arathorn it's a shame - without object support i can't see any easy hack for compiling perl6 to .swf 16:23
autrijus ... swf!?
next you'll tell me compiling perl6 to PDF.
Khisanth heh
that would be less sane!
autrijus there's a HTTP server written in PostScript.
Arathorn yeah - see my rant above about www.mtasc.org 16:24
Khisanth autrijus: didn't you want to have it compiling to JS? :)
autrijus Khisanth: I did... sanity was never my forte
Arathorn oh, hang on
Khisanth well both actionscript and javascript are ECMA based aren't they? :) 16:25
insane people have all the fun... 16:26
autrijus exactly
autrijus invokes the ponie-3 quote again
"And, isn't sanity really just a one-trick ponie anyway? I mean all you get is one trick, rational thinking, but when you're good and crazy, oooh, oooh, oooh, the sky is the limit." 16:27
svnbot6 r5670, Aankhen++ | * fixed &URI::Escape::uri_unescape.
integral PDF can embed JS too... 16:31
autrijus yup.
JS really makes a lot of sense.
eric256 ?eval { 1 => {2 =>3 , 4=> 5}.perl 16:33
evalbot6 Error: unexpected end of input expecting term postfix, operator, ">>=><<", "\187=>\171", "=>", "::=", "**=", "xx=", "||=", "&&=", "//=", "^^=", "+&=", "+|=", "+^=", "~&=", "~|=", "~^=", "?|=", "?^=", ":=", "~=", "+=", "-=", "*=", "/=", "%=", "x=", "Y=", "\165=", "|=", "^=", "&=", "=", postfix conditional, postfix loop, postfix iteration, ";" or "}"
eric256 ?eval { 1 => {2 =>3 , 4=> 5}}.perl
evalbot6 '{(\'1\' => (\'2\' => 3)), (\'4 5\' => undef)}'
eric256 could anyone help me know where to put tests for that bug? (if it is a bug, or expain what i did wrong if it is not) 16:34
?eval { 1 => {2 =>3 , 4=> 5}}
evalbot6 {('1' => ('2' => 3)), ('4 5' => undef)}
eric256 hmmm..on another note, anyway else haveing trouble getting pugs to compile this morning? 16:36
putter autrijus: have you got funding lined up for post-sabatical? perl foundation?
putter wonders whether he should be nudging PF... 16:37
Aankhen`` `use Foo <bar baz>;` doesn't work. Bah. 16:38
autrijus putter: no, nothing yet... didn't hear anything from the company allison mentioned either
putter: worst case is I'll just take up more $work :)
and try to keep 3 day a week to pugs 16:39
that is not unlike any other lambdacamels, and I'm fine with that :) 16:40
eric256 autrijus - any thoughts on that eval i just did? i just want to know where I should put a test for that ? 16:41
autrijus eric256: that's a bug. merge it with t/pugsbugs/parse_hash_ref.t or parsing_hash.t ? 16:42
svnbot6 r5671, Aankhen++ | * added ext/URI/t/escape.t
eric256 okay. what is the deciding factor on if it goes in pugsbugs or somewhere else/ 16:43
autrijus whether it's fixed or not :)
and also whether it was immediately clreat to the submitter or not
eric256 oh.. okay. i'm posted some tests to the wrong places then ;(
autrijus oh, and the passing pugsbugs/*.t should be moved out -- if you have some cycles for that, that's cool too
Arathorn was there any conclusion on whethere [=>] @array should work?
autrijus heh, that's fine, 'svn mv' preserves history
we are working with (somewhat) sane tools now 16:44
Arathorn: it should work, that is definitely a bug, please grep and/or write a test
eric256 first i have to get pugs to actualy compile agian ( i think SVN and i are at a disaggreement) ...then i would be happy to move what i can
autrijus cool, eric256++
eric256 clears entire pugs install.....arg 16:48
autrijus "make unoptimised" may help
eric256 it wont even make. i think i've got a couple of files that arn't updating 16:49
autrijus aw.
eric256 wow. watching the test directory re download....lots and lots of tests 16:52
malaire btw, should "make pirtest" pass any sanity-tests currently? 16:53
iblech malaire: Yes 16:54
(All of the sanity tests should pass)
eric256 i wonder if a blog showing example code of recent developments would interest anyone besides me...i'm always reading the journal but i know some stuff slips by. 16:55
and some stuff is easier shown with code 16:56
autrijus that will interest me a lot :)
I'm trying to add more screenshots in my journal
and code snippets
but sometimes it's just too much to keep up :)
eric256 i'm thinking about starting a side journal to post some code...i like to explore new additions. can multiple people post to a use.perl.org journal? since some additions are just plain beyond my understanding i would need help. ;) 16:57
Khisanth you could always make a thread as a journal :) 16:58
autrijus right, you can annotate it just by hitting "Reply" 17:00
that will likely work very well, as I'm prone to let new developments slip by
so if you notices something, or want to illustrate some points, just hit "Reply" and add more
eric256 just reply to your journals? is that what you are saying? hmmm. could be. i was thinking it might be usefull if your journal entries mentioned what revision they were current for. 17:01
masak eric256++ # good example code blog idea
autrijus oh hm. that is a thought indeed
Khisanth eric256: you don't think the revisions change too fast for that?
autrijus although it can trivially be triaged 17:02
so , like
Day 165 (r5670): ...
eric256 they change plenty fast. but i can read the journal, then hit the log for any updates since the journal. ;) hard to do now without knowing when the journal was written with respect to the current revision
yea ;)
autrijus I'll try that. actually you can probably write a script to retrieve the rss metadata and triage using svn's -r DATE syntax 17:03
so I can retroactively add rev annotations to earlier entries with a script
wouldn't that be nice.
but sure, I'll start with the new format today 17:04
eric256 it would indeed. i guess i'll try posting code as replies, if that gets out of hand or to cumbersome i can always start a seperate journal later
autrijus right.
eric256++ # ideas
eric256 ideas are easy, implementing them is the hard part 17:05
eric256 off to meeting. ick
malaire for me "make pirtest" currently dies on all sanity test with same error: 17:06
Null PMC access in get_string()
current instr.: 'EVAL_1' pc 10 (EVAL_1:7)
autrijus parrot 0.2.2?
iblech malaire: It works here fine, using latest leo-ctx5 17:07
autrijus malaire: oh, btw, have you got back to JaffaCake re GHC bug?
wolverian do you think URI::uri_unescape is sane, compared to URI.new.unescape, or so? (I specifically hate the uri_ in the name..)
(er, URI::Escape::uri_unescape, that is.)
malaire I have parrot 0.2.2-devel (r8644)
autrijus wolverian: I think both styles are sane :)
malaire: the parrot trunk is in a weird state, last I heard. 17:08
wolverian autrijus, right. maybe I should code URI.pm itself, then? :)
autrijus wolverian: yes :)
wolverian autrijus, I'll look into it! my girlfriend is over for the first time in a few weeks, so I'm a bit low on time
malaire I don't know enough of GHC to help in that bug. I just reported it, but I think I can't help much more in it.
autrijus malaire: aw. :/ since it's nonreproducable here anymore
malaire: I think Jaffa's problem is mostly he can't get the bug manifest 17:09
Aankhen`` wolverian: iblech already ported the URI distribution to "pure" Perl 6 (i.e. currently non-working Perl 6 :-). You could try back-porting it: tpe.freepan.org/repos/iblech/URI/ 17:14
wolverian Aankhen``, ah, thanks!
Aankhen`` I had got a nearly working version, but then I deleted the entire source tree... 17:15
My fault, though. I'd been sitting on it for a long time without checking it in. 17:17
wolverian oh, he did a straight port of the perl5 module 17:18
Aankhen`` Yes
.
wolverian I'll try refactoring it into something I like more. 17:19
s,module,modules,
(not a small feat in itself :)
Aankhen`` Have fun. :-)
I'll probably do the same with some parts of LWP eventually. 17:20
Though that'll take considerable care.
iblech Aankhen``++ wolverian++ :)
food &
kolibrie autrijus: pugs with embed perl5 worked fine after installing debian libperl-dev 17:41
perl-base provides libperl.so.5.8.7, et al, libperl-dev provides the plain libperl.so 17:42
autrijus but is the two identical? 17:43
kolibrie I think so
I think they just want to have a -dev package, so separated it out 17:44
autrijus can you do a cmp?
kolibrie just a sec, that was at home, I'll install here too
autrijus however, well, if it is the way it is, maybe just add a note to INSTALL, or better, detect for this in Makefile.PL
kolibrie I have almost no Makefile.PL foo 17:45
hah, all the libperl-dev package does is set up a symlink to libperl.so.5.8 17:47
autrijus this is borderline insane ;) 17:48
but I can see that if -dev is the convention for everything else
kolibrie so, how to detect in Makefile.PL? 17:49
autrijus I have no debian-fu, but I suspect you can look at %Config and see which keys should match
Khisanth hmm 17:50
autrijus but maybe ask around other debian folks
Khisanth what is the => operator called?
kolibrie I mean, where in Makefile.PL does such a check go 17:51
autrijus Khisanth: &infix:=> in the symbol table
in src land is &infix:«=>»
Khisanth no I am trying to look for it in t/operators :) 17:52
autrijus kolibrie: see similar checks about Tiger and gcc4
kolibrie looks
autrijus [not|autrijus]~/work/pugs$ grep -r '\[=>\]' t
t/builtins/lists/reduce.t: # 18:45 < autrijus> [=>] 1..10;
hm, I probably need to sleep now 17:53
kolibrie ok, that doesn't look too hard
autrijus got some onsite $work tomorrow.
have fun :)
autrijus waves &
kolibrie goodnight
Khisanth ah ha! data_types/pair.t :)
iblech [PIL2JS] !!! &return and &last work, &leave is simple now :) 17:54
Night autrijus :)
autrijus iblech: wow. :)
eric256 and others: journal up; feel free to Reply and add more info
autrijus waves again, for real & 17:55
gaal hi all. 17:56
very very cool stuff recently 17:57
?eval {module f;}; $?PACKAGE 18:08
evalbot6 \::main
svnbot6 r5672, eric256++ | Testing for hash parse error on nested structure
r5673, iblech++ | PIL2JS -- Proper support for &last and &return.
gaal ?eval {module f;} $?PACKAGE
evalbot6 Error: unexpected "$" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
gaal bug, right?
iblech !!!!! 18:09
mandel.p6 runs on JS!!!
gaal !!!!! 18:10
iblech++
iblech uploading
gaal applauding
Aankhen`` Jeez.
iblech++
Hi gaal. :-) 18:11
gaal hey :)
Aankhen`` I think Pugs is going to rule the world. :-P
Juerd I'm leaving for a few weeks of vacation next friday
Aankhen`` Today: Perl 6 to JavaScript. Tomorrow: World domination.
Juerd During that period, if feather goes down, I won't be able to fix it.
And neither will anyone else
gaal i hope it doesn't 18:12
might be very useful for the hackathon
Juerd If you know me well, and want root access and to monitor things, contact me
gaal but if it does we'll use nothingmuch's server
iblech m19s28.vlinux.de/iblech/stuff/not_p...el.p6.html
gaal mr pastaman
Juerd There's one condition in which the commercial emergency number can be used: broken hard drive
which will be noticeable from /proc/mdstat 18:13
iblech (Firefox complains about the script slowing it down, though)
Juerd But I'm not going to give that number to everyone :)
gaal iblech: it's kinda cute how it does that
iblech If somebody replied this news to autrijus' journal, I'd be grateful (I don't have a use.perl account) :) 18:14
gaal doesn't run at all on msie
iblech err, s/replied/relayed/
gaal: Error msg?
gaal juerd: thanks, i think we'll fall back on either a local box or yuval's machine 18:15
iblech: syntax error at line 85, char 13
gaal doesn't have a use.perl account either. kinda silly that you have to have one 18:16
iblech gaal: Weird, there's nothing special about that line
gaal waits for openID
Aankhen`` iblech++ iblech++ iblech++ 18:17
Juerd gaal: Well, if the current uptime is any indication, it'll hold 18:19
It's a justincase thing
gaal right
Juerd As the box has *no* user limits
Any user can easily forkbomb it.
gaal i doubt we have that kind of user around
Juerd It's easy to do by accident
Trust me on that :) 18:20
gaal speaking of uptime: 48 minutes to 200 days on one of my boxen
Juerd Nice
Awful maintenance though ;)
gaal *shrug* at some point in life, you have to stop compiling kernels
Juerd hehe 18:21
For a home box, it's okay
I'm still running 2.6.6 at home
nothingmuch moo 18:24
gaal se!
does use really work in BEGIN already? 18:26
iblech Yep, think so
gaal good, i think that means the prelude inlining stuff can be made much better 18:27
iblech How so?
gaal instead of manging in the source code of random modules and hacking in manual %*INC settings, i can just mangle in "use" statements. 18:28
or better - -M switches.
this means you can inline anything in your PERL6LIB 18:29
of course it means some care should be taken to get the right version during the build process, not one from the system install 18:30
kungfuftr ingy: about?
seen ingy 18:34
jabbot kungfuftr: ingy was seen 3 hours 36 minutes 17 seconds ago
gaal oh, actually, that (my -M idea) won't work 18:36
because the extra modules won't pass compilation because they likely require Prelude functionality, whcih isn't available yet 18:37
hmm, but i could add the Prelude.pm to the search path and -M it first :) 18:38
Juerd holy crap, there's sound in Mail.app! 18:45
And it actually sounds fun.
In stereo.
svnbot6 r5674, Stevan++ | Perl6::MetaModel - 18:54
r5674, Stevan++ | * 'canonical' dispatch order is now C3
r5674, Stevan++ | - tests to check this is true
r5674, Stevan++ | - tests to check we die with inconsitent hierarchies
r5674, Stevan++ | - test for new class precendence list orders
stevan horay, we now support all the dispatch orders in A12 18:55
(as if there was any good use for that)
that also assumes that :descendant is just the reverse of :ascendent 18:56
PerlJam There is a good use for that. If you're going to implement a compiler in perl6, you want the object language and the target language to share as many semantics as possible. So, for instance, this opens the door for (quickly) implementing say, python, using perl6. 18:57
er, I meant implement a compiler that targets perl6 18:58
That and interacting with other languages where your class hierarchy spans multiple implementation languages are the only reasons I can imagine right off where you'd want such control over the dispatch order. 18:59
eric256 whats the t/pugsrun directory for? 19:00
stevan eric256: it tests the command line options of pugs 19:01
PerlJam: ok, thats the first sane explaination I have heard 19:02
of course it doesnt matter, they are all there
breadth, preorder descendant ascendant
and I made ascendant the canonical 19:03
oh darnit
thats backwards
descendant is the canonical
eric256 any thoughts on where encoding tests should go? 19:04
make an encoding directory possibly?
gaal there already is a simple one, eric256.
unicode.t i think
extend that? 19:05
eric256 i'm moving test out of pugsbugs hyper_latin1.t now works... of course it might already be covered in another test. but i wanted to move it somewhere meaningfull... i thought about operators or encoding ...i'm guessing there will be mroe encoding tests in the future. should i just make a directory for encoding test? 19:06
or i could put it in the syntax folder.. maybe i'll just put it in there for now
makes enough sense i think
gaal sounds fine to me
be careful with svn prop btw 19:07
you need to mark each of these files in the appropraite encoding
eric256 if i svn mv it will keep the file the same as it is right?
gaal yes (i hope :-) 19:08
if you add other files, svn propset svn:mime-type "text/plain; charset=SOMETHING" the-file
stevan ok question here, least-derived basically means Object right? 19:09
stevan didnt get much sleep last night
eric256 i'll try to remember that.... do i need to change that for the file i added earlier if it is just a normal file?
gaal if it's a normal file, use util/add-svn-props.sh on it 19:10
svnbot6 r5675, fglock++ | Span::Code.union() finally works (some weird syntax problems)
gaal that sets it as utf-8
see the other svn propset in that script too (the one setting lineendings) - you want that on your files too, if you propset them manually 19:11
Juerd haha 19:12
stevan un-warnocked himself
that's funny.
stevan Juerd: I probably shouldn't have sent the mail on a weekend 19:13
Juerd There's no good day for perl messages, I've discovered.
Well, if you post on a saturday evening, you'll get most XP on PM, but apart from that, there's no good day. 19:14
stevan :D
eric256 don't post on PM on sat morning though, you may never get an answer. or maybe my question was just too out there 19:15
Arathorn the question seemed like the kind of thing lwall would normally like to pounce on 19:16
stevan Arathorn: which one? 19:17
Arathorn your one about MMD ordering 19:20
or method resolution ordering, more accurately 19:21
svnbot6 r5676, Stevan++ | Perl6::MetaModel - I need sleep, I had ascend and descend mixed up
r5677, eric256++ | Cleaned out pugsbug directory some.
Arathorn can't get mandel.p6 to work :(
claims substr isn't implemented in prelude..
iblech Arathorn: :precomp 19:22
Arathorn i did.. 19:23
Arathorn does again
iblech Maybe I haven't checked everything in
Arathorn yup, still fucked 19:24
by diffing your preludepc.js with mine, i'd say the only difference is the substr impl
svnbot6 r5678, eric256++ | Missed the addition part of the move somehow 19:26
r5679, iblech++ | * Usual svn props.
r5679, iblech++ | * PIL2JS: &last, &next, &return, more work on the README.
iblech Try r5679 :)
Arathorn does so
wooha :D 19:28
works lovelily on Opera without a firefox-styloe sogging-up-CPU warning
congrats :)
iblech :)
Arathorn goes to dry off after thoroughly soggy ultimate frisbee
Limbic_Region seen nothingmuch 19:34
jabbot Limbic_Region: nothingmuch was seen 1 hours 9 minutes 55 seconds ago
Limbic_Region nothingmuch ping
Arathorn should mandel.p6 work with the parrot backend?
nothingmuch Limbic_Region: semi pong
Limbic_Region oh - just a short note to say that I am abandonging the yaml project - and everything Pugs related until further notice 19:36
sorry to bail
personal life has driven everything else to the back seat
Arathorn :/
(pugs -Bparrot -e 'say "hello world"' -> Null PMC access in get_string() current instr.: 'EVAL_1' pc 10 (EVAL_1:7) is presumably a stupid mistake on my behalf somewhere?)
(brb) 19:37
svnbot6 r5680, kolibrie++ | check for libperl.so when PUGS_EMBED contains perl5 (Debian only for now)
iblech Arathorn: IIRC yes. But it's probably not Pugs' fault, but Parrot's
Aankhen`` goes to sleep. 19:39
G'night.
iblech Night :)
svnbot6 r5681, philcrow++ | Added defaults.t to point out a namespace problem with default Code 19:42
r5681, philcrow++ | parameters. When called from other packages, default code params must
r5681, philcrow++ | be fully qualified with package names.
nothingmuch Limbic_Region: oh my! 19:45
Limbic_Region: i hope whatever it is it's not causing you too much trouble 19:46
to follow your metaphore, when I'm no longer driving 200mph at work I'll do the YAML thing
Limbic_Region for me, stress manifests itself in physical ailments and ATM - I need to cut out whatever sources I can 19:47
Khisanth points at Yaakov 19:49
svnbot6 r5682, iblech++ | * Usual svn props. 19:53
r5682, iblech++ | * PIL2JS: Beginning of support for named parameters (not finished yet).
iblech goes to sleep, too
Night all :)
stevan nite iblech
nothingmuch: ping 19:59
Khisanth hmm 20:04
Limbic_Region: what have you been trying to do with YAML?
jdv79 I couldn't get it to work in p5 y'day so good luck! 20:08
eric256 shouldn't objects defined in the main file have access to all subs defined in the main file? 20:09
PerlJam eric256: all those within the same scope, sure.
eric256 i'm having issues with wizard.p6 not being able to find a multi sub delcared earlier...realy wish the error message would show the signature it is looking for in a sub...that would make life easier cannont find "&prompt($,@)" or something 20:11
eric256 beggins to boil it down to reproduce.. fun 20:13
svnbot6 r5683, eric256++ | wizard.p6 almost working agian
eric256 well that was quick and easy. 20:15
?eval sub test () { "PASSED"}; class Foo { method testing { test() } }; Foo.new.testing; 20:16
evalbot6 Error: No compatible subroutine found: "&test"
eric256 bug or feature?
eric256 reflects that is probably not the best thing to do anyway....but that doesn't mean this behaviour isn't a bug.. 20:20
seems like the class scope is too tight, but then maybe methods in a class shouldn't be able to call functions from main.....guess i'll see what i can find in the S* documents 20:21
nothingmuch stevan: pong 20:40
svnbot6 r5684, fglock++ | t/span-code.t passes all tests, but emits some warnings 20:41
stevan nothingmuch: pong back 20:52
svnbot6 r5685, fglock++ | updated TODO 21:08
r5686, Stevan++ | Perl6::MetaModel - 21:24
r5686, Stevan++ | * BUILDALL and DESTORYALL are now implemented with WALKMETH
r5686, Stevan++ | and so take advantage of the new C3 dispatch order. This
r5686, Stevan++ | means that a given DESTROY will not execute twice with
r5686, Stevan++ | diamond inheritance.
r5686, Stevan++ | - tests for this added too
nothingmuch stevan: ping pong moose 21:30
brentdax If a try {} block dies, is there a way to see what file and line number it died at?
nothingmuch actually no, i'm headed home
0:30 instead of 3:30 this time... Woohoo!
mugwump brentdax: I'd guess there would be a property on $!
tehpwn word son 21:31
brentdax Is there some way to see which properties have ben set on a value, then? Or is that still in the works?
*been
(wow, Parrot's a mess right now.) 21:33
mugwump I don't know, I guess it might be in A12, or maybe "each" should work
again it is a small case of the "visitor pattern" 21:36
svnbot6 r5687, fglock++ | added myself to the list
mugwump So the answer guaranteed to work is, look at the meta object 21:37
guaranteed to work eventually, that is
brentdax Eventually isn't quite soon enough for me, I'm afraid. 21:38
mugwump sadly it looks like $! is currently a scalar only ... 21:45
Darren_Duncan yes, that's sad ... I need it to be able to store an object reference 21:49
as Perl 5.006+ can
mugwump (as found by looking for various findSymRef "$!" / writeRef statements in Pugs source 21:50
brentdax Guess I'll leave the try {} in the supervisor loop commented out, then.
trigger Hey, what's the official word on perl 6. Is it possible it will go into production next year? 21:52
jeezus. Pugs? Is that for realz?
Haskell? 21:53
kungfuftr trigger: it'll be done by christmas
jdv79 haha
mugwump thwaps kungfuftr
tehpwn trigger: more like 5 years from now
mugwump yes, he didn't say _which_ Christmas ;)
tehpwn chuckles
trigger LOL
tehpwn the CHristmas of 2010 21:54
trigger no, really
oh ok
is haskell like lispy?
tehpwn no
yes
but no
it's harder than lisp
trigger functional, so yes, but totally different syntax (O
tehpwn haskell is declaritive
trigger I'm guessin?)
ohhhhh
jdv79 where's that timeline autrijus made?
trigger deCLARative
jdv79 show him that
tehpwn or "functional"
trigger phew I got that right 21:55
tehpwn indeed
trigger there's a 'timeline'?
tehpwn haskell is like reading abstract algebra
trigger tehpwn: wow that sounds fun
tehpwn is also curious of this "timeline" you speak of
jdv79 trigger, svn.perl.org/perl6/pugs/trunk/docs/...rview.html
tehpwn jdv79: type it to me too! 21:56
jdv79: the link won't work unless you do
trigger jdv79: svn.perl.org/perl6/pugs/trunk/docs/...rview.html
jdv79 i'm trying to find it
tehpwn lol
jdv79 trigger, ? 21:57
trigger I thought you wanted somone to type the link to you
jdv79 i didn't say that
?
tehpwn jdv79: that's not a timeline dongface
jdv79 yeah, no way dude
trigger ooops, yeah that's no timeline donger
jdv79 i DIDN"T FIND IT YET:)
tehpwn ohhh 21:58
trigger www.google.com/search?q=perl6+timeline ain't got doodley
ahh, here bulknews.net/lib/tmp/perl6.log Damian predicts it will be released January 2004. 21:59
eric256 lol
Khisanth "will"
eric256 sure. the plan was to spend twenty years programming it, by then time travel will be invented and we'll send it back in time to jan 2004.. see no sweat we have all the time in the world 22:00
jdv79 perlcabal.org/~autrijus/perl6-timeline.png
trigger ok then. Thank you gentlemen and gentlewomen.
jdv sweet thx 22:01
tehpwn are there enough people working on that Parrot whatchyamathingy?
jdv79 NO
mugwump Actually in the Conway universe, it's already released. He's actually a pandimensional being who will appear inconsistently in your local idea of spacetime.
trigger I'm not even sure people are even really stoked on the parrot thing anymore
'People"
tehpwn stoked or not it seems like a good idea
trigger I thought so.
mr_ank and in Bizarro world, tehpwn is the main developer!
trigger But I'm not writin' perl6
mugwump trigger: don't confuse the language Perl 6 with the runtime Parrot with the compiler pugs
tehpwn mr_ank: tEh trUth
trigger mug: no, I don't 22:02
mugwump Bizarro! Bizarro! Bizarro!
tehpwn Parrot needs to be done first right? Then Perl6?
trigger that was the original plan
tehpwn well if it's gonna be that kind of party I'm sticking my dick in the mash potatoes
eric256 since pugs runs Perl6 code right now i don't think you could claim that any more
mr_ank tehpwn: dont look for an excuse you were goona do it anyway 22:03
jdv79 parrot is only loosely coupled to perl6
tehpwn mr_ank: damnit how'dyou know?!
mr_ank tehpwn: i know you -- from slashdot? Anonymous Coward?
tehpwn well someone needs to finish that shit right now so I can have real honst OO up in this piece
mr_ank: dude your totally pwning me!! 22:04
trigger so is perl6 on haskell like a serious idea, or just for development? Is it comparable in speed to parrot?
tehpwn can't stop teh pwnage seeping out of mr_ank
jdv79 AFAIK its much slower than p5 at the moment
mugwump trigger: well, what started as a proof of concept to test the language is fast developing into a compiler that can target multiple back-ends 22:05
tehpwn i would think it will always be much slower
jdv79 not on parrot hopefully
tehpwn anyway when you lazy bastards finish writing teh Real Perl6 for me let me know so I can start benefiting from your work
trigger you tell them tehpwn 22:06
jdv79 slow or not its just damn cool that p6 can run atop js:)
mugwump for instance, pugs can compile to parrot's IMC or PASM, a new language called PIL, Various Template Haskell back-ends including C, heck some crazy bugger even got it working on ... js
trigger js=javascript?
jdv79 jah
tehpwn buh? 22:07
trigger bfwah?
tehpwn haskell != js
mugwump recommends /ignore tehpwn
tehpwn at least last time i smelt
jdv79 sounds good mugwump
tehpwn mugwump: it didn't work
c'mon I'm bored entertain me! 22:08
find i get the idea
mugwump Oh, did I forget to mention the Perl 6 to Perl 5 compiling? :)
tehpwn i'll retract all my commits
trigger perl6 to perl5 sounds fucking brilliant. I love haskell in the middle. 22:09
no, really
eric256 scratches his head, tilts it to the side.......and then slowly sinkins into a deep fog
jdv79 too bad firefox keeps asking me if i want to kill the slow js script when i run the mandel script:) 22:10
mugwump do you have a url demo for that jdv79 ?
jdv79 m19s28.vlinux.de/iblech/stuff/not_p...el.p6.html 22:11
its in the comments on autrijus's latest journal entry
mugwump maybe that backend could use some timeslicing or something 22:12
jdv79 i'm not sure what leo means in his comment though
trigger so does perl6 have those 200 wacky operators and everything? 22:15
wilx Yup, and more :)
jdv79 trigger, dev.perl.org/perl6/
mugwump trigger: well, for instance, there is an assignment operator and an add operator. but combine them, and you have +=. Is that a third operator or a combination? 22:16
trigger so, all these are in? [[periodic table of perl operators : www.acc.umu.se/~maswan/PeriodicTable.pdf ]]
mugwump the table is old, see S03 in the Perl6::Bible for a more up to date list 22:17
trigger perl6:bible bzwah? 22:18
reading.
holy fucking shit 22:19
oops pardon the french
so is perl6 going to make anything cleaner? 22:21
mugwump sadly, that's still up to the programmer
trigger lol
mugwump but the tools are sharper ;)
jdv79 timeslicing could be cool on the js backend - its killing my browser with no output:( 22:28
Khisanth I get output, still killing it though 22:29
jdv79 huh, FF? 22:30
Khisanth no moz 1.7.six
let see FF ..
jdv79 and i thought this box was fast but p6 on js - WOW
this may take 10 minutes:) 22:32
Khisanth hmm the JS version is even slower than the Haskell version
jdv79 no doubt about that 22:33
eric256 what a shock
lol
jdv79 took about 8 minutes here 22:34
Khisanth as opposed to less than a second for .p5 :) 22:35
jdv79 there's room for improvement;)
be cool to profile that out
Khisanth your FF doesn't give you 1 line of output every time that dialog popups up? 22:37
jdv79 i set the dialog timer to 5 minutes 22:38
max_script_run_time or something
in about:config
search for script and you'll see it
mugwump Hmm, I set it to 300 but still getting the dialog 22:39
jdv79 probably just be better to get parrot embedded into the browsers - i'm going to assume IE wouldn't allow that
you have to restart FF:(