Feather users: perlcabal.org/~autrijus/ | pugscode.org/ <Overview Journal Logs> | pugs.kwiki.org
Set by autrijus on 26 May 2005.
gaal i want to change Pipe.open to return an IO in scalar context, and (IO, Process) in list context. any cries of horror? 00:00
hmmm, actually, what does that make of the 'returns' clause in the signature? it doesn't quite return List in that case, does it? 00:02
how do you specify context-aware return values to subs?
mrborisguy do you mean: given want { when List { ... }; when Scalar { ... } }? 00:08
gaal that's how you implement them. how do i write the signature?
beh, sorry. 00:09
multi sub open (Str $command, ........) returns IO
mrborisguy gaal: oh, i figured it was too advanced for me, but i thought i'd throw it out there anyway ;)
can't you junction?
i thought i saw that somewhere
returns IO|List
(i could easily be wrong) 00:10
gaal hmm, it doesn't return a junction, that looks weird to me
could be someone overloaded the syntax, though.
okay, checking in Pipe::open2 and open3; no change to open for now 00:11
mrborisguy that's where i saw it... look in the S29 draft and search for keys
gaal s06 and e06 don't seem to mention it. 00:14
mrborisguy gaal: yeah, i don't know what to tell you then 00:17
gaal thanks. i'm asking p6l
theorbtwo Oh, mrborisguy, don't forget to add yourself to AUTHORS when you check in. 00:19
seen Aankhen``
jabbot theorbtwo: Aankhen`` was seen 3 hours 47 minutes 16 seconds ago
gaal he went to sleep 00:20
theorbtwo I'll catch him some other time. 00:21
Or perhaps he wanted AUTHORS to have no info expect his handle.
mrborisguy theorbtwo: alright 00:23
i'll do it next time if check anything in 00:24
gaal if i'm already in package Foo, is there a difference between saying "sub Foo::bar() {...}" and "sub bar() {...}" ? 00:35
theorbtwo Not that I'm aware of, gaal. 00:40
broquaint One is explicit and one is implicit but the behaviour is exactly the same.
gaal (was just asking because that's the way some funcs were specced in S29.)
Chewie[] "Label number 2 out of bounds." - What in the world could that mean? 00:54
(Parrot error, putting source online.) 00:55
home.chewie.info:8080/~chewie/base64/base64.pasm
gaal omg, it's 4:00am. i should sleep :) 00:56
theorbtwo G'night, gaal.
Chewie[] later. heh.
gaal isn't very tired, but has $work in a few hours
well, i'll do the prudent thing (or was the chance to do that four hours ago?) 00:57
&
theorbtwo can't figure out how to write the castV of instance Value Exp. 01:00
I've got castV exp = VObject (createObject (mkType "Code::Exp") [("theexp", exp)])
However, createObject wants to output a m VObject, and VObject wants to take a plain VObject. 01:01
Also, the output of the whole thing wants to be a plain Val, not an Eval Val.
theorbtwo hopes autrijus' bit ends soon. 01:05
broquaint Anyone know what's with pugs on feather spew a load of perl5 code? 01:11
01:13 theorbtw1 is now known as theorbtwo
mrborisguy broquaint: i get it too, but no. 01:18
i don't know what's up
broquaint I think pugs is having a quirky day.
sri_ is there a FindBin equivalent? 01:20
broquaint In what, sri_? 01:21
sri_ in perl6/pugs?
i just need the actual directory 01:22
meppl gute nacht 01:28
theorbtwo Gutte nacht, meppl.
meppl ;) 01:29
theorbtwo G'night. 01:52
kelan theorbtwo: to pull the VObject out of `m VObject` you need to do some binding 02:11
castV exp = do
obj <- (createObject ...)
VObject obj
but you'll need to return something 02:15
broquaint ?eval sub f(*$a,*$b,$c,?$d=sub{ qq/got: {@_.perl}/}) { qq/$a,$b,$c,{$d.perl}/ } my@a=1..3; f *@a; 02:16
Lacking an evalbot the output is: 1,2,3,\undef 02:17
Why isn't $d defaulting properly? Bug or my inability to use perl6? You decide!
kelan maybe defaulting doesnt work for code refs yet? 02:19
what do the splats do in front of the scalar args? 02:20
broquaint A hack so the args slurp properly. 02:21
I don't understand the need for them really, but if you don't have them the signature doesn't match properly.
Defaulting does seem to work on subs but not in this particular case. 02:22
kelan i thought you only needed to splat the calling arg. the `f *@a;` in this case
broquaint So did I :/ 02:23
pugs -e 'sub f($a,?$b=sub{say qq/foo: $_[0]/}) { $b.($a) }; f q[bar]' # outputs - foo: bar 02:24
kelan hmm
maybe its all the splatting? something weird happening with that 02:25
i really have no idea, tho:)
broquaint I reckon so.
Ditto.
kelan what happens when you call it 3 explicit args instead of splatting an array? 02:26
broquaint Maybe I should update some of the subroutine tests ...
*** No compatible subroutine found: "&f"
Unless you take out the splats, in which case it works. 02:27
kelan heh 02:28
i really think the splats are wrong. you shouldnt need them in the signature
broquaint Nor do I. 02:29
I think splattiness isn't working quite right in pugs.
kelan but saying splat in a way related to programming is fun 02:30
broquaint Absolutely. 02:32
Juerd Good localtime 02:37
Juerd goes to bed now.
Bye
broquaint goes for sleep before brain teh splode 02:38
kelan the problem with saying good localtime is that you don't know if it's a greeting or a goodbye
sproingie just say aloha 02:49
02:52 khisanth_ is now known as Khisanth 03:37 robkinyon_ is now known as robkinyon
obscurite Hello. Can anyone suggest a good summer project for the google summer of code thingy? I wouldn't mind hacking some perl6. Had trouble parsing the todo list myself :) 03:52
obra obscurite: what skillset do you have?
sri_ please port modules! :) 03:53
obscurite obra - I've done c, c++, asm on an undergrad level, a touch of professional experience. I've had lots of on the job perl, java, and scripting.
My proposal has to be for a project I can spend a couple of months on. 03:55
sri_ porting whole cpan sounds like a couple of months... ;P 03:56
obscurite you just need an autoporter... wait. maybe you need backwards compatibility
;)
obra obscurite: nod.
hm. autrijus should reappear in a few hours.
mugwump well, we've got a perl5 <-> perl6 bridge, but it's pretty deep magic..
obscurite: here's a good one. Write a YAML parser using Perl6 rules. 03:57
obscurite mugwump - what would it be used for?
mugwump lots and lots of things :) 03:58
sri_ i'd love to see mason ported 04:00
obscurite Both ideas noted
mugwump svn://tangram.utsl.gen.nz/trunk/YAML-Lite/lib/YAML/Lite/Grammar.pm is the grammar in Perl 5, well slightly. The rules implementation wouldn't be much longer or look much different from that 04:03
except with rules it might stand some chance of working ;) 04:04
based on www.yaml.org/spec/
obscurite mugwump, do you currently do perl yaml? 04:05
mugwump ingy's the yaml-meister
also WhyTheLuckyStiff has an implementation 04:06
obscurite yeah, Syck w/ perl binding 04:07
Khisanth <sri_> please port modules! :) <- been wondering about that, is there an actual list or is it more of "All of CPAN"?
mugwump well, depending on who you ask, you'll get a list of the modules they use the most ;) 04:08
sri_ Khisanth: just ask me! :) 04:09
woah, Cwd.pm is such a mess... 04:11
Khisanth sri_: so ...
sri_ and i need it for File::Find::Rule :(
oh cute, File::Spec already has cwd! 04:23
stevan sri_: we have a cwd implemented through Haskell 04:24
File::Spec::cwd
in Prim.hs
sri_ nice
stevan eventually we maybe need to port it, but it works in Haskell for now :)
sri_ Parrot should provide it ;) 04:25
stevan exactly :)
obscurite if parrot can host ruby, why does the mono project want to host ruby? 04:32
stevan why can't they both host it? 04:33
obscurite I guess it's apples and oranges. 04:34
stevan theoretically when we have a good enough code generator, we could port perl 6 to Mono too
(although IIRC the CLR does not handle MI very well, or at least not easily)
obscurite Yeah, that was my _implied_ question :)
stevan it's just another VM when it comes down to it
mugwump hey, if Haskell can run on the JVM anything's possible 04:35
stevan hey mugwump
mugwump hi stevan 04:36
stevan obscurite: the CLR is not built/designed to handle dynamic languages as well as Parrot is/will-be
it is optimized more for C#, etc. 04:37
more static languages
obscurite Thanks for the clarification. 04:40
stevan sri_: ping 05:07
sri_: just FYI, the ext/Tree module is a port of the perl5 module Tree::Simple (which I noticed is used by Catalyst 05:09
sri_ stevan: already noticed :) 05:13
autrijus reappears 05:28
mugwump hey. be warned I've changed perl5.c
obra hi autrijus 05:29
mugwump (cosmetically)
autrijus sure. thanks
hey obra
hey obscurite. 05:36
obscurite Hola :)
gaal i'm getting many, many of these on win32 during make smoke: 05:37
pugs.exe: 1: runProcess: does not exist (No such file or directory)
obscurite So far, perl6-mason and perl6-rules-yaml have been suggested to me as perl foundation grant ideas. (for google summer of code)
gaal i suppose this is parrot not being found
autrijus obscurite: what is p6-rules-yaml? 05:38
gaal: yup, could be.
obscurite: a YAML implementation based on p6rules?
obscurite nods
It seems like the Syck stuff will be in the core though?
05:38 ChanServ sets mode: +o autrijus
obscurite So i'm not sure how practical. 05:38
gaal obscurite: i suggest rich ASTs, so that you can do things like reliably produce normal ASCII source code from code that has unicode ops 05:39
among other interesting applications
autrijus obscurite: what kinds of things are you interested in? :)
mugwump hmm, that seems a little ambitious gaal :)
autrijus ?eval $?PUGS_VERSION 05:40
evalbot6 No code to eval given.
autrijus ?eval 1
obscurite I need something an experienced perler or not so experienced c/c++/asm programmer could do in a couple of months of hacking while studying at the same time.
evalbot6 1
gaal and that would know to change ōæ½xBB to >> in perl but to, uhhh, whatever the \N{unicode name} is in a quoted string.
obscurite something with lasting utility, that could become useful quickly 05:41
gaal mugwump, worth 45 hundred bucks fer sure.
this has many useful applications, but the code canonicalization is really important:
autrijus obscurite: syck may be core pugs (and easily made core parrot), but an independent implementation based on Rules will likely exercise PGE a lot 05:42
gaal diff won't work without it.
mugwump diff already works well on unicode
gaal i mean, it *works*
autrijus obscurite: as gaal said, PPI6 is also a worthy goal that will make many people happy
SamB diff goes line-by-line! 05:43
obscurite writes things down
gaal but it is limited
SamB it works fine with utf8
mugwump but I must recommend making sure that whatever it is you undertake is clearly defined :)
autrijus obscurite: although if you choose to do it with p6rules (i.e. write down Perl 6 grammar in Perl 6 rules)
obscurite: then it will definitely have a great impact on the bootstraping process
gaal another example: i want to grep for <<+>>
autrijus ...except I think it's part of TPF's grant description (the pmichaud part) already... 05:44
gaal but i don't remember if it spelled it ōæ½xAB1ōæ½xBB
errr, ōæ½xAB+ōæ½xBB
obscurite <gaal> obscurite: i suggest rich ASTs, so that you can do things like reliably
produce normal ASCII source code from code that has unicode ops
<gaal> among other interesting applications
*<* Signoff: geoffb ("Leaving")
<autrijus> obscurite: what kinds of things are you interested in? :)
autrijus ooh flood
gaal: what's wrong with a simple tr// based solution to that. 05:45
obscurite curses at putty to those who have not yet ignored him
autrijus obscurite: that's fine, we only see 5 lines
gaal the weak answer is that it would have false positives
autrijus that's quite week and maybe you _want_ those false positives :)
s/week/weak/
I'd like a refactoring browser though. 05:46
port HaRe to Perl6.
that will rock.
gaal the strong answer includes "code browsing" and hand waving.
autrijus but that far exceeds the two-month span
it's easily a master thesis :)
obscurite Thanks, I have a bunch of things to research now. 05:47
autrijus obscurite: I think mason6 will generate a lot of goodwill :)
and it gets you playing with modparrot and other wonderful things 05:48
gaal autrijus, what would it take to do the whitespace preservation thingie in the AST?
autrijus plus it's clearly doable in 2 months
gaal: we already do that
gaal: you can simply calculare intervals (missing tokens) between Pos
gaal: and do a rescan to find them out 05:49
gaal we do!? then my transformation can almost happen now.
autrijus that of course assume you have a copy of source code amount
s/amount/around/
gaal have a AST dumper that's guaranteed to show quoted sctrings with escaped unicode
and an AST -> perl6 parser 05:50
autrijus er. 05:51
no
you write a Pugs.Compile.Perl6. 05:52
that's your ast->perl6 parser
gaal :D "hello" 05:53
:D 'hello'
they output the same thing 05:54
for any sane application other than this, this is a good thing :)
SamB that sounds like an extra-ugly-printer... 05:55
gaal anyway, i should go to $work. 05:56
the added info should go in the data structure, i'm not proposing the translation actually go through text
later. &
autrijus gaal: "rescan" :) 05:57
SamB starts to think his ToHsExp thing is not going to work beyond the simplest things... 05:58
SamB knows he is too tired to figure that out now, though.
gaal what's "rescan"? (i'll backlog) 05:59
Khisanth how difficult would it be to implement 1..10:by(2)? :) 06:00
autrijus gaal: rescan means to look at the interval in Pos 06:01
and read back the source code
between coordinates
Khisanth: you want to take a stab? 06:02
I don't see an easy way to do that :) 06:03
and I'm not sure if it applies to 1+2:by(3)
or
Khisanth heh not before I find out how you are suppose to do get 5,4,3,2,1 :)
autrijus 1==4:foo<bar>
Khisanth s/do//
autrijus reverse(1..5)
surely?
Khisanth I never liked that 06:04
autrijus 5..1:by(-1) then.
Khisanth so where is the general area is should start stabbing? I think I'll try tomorrow. I need an excuse to do something with Haskell :) 06:05
autrijus Khisanth: ok. you can start by implementing a generic "range" op 06:06
Khisanth that isn't already in?!
autrijus Khisanth: not afaik
the curr impl is all based on ++
so you can do
'a'..'z'
I have _no_ idea if 06:07
'a'..'z':by(-1)
will work.
or how else to make it work
'z'..'a':by(-1) rather
so a generic range op that takes three Val (begin, end interval) is a good start
then you can introduce a special parse rule
that parses range and delegate to that 3ary op 06:08
finally we try to think a way to integrate it into the expression parser table in the correct precedence
that's all
obscurite is catching up on Pugs 06:11
autrijus :)
japhy I'll have a rudimentary perl 6 rules parser by friday 06:13
with some cheating, of course. variable and code-block parsing will be iffy.
autrijus that's fine 06:16
japhy++ # fan tas tic
japhy yay for me.
g'night
autrijus nite!
sri_ there's no FindBin yet, right? 06:17
autrijus sri_: right. write one!
sri_ mkay
obscurite sri, was perl6-mason your idea?
autrijus chuckles.
sri_ obscurite: mhm 06:18
it would rock
obscurite Okay, forgot who it was. :)
autrijus ponders uploading Pugs 6.2.6 with cpan-upload.p6 06:20
that would be nice publicity
or at least fun ;) 06:24
scook0 ahoy! 06:46
obscurite hi 06:47
06:51 castaway_ is now known as castaway
autrijus mugwump: please use "return Int" etc for now 06:59
the "int" type is not in class tree
and so will trigger subtle weird bugs
?eval $?PUGS_VERSION
evalbot6 No code to eval given.
autrijus ?eval eval '$?PUGS_VERSION'
evalbot6 No code to eval given.
mugwump autrijus: noted, thanks 07:00
?eval "$?PUGS_VERSION" 07:01
evalbot6 No code to eval given.
mugwump ?eval [+] 1..5
evalbot6 No code to eval given.
luqui hmm?
that looks broken
nothingmuch morning 07:02
luqui morning nothingmuch
scook0 autrijus: I'm looking at Haddocking Context.hs at the moment... I was wondering how much of the current behaviour is consciously designed, and how much is just hacked together
nothingmuch brb, reboot
autrijus scook0: 0% is consciously designed. 07:03
100% is hacked together.
scook0 autrijus: thanks
autrijus scook0: only deltaType needs to remain. everything else want sto be rewritten using Data.Graph or something else.
scook0 ah
autrijus I think that part of code is ~day 13 or so 07:04
and had not been touched since
scook0 is deltaType supposed to be returning large positive numbers for types that are actually incompatible?
autrijus that is a open design question.
it is that way because we want
'1'+'2'
to work
scook0 I see
autrijus without having to define <+> as Scalar Scalar 07:05
I think I did think of leaving a compatibleTypes as remedy
to specify things that are fundamentally uncastable
scook0 I think I'll just document the current behaviour for now
autrijus nod. it is a mess. it really wants a rewrite.
scook0 with a caveat saying "this may or may not be wise"
autrijus you can kill the "may or"
scook0 'junctivate' turned my brain inside-out too :)
autrijus I asked something about Str->Int casting on p6l
luqui still thinks that the '1'+'2' thing is elegantly solved by making '1' both a Str and an Int at the same time
autrijus but no rulings came down
scook0: "junctivate" is actually sane 07:06
luqui whereas '1a' is just a Str, so gives an error
autrijus luqui: oh and 'Inf' is a Num
scook0 oh, it's sane, it's just that it's so abstract
luqui not sure about that one
autrijus and '1e-1' is a Complex
luqui: and other weird corner cases :)
er, never mind about the Complex thing. thinko
luqui well, it is a complex 07:07
it's just a Num also
:-p
luqui thinks about it some, and decides that '1e-1' should still be a Num, even though it might be unsettling 07:08
scook0 autrijus: btw, is 'countTree' supposed to be ignoring leaf nodes?
mugwump 1i-1 perhaps you mean? :)
or 1ie0+1e0 07:09
luqui probably 1e0i+1e0
mugwump was trying to find the Complex literal equivalent of the /eieio operator
luqui oh
autrijus scook0: it doesn't really matter, but no. 07:10
scook0: if you can fix it so it counts the whole tree, that's fine
scook0 autrijus: it's a one-char fix, so I'll bundle it in when I ci my docs 07:11
doesn't really make any practical difference atm
autrijus k 07:12
Corion "make test" now takes ages - I should do a clean checkout it seems ... 07:15
luqui what does a clean checkout have to do with it? 07:16
Corion luqui: "make clean" doesn't
castaway looks at Corion.. (at home today, what?)
Corion castaway: Yep - working from home ;) 07:17
castaway ha, I'm so clever :)
Corion (resp. fighting our DNS as it doesn't work when trying from home :( )
castaway hmm, reminds me, must figure out why by home dialin is failing 07:21
luqui ?eval "working?" 07:22
evalbot6 No code to eval given.
castaway guess not ,) 07:23
07:27 sekimuraway is now known as sekimura
luqui ?eval "evil working?" 07:29
evileval No code to eval given.
evalbot6 No code to eval given.
autrijus ?eval '123' 07:33
evalbot6 No code to eval given.
autrijus ?eval 1
evalbot6 1
autrijus ?eval \'
evalbot6 No code to eval given.
autrijus hrm. guess it needs some debugging
Corion Yee Haw! I bested our DNS ! :)
luqui is debugging it 07:34
gaal|work Corion, are you getting a parrot-enabled pugs on your box?
Corion gaal|work: Nope, because I don't have Parrot installed
ext\Set\t\overload.t is taking 2 minutes already - I think it runs in an infinite loop ... I'll keep it running up to 10 minutes I guess
gaal|work i do have it, but my pugs on w32 is rules-challenged. i haven't had tuits to check if it's just a makefile thing or a deeper issue 07:35
"just a makefile thing" -- famous last words
mugwump Corion: that is far too long for that test! 07:36
Corion mugwump: 4 minutes now :)
mugwump: I don't have the time to debug it though ...
mugwump that's cool, I'm on it
Corion (to see where it hangs ...)
mugwump It's not getting pass the parsing
gaal|work still things the context-sensitive return declaration syntax is weird 07:37
mugwump wow, my pugs takes 12s to start up 07:38
gaal|work sub foo() returns Int | List of Sheep
mugwump on my 1.6GHz athlon
Corion mugwump: That might be Prelude.pm getting loaded ... 07:39
mugwump why did we have to put a Honda in?
luqui evalbot is fixed 07:40
should bytes be a unary?
autrijus Corion: it's fixed.
luqui: why note?
Corion: the set test, that is
luqui well, it's not
that was the problem
Corion updates 07:41
luqui so if it should, then there is a pugs bug
autrijus luqui: how is it not unary?
pugs> bytes 'asdx' 07:42
4
luqui bytes 3 + 8
2
it looks like a listop
Khisanth mugwump: why DOES pugs take so much longer compared to perl anyway?
luqui hmm
no, it's not
hmmm.... 07:43
maybe unaries are parsed with the wrong precedence now
Corion Khisanth: Because Pugs is compiled using GHC and not using MSVC
mugwump in my case, because I'm linking in parrot, pugs, haskell and perl 5 :)
luqui wait, that's really weird
it's working in pugs>, but not in evalbot
autrijus luqui: it may be a optionary
Khisanth this perl is compiled with gcc
Corion evalbot might be several versions behind :)
Khisanth: Then I don't know - I expect gcc to be slow. But GHC does some magic before handing stuff off to gcc 07:44
07:44 autrijus sets mode: -o autrijus
luqui there was "if bytes $code == 0", and it looked like that was being parsed "if bytes($code == 0)" 07:44
autrijus luqui: clearly that's broken
clkao morning autrijus 07:45
autrijus hi clkao.
clkao sick today :(
have you done something for me? 07:46
autrijus no, I've been a bit sick too and slept a lot
clkao so what was missing last night? 07:47
autrijus clkao: hashrefs
clkao no
f0rth what would be required to have pugs working like perl5 in EPIC?
clkao lvalue doesn't work
autrijus luqui: in Parser.hs, bytes should be there in optionary
luqui: also int() doesn't work
clkao you need to make placeholder-ish block rw
autrijus clkao: right, that too, but I didn't have tuits to check
placeholder-ish?
clkao {$^x..} 07:48
luqui what is int() supposed to do
autrijus clkao: can't.
clkao usually you can do -> ($x is rw) { blah } right?
luqui (and it looks like bytes is optionary; I'm still trying to find the real problem)
autrijus eval_apply("sub ($x is rw, $y) {$x[0] = $y}")
right
luqui: hrm wait
int() does work as both unary and optionary
and parses correctly
oh, no, nvm 07:49
pugs> :d int 5 - 8
App &int (: App &infix:- (: 5, 8))
that's still wrong
so the entire unary thing is borked. weird
luqui it's just that in evalbot: "if bytes $code == 0" doesn't work, but "if bytes($code) == 0" does. But that doesn't seem to be happening elsewhere.
autrijus I'm seeing that it fails consistently elsewhere too 07:50
compare 07:51
pugs> :d chdir 1,2
Syn "," {App &chdir (: 1);
2}
with
Aankhen`` Anyone wanna port Time::Local?
autrijus pugs> :d mkdir 1 == 2 07:52
App &infix:== (: App &mkdir (: 1), 2)
luqui isn't that correct?
autrijus right. but see
pugs> :d bytes 1 - 2
luqui ?say "hi"
autrijus App &bytes (: App &infix:- (: 1, 2))
pugs> :d bytes 1 + 2
App &bytes (: App &infix:+ (: 1, 2)) 07:53
oh
it's because - and + are might tigher
sorry. got them confused with comparisons
luqui aren't + and - supposed to be tighter than unary?
yeah they are
(I meant to say "looser") 07:54
autrijus indeed. clearly I'm not in the correct mental shape :)
luqui me either
autrijus they are looser than symbolic unary
but tighther than named unary
luqui ?eval "hi"
evalbot6 No code to eval given.
evileval 'hi'
autrijus and optionary
mugwump hmm, {}.kv seems to hang on 4238
autrijus luqui: committed your fix to eval?
luqui yeah 07:55
autrijus mugwump: indeed. take a look at Keyed.hs and see if you cant fix?
(and {} is a code anyway)
luqui I'll kill evil if you restart evalbot6 (are you the one who runs that?)
autrijus I am 07:56
07:56 ChanServ sets mode: +o autrijus
autrijus ?eval ('luqui++') xx 3 07:57
evalbot6 ('luqui++', 'luqui++', 'luqui++')
07:57 autrijus sets mode: -o autrijus
autrijus so, finally all is well. 07:57
luqui oh, the evalbot now supports ?join
autrijus cool! 07:58
luqui so you don't have to invite him
autrijus 'key
?eval File::open('/etc/passwd')
evalbot6 Error: No compatible subroutine found: "&File::open"
autrijus cool. Prelude is really not loaded under safemode
f0rth: probably not much, just tweak epic a bit 07:59
epic as it currently stands already works with p6 to some degree 08:01
bbiab 08:02
Corion Hmmm - at r4246, the test ext\Set\t\overload.t still hangs
autrijus the fix was 4247. 08:03
sorry :) 08:04
Corion: can you help (after a successful smoke) unTODO and enTODO for the release?
Corion autrijus: I'm supposed to $work, but I'll look into it after this smoke has finished 08:05
luqui :q
autrijus cool. thx!
:)
&
jql damn work
given Work { say "I Quit!" when .does Suck } 08:08
jql sees good things with p6 poetry 08:09
Corion "true" but false
"maybe" but true|false
luqui jql, almost right 08:10
jql even better, "false" but false
luqui given Work { say "I Quit!" when .does(Suck) }
jql damn methods
Corion "0 but true" but false # Perl5 programmer, indecisive 08:11
jql $foo but $foo; # head asplode
luqui I don't think that's a head asplode 08:12
if $foo contained a Role, then that would be fine
you're making the Role do itself
oh
okay, yeah, my head a splode
autrijus hey luqui. why isn't {} a Hash?
jql heh
luqui it's not?
autrijus I mean, what use is a empty Code?
luqui what use is an empty hash ;-)
autrijus my $href = {}; 08:13
luqui I can think of uses for both
Corion Hrmmm ... My system test seems broken ... Weird ...
luqui but the hash is undoubtedly more useful
autrijus really. what use is a empty code?
luqui To assign a callback that does nothing?
still, sub {} is fine there
autrijus or {;}
luqui that too
jql as long as it's not (sub{} | hash()) 08:14
autrijus ok. I'd like {} to be a hash
luqui I expect a lot of people would
jql I would
luqui { %hash } too
autrijus that too.
luqui (I don't remember if that is still a hash }
autrijus it's not.
jql we have {;} if we want an empty Code
luqui it was at one point
autrijus can you bring both to p6l? I'd like to implement both
luqui okay
autrijus danke
(the relevant code is Parser.hs line 775, extractHash) 08:15
f0rth autrijus: I am still trying to make syntax check working
jql or, perhaps in a fit of p5 dwimmery, an empty hash ref does Code. heh
jql pretends he didn't say that 08:16
mugwump ext/Set/t/overload.t is succeeding on r4248 08:31
Corion My r4246 smoke is still running ... 08:33
Grrr. Array interpolation has changed again, that's what broke my test :( 08:40
Ah hah. Aliasing seems to be broken: for *@cmd,*@args { # does not work 08:43
for *@cmd,*@args -> $l { # works as expected
Hmmm. Weird ... That doesn't seem to be the cause ... Oh well - it worksnowsoiskipit 08:45
luqui just submitted a Google summer of code proposal 09:03
mugwump I'm ineligible - it's going on Winter here! 09:04
luqui haha
kungfuftr mugwump: you still got the timewarp code anywhere? 09:18
mugwump kungfuftr: er, probably.. 09:19
actually, no, I've got lots of little fragments of it :)
don't forget the mountain of dependancies... which part are you most interested in? 09:21
kungfuftr mugwump: bah... need for to have blocking...
mugwump: bonus points for converting timewarp style stuff into a plain old sleep() function
=0)
mugwump oh that's easy
just window.setTimeout(function(){ /* code to run after sleep */ }, 1000); or something 09:22
kungfuftr mugwump: nah... foo(); sleep(5); bar(); 09:23
=0)
mugwump can't be done, I'm afraid :)
kungfuftr mugwump: supposedly there is a way... via throwing scope
mugwump hmm 09:24
kungfuftr bbiab
luqui what's timewarp? 09:27
mugwump it's just a jump to the left... 09:28
luqui ?
castaway Its a dance 09:29
mugwump o/~ ... and then a step to the riiieye-eye-eye-eye-iiiight ... o/~
luqui oh
mugwump it was a test script where we had developed XML-RPC on acid 09:30
via iframes etc
luqui huh
okay 09:31
mugwump mmm. should have been off-chan really :)
luqui /XML|RPC/ and die
sri_ steps on mugwump's foot
luqui that's the state of my knowledge 09:32
kungfuftr quick... jump him while he's not looking! 09:33
mugwump with a full windowing toolkit and a generic object bridge from JavaScript to Perl, auto-generating JS and Perl skeleton classes from a T2 metamodel, mapping them straight to the database and pretty much transparently bridging to the browser it was a case of overengineering gone mad :)
kungfuftr mugwump++ # too correct, it _was_ funky though 09:42
mugwump I think that was what kept us all going.. 09:43
Corion I am considering doing a bridge from Class::DBI via XMLHttpRpc to JavaScript, to give some JS objects persistence ;-)))) 09:44
kungfuftr Corion: cdbi--
Corion Feh - it worksforme
kungfuftr cdbi makes easy things simple, it makes hard things impossible
castaway just difficult.. 09:45
mugwump it's a great SQL templating engine
castaway It is? 09:46
Corion kungfuftr: I don't need to adapt other peoples' databases, so cdbi works well for me
kungfuftr Corion: yar, it seems like that now, but eventually when you come further down the line, you'll need to change it to make it more complex... i can guarantee it 09:47
Corion kungfuftr: Well - I primarily use the DB as a persistence store, and for that it works quite well. 09:48
mugwump I need to dynamically build expressions that contain multiple joins using arbitrary search filters on any of the joined objects. Tangram works :)
Corion Hmmm. Where does "rel2abs" live nowadays? 09:49
sri_ kungfuftr: same here, cdbi keeps the simple things simple
kungfuftr sri_: i've just found it to sprout legacy code
where you seriously have to hack it to get it to work for some change request 09:50
tangram's good, but it's not really a viable option for pre-existing systems
*sigh* life is hard
Corion Ah. Its Just Not exported
castaway It is ,)
I'm not even sure the simple things are simple (at least from the POV of having to recreate your table structure in CBDI classes 09:51
Corion castaway: CDBI can look at the DB and learn from that ;) 09:52
mugwump well, CDBI::Loader is supposed to get around that
but yes, it sucks describing your program'
s model twice
castaway Corion, yeah, so Ive heard, but what if you add/change your DB structure?
nothingmuch castaway: my project is still not finished
but usable
castaway mugwump, right, that was my point 09:53
Corion castaway: Then your class changes as well :)
castaway rerunning loader "fixes" it?
(without killing any additions I may have made?)
mugwump schema migration is a complex issue, with or without a snazzy abstraction..
castaway oh, and the "no multicol keys" sucks
mugwump hey what a cool error 09:54
pugs: cannot cast from VStr "bob" to Pugs.AST.Internals.VCode
luqui that's a common one 09:55
mugwump ah, "$foo()" 09:56
nothingmuch hopefully the defacto persistence/rdbms-oo mapping in perl6 will be nicer
stevan and I had a nice discussion about it
kungfuftr hopes so
luqui is so excited about serializable continuations 09:58
autark-jp hm, do you need a newer perl than 5.8.0 to build pugs? 10:00
nothingmuch how do serializable continuations get along with ickier state preserval, like handles?
luqui I doubt it
autark-jp when trying make, I get: Perl v6.0.0 required--this is only v5.8.0, stopped at /work/d/pugs/blib/lib/File/Spec.pm line 1.
castaway giggles
autark-jp BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.0/ExtUtils/Install.pm line 22.
luqui you probably need to register a "on entry" callback or something so that you can restore it
that's weird 10:03
it seems to be trying to run a perl6 script using "perl"
autark-jp things just work on my other mchine with 5.8.6
luqui is that the only difference? 10:04
autark-jp probably not
Aankhen`` Question: what is a continuation, in the programming sense?
luqui as opposed to what kind of sense?
Aankhen`` Any other, I suppose.
Just pre-empting someone picking up a dictionary and being a wiseguy. :-P 10:05
luqui uh. it's like a closure, but it closes over the execution stack too
I think Dan has a wthi about it
luqui is looking that up
www.sidhe.org/~dan/blog/archives/000185.html 10:06
that's not exactly terse though
basically it allows you to "save" a point in the execution of your program, and return to it at a later time (but variables that are changed stay changed) 10:07
I don't know why I put quotes around "save"
Corion luqui: Not necessarily all variables that have changed stay changed. Only the globals, as the whole stack hangs onto the continuation 10:08
(globals+heap better) 10:09
luqui considering new instances of lexicals to be distinct variables and whatnot 10:10
basically just like a closure
in our Perl world, everything is on the heap 10:11
I don't know of a language with continuations where that isn't true
nothingmuch Corion: if two conts close over the same lexical scope, one changes a var, and continues to the other, the other will see the change
Corion nothingmuch: true 10:12
nothingmuch Aankhen``: continuations are a divergance from single point of entry / single point of exit
returning early is the most trivial example
Corion Likely, if you already know closures, then a continuation is a closure that also closes over the current line number executed :))
luqui found it useful when trying to understand continuations to hear lots of different explanations 10:13
nothingmuch coroutines are even weirder, stopping at a point, returning a value, and then picking up
luqui so this is good
nothingmuch and a continuation is even more flexible
luqui Corion, and its call stack
nothingmuch it's a bit like taking a closure, and a reference to a line number
Corion (and the call stack)
nothingmuch true
integral they're like threads too, in that when you context switch you make a continuation 10:14
luqui hmm... come to think of it, a coroutine is very much like some sort of non-constant continuation
that is, a continuation that updates what it points to as it executes 10:15
nothingmuch look at it this way: if you create a continuation in the current place in a file, and call another sub
and that sub continues to the continuation you gave it
it's like it returned
integral prefers the: my $foo = coro { } form
mugwump It would be fun to port POE to coroutines :)
integral since then it's a bit more obvious that $foo isn't like a normal subroutine, in that it's a box with a continuation in it, and the box's contents can change
Aankhen`` Sorry, my computer was shouting at me to take a 10 minute rest break.
luqui mugwump, fun? 10:16
very very useful
integral mugwump: POE::Session::YieldCC on CPAN is a crappy attempt at this
nothingmuch except that the jump replaces the stack, not only pops from it
Aankhen`` luqui >> It certainly has been useful to hear lots of explanations. :-)
I think it might be somewhat clearer once I see it in action, though.
luqui you can with pugs
nothingmuch gets to fix a bug with Qt now
oh joy
luqui play with $?CALLER_CONTINUATION
Aankhen`` luqui >> From which revision? 10:17
nothingmuch btw, does pugs/perl have a syntax for more than just caller continuation?
luqui any revision fairly recent
Aankhen`` I haven't compiled today's dosage of Pugs.
luqui it'll be there
Aankhen`` Mine is at r4154.
Corion The key idea (in my opinion) to continuations is, that they allow you to do this:
prompt("What is your name?")
read_name();
print "<html><p>Your name is $name</p></html>";
... in a CGI/mod_pugs
integral ... without operating system support for threads
Aankhen`` Corion >> They allow you to leave semi-colons off statements? :-o
Corion Aankhen``: :) 10:18
Aankhen`` ^_^_^
nothingmuch another thing:
luqui Aankhen``, that variable refers to the caller's continuation, because the real "current continuation" is somewhat undefined if you use it as a variable
nothingmuch lets say you are implementing exception handling code:
Aankhen`` luqui >> OK.
nothingmuch CATCH { } puts the continuation to it's block in some global var
luqui Corion, you need serializable continuations for that
Aankhen`` Darnit... just as I thought I might have begun to understand coroutines, I start trying to understand this. :-P
nothingmuch sub die { $! = ...; go to CATCH continuation };
Corion luqui: Or a persistent (single) interpreter
luqui hmm, I suppose you could do that with mod_parrot even without serializable continuations 10:19
coolness
Aankhen`` Corion >> I didn't really understand the CGI/mod_pugs example -- do you think you could explain it?
nothingmuch for flow oriented web applications one still needs a way to serialize and recreate (not thaw) connections
Aankhen``: basically, when you prompt(); an html form is displayed 10:20
and your program shuts down
Corion Aankhen``: Well. You understand the code - it is code you would use for a console application, right?
Aankhen`` Yes.
nothingmuch on the next invocation, the prompt() returns with the new value
parsed from the QUERY_STRING, or whatever
Corion (nothingmuch explains much better than I do :) )
nothingmuch and serializing that 10:21
it does thiis by getting a continuation to the part farming the QUERY string, and returning to the code that called prompt
when the program restarts, the serialization is thawed, and invoked
Aankhen`` Hrm.
nothingmuch the code to get the QUERY_STRING stuff parsed is executed
and then the subroutine returns
since we know the callstack, it appears to the code calling prompt() that nothing changed
Aankhen`` I need to shower; I will come back and try to grok it once again. 10:22
BBIAB.
nothingmuch continuations have a nice property though - there doesn't need to be only one
that's the hard part, i think
mugwump prays for accurate parsefail line numbers when he wakes 10:23
luqui keep praying 10:24
we'd have to seriously think about all the try calls in Parser.hs
mugwump oh, is that why it takes so long to parse everything ;) 10:26
luqui perhaps
integral thought try == back-tracking 10:27
luqui yep
integral hmm? I thought perl6's grammar didn't need it?
luqui it doesn't really
but it sure simplifies things
integral ah...
luqui LL(1) factoring a grammar is... nontrivial 10:28
nothingmuch Aankhen``: c2.com/cgi/wiki?ContinuationPassingStyle, there's a good description in the middle: "CPS also lets you to represent first class continuations..."
err, "Any "traditional" function or function call..."
integral oh, I thought the "doesn't need back-tracking" thing was designed into the grammar, rather than just being theoretically possible
luqui btw, &?CALLER_CONTINUATION.arity == 1. what is that parameter? 10:29
integral the return value of the function?
nothingmuch also "Put another way:" - that's also a good desc for imperative heads
integral shouldn't: &?CALLER_CONTINUATION.(...) be the same as return(...) ?
luqui ahh yes
duh
thanks
integral would be nice if it behaved as a call rather than a jump though... 8-) 10:30
luqui ? 10:31
how does it behave as a jump?
integral does execution ever reach the statement after it?
luqui if you pass it the current continuation 10:32
integral ah. Can you do that though yet?
luqui I have yet to test it, but I think you can do:
sub cc() { &?CALLER_CONTINUATION }
then foo(cc) is like call/cc
maybe
integral hmm!
luqui tests that 10:33
integral, yeah, it seems that works 10:35
integral ./pugs -e 'sub a { b(&?CALLER_CONTINUATION); say "hello" } sub b($c) { say "foo1"; $c(&?CALLER_CONTINUATION) } my $b = a(); $b()' # I have no idea what this does...
luqui ack 10:36
luqui has to think about that
integral if you insert a "say 'foo2'" before the $b(); I was expecting, foo1, then foo2 and then hello
luqui I don't think you'll ever see hellp
hello
integral hmm? But $b should contain the ret continuation for calling b just before the "say 'hello'" 10:37
./pugs -e 'sub a { b(&?CALLER_CONTINUATION); say "hello"; return { say "foo3" } } sub b($c) { say "foo1"; $c(&?CALLER_CONTINUATION) } my $b = a(); say "foo2"; $b()' # makes a bit more sense
luqui no, &?CALLER_CONTINUATION is the caller continuation
not the current continuation
integral doh 10:38
err, hang on, hmm?
we call a(), then we call b() with the continuation that returns to where a was called, right?
luqui it represents the point just after the current sub *returns*
yeah
autark-jp hm, installing perl5.8.6 did wonders.
integral so when I invoke $c in b() shouldn't it go to foo2 next? 10:39
luqui autark-jp, it worked?
autark-jp yes
luqui we should find where that dep is
I think so
oh
right, you can see hello 10:40
luqui 's brain gets tangled up very quickly thinking about such things
integral hm, so invoking $c in b should do what pugs is doing: jump to before the "hello" ?
luqui invoking $c I think should take you to foo2 10:41
and then invoking $b should take you to hello
integral yeah, I agree.
luqui I get a "cannot cast from VBool True" error when I run this program 10:43
integral ./pugs -e 'sub a { b(&?CALLER_CONTINUATION); say "hello"; return { say "foo3" } } sub b($c) { say "foo1"; $c(&?CALLER_CONTINUATION); say "foo1b" } my $b = a(); say "foo2"; $b()' # revised version
It's because the second time you return from &a you need an appropiate return value again :-) 10:44
Aankhen`` nothingmuch, you still here? 10:45
luqui still, it doesn't look like it's working right
integral *nod*
luqui annotates every line with a say 10:46
mugwump right, I'm out. 'night all! 10:51
luqui night 10:52
it's almost like &?CALLER_CONTINUATION is thinking it's the current continuation
integral that sounds a plausible explanation 10:53
luqui I think that's what's happening
Arathorn wonder how long it'll take for someone to hack a flow-of-form-control-via-continuations module into Catalyst6 or Maypole6 (a la www-106.ibm.com/developerworks/libr...ntin.html) 10:55
luqui what is maypole again? 10:56
nothingmuch yes, i'm here
Corion Continuations have scalability problems and are interesting problems for load balancing
(I still want them ;)) 10:57
luqui how so?
Arathorn maypole's a MVC framework jobby which stitches Class::DBI and Template::Toolkit together for extensible DWIM CRUDdy stuff
Corion luqui: You can't pass them around in a server farm ;)
nothingmuch considers a new hard language
luqui you can if you serialize them
Arathorn i.e. catalyst's progenitor.
nothingmuch sort of like apl, except that each operation on an element generates a continuation 10:58
and collecting continuations into an array again requires some weird op
preferrably in a remote section of the code
luqui so it would be like explicit lazy apl or something?
nothingmuch no, the point is to make life hard for the programmer by making all control flow jump arbitrarily through code 10:59
but the twist is that execution can fork
Aankhen`` nothingmuch >> In the CGI/mod_pugs example above, does prompt() call die()? 11:00
nothingmuch and has to be recollected
Aankhen`` s/die/exit/
nothingmuch Aankhen``: i have no idea
i don't think it does
Aankhen`` Ah.
Arathorn "to talk to the wizard, turn to page 216... to explore around the room some more, turn to page 65..."
:)
nothingmuch but see search.cpan.org/perldoc?Contize
integral sub prompt($p) { print $p; print &?CALLER_CONTINUATION.perl; exit } # a possible implementation, I suppose
Aankhen`` A'right.
BBL.
nothingmuch Arathorn: exactly, except you do both at the same time, and have to know by heart that page 22 is where they are explicitly collected 11:01
ofcourse, the catch will be that *every* operations is like this
Arathorn grins
nothingmuch and there are at least elements involved in each computation
like the grep operation will explode 11:02
Arathorn it's a bit like the Real Programer story about using the timings on the magnetic drum memory to determine flow of control
nothingmuch and each coroutine will continue to one of two collectors
integral at least they didn't design parrot like that ;-)
nothingmuch the first collector is much like /dev/null, except that you'd have to implement that manually
clkao *yawn*
nothingmuch and the second will be where your grepped data winds up
clkao is there a release coming up? so new failed test should be marked as todo right? 11:03
nothingmuch except it won't be boolean, it need multithreaded switch statements
Arathorn www.cs.utah.edu/~elb/folklore/mel.html but with continuations rather than gotos :)
or a bit like doing something in prolog with all the effects happening on the backtracking... 11:04
nothingmuch hmm, not loading
_asm add bp, difference 11:07
beautiful!
c2.com/cgi/wiki?ContinuationsInCee
fudging the base pointer of the stack was something I always wanted to do when I played with assembler
luqui integral, I put in a test for that bug
nothingmuch except I never found out what *really* lies at the top of the stack
integral thanks luqui++ 11:08
luqui & 11:09
broquaint Is there a way to get the same information as (caller)[3] (i.e the caller's subname) presently in pugs? 11:21
Ah, $?CALLER::SUBNAME 11:25
castaway nudges broquaint 11:29
broquaint 'lo there, c.
Corion Hmmm. Seems like smoking now takes about 1 hour, compiling and testing ... 11:56
nothingmuch autrijus, gaal, theorbtwo: you are all co-maintainers on Test::TAP::*.. if there is something to be fixed just fix it, and try to do it with darcs so that the change can be propagated to the public repo 11:57
gaal|work nothingmuch, i'll fix the t:m dep. thanks. 11:58
nothingmuch i fixed it, read email =)
oh wait, i didn't mail you
so now you know anyway
gaal|work hah 11:59
ok, i WON'T fix it then.
nothingmuch FINE! SUIT YOURSELF!
gaal|work FINE.
Arathorn y'all need a staggered smoke farm
nothingmuch OKAY THEN!
Arathorn: we do
gaal|work hey i know! i can use feather for the darcs thingamajoob. 12:00
nothingmuch want to write Test::TAP::Model::Consolidated? it takes several Test::TAP::Models and presents them as one
gaal|work me? nonono.
nothingmuch no, Arathorn
gaal|work didn't stevan have an idea of how that should work?
nothingmuch not that I recall 12:01
it shouldn't be too hard
gaal|work there's a visual design aspect to this
nothingmuch all you have to do is subclass the Subtest one to be able to represent a disagreement
and make HTMLMatrix know how to eat consolidated results too
autark-jp hm, it seems to me that test #7 of t/operators/quoting.t should be a TODO. It seems to succeed because the eval fails. 12:47
luqui hmm, why does that eval fail? 13:08
ahh, no support for balanced brackets 13:10
autark-jp that's how I found it, it started to fail when I implemented balanced brackets :) 13:11
luqui you did?
autark-jp++
have you committed? 13:12
autark-jp need to learn how to commit...
also need someone to look at the code.
luqui are you a committer?
autark-jp no
luqui okay
did you p6c it?
autark-jp p6c what? 13:13
luqui the patch
autark-jp oh, no.
theorbtwo seen autrijus 13:40
nothingmuch is there a repository of mini languages?
Limbic_Region theorbtwo - [09:13] <autark-jp> oh, no. 13:41
nothingmuch or are any of you guys a repository of mini languages?
i'd like a toy langauge to try and implement in haskell as an excercize
excercise
Limbic_Region about a half hour ago
nothingmuch Limbic_Region: autark-jp !~ autrijus
castaway try "/lastlog autrijus" love 13:42
theorbtwo Wow, that's long. 13:43
castaway umm, yeah, sorry :)
theorbtwo Anyway, the answer is 5-6 hours ago.
luqui nothingmuch, just make up your own 13:48
I had an interesting idea for a language
it was order-free like latin (but then, that was already done)
nothingmuch luqui: my problem is lack of need
luqui oh
nothingmuch i don't know what to do with a language
so i don't know what the language would want to do
luqui yeah, because perl is great for everything 13:49
hmm...
prolog could use an overhaul
you could write a logic language with forward and backward inference
and I'd use it
castaway nm, SQL has a not too large set of things it can do..
(well, for a relatively simple SQL anyway.. try SQLites ?) 13:50
nothingmuch hmm
that's a cute idea
i think i'll look at examples
draw ideas for purpose from there
and see if i can do anything like that to it
Corion ext\fp\t\functions.t exhibits a bug within Pugs - the parser has holes it seems 13:55
Enveigler Is there a smoke test harness, or somewhere to send pugs make test results? 14:24
gaal|work there's no consolidation service yet, enveigler.
Limbic_Region nothingmuch - so in addition to all the other maladies - I am going blind too 14:25
thanks btw
gaal|work for now, post your HTMLMatrix somwhere and put a link here
and, if you want to work on this, a consolidation service would be very nice to have :)
kungfuftr my work colleauge is suddenly converting to the Perl6 way of thinking... and he's loving it! 14:26
Enveigler htmlmatrix? 14:27
PerlJam kungfuftr: Are you using pugs at work? :-)
gaal|work kungfuftr++ # advocacy
Enveigler, Test::TAP::HTMLMatrix is the module used to paint things like feather.perl6.nl/~gaal/smoke_xp.html 14:28
kungfuftr nope, just forcing him to read P6L and the synopses
=0) 14:29
Corion Hmmm. I get *** Pattern match failure in do expression at src/Pugs/Prim.hs:92:4-14, but don't see what could be causing that 14:30
Ah. Except maybe that there is no (VObject o) to be had. Oh well, somebody will fix that hopefully :)
Enveigler Gaal: I was kicked. Where will I find the HTMLMatrix? 14:31
PerlJam I'll be really shocked if perl6 ever starts to have converts from python
gaal|work got cpan?
Limbic_Region really kungfuftr - that's good news
Enveigler yes
Limbic_Region to be honest I abhored the p6 changes while I was reading p6.l
it isn't until I started using it that I saw the light
gaal|work perl -MCPAN -e install\ Test::TAP::HTMLMatrix 14:32
it has a few dependencies.
Limbic_Region blessed is he who has seen and believed, more blessed is he that has not seen and still believes
Enveigler Okay. Presumably the rest becomes obvious from there?
theorbtwo make smoke 14:33
gaal|work once you have that installed, you just 'make smoke'
Enveigler Okay. Thanks. 14:34
ninereasons PerlJam, shapr might count as a convert from python 14:40
PerlJam ninereasons: nah, shapr was already sane. He has never been a "python person". He's a "use what works" person. 14:41
pasteling "Enveigler" at 195.92.67.67 pasted "HTMLMatrix install failure." (62 lines, 3.2K) at sial.org/pbot/10653 14:47
Enveigler Gaal: Any clues? 14:48
gaal|roo can you try upgrading Test::More?
oh, i'm not sure actually that that's the problem
did Test::TAP::Model install correctly? 14:49
(it's a separate distro; should have been pulled in as a dep by CPAN.pm) 14:50
pasteling "Enveigler" at 195.92.67.67 pasted "Test::TAP::Model install results." (45 lines, 2K) at sial.org/pbot/10654 14:52
Enveigler Gaal: Seems not. (It had scrolled off the top of the screen.) 14:53
gaal_ sorry, having IRC troubles
nothingmuch Enveigler: you can try to install Module::Build
and use 'perl Build.PL; ./Build test'
Enveigler Will do. brb 14:54
nothingmuch i have a general hw question: someone asked me about a board for 2 cpus, and I quote "eight 184-pin .... DIMM sockets, each CPU controls 4" 14:57
anybody know what that means?
different MMUs?
this is a 64 bit board, btw
amd opetron 14:58
Arathorn nothingmuch: as i understand it it's basically NUMA 15:00
nothingmuch define: NUMA
Arathorn asking me or a bot? ;)
non uniform memory architecture, iirc
the SGI-pioneered multiprocessor technology 15:01
castaway National Unterwater Marine Agency
:)
nothingmuch class Arathon does Google::Glossary { }
Arathorn hehe
where each processor keeps a local cache of RAM, which is then kept coherent by a (single) funky MMU with banks of physical memory
castaway (Dirk Pitt)++
Arathorn which in the past would have allowed a SGI Origin 2000 with 16 R10000 processors, for instance, each with 4MB of ~L3 NUMA cache, to talk to a bunch of discrete memory bricks, each with their own MMU? 15:03
gah, my SGI lore is rusty
but I believe the AMD Hypertransport thing that duallie Opterons use is of the same ilk.
x86-64.org is the canonical site, iirc.
nothingmuch does that mean that overall (memory/CPUS) is the maximum limit for VSIZE?
Arathorn shouldn't be
pasteling "Enveigler" at 195.92.67.67 pasted "Build test for Test-TAP-Model-0.03" (22 lines, 1.1K) at sial.org/pbot/10655
Enveigler Does that help? 15:04
gaal_ yes, upgrade Test::More
Arathorn but dunno for certain - our opterons are duallie capable but only have one proc
gaal_ or wait a few hours for your cpan mirror to get nothingmuch++ 's newer vesion of the module, which explicityl requires it 15:05
Enveigler I'll upgrade
nothingmuch Enveigler: sorry for that ;-)
Enveigler No sweat. 15:07
gaal_ someone with a wiki near them should write this all up :) pugs.kwiki.org
nothingmuch plays on blead perl 15:08
i needed it once
and i keep being too lazy to downgrade to 5.8
what's worse, it's an old bleadperl
gaal_ congealedperl?
castaway laughs 15:09
nothingmuch nothingmuch.vocabulary += gaal_.vocabulary
(don't worry, i found out what it means) 15:10
gaal_ ōæ½xF4ōæ½xF8ōæ½xECōæ½xF7ōæ½xE5ōæ½xF9
only with another ōæ½xF8
i built a perl recently. 15:11
last time i did it with any attention was on a sparc4
so i was immensely pleased that it now takes under four minutes :)
Arathorn last time I built a perl was on a SS2 (netbsd 1.4) :) 15:12
i seem to remember that it took about 4 hours..
Limbic_Region recently built perl and knows that it took far longer than 4 minutes 15:13
gaal_ well, Arathorn, it took me more than four hours to download the dev kit necessary for those four minutes ;-)
Arathorn hehe
gaal_ l~r, i was using a pretty fast box. and microsoft's compiler, which is fast.
Limbic_Region gaal_ - I have only built perl under Cygwin and mingw 15:16
Limbic_Region hasn't tried gcc 4.0 but he hopes it is faster than the previous versions :-( 15:17
castaway (hmm, I dont remember it taking that long last I did it, and mines a PII/350) 15:18
Enveigler Smoke running. 15:20
nothingmuch my builds of perl on moderate hw 15:28
when was a heavy CPAN toker
were about 10 minutes, i thinj
nothingmuch wrote an industrial strengh bong in bourne shell
blead + stable perl
threaded, non threaded
5.6, and 5.005_03
all smoked latest CPAN once an hour 15:29
CPANPLUS was not reliable enough though
false positive rate was about 2-3 per dayh
clkao: ping 15:32
Limbic_Region hmmm - perhaps I lumped configure make and make test all into the same time bucket - *shrug* 15:34
Enveigler Gaal: Is a high failure rate expected? 15:41
gaal_ are you perhaps on windows? the failing tests in t/rules/ ? 15:42
or any other platrform w/o parrot
pasteling "tag" at 208.152.32.185 pasted "dude." (53 lines, 1.3K) at sial.org/pbot/10658 15:43
"Enveigler" at 195.92.67.67 pasted "Smoke results so far" (90 lines, 4.2K) at sial.org/pbot/10660 15:44
Enveigler Yes to Windows. I have parrot, but I think I didn't set the right env vars before building it it. I'll fix that next time 15:45
gaal_ Enveigler, these mostly look like crashes. without interrupting your running smoke, you can start looking at where the crash happens in a new command window:
set HARNESS_PERL=pugs.exe 15:46
set PERL6LIB=blib6/lib
prove -vl ext\Perl-MetaModel\t\12_Perl_Meta_Class_methods.t
Enveigler I don;t have "prove"... gotta link? 15:47
gaal_ oh, in this case you also want ext\Perl-MEtaModel\lib in your PERL6LIB
you should have it if you installed Test::Harness....
Enveigler Oh. Okay.
gaal_ but note that these are all ext\ , not pugs itself 15:48
by now i bet your smoke has entered t\
where you'll see fewer failtures
Enveigler Nope. It seems to be stuck on ext\Set\t\overload.t
gaal_ hmm, someone mentioned that may be looping 15:49
if you want to punt on a complete smoke, you can do a manual run of t/ only.
1. set the env manually as above
2. util/yaml_harness.pl --exclude=/^ext/ 15:51
3. util/testgraph.pl > smoke_no_ext.html
look at what util/run-smoke.pl does, it's basically these three steps 15:52
you may want to start looking actually at the ''make smoke' target.
brb
Enveigler overload.t was looping I had to kill pugs.exe 15:54
gaal_ add a skip and commit it? 15:56
i have to go now
back in ~1.5h
see ya &
Enveigler okay. 15:57
gaal_ before the skip put in a 'fail("loops")'
]Anjo[ Hi everyone. 16:20
theorbtwo Hi, ]Anjo[. 16:21
theorbtwo wonders if svnbot is missing.
s/missing/wedged/
]Anjo[ How can I compare to dates to see what is earlier?
My actual date is in the format DD/MM/YYYY HH:MM:SS.
theorbtwo ]Anjo[: Are you using pugs? 16:22
]Anjo[ theorbtwo: Sorry, but what is a pug? 16:23
theorbtwo ]Anjo[: I take that as a no. You want #perl, not #perl6.
]Anjo[ It's pretty hard to find help there. 16:24
:\
I'm using the version 5.8.6 of ActivePerl.
integral hhmm, doesn't look like you've been in #perl :-/
theorbtwo ]Anjo[: Then try perlmonks.org. 16:25
wolverian hmm, uc() doesn't take $_ by default? 16:50
oh, .uc :)
I can't type Ā» on feather. the cursor jumps backwards one word instead. 16:51
theorbtwo wolverian: Type it where? 16:53
If you mean in something that uses readline (including bash and pugs), in .inputrc, "set convert-meta off". 16:54
wolverian ah. thanks!
theorbtwo Add it to docs/quickref/unicode? 16:55
wolverian weird, though. it works fine locally with convert-meta on
theorbtwo Hm, that is odd.
Never worked for me with convert-meta on.
wolverian okay, works now. thanks! 16:56
hmm.
except now ^W deletes one character too many.
I can erase the bash prompt. :)
weird. in pugs, "Ā»".ord is 187; in perl5 it's 194 16:57
integral it would appear that perl5 is wrong =) 16:59
wolverian vim agrees with you 17:00
okay, perl5 does as well, with -Mutf8
integral ah, so c2 must be Ā» in latin-1 17:01
wolverian does Ā» work in pugs?
theorbtwo Unicode and latin-1 agree in the first 255 codepoints.
wolverian unexpected "\187" 17:02
integral hmm!
theorbtwo What you are seeing is the first byte of the utf8 encoding.
...I suspect.
integral ah, yeah, perl5, which quietly ignores LANG=en_GB.utf-8
wolverian integral: -Mlocale? :)
clkao no?
theorbtwo -Mopen=some stuff 17:03
integral bah, work out the box dammit.
theorbtwo It did for a while, then people started getting confused when their binary files were suddenly not like they expected them to be. 17:04
wolverian yes. legacy support :( 17:05
integral obviously more people should use windows =)
wolverian okay. so postfix Ā» does not work 17:06
theorbtwo The correct answer is that if you want binary, you should have used binmode, silly.
wolverian should look at the tests before trying
gaal er, no. 17:12
Prelude's open has ":layer<:raw>" 17:13
rehi.
clkao ?eval { ((uc($^a) ~ " ") x (70/(1+$^a.chars))) ~ "COME TO ME"}.('autrijus') 17:23
evalbot6 Error: unexpected ( expecting expression
gaal clkao, you should submit a SummoningPrelude. :-) 17:24
clkao ?eval my $x = { ((uc($^a) ~ " ") x (70/(1+$^a.chars))) ~ "COME TO ME"}; say $x.("autrijus")
evalbot6 Error: unexpected ( expecting expression
clkao ya.. :)
SamB that is an odd thing to say... 17:25
gaal except that you need to hack it so that it does get loaded in unsafe mode, unlike the standard prelude.
clkao ?eval my $x = { ((uc($^a)~" ")x(70/(1+$^a.chars)))~"COME TO ME"};$x.("autrijus")
evalbot6 Error: unexpected ( expecting expression
geoffb While I wait for pugs to build on this ancient machine, a question: 17:31
I can't seem to get hs-plugins to compile on my Debian Sarge box. Not being lambdafolk, I don't really know what's wrong, except that it seems to be looking for a Haskell package I don't have. 17:32
Checking for exact error message:
gaal there were a few broken versions, geoffb, though i can't say which ones are known good.
geoffb make[2]: Entering directory `/home/geoff/darcs/hs-plugins/src/plugins' 17:33
Rebuilding dependencies ... Could not find module `Language.Haskell.Hsx':
Hmmm. I first tried the latest tarball, and that exploded fairly early in the build with a syntax error,
so then I pulled the darcs version, and it gets farther but dies with the above error.
gaal, did you get it working on your system? 17:36
lumi geoffb: Did you read the readme? 17:37
gaal no: i used to, with a very old version, but then when the required ver changed, it stopped working and i didn't have tuits to see why.
geoffb lumi, for hs-plugins? Yes.
lumi So you have HSX installed? 17:38
And registered, I think it needs to be
geoffb smacks his forehead
Man, I looked right AT IT AND MISSED THAT LINE
sigh
I think I went "GHC > 6.2, check. GNU make, check. *eyes cross* *eyes uncross* Readline, check . . . ." 17:39
lumi Hehe 17:40
ninereasons ?eval my $x = -> $a { ((uc($a) ~ " ") x (70/(1+$a.chars))) ~ "TEST"}; say $x.("autrijus") 17:41
evalbot6 Error: No compatible subroutine found: "&say"
geoffb You know, the nice thing about pugs is that its serving as an excuse to learn a lot of things unrelated to Perl . . . :-) 17:42
ninereasons ?eval my $x = -> $a { return ((uc($a) ~ " ") x (70/(1+$a.chars))) ~ "TEST"}; $x.("autrijus")
evalbot6 Error: cannot return() outside a subroutine
ninereasons ?eval my &x = -> $a { ((uc($a) ~ " ") x (70/(1+$a.chars))) ~ "TEST"}; &x.("autrijus") 17:43
evalbot6 'AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS TEST'
ninereasons ?eval my &x = -> $a { ((uc($a) ~ " ") x (70/(1+$a.chars))) ~ "TEST"}; &x("autrijus")
evalbot6 'AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS AUTRIJUS TEST'
ninereasons ?eval my &x = { ((uc($^a) ~ " ") x (70/(1+$^a.chars))) ~ "TEST"}; say &x("autrijus") 17:44
evalbot6 Error: unexpected ( expecting expression
revdiablo it would be neat if we could define functions, and evalbot saved them for the next invocation
ninereasons yes, the closest thing is to teach perlbot to invoke something learned
perlbot metacommit? 17:45
perlbot ?eval my &summon = sub { return "#Summoning metacommitters:\n any("~uc( @^metacommitters )~ ").come_to_me";}; summon <autrijus bestian hcchien iblech jesse nothingmuch Stevan theorbtwo>
evalbot6 Error: unexpected "\"" expecting block construct, term, ":", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or "}"
ninereasons mislearned :-)
Khisanth heh 17:48
ninereasons perlbot metacommit?
perlbot ?eval my &summon = sub { return "#Summoning metacommitters: any(" ~ uc( @^metacommitters ) ~ ").come_to_me";) summon <autrijus bestian hcchien iblech jesse nothingmuch Stevan theorbtwo>
evalbot6 Error: unexpected "\"" expecting block construct, term, ":", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or "}"
ninereasons :-(
Khisanth what is @^metacomitters? mainly the ^ 17:49
geoffb It would be nice if it reported which quote it thought was bad . . .
PerlJam Khisanth: $^foo is an implicit parameter.
Khisanth: @^foo too 17:50
ninereasons It doesn't seem to like implicit parameters
Khisanth PerlJam: I know but didn't know how to apply that to arrays, nothing obvious popped up
ninereasons I think it would work in pugs. a sec
Khisanth ninereasons: aren't you missing the } for the sub {? 17:51
ninereasons perlbot metacommit?
perlbot ?eval my &summon = sub { return "#Summoning metacommitters: any(" ~ uc( @^metacommitters ) ~ ").come_to_me";} summon <autrijus bestian hcchien iblech jesse nothingmuch Stevan theorbtwo>
evalbot6 Error: unexpected "\"" expecting block construct, term, ":", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or "}"
Khisanth ; after the }? 17:53
geoffb WOW, no wonder pugs is taking forever to compile -- ghc-6.4 wants more RAM than I have in this box. 17:58
Lets try that unoptimized *cough* *cough*
Khisanth heh building pugs here pushes everything into swap 17:59
that reminds me ...
gaal anyone know if we have flight plans for tonight? 18:09
geoffb make test + ancient hardware = Jeopardy! theme 18:28
Khisanth how ancient?
seems to be mainly a memory issue 18:29
integral reckons on 8 hours on a 600MHz 64MB box
geoffb Dual PII - 400 18:30
integral, *cough* 18:31
Ouch
integral it's the memory that's the killer, it only took about 200 minutes on a 500MHz 1024MB box
geoffb Khisanth, the original build was heavily mem-bound (hell, ld wanted 129 MB, and I haven't even enabled Parrot embedding) 18:32
during the pure testing, it doesn't seem to be thrashing.
a couple swapped pages per minute 18:33
Khisanth doesn't do testing
integral the trick is to just commit anyway and let someone else spot that there's a bug ;-)
geoffb chuckles 18:34
One wonders how often autrijus does a full make test, rather than just for the todo he's working on. I'm having a hard time extrapolating this make test time even to bleading edge hardware and still supporting his commit rate 18:35
gaal it actually was much faster two weeks ago
geoffb gaal, what changed? 18:36
gaal one one machine i almost got to a two minute smoke
lots and lots and lots of tests were added
and rules support
(two minutes sans build)
we have over 7k tests now(!); it was around 4k when it was fast. 18:37
Khisanth "if make test finishes in 2 minutes then we need more tests!" :)
geoffb I'd be happy with 20 minutes . . . . 18:38
gaal make test never finished in 2 minutes :) make smoke is potentially faster (supports concurrency)
Khisanth ~33minutes to build :) 18:39
gaal fwiw, the fast smoke was ~135 sec on a dual xeon 2.8GHz w/1GB RAM
Khisanth on 750MHz with 256MB
gaal and when i tried putting it on a ramdisk there was no noticable speedup, it's all cpu bound. 18:40
Khisanth hrm
readline seems to have broke
gaal so's the pugs build, certainly if you make optimized.
a parallel ghc build would be nice to have. 18:41
Khisanth ok apparently it doesn't like having stuff pasted
geoffb gaal, yeah, it's only taking a few % of the system RAM (~14 of 192 MB), but one CPU is pegged
(for make test) 18:42
gaal you have more than one? then use the yaml harness and use -j 2
or 3
Aankhen`` Are you supposed to use -j 2 for Intel HT CPUs?
geoffb yaml harness? 18:43
gaal it helps on my box, aanken. not a lot, but some.
geoffb (YAML, I grok)
gaal geoffb, 'make smoke' instead of 'make test'
Khisanth interactive pugs not working very well with mutiple lines of input...
geoffb OK, will try
gaal what platfomr are you on, before you do? 18:44
works well on unix, less so on win
though it does workforme
geoffb $ uname -a 18:45
Linux zuma 2.4.27-2-686-smp #1 SMP Thu Jan 20 11:02:39 JST 2005 i686 GNU/Linux
How to make X unresponsive, in 1 easy step
phew
right, seem to need Test::TAP::stuff
gaal k, then please backlog earlier today re: instructions on installing Test::TAP::HTMLMatrix
geoffb heh
gaal :)
also please put it on pugs.kwiki.org 18:46
Aankhen`` Do continuations work in Pugs? Are there any working examples? 18:47
gaal there was some talk about that too, earlier today 18:48
integral luqui and I identified a bug with them
Aankhen`` Oh yeah, I was there. :-o
Aankhen`` slaps himself.
That's what lead me to reading up on them in the first place...
Now I remember why I had that tab open in Firefox. :-P
gaal circular curiosity 18:49
Aankhen`` integral >> Anything I could understand?
integral Just that &?CURRENT_CONTINUATION seemed to return a value that always invoked the current continuation at the time of being invoked, rather than saving the continuation
Aankhen`` Apparently not. :-(
gaal oh man! Set/overload.t is still looping! :( 18:50
there goes that smoke.
r4274 - skipped loopy test 18:59
Enveigler Sorry Gaal I don;t have commit. 19:04
gaal no worries :) we should get you one. 19:05
gaal looks for a metacommitter 19:06
Enveigler I've gotta pretty graph from the smoke if you want it?
gaal sure, post the url here
Enveigler I don't have anywhere to post it. I could email it? 19:07
gaal sure, but please gzip first :)
Enveigler will do...addy? 19:08
gaal ./pugs -e 'print <gaal>; print <@>; print <forum2.org>'
Enveigler I send it along later... Got go for a while. 19:10
gaal Thanks. 19:11
beh, tireditude caught up. see y'all tomorrow. 19:14
geoffb cya
gaal zzzZZ &
Limbic_Region autrijus must be busy - no journal since the 30th 19:40
q[merlyn] fglock is doing a perl6 talk at YAPC Brazil 20:23
I'm sitting in here. If I knew how to stream this, I would. :)
qual o promebla que Perl 6 Resolve? :) 20:24
Odin-LAP skilur ekki portĆŗgƶlsku.
(Meaning: I don't understand portuguese. Or, for that matter, spanish.) 20:25
ero anyone know approx build times on a g4? i'm on a dual 500, 1G. maybe i should go get some lunch... 20:31
q[merlyn] ugh 20:33
ero and then dinner
q[merlyn] so 6 != ( 4 & 5 ) is true?
not the same as not ( 6 == 4 & 5 ) 20:34
(which would be false)
Man... I gotta work to get my head around this 20:36
eric256 why aren't they the same? 20:38
i get the answer you expect for all 20:39
!eval 6 != (4 & 5)
@eval 1
where is eval bot when you need him
pugs> 6 != ( 4 & 5 )
(bool::true)
pugs> not (6 == ( 4 & 5 ))
bool::true
Shillo Hullo, all! 20:40
wolverian ?eval 6 != ( 4 & 5 )
evalbot6 (bool::true)
wolverian (for eric256)
eric256 ?eval not ( 6 == 4 & 5)
evalbot6 bool::true
eric256 waits for merlyn to return 20:41
Shillo eyes evalbot6.
Is that thing secure? :)
eric256 yes
Shillo Cool! :) BSD jail or expression policing? 20:42
integral pugs' safe mode :-)
Shillo oooooooooohs!
Juerd Shillo: That depends on your definition of security. 20:43
I wonder, for example, whether its limited on memory use :)
Shillo *grin*
Juerd ("foo" xx 9e10)
Shillo Or **1..Inf
integral it's got resource limits too :-) 20:44
Juerd Pugs doesn't do that yet, Shillo
integral: Good
Shillo Juerd: Theoretically speaking. :)
Juerd So I can just do this? Fun!
integral see examples/network/evalbot/
Shillo edges away from Juerd...
Juerd ?eval ("foo" xx 9e10); undef; 20:45
evalbot6 undef
Juerd Hm :)
?eval ("foo" xx 9e10);
evalbot6 pugs: out of memory (requested 1048576 bytes)
Juerd Nice.
Shillo claps! 20:46
Juerd Now, why did the former just return undef? :)
I thought pugs had no optimizations yet? :)
integral 'tis probably the evil of Haskell ;-)
Shillo ?eval 1/0 20:47
evalbot6 Error: Illegal division by zero
Shillo ?eval 1/0; 5;
evalbot6 Error: Illegal division by zero
Shillo I think out of memory is unthown exception?
Unthrown 20:48
integral ah, _that_'d be smart
Shillo I think it'd be wrong thing to do, but I wondered if it explains it. :) 20:49
eric256 considers starting a Perl6::Util box of trix for arrays...so you could do things like @list.shuffle; or @list.combinations, @list.powerset .. ;) 20:53
Shillo I still wonder what a powerset is. :p 20:58
eric256 every possilbe combination of the items in a set for everything length of up to the lenght of the original set? something like that. its what i think of when i here combinations..but someone told me (and i'm not sure i buy it) that a set of combinations is normaly all combinations of a certain length. blah. ;) 20:59
japhy that
that's the powerset
eric256 either way most common questions about arrays are, how do i shuffle it, how do i get combinations, how do i get permutations...so it would be cool if they were included..but then we might be leaning the way of PHP which is just bad. ;) 21:00
Shillo Why? STL has that stuff, and that's C++. :) 21:01
(most of it, at least)
eric256 yea STL always scared me too. but then i always have fun writing that stuff. ;)
Shillo eric256: I kinda got used to it, actually. Well, did lots of stuff in C++, so I had to. 21:02
eric256 i wrote my own hash class in C++ (for a script language i wrote) and then like five days later found out about STL lol.
Shillo eric256: *grin* Have you figured what type traits structs are for?
eric256: /That's/ the cool bit. 21:03
eric256 i wrote a hash, which required a linked list, (hand coded both - simple enough) then realized i had this nice hash table in the background to handle the script, why not let the script use it, then my scripts had hashes...then i found perl (first language i've ever seen with hashes built in.) and loved it. it was exactly what i was trying to make why my little language ;) 21:04
no traits still have me confused
Shillo Basically, if you have vector<string> a, b; ....; a = b; it'll call string operator= for each element of b. 21:05
eric256 not so much confused as i'm just used to perl as is, so all these bells and whistles throw me off some.
Shillo But if a and b are vector<int>, STL will actually call memcpy in most implementations.
eric256 we talking C or perl now? i got lost
Shillo STL, in C++ 21:06
STL is smart enough to know when it should do for (i = 0; i < ...; i++) a[i] = b[i] and when it can just do memcpy(something)
eric256 ahh yes. the macro/overloading type handling it does is pretty cool, this was years ago i played with it though, never touched C++ agian...no use for it in my job and its such an ugly (in a beatifull kind of way) language. lol 21:07
Shillo And it doesn't rely on compiler's optimizer to do this.
Yeah. :)
Ugly and evil, but can be fun.
I actually tried to work with Monads in C++.
Had fun watching gcc blow up to 500 megs just compiling a small example.
eric256 yea when i finished my script language and had like 15 files and like 5k of code it was cool. then i looked at it a few years later and was like "i could do that in half the code" ;) 21:08
geoffb Shillo: yes, evil is what came to mind when I read what you said STL optimizes internally. EWWWw.
Shillo geoffb: They trick is -how- it does it.
geoffb Summary?
eric256 c++ was light years ahead of perl in classes until just recently though so this will be fun
Shillo You can use the same mechanism to define string class that has case-insensitive comparisons.
You override stuff on char, not string. 21:09
Oh, you do template<T> struct type_traits { stuff; }
Then you specialise: template<> struct type_traits<int> { stuff optimised for ints }
geoffb So it's got specialized versions for some large percentage of "common cases"? 21:10
Shillo Templates are actually programmable. You can do some *VERY* nasty tricks to actually introspect the types.
In particular, you can query a class for the existence of a constructor and specialise on that.
geoffb See, for a compiled language, that's just deeply wrong. 21:11
Shillo geoffb: Well... depends.
geoffb tosses another entry on the "Why C++ gives me the heebie-jeebies" list
Shillo geoffb: I've seen implementation of ML (pure-functional language that looks a lot like Haskell, except that it's eager) in templates, to be used compile-time 21:12
geoffb actually physically shivers.
Shillo And yes, you're right to be scared. :)
geoffb In my mind, if you want C, use it. If you want Haskell, use that. Don't try to make C(++) into Haskell 21:13
Shillo Frankly, C++ is nice for its libraries. And the compile times pretty much negate the advantage.
geoffb: C++ templates -are- pretty close to Haskell.
So C++ is runtime-assembler and compile-time Haskell. 21:14
-That-'s what's scary.
geoffb I recall some time ago thinking "If C had a decent default set of data structure and algorithm libraries standardizes, I wonder if C++ would have happened?"
Shillo, yikes.
Shillo geoffb: Look at D.
My guess is no.
You find that out 5 seconds after typing make on a mid-sized program in D. 21:15
Actually, <1 second after typing make. Usually. ;)
Aankhen`` G'night. 21:16
geoffb And in my raw C work, I was damn glad when some open source data structure libs came around. glib, ferinstance. With that I could have more convincingly told my Compilers prof to take a flying leap when he insisted on teaching the class in Common Lisp "because C doesn't have decent list libs"
geoffb googles D
Shillo *grin* Hey, no dissing my favorite language. ;)
Good luck googling 'D'. ;)
Corion . o O (By nature, C can't have decent lists)
Shillo Corion: Well, the reason is still lame. There are plenty other reasons to teach in Common LISP. 21:17
eric256 is amused to see that his code is still the only scripting language released on planetsourcecode after three years... lol.okay so i'm a dork but at least i know it
Corion Are we moving towards a release? 21:18
geoffb www.digitalmars.com/d/comparison.html 21:19
Shillo eric256: Well, one thing that attracted me to perl6 is that it's the first non-Common LISP language to try an actual feature parity with Common LISP.
geoffb Velly intellesting
Shillo geoffb: Pity it's a one (small) company project.
Corion Shillo: I think that most of Common Lisp is in Perl5 already
geoffb I googled for "D Programming Language" . . . hit the lucky
Shillo Corion: 'Most' of Common LISP are defmacro and CLOS. Neiter is in perl5. 21:20
Corion Shillo: Ah, macros, true :)
Shillo Corion: But perl6 macros are getting there. And perl6 object system is actually surprisingly similar to CLOS. :)
Corion CLOS would need to be implemented in Perl (yet nobody wants that ;) )
Shillo Well, I've seen CLOS implemented in Emacs LISP. That was scary. 21:21
Corion Yeah - I wonder what people will do with multimethod dispatch :)
Shillo Heh, there's plenty of theory on how it should be done. 21:22
Or rather, a number of caching algorithms that seem to work well. And also a large body of LISP code for statistics 21:23
(I believe they measured that about 99% of CLOS method calls are single dispatch, and can be handled that way)
And of that, a large portion doesn't need any dispatch at all.
geoffb I read something recently in which the author (Paul Graham?) wondered whether people who disliked LISP could actually be stuck on the visual representation, but he thought it unlikely. Well, I happen to be one of those people. I actually think some of the *concepts* are good -- I just am very visual about my code, and the look just kills me. 21:24
Corion geoffb: Look at Python then. I also hear that Haskell is considered nice.
geoffb I swore off lispish languages after being force-fed them in college. Sure makes learning Emacs a pain . . .
Shillo geoffb: I believe somebody came up with a theory that more adequately explains LISP lack of popularity. It's used for teaching... :) 21:25
Corion geoffb: Or write yourself a small read-eval loop and come up with your own syntax. Like every good Lisp programmer ;)
geoffb Corion, I am deeply into controlling my whitespace. I would have serious words when the interpreter didn't like my reindentation. :-)
Shillo Corion: Eh. I start the day with (defmacro defclass (...) my extensions to CLOS)
Corion Shillo: Any language used for teaching traumatizes the teached :)
Shillo Corion: Exactly! 21:26
geoffb Shillo, heh. Sorta like Catholic school is the biggest producer of Atheists?
Shillo geoffb: Or even catholic religious classes.
geoffb: Count me among de-converted. ;)
Corion I do the same when programming in JavaScript. Object.method = function(name,code) { ... } // :))
geoffb chuckles
eric256 maybe thats why my teacher used pascal...no one ever misses not having pascal in the real world 21:27
geoffb eric256, NODNODNOD
Shillo eric256: *grin* I graduated on Pascal and FORTRAN. :)
Corion Ah - I mostly started programming in Pascal and it's a good language. But it's a compiled language :)
geoffb I was looking into trying to get a teaching cert to teach comp sci to high schoolers . . . but then I realized it would be about two decades before the school boards allowed you to teach a nice language. Sigh. 21:28
Shillo Corion: Buh, so's LISP. :)
Corion Shillo: Yeah, but Lisp has (EVAL ...), which Pascal lacks ;)
Shillo Corion: It's just that my favorite Common LISP turns REPL straight into machine code... /That/ blew me away.
Corion: I like abusing my non-LISPer friends with (defun f (x) (1+ x)) (disassemble #'f) 21:29
geoffb Shillo, *chuckle* Nice. 21:30
Shillo First line of the result: ; 0901832E: 8B55F4 MOV EDX, [EBP-12] ; no-arg-parsing entry point
:)
(that's in SBCL)
Corion SBCL ? (the CL part is clear ;) )
Shillo Steel Bank Common LISP 21:31
Corion Never heard of that
Shillo CMUCL compiler fixed to be actually maintainable. 21:32
geoffb Why does the make for pugs insist on recompiling Pugs.Help all the time? 21:35
PerlJam geoffb: probably because that's where the version number is.
geoffb Ah! 21:36
eric256 i keep checking the journal in vein. lol. a whole day without a post! lol
Shillo eric256: <AOL> Me too, me too!!! </AOL> 21:37
geoffb eric256, I may go into withdrawal. I'm starting to feel the shakes come on
Time to start trying to port some real p5 code to pugs 21:44
autrijus greetings. 21:50
<- slept some 20 hours in the past 24
geoffb and to you
good for you!
clearly needed
autrijus indeed
mugwump hi autrijus
autrijus hi folks. sorry for the delayed release. we'll enter preflight in ~1hr
mugwump: 21:57
lib/Set.pm is found in both MetaModel and Set
one has to go 21:58
pick one to delete
(or to rename)
q[merlyn] is MetaModel deliberately *not* like Smalltalk?
mugwump oh, sorry :}
q[merlyn] it seems like it's making the same mistakes that Smalltalk-72 fixed in Smalltalk 76
autrijus q[merlyn]: what is that mistake? 21:59
q[merlyn] you don't have an infinite recursion, if you think about it right
so you don't have object, metaobject, metametaobject
when I saw that, I started to cringe 22:00
autrijus mugwump: I'm not sure the toplevel namespaces you have in MetaModel/lib/*.pm is a good idea
q[merlyn] that's what they fixed from 72 to 76
autrijus q[merlyn]: oh. but I thought there's finite abstraction level -- namely 3
and the metameta thing merely means "implementation level"
q[merlyn] Even so. that's too many
it should be reflexive.
Should I find a reference on how st80 does it? 22:01
or are you already familiar with that?
autrijus it is reflexive iirc, but indirectly so. no, I'm not familiar with all of this -- stevan and mugwump are the people working on metamodeling
s/all of this/any of this/
q[merlyn] OK... well, mark me as "concerned" that the mistakes of st72 are being made.
autrijus duly marked. 22:02
mugwump q[merlyn]: well, hopefully there will be a point where one level can cleanly represent itself
q[merlyn] I have been too distracted to create a detailed report
autrijus (not that the metamodel docs you see is not implemented, at all, in pugs) :-)
s/not/note/
autrijus clearly can't type.
mugwump q[merlyn]: that certainly is interesting to hear, anyway. Keeping each type level distinct was more of a precaution 22:03
autrijus mugwump: so will you fix the toplevel module in metamodel space
mugwump: or should I do that?
mugwump I'll do it now
autrijus k thanks!
mugwump I'll move them all to Perl/ I think
autrijus fine by me
clkao greetings autrijus 22:04
mugwump q[merlyn]: refer also src/Pugs/Class.hs line 33 ;)
q[merlyn] good starting point - c2.com/cgi/wiki?DesignPrinciplesBehindSmalltalk
clkao see nmy new p5 array tests? i also documented what's missing in README
q[merlyn] there's nothing above "metaclass"
so when I started seeing "metametaclass", my spidey sense tingles. 22:05
mugwump q[merlyn]: oh, right. So there still is a metaclass, you can't just get away with normal classes
autrijus clkao: good.
clkao autrijus: push and store failed in weird way, i suspect it's because the initial val isn't mared as rw when it came to p5 land and kept in tied 22:06
you have time to take a look?
q[merlyn] for every "class", there's an instance of Class, and an instance of Metaclass.
but since Class and Metaclass are also classes, the definition applies as well 22:07
that doesn't lead to metametaclass unless you are smoking something. :)
Corion Current (Win32) smoke status - datenzoo.de/pugs/win2k.html - 7268 ok, 187 failed, 940 todo, 447 skipped 22:08
autrijus so I think it's the same as the model in stevan's docs
Corion (and some of that are due to my broken test tree)
q[merlyn] 4 class => Integer
Integer class => Integer class
Integer class class => Metaclass
mugwump q[merlyn]: ok, I've just been bitten before by mixing the levels (crossing the streams?)
autrijus by "metametaclass" I think it means the concrete implementation of metaclasses 22:09
not visible from the language at all
q[merlyn] well - it confuses me.
autrijus i.e. only of interest in the compiler level
mugwump However, note also that Class traits are effectively changes to the MetaModel
clkao autrijus: and eta of ref of scalar to be properly passed in mkvalref?
q[merlyn] But "metaclass" is concrete too
mugwump So you need a M3 to represent that
autrijus q[merlyn]: it's only concrete if Smalltalk is implemented in Smalltalk
otherwise you have two different levels of concreteness.
eric256 since classes and metaclass are classes what does metaclass class => ? 22:10
eric256 not trying to join the fray, just curious
mugwump classes aren't metaclasses, eric256 :)
or vice versa. they exist on different levels of the type heirarchy without a common root
eric256 "10q[merlyn]: 01but since Class and Metaclass are also classe"... that is where i was asking from. /me goes back to just listening. ;) 22:11
mugwump sure. They both .does(Class), for some notion of Class, perhaps
q[merlyn] download www.squeak.org and ask that yourself. :) 22:12
autrijus squeak++
stevan q[merlyn], autrijus, mugwump: the code in MetaModel (at least the stuff I wrote) is wrong
q[merlyn] well. it's important to keep the protocol for class separate for the protocol for an instance 22:13
autrijus good that I never looked at the code :D
q[merlyn] an instance can't .new
a class can .new
mugwump a metaclass can .create
stevan q[merlyn]: I have a perl5 version I have been working on, pugs was getting to slow for all the stuff it was doing
mugwump or something :)
q[merlyn] so the "class" that implements .new must be the metaclass
but that's as far as it needs to go
there is no need for a metametaclass 22:14
stevan autrijus: some of that code is good, at least the stuff which makes up the peices of the metamodel
q[merlyn] the metaclass can't .new
mugwump q[merlyn]: in a way, I've already explored this space with T2.. 22:15
q[merlyn] "t2"?
mugwump T2.pm is a metamodel on CPAN for Perl 5 that is capable of expressing itself
q[merlyn] because the metaclass has a sole instance
mugwump but I needed to bootstrap it via Class::Tangram
stevan the metaclass is the cycle in the model
it is an instance of itself
q[merlyn] No it'snot
it's an instance of class
stevan ?
q[merlyn] that's where the breakdown was in st72
they fixed that in st76 22:16
stevan odd, not according to my Smalltalk80 book
q[merlyn] and thus in st80
there are no things that are an instance of themselves
go read your st80 book again
or maybe you have the bad book. :)
stevan its the Goldberg/Robson book 22:17
q[merlyn] You read it wrong then.
it never says that anywhere.
Class is an instance of Class class 22:18
Metaclass is an instance of Metaclass class
stevan yes
sorry thats what I mean
q[merlyn] Metaclass class is an instance of Class
Class class is an instance of Class
autrijus I suggest we drop the "metametaclass" nomenclature and call it "encoding of metaclass in the host language" or something :)
q[merlyn] aut++
that'll work for me
stevan autrijus: I have done that in the perl 5 model
Meta::CLass is the root
I also have a Instance protocol object 22:19
and I am working on a class protocol objet
I broke out the method dispatcher too, but thats a different thing
mrborisguy what's the story on people like me submitting tests? should i run by somebody what i'm going to submit before i do, or just do it? 22:20
autrijus mrborisguy: if you feel like discussing it, sure
mrborisguy: but otherwise jfdi
it's all up to you :)
stevan mrborisguy: wiki-style development, if its wrong, someone will fix it eventually :)
mrborisguy haha, alright 22:21
stevan q[merlyn]: are you going to be at YAPC::NA?
autrijus finds "wiki-style" much easier to sell than "anarchistic"
q[merlyn] stevan - it's in the wrong country
US Felons cannot travel to Canaada
stevan scares less people off too
ahhh
ok
autrijus aw. poor merlyn
mrborisguy you're really a felon?
stevan well I would be very interested in talking about the metamodel more if you have time
q[merlyn] instead, I'm moving to Brazil
purl, tell mrborisguy about fors 22:22
geoffb My eyes are beginning to cross -- I'm trying to do 'use SDL::App--perl5;', which blows up because it can't find auto/SDL/App.al in @INC . . . I'd like to try to figure out how it is supposed to work, but I'm really not sure where to start. Hints?
q[merlyn] oh, no purl here. :)
mrborisguy - www.lightlink.com/fors/
stevan q[merlyn]: its a fairly new topic for me, and so I am open to any thoughts others have 22:23
q[merlyn] Yeah - lemme reread what I saw. I just got stuck at metameta
stevan q[merlyn]: stick with the stuff in docs/, the stuff in lib/Perl/Meta/ is crap :)
q[merlyn] there should be a class where I can add a method, and suddenly all instances can do it. there should be another class where I can add a method, and suddenly all classes can do it
that's the top of the hierarchy
TWO classes. not one.
stevan hmmm 22:24
autrijus geoffb: hm. but DBI etc works?
Corion autrijus: I got *** Pattern match failure in do expression at src/Pugs/Prim.hs:92:4-14 from ext\fp\t\functions.t - is that a "normal" Pugs error? It didn't seem catchable 22:25
geoffb autrijus, actually, had not tried DBI yet. Was jumping directly into my own fun stuff (OpenGL)
Hmmm, now need to throw a DB somewhere so I can test DBI, I guess
Limbic_Region geoffb - DBD::SQLite 22:26
no "real" DB required
stevan q[merlyn]: I would be very interested on your comments on the docs/ feel free to either add them right to the files themselves or email p6-compiler or even me directly
autrijus Corion: it's not catchable and I've fixed it
stevan however, right now I have to go pick up a pizza :)
Corion autrijus++ # fixing stuff before I wonder about it! 22:27
geoffb Limbic_Region, OK, thanks. Lessee if Sarge has that prepackaged . . . I'm growing a bit weary of source builds on this old clunker box.
q[merlyn] 4 isa Int. Int isa "Int class". "Int class" isa Metaclass. Metaclass isa "Metaclass class".
but where it folds back is that "Metaclass class" isa Metaclass.
Corion Goodnight everybody :)
Limbic_Region knows nothing about Sarge 22:28
geoffb Debian testing AKA "RSN FOREVER!"
Juerd rsn++
q[merlyn] Int inherits from [...] from Object. "Int class" inherits from [...] Class. 22:29
Darn. I'm looking for the picture of this.
mugwump ok, so the M3 is stop-gap until the M2 can bootstrap itself? 22:30
stevan q[merlyn]: I understand that structure, I get lost when it crosses over from meta-land (MetaClass instances) to regular-user-land (Class instances)
Juerd Is there something wrong with feather?
stevan dammit, I gotta get this pizza, I will backlog &
Juerd There are only 3 users logged in - used to be many more.
Limbic_Region wanders off to hook up "sound" 22:31
Juerd That's a sound idea.
mrborisguy i just logged on... doesn't seem to be anything wrong, Juerd
geoffb Hmmm, since the last time I looked, it appears the DBI/DBD concept has been ported to most host languages 22:32
nice when Perl concepts flow out to the unwashed masses
Limbic_Region returns dazed and confused 22:33
I have no idea where my speakers are
q[merlyn] I'm still looking for the docs
Juerd q[merlyn]: docs are mostly lacking :)
autrijus stevan: ext/Perl-MetaModel/t/10_Perl_Meta_MetaClass_test.t ext/Perl-MetaModel/t/11_Perl_Meta_Class_properties.t ext/Perl-MetaModel/t/12_Perl_Meta_Class_methods.t are failure miserably 22:34
s/failure/failing/
actualy everything else too
mugwump / stevan: can you take a look? either fix them, or we ship without Perl-MetaModel or skip all those tests 22:35
(in order of preference)
Juerd Hi autrijus
autrijus it's the only module that fails
hey Juerd
mugwump stevan: unless you've got objections, I'll pull out the Perl/Meta/ stuff 22:36
mrborisguy are Rules ever intended to stringify?
mugwump oh, he's afk
10:23 < stevan> q[merlyn]: stick with the stuff in docs/, the stuff in 22:37
lib/Perl/Meta/ is crap :)
Juerd mrborisguy: Probably not. They're closures, in some ways.
mugwump It can return if necessary
mugwump removes them
mrborisguy Juerd: but since they can be scalars, wouldn't one almost expect them to not produce an error in a string context? 22:38
autrijus installs p5-SDL to test for geoffb
geoffb autrijus, thanks! 22:39
At the same time I'm going the other direction and trying DBI
clkao autrijus: hey, make argr rw! 22:40
geoffb D'oh! 22:44
Reminder to self: Do NOT press CTRL-Q again 22:45
autrijus clkao: still reading readme
geoffb Well, this is encouraging: $ pugs dbi-test.p6
Available drivers: Sponge SQLite Proxy File ExampleP DBM
autrijus cool 22:46
clkao: one thing at a time 22:47
clkao: I guess I need to make pugs_Apply to return SV**
right?
clkao autrijus: right, or construct av 22:48
but that's not as important as rw
because hash will require rw and pugs_apply return sv** to work
autrijus ok. what exactly do you want from rw? where do you want rw again?
clkao run the array test.
autrijus running.
clkao STORE is not working. it's working fine in the p6sub eval-applied. 22:49
but not getting back to p6
autrijus *** No compatible subroutine found: "&my_elems"
clkao eek? clean build? 22:50
autrijus yeah
basic.t passes
investigate a bit?
clkao strange
mugwump so, what happened to make the pugs startup time so long since 6.2.5? 22:52
I heard some murmuring about a Prelude.pm 22:53
but I looked at it, and it didn't seem so bad.. maybe I didn't spot the expensive part
autrijus mugwump: it may just be that. 22:54
mugwump it's now over 12s on my 1.6GHz athlon! 22:55
autrijus mugwump: try starting it up with env PUGS_SAFEMODE=1
q[merlyn] ... www.ifi.unizh.ch/richter/Classes/oo...ltalk.html
look especially at section 2
mugwump pugs: *** No compatible subroutine found: "&use"
autrijus mugwump: huh?
time env PUGS_SAFEMODE=1 ./pugs -e1
I'm seeing a 1sec delta 22:56
with and without prelude
which is bad but bearable
(barely)
mugwump oh, so it's the time parsing Test.pm etc 22:57
Are we being stung by excessive backtracking on parsing?
time pugs -MTest -e1 => user 0m5.294s 22:58
clkao autrijus: wfm :/
Juerd mrborisguy: I expect rules to not be scalar values, and that any $rule is actually a reference 22:59
autrijus clkao: same test wfm? 23:00
mugwump: I'm seeing 2.6s
mugwump: you have an old version of pugs to compare with?
clkao: :/
clkao autrijus: ya, array.t
autrijus clkao: try rebuild? 23:01
r4290
I didn't change anything though.
anyway, I'm going to begin preflight. 23:02
clkao me make clean 23:03
what i thought it 's one week away
autrijus it's not.
we have weekly release
and it's already slipped for 1 day
kelan ?eval sub foo ($a)
evalbot6 Error: unexpected end of input expecting bare trait, trait or block
mugwump ok, I think I've tracked down the cause of the Set.pm test regressions 23:04
kelan er
clkao ah, i thought you mean the actual flight o .at
)
mugwump changing, eg, the implementation of equal() from:
return (($self.size == $other.size) &&($self.includes($other.members)));
to:
my $rv = (($self.size == $other.size) && ($self.includes($other.members))); return $rv;
kelan ?eval sub foo ($a) { qq[ $a ] }; my @b = (1,2,3); foo @b;
evalbot6 ' 1 2 3 '
kelan ?eval sub foo ($a) { qq[ $a ] }; my @b = (1,2,3); foo *@b; 23:05
evalbot6 ' 1 2 3 '
kelan hmm
?eval sub foo ($a) { qq[ $a ] }; my @b = (1,2,3); foo( *@b );
evalbot6 ' 1 2 3 '
autrijus mugwump: ok. feel free to check in the workaround (with comments)
mugwump will do
kelan is there a reason that doesnt return just ' 1 '?
autrijus and untodo the passing test
kelan do i have context messed up again? 23:06
autrijus ?eval sub foo (*$a) { qq[$a] }; my @b = (1..3); foo(@b)
evalbot6 Error: No compatible subroutine found: "&foo"
autrijus ?eval sub foo (*$a) { qq[$a] }; my @b = (1..3); foo(@b);
evalbot6 Error: No compatible subroutine found: "&foo"
autrijus ?eval sub foo (*$a) { qq[$a] }; my @b = (1..3); foo(*@b);
evalbot6 Error: Too many slurpy arguments for &main::foo: 3 actual, 1 expected
autrijus kelan: looks like you can't get here from there :)
?eval sub foo (*$a, *@rest) { qq[$a] }; my @b = (1..3); foo(@b);
evalbot6 '1'
autrijus ?eval sub foo ($a, @rest) { qq[$a] }; my @b = (1..3); foo(*@b); 23:07
evalbot6 Error: No compatible subroutine found: "&foo"
autrijus the caller-site * is broken
I think
clkao autrijus: also, retro-array will ruin pugs::env
kelan i thought flattening the caller side might just throw away extra arguments like p5 does
clkao autrijus: a perl6 array accessed by perl5 and export ed to perl6.
mrborisguy Juerd: so I guess my question is then... will a reference to a rule stringify? $a = rx:P5{a}; say $a; #or; say ~$a; shouldn't produce an error in my opinion... is that correct?
kelan but i guess with an explicit signature that doesnt make much sense 23:08
?eval sub foo ($a, *@rest) { qq[ $a ] }; my @b = (1,2,3); foo( *@b );
evalbot6 ' 1 2 3 '
kelan hmm
autrijus mrborisguy: it shouldn't. what should it produce tho 23:09
mrborisguy autrijus: i guess i'm not quite sure. 23:10
autrijus mrborisguy: ok. checking in a generic fix
mrborisguy autrijus: rules might be a little to complex to print out the actual rule
clkao autrijus: array.t runs (failed 6/11) on a clean build form .e
kelan maybe a string of the rule? although i guess you don't have that around after compiling it
clkao you sure you have a clean build?
autrijus clkao: rebuilding
mrborisguy autrijus: maybe something like "substitution rule" or "match rule" 23:11
clkao autrijus: i also noticed now it takes very long time to actually run the script file. 23:12
2sec until 1..1 is run.
is printed. ie , test.pm's plan
autrijus clkao: yeah. something seemed to make parsing slow. or it's the prelude 23:13
got no time to triage tho.
clkao $ ab -clkao- [~/work/pugs] time ./pugs -Iext/Test/lib -e1
0.364u 0.003s 0:00.41 87.8% 4757+747k 0+0io 0pf+0w
$ ab -clkao- [~/work/pugs] time ./pugs -Iext/Test/lib -MTest -e1
1..0
2.119u 0.024s 0:02.38 89.4% 4567+719k 0+0io 0pf+0w
autrijus mugwump: how's the Set coming?
clkao how can do i do profiling?
autrijus clkao: make clean profiled 23:14
mugwump I'll check in what I've got... almost got all tests passing, but the workarounds are awful :)
autrijus okay. sorry for that.
we'll investigate later :)
clkao probably not for today then :/ have you got array.t run?
i need to sleep soon
autrijus clkao: still recompiling
need another minute
clkao need a faster feather 23:15
oh no, perl5 embed doesn't even compile on it
mugwump the nature of these workarounds suggests to me some basic parsetree/expression breakage...
wish I could pin it down
autrijus mugwump: reduce it to simple test cases? 23:16
mugwump gah svn conflict 23:17
autrijus clkao: weird
clkao: if I add (print '') after "use strict" 23:18
it works
but ok, I can get it run now
mugwump spooky ... someone seems to be making same changes as myself to ext/Set/t/operations.t :)
autrijus that may be me ;) 23:19
clkao sppooooky
mugwump ok r4292
clkao autrijus: so, got a glue about what's going on now? 23:20
mugwump basically, this doesn't work:
autrijus clkao: nope
mugwump $set.difference($other_set).union($other_set.difference($set)).equal($sym_difference)
autrijus clkao: too weird
clkao autrijus: make PERL5_EMBED_DEBUG 1
in perl5.c
mugwump but breaking each method call into a seperate line, with explicit scalars does 23:21
autrijus mugwump: ok. I think I know why.
mugwump: leave a comment there
it's basically the chained MMD inferencer
can't figure out what method to call without a "returns Set" type
clkao i think someone should take a quick look on the -MTest problem. see if it's a trivial fix to kill that 2 sec. 23:22
how many tests do we have? if each test takes 2 sec to startup...
mugwump 5s on my system! 23:23
stevan mugwump: ditching that Perl-MetaModel code is fine 23:24
it relied on Set.pm, which may have been part of the error
q[merlyn]: I have read that paper too
clkao it's definitely pain for development cycles
stevan autrijus: after this release I will put the perl5 version of the MetaModel into pugs, I think it is closer to what we will eventually want to have
autrijus: I also think it might be best to wait until hackathon to really work out the meta-model 23:25
at least I wont have a whole lot of tuits until then
ok have to walk to the dog, bbiab &
autrijus clkao: ok, I've attempted a fix, sec
clkao for the 2 sec or for the array rw thing? 23:26
theorbtwo Also, it may help the metamodel a lot to have autrijus, stevan, and Larry all in the same place.
Allo, all.
autrijus nope, no help
hi theorbtwo
Limbic_Region salutations James 23:27
clkao you need a tool for TODO and unTODO things
theorbtwo clkao: Have a plan on how to do it without parsing perl? 23:28
Did anybody take a look at my ugly Code::Exp code, and have a clue as to how to do it better? 23:30
autrijus theorbtwo: you can't make it into castV. 23:31
theorbtwo: and that is as well
since castV is for "boxing"
whilst creating a new object is hardly boxing
Juerd mrborisguy: Objects/references stringify as something that identifies the reference, unless stringification is overloaded. 23:32
mrborisguy: It shouldn't be an error.
autrijus ?eval rx:P5//
evalbot6 {rule}
autrijus ?eval ~rx:P5//
evalbot6 '<Rule>'
clkao autrijus: give me a note on what happens to array before you go sleep. i need to slee pno w
Juerd autrijus: For debugging purposes, the stringification should imo include some sort of id
autrijus clkao: I have no idea :p
theorbtwo Hm, OK, that makes some degree of sense.
autrijus Juerd: sadly we don't have IDs.
(yet) 23:33
clkao autrijus: ....
autrijus clkao: really, I can't for my life tell why
clkao autrijus: why as in where?
Juerd autrijus: No way to get to something like a memory address either?
autrijus clkao: why a print'' is needed
clkao it doesn't matter, but the STORE thing in array
autrijus Juerd: well, yes, you can take a weakref and get an address
Juerd: but it will change after GC run
Juerd autrijus: That can serve as an ID for a container then :)
Oh
autrijus Juerd: or you can take a stable ref
Juerd: but it will hinder GC
;)
so all in all pretty useless. 23:34
Juerd Purity can be awkward :);
s/;//
clkao the sub reports goodie when eval-applied, from STORE, but doesn't get back to actual pugs land
Juerd Good night
autrijus I think it's true for all non-ref-counting GCs :)
mugwump: ext/Set/t/hash.t all fails
theorbtwo VObject creates an ID on creation... but that's one of the reasons that it can't go outside a monad, which would be bad for something as general as references.
geoffb afk for a while with family unit 23:35
autrijus mugwump: seems to be
at blib6/lib/Set/Hash.pm line 48, column 12-34
mugwump: got time to investigate?
mugwump sure
autrijus theorbtwo: you can unsafePerformIO the object creation
theorbtwo: I'm not sure if that's wise.
theorbtwo Anyway, I will start making methods on Code::Exp.
autrijus theorbtwo: also, why do you want it to be pure anyway
theorbtwo Hm, if you aren't sure if it's wise, I'm certianly not going to do it.
Um, other then generally wanting it to be elegant, no good reason. 23:36
autrijus theorbtwo: the upshot is that creating a unique ID is not "pure"
but it does not have to be monadic either.
there's something inbetween.
GHC 6.4 has linear implicit parameters to support this
so if you'd like to switch object creation to use that
(and make it pure so castV can use it)
be my guest :)
theorbtwo Hm, that sounds like a lot of work for very little payback, and use of Yet Another Strange Extension. 23:37
Since we already have enough extensions keeping us from using jhc, and jhc is part of a grand plan, I think it's not worth it.
Instead I'll start adding methods on Code::Exp, to make clkao's code modification more possible, and other nifty stuff. 23:38
autrijus *nod*. ncie!
theorbtwo BTW: If I start making methods that can modify things, and not just introspect, should they get marked unsafe in the prims table? 23:39
autrijus probably no need to 23:40
"unsafe" means "you won't like to enable this in evalbot"
theorbtwo Right -- but things it creates are still subject to the safe/unsafe things, so it should be fine. Gotcha. 23:41
autrijus :)
mugwump ok, that set/hash.t error seems related to the overloaded - 23:43
which has been commented out in Set.pm :)
autrijus :)
mugwump also %:members<$self._stringify($x)> wasn't a great demonstration of perl6 syntax 23:45
autrijus indeed. 23:46
eric256 is disgruntled that a node he replied to on PM just go reaped, why reap a node with so many comments, why not reparent it? sorry wrong room to vent about it in i suppose. ;) 23:49
mugwump works on the other tests in the Set distribution 23:50
theorbtwo eric256: Let me take a glance. 23:52
autrijus mugwump: svn up first? I also fixed some 23:53
mugwump ok will do
hmm, the Makefile generated in the Perl-MetaModel seems to wedge make
autrijus mugwump++ # hash.t passes!
mugwump Makefile:545: *** target pattern contains no `%'. Stop.
autrijus worksforme. 23:54
one should probably not run Makefile.PL in an ext directory
mugwump oh? Works in ext/Set :) 23:55
eric256 i miss the svn bot.. is it coming back? do you need someone to host it? 23:56
mugwump oh wow ... all those unicode operator tests are passing!