svk sy -s 12103 //mirror/pugs | paste: sial.org/pbot/perl6 | pugs.blogs.com | pugscode.org | pugs.kwiki.org | www.treehugger.com/files/th_images/paradigm.jpg
Set by audreyt on 11 August 2006.
00:13 norageek joined 00:17 diakopter joined, theorbtwo joined 00:34 nekokak joined 00:36 justatheory joined 00:49 mjk joined 00:51 diakopter_ joined 00:52 weinig is now known as weinig|dinner, justatheory joined 01:18 dolmans joined 01:20 FurnaceBoy joined 02:08 lambdabot joined 02:11 xinming joined 02:20 SubStack joined 02:53 deleff joined 03:29 rashakil_ joined 03:38 weinig|dinner is now known as weinig 04:08 elmex_ joined 04:31 weinig joined
svnbot6 r12198 | audreyt++ | * Rename the "Ident" type to "ID"; it will be come a "newtype Int" 04:34
r12198 | audreyt++ | so we can intern all our buffers once Judy lands to the trunk,
r12198 | audreyt++ | which should also result in massive speed-ups in e.g. Type
r12198 | audreyt++ | comparisons.
r12199 | audreyt++ | * Now that ID means "Identifier", we rename the old "valId" type 04:41
r12199 | audreyt++ | to "SKID" to agree with the synopses's usage.
gaal problem is that "ID" doesn't sound like a user-issued name 04:44
if
"Identidief" weren't so long I'd just go with that
audreyt hi 04:48
svnbot6 r12200 | audreyt++ | * Oldland method calls with newVal as invocant is now hooked into a
r12200 | audreyt++ | newland call with new toys such Captures, Feeds, etc. Yay!
r12200 | audreyt++ | pugs> vv('moose').elk(1, 2, antler => 3);
r12200 | audreyt++ | CCall "elk" CaptMeth
r12200 | audreyt++ | { c_invocant = VPure (MkStr "moose")
r12200 | audreyt++ | , c_feeds = [ MkFeed
r12200 | audreyt++ | { a_positional = [VPure (IFinite 1),VPure (IFinite 2)]
r12200 | audreyt++ | , a_named = fromList [("antler",[VPure (IFinite 3)])]
r12200 | audreyt++ | } ]
r12200 | audreyt++ | }
audreyt gaal: hmm, point 04:50
oh, a_positional is probably f_positional now 04:51
audreyt goes fixing
gaal whoa 12200!! 04:53
audreyt :) 04:54
gaal++ # prepared the groundwork for all of this
capturizing can now begin in runtime level without forcing the AST to be changed at once 04:55
svnbot6 r12201 | audreyt++ | * Feed should have fields f_positionals and f_nameds, not
r12201 | audreyt++ | a_positional and a_named.
audreyt (though I still would like to distinguish &foo(1) with foo(1) in Exp level, that is not critical now)
gaal what does the former mean? 04:56
audreyt sub-only, never-meth dispatch
one is CApply
the latter is CCall
gaal ah. well, then it's just a parser thing then
"simple matter of parsing" :)
audreyt yeah. I wonder what's the difference between &foo(1,2) vs foo(1,2) 04:57
04:57 agentzh joined
gaal hmm? why is it any different than the 1-arg case? 04:57
audreyt CCall in 1arg form still have a chance to go into 1.foo 04:58
currently there's no way for foo(1,2) to go into 1.foo(2)
unless we make it so
I'm wondering if we should make it so.
the ergonomic reason is that
the current S29 wants
push @x, 1, 2, 3;
but that 's semibogus
since what we really want people to write is
push @x: 1,2,3;
gaal say $fh: <la la la>
audreyt but to keep people from revolting, S29 dictates a global helper 04:59
multi push (@, *@)
sole purpose is to redispatch into a method
I worry about this pattern
gaal oh, so this is actually easily fixed
you tell people the : form is faster
audreyt but the , form does not work on ordinary objects 05:00
and we need to flatten all common methods from all builtin classes
gaal you won't imagine how fast it shows up in forums and style guides that anyone not using the : form is a n00b
audreyt into global namespace
gaal problem solved :)
audreyt simply to delegate
which is I think bad tainting
what if we say that, if &push is not in scope, or its proto does not handle (@x, 1, 2, 3) 05:01
then it fallbacks to @x.push(1,2,3)
exactly as the 1-arg case?
that is symmetrical with the method-to-sub fallback
and you can perhaps turn both off with a pragma to enforce say-what-you-mean coding
and I think it's cleaner than populating the global namespace with &*push 05:02
&*shif
&*shift
which has caused us many a prelude troubles
05:02 elmex joined
gaal that pragma, it controls parsing or runcore? 05:02
the 2nd-chance dispatch is an extra Exp node? 05:03
or does CCall dispatch retry itself as CApply
?
audreyt nono
it's all in CCall
all this does not affect CApply one bit
gaal hm k
audreyt basically, we wouldn't need a CCall form if not for the fallback rules 05:04
f(1,2) # CApply &f(1,2) without fallback
1.f(2) # CApply &1.can('f').(1:2) without fallback
s/&1/1/ 05:05
but we keep the CCall form because of mutual fallback
gaal btw: sub f (@x is rw) { ... } f(x => @a[0], x => @a[72]) # works?
audreyt I'd imagine so, yes 05:06
gaal and inside f, @x.push does what?
audreyt I think this is a social problem, i.e. if we can force people to say
close $fh:;
push @x: 1,2,3;
then we wouldn't need any fallbacks 05:07
or at least not the sub->meth direction
(meth->sub still needs to be there)
gaal 'use PerlFunctions'
the no arg case looks real funny (close $fh:) 05:08
audreyt $fh.close # a bit better
but indeed.
gaal yeah
audreyt neither looks as moose as
close $fh;
gaal $fh.close is entirely reasonable, but *requiring* it would be not moose at all 05:09
audreyt ditto for the push case, actually
gaal yeah
audreyt substr $text: 1,2;
try selling that to perl5 people :)
gaal "if you want ruby you know where to find it"
ha!
audreyt gaal++
@x.push does what? it fails 05:10
lambdabot Unknown command, try @list
audreyt Seq.push is not there
gaal but surely sub f (@x is rw).... f(@my_hard_earned_y) should work?
audreyt maybe "is rw" fails right there
but no I guess not 05:11
Seq still satisfied rw
it can be assigned to, it just cannot be pushed with
gaal no, I can see the use of constructing a view for f in the piecemeal case
audreyt indeed 05:12
gaal yeah. the only thing is that this can't be figured out statically. probably.
audreyt and
@x = (1,2,3)
lambdabot Maybe you meant: . v
audreyt will supposedly distrinbute 1 and 2 to @a[0,72]
and discard 3
just as what we'd expect with views
gaal unless possibly a warning.
audreyt the two-way padding rule is warnable
but not a warning in perl5 05:13
($x) = (1,2,3)
($x, $y, $z) = (1)
gaal ah right
audreyt the latter case is especially frustrating as
($x, $y) = f() 05:14
gaal [what turned out to be the placholder here? (_, _, $x) = @x]
audreyt in f(), "want" is :(*$ is optional, *$ is optional, *@)
not (*$, *$, *@) as I'd expect
gaal hmmm
05:14 luqui joined
audreyt but again it's part of what makes perl perl :) 05:14
so not changing it :)
luqui: hi. I'm just ranting about how I dislike 05:15
push(@x, 1, 2, 3)
or rather, how it's currently handled by forcing a global &*push
to exist in all programs 05:16
luqui it looks wrong to me...
audreyt which has a sole purpose of converting it to @x.push(1,2,3)
er, all of 3,5,6,9 use that syntax
and it's in S29
luqui I mean, obviously it is correct, but push(@x, 1, 2, 3) doesn't look like you're pushing onto @x 05:17
audreyt so I'd say it's pretty deep rooted
luqui instead it looks like you're pushing the elements of @x and 1,2,3 onto something... else
audreyt yeah.
so I wonder, instead of forcing a certain methods to global space
and confuse everybody else when they use something not preexposed as sub
why not just have a pragma that controls sub-fallback-to-method behaviour? 05:18
when it's on, push(@x,1,2,3) when failing sub dispatch go to meth dispatch
luqui rather, when it is off
audreyt and when it's off, you have to write $fh.close and @x.push(1,2,3).
sorry, indeed
use strict 'subcall'
or something like that, and it needs to be off by default
i.e. fallback by default happens 05:19
luqui right
audreyt then 50% of S29 can go away :)
since they are just redispatchers
luqui hmm.. it feels like kind of a hacky solution. we could consider it a transitional form
on the other hand, it shouldn't be a transitional form 05:20
audreyt it's there to support push and close
and substr
and index
luqui because not everybody thinkis in OO
audreyt aye
and we should preserve this useful illusion
that substr is still a function somehow
except you can't take a reference to it anymore
which I think is very good...
luqui wait... why? 05:21
I mean, why do you think it is good?
gaal ha, thanks to you audreyt you can't take a reference to anything now :-p
luqui gaal, ?
audreyt luqui: because that implies you can call substr with anything
but that's clearly not the case
or let's not say substr; let's say binmode 05:22
gaal luqui: there are no references.
luqui gaal, ?
you mean in pugs?
audreyt I think this is bogus: $x = &binmode;
gaal luqui: in Perl 6
luqui okay, someone will have to explain this to me
audreyt luqui: whilst you were away we murdered references :)
gaal luqui: svn.openfoundry.org/pugs/docs/Perl6...apture.pod 05:23
audreyt in any case, my point is that while we might want to let people continue writing
binmode($fh, ':utf8')
that is I think just a fallbacked dispatch to $fh.binmode()
(probably decidable in compile time) 05:24
and &binmode by itself will be a lookup failure
to clarify that it is actually not a function in the builtin symbol table
gaal how can that be decidable at compile time?
luqui rather, where in compile time?
audreyt the same time the provisional calls are resolved
end of compilation unit construction 05:25
where you know for sure that &binmode is not going to exist
luqui fair enough
gaal require <A B C>[rand hw]; binmode $fh ':utf8';
luqui doesn't understand gaal's utterance 05:27
rand hw?
audreyt gaal: that fails
"there is no barewords in perl 6"
S02:1775
i.e. it will be rejected by provisional call syntax 05:28
gaal how do you force symtable dispatch? if my code relies on someone else pushing a sub into my symtable?
audreyt unless you somehow proto it
then you protot it
gaal ah, proto.
audreyt the same way all separate compilation languages do it
extern ...
gaal in perl 5, parens were enough
nodnod
luqui: hw is the ubiquitous handwave function. 05:29
audreyt we evven do that in pugs haskell :)
luqui oh right
but it is a pita in haskell
audreyt {-# NOINLINE _DoCompile #-}
_DoCompile :: Maybe (IORef (String -> FilePath -> String -> IO String))
_DoCompile = Just $ unsafePerformIO $ newIORef (error "unregistered")
is how we say this module depends on someone to push into its symbol table" 05:30
yes, it's a pita :)
gaal where was the bareword up there, btw? that was a string
audreyt "binmode" was a bareword
gaal ah
audreyt that does not take a clear resolvable meaning
gaal indeed
yes yes
I gotta go to $work now... 05:32
audreyt have fun :)
gaal *you* have fun :) 12200++ audreyt++ :)
agentzh audreyt: do you have the ability to get openfoundry support https again? 05:33
audreyt :)
agentzh: I can ask, but I don't have shell access now
agentzh: or maybe you can ask
agentzh thanks. :)
http is slow here.
audreyt where are you in the realspace? 05:34
agentzh .cn
audreyt ahh.
agentzh :) 05:35
same as xinming.
05:35 weinig is now known as weinig|sleep
agentzh goes to hack on the test suite. 05:36
luqui audreyt, so references, um, do exist 05:38
audreyt yeah. they are just fatter
luqui $x = \&binmode; $$x($fh, ':utf8')
audreyt er no, I'm saying that \&binmode fails 05:39
with "cannot lookup &binmode"
"must be predecl"
luqui oh, because of the rewritey thing
audreyt etc
luqui not because you can't take references to functions
I really think that if binmode($fh, ':utf8') is to work, \&binmode should also 05:40
it's kind of like the reason for using tied scalars for false getters and setters
so that you can pretend that it's a real attribute in all circumstances
audreyt but then
\&anymethod
would need to work
luqui ah, and the error would be caught at the call site 05:41
not the reference site, which is indeed a little strange
audreyt I think it's broken :)
I think the compiler should rewrite binmode($fh, ':utf8') to $fh.binmode(':utf8') when it knows it can do that
i.e. when &binmode does not exist anywhere
luqui that seems broken to me, though
audreyt but that is already the case for close($fh)
it's the "1arg special case"; we are just extending it to multiarg 05:42
luqui oh, &close doesn't work?
audreyt no. close($fh) is just $fh.close
luqui hmmm
audreyt special rule on 1arg subcalls -- always try meth first
which has always sounded very strange
luqui okay, well in that context your proposal makes perfect sense
but it might be worth revisiting that rule 05:43
audreyt yeah. but that rule is vital if you don't want to force people to write $fh.close
$text.substr
as in ruby
svnbot6 r12202 | agentz++ | [t/syntax/char_by_number.t]
r12202 | agentz++ | added tests for \o and \o[].
r12202 | agentz++ | more magic links as well.
audreyt i.e. it's the procedural facade for the underlying OO runcoe
luqui hmm...
the fallback thing just makes me uneasy 05:44
audreyt I understand 05:45
it also makes me uneasy. I'd suggest forcing people to write
luqui the fact that if people start using close($fh), I am not allowed to define a close(), lest it break their code
audreyt substr $text: ...
uh, why?
separate compilation
luqui rather, export
audreyt you cannot break anyone's code :)
oh. but if they import &close, they know what they are getting, presuambly
luqui basically, the fact that close() is a fallback to method call essentially makes it a function
audreyt and inport is lexical 05:46
and if they wrote
$fh.close
close $fh:
then the import doesn't thouch them
luqui right
but they have to know that
audreyt I don't know... I think either global fallback, or force "substr $text: 1,2"
the current situation of selecting some &push &substr &binmode to global namespace, but some others not 05:47
is not sustainable
luqui absolutely agreed
audreyt I think cleanest is when you see
push @x, 1, 2
with *push not in scope 05:48
compile it to
push @x: 1, 2
and raise a suppressible warning
saying "method-looks-like-a-function compile from foo to bar; consider writing bar instead"
to gently lead people the other way
luqui the reason for the single arg was that close $x:; looks ugly, no? 05:49
audreyt "Warning -- close($fh) with no &close in scope compiled to $fh.close; consider writing it that way to begin with, kthx"
yup.
luqui so I wonder how to reconsile that. I mean, $x.close obviously... 05:50
audreyt yeah, prolly just $x.close.
@Larry made dot shorter for a good reason
lambdabot Maybe you meant: arr yarr
audreyt i.e. you don't make your code longer :)
luqui (blah blah yada yada foo bar).close 05:51
was the thing that bugged me about being forced to use method synta
x
close (blah blah yada yada foo bar):;
....
same problem 05:52
audreyt but arguably if you know you are calling a method
luqui there's a subtle little thing way out on the right
audreyt then .close is natural
what about postifx given?
.close given (blah blah yada yada foo bar);
is clear and concise and all.
luqui hmm.. that's nice 05:53
05:53 Bit-Man_ joined
luqui I suppose people who care about endweight will probably be leet hax0rs anyway 05:53
audreyt "given" is to "for" what item cnotext is to cllurpy context
*context *slurpy
luqui uh... huh. cllurpy huh?
d/dt(audreyt's grammar + audreyt's accuracy) = 0 05:54
audreyt lol
.close for $fh; 05:55
even that is not half bad
luqui well, the warny solution sounds good to me
audreyt yay
luqui TimToady might disagree...
audreyt might also be debatable to warn on 1arg or no 05:56
more consistent if yes
luqui I mean it is important for people not to have to worry about OO before they understand it
audreyt yeah. but erl5 already have 233 builtins 05:57
svnbot6 r12203 | agentz++ | [t/syntax/char_by_number.t]
r12203 | agentz++ | added tests for \d and \d[]. (all tests pass now. pugs++)
audreyt that's 233 words user cannot use for functions
and perl6 , if we take the push-to-global approach as currently in S29, will make that problem worse :) 05:58
thanks for the sanity check :)
luqui it's really about: to warn or not to warn 05:59
not: to rewrite or not to rewrite
audreyt *nod*
luqui rewriting is the answer if it is between those two options
audreyt warn on multiarg only fits the current spirit
i.e. suggesting people to write
push @x: 1,2,3
but silent on the matter of
shift @x;
luqui so if someone doesn't understand OO, pedagogically how do you explain when to use :? 06:00
audreyt I can certainly live with that, honestly
"you use : when told to" :)
luqui could be like learning masculine/feminine 06:01
audreyt pedagogically, "use you : when calling a builtin function with more than one arg."
luqui oh.
audreyt s/use you/use you/
luqui we are all methods?
useful substitution there
audreyt s/use you/you use/
anyway.
I think nonbiasing things are still functions 06:02
infix:<+> for example
but they you don't call it with function syntax anyway
s/they/then/
luqui &open
eh
probably not an issue
a beginner will probably write it one way 06:03
and if it fails, the compiler will tell him the right way to write it
so he'll write it that way
audreyt yup
and I think fallback is there so it still *works
luqui that whole failsoft design constraint
audreyt and if you don't care, you say "v6;" or -e and suppress it
luqui is there a good way to get into "program mode" from the command-line? 06:04
audreyt module Main ... 06:05
luqui I just remembered how important -e is as a learning tool
audreyt or maybe
-Mstrict -e ...
luqui I'm thinking maybe -E... 06:06
pugs has an interactive mode, right?
right.
audreyt sure
luqui is that strict or not?
audreyt it's all strict.
we don't yet implement nonstrict
luqui if it stays strict, the interactive mode should suffice as the learning tool 06:07
audreyt *nod*
so, the question regarding &open
I think it's exported from IO::open 06:08
into prelude
so yes it's still a function
but then it's not a redispatcher
since it's not a instance-method call to begin with
i.e. there's no instance for it
so that's fine... wouldn't want to force people write IO::open or IO.open 06:09
though IO("/etc/passwd") is tempting
and might be better pedagogically anyway
but &open should remain as a function 06:10
luqui brb 06:12
cmarcelo audreyt: hi.. some news: trunk+6.4.2 and r12101+(6.5 | 6.4.2) both works (defined as: number of failed tests very close to non-judy)... trunk+6.5 is segfaulting sometimes, i'm trying to track differences from old rev that work but didn't found.. in trunk static thing is already works for 6.4.2 .. 06:13
audreyt I think it's good to checkin then
we can track down segfault together
cmarcelo if it breaks people's heart too much we just revert it..
audreyt as long as feather works 06:14
I think people can recover :)
cmarcelo oh 06:15
audreyt (feather is 6.4.1 debian)
cmarcelo people with svk will miss some changes, and maybe it'll be broken for them...
because the skip
audreyt skip doesn't skip changes
it jsut skips history 06:16
so that's fine
cmarcelo i need to skip just once or everytime i'm sync'ing?
audreyt i.e. a "svn up" is like "svk sy -s HEAD"
just once
so, ready to check in? :) 06:18
luqui oh audreyt, the thing I was working on yesterday is in an almost-working state 06:19
audreyt oooh
agentzh auderyt: is "\187 \132" valid in Perl 6? The synopses don't mention this form of characters indexed by number.
luqui there is one problem: FIRST does not keep the correct pad, I'm wondering what the issue is:
audreyt agentzh: valid, and \d[187] too 06:20
luqui for ^2 { my $c = { my $x = 42; FIRST { say $x } $x++ }; $c(); $c() }
audreyt it's in synopses
S02
luqui the second time around, the FIRST is still referring to the $x from the first time around
agentzh audreyt: but not the "\187" form.
audreyt oh hm, wait, \187 indeed is not
agentzh auderyt: so "\187" == '\187' ? 06:21
audreyt er no
agentzh sorry, eq i mean.
audreyt per usual rule it will become "187"
?eval "\ijk"
agentzh auderyt: ah, yes!
06:21 evalbot_12185 is now known as evalbot_12203
evalbot_12203 "ijk" 06:21
agentzh audreyt: thanks!
audreyt I don't know... I can see that \65 is not as useful as \d65 06:22
s/useful/clear/
so I'm fine for retiring the \187 form
agentzh aye
svnbot6 r12204 | cmarcelo++ | * Integrate judy and HsJudy on Pugs' build process. Make IArray and IHash
r12204 | cmarcelo++ | use HsJudy.
agentzh is also hoping luqui can fix FIRST for pugs.
luqui agentzh, it is almost fixed, with the exception that I just described
agentzh luqui++ 06:23
audreyt cmarcelo++
luqui: check in and let me look?
luqui kay
audreyt agentzh: look at current tests for \187 form
and fix them?
agentzh audreyt: it's in t/syntax/hyper_latin1.t 06:24
audreyt: sure!
audreyt 'k, please fix
thar form is now gone
*that
svnbot6 r12205 | audreyt++ | * "\187" form is gone; write "\d187" instead. agentzh++
cmarcelo audreyt: try building it there to see if works. i'm following www.feather/svk.html instructions to set up a working dir there.. 06:25
luqui r12206
audreyt cmarcelo: ok
svnbot6 r12206 | luqui++ | Got state variables and FIRST almost working (cloning with closures).
audreyt cmarcelo: evalbot will rebuild
so we will know if it fails :) 06:26
no action needed on your part
cmarcelo++ # yay I can use JudyAtom to ntern all our IDs 06:27
cmarcelo audreyt: well, i'll setup a working dir on feather anyway, for hacking when $HOME is offline.. =o)
audreyt *intern
cmarcelo: yup
agentzh pugs build error: Could not find module `Judy.IntMap': 06:28
sigh.
audreyt rerun Makefile.PL?
agentzh okay 06:29
cmarcelo wants to get deeper in pugs after Judy thing ends..
luqui what is judy? 06:30
audreyt cmarcelo: *beams*
agentzh judy is a fast C library for hashes and arrays.
audreyt luqui: very memory friendly, ultrafast, LGPL, self-tuning ordered maps, sets and hashes
luqui neat 06:31
audreyt cmarcelo is my sumemr-of-code minion^Wstudent to make Judy a reusable Haskell library
and to port pugs to use it instead of the horribly slow Map-based array/hashes
luqui extra neat
audreyt ...which he just committed
agentzh rerunning Makefile.PL doesn't help. the same error...now realcleaning...
luqui cmarcelo++ 06:32
cmarcelo =)
audreyt agentzh: nopaste the error before you relclean?
agentzh auderyt: k
pasteling "agentzh" at 210.22.200.67 pasted "Win32 build failure due to Judy..." (44 lines, 2.6K) at sial.org/pbot/18972 06:33
06:34 crem joined
audreyt agentzh: GHC 6.4.2? 06:34
agentzh yes 06:35
should i upgrade GHC?
audreyt no
cmarcelo agentzh: no..
audreyt thinking
seems that it's picking up an old version of fps 06:36
in which realclean may help
I'll boot to win32 to confirm in a bit
agentzh okay, realclean now.
agentzh really don't want to realclean...
*doesn't
audreyt oh ok... then you can wait for an hour or so 06:37
:)
agentzh okay, i prefer the former.
cmarcelo maybe trying to purge just pugs-fps.. ?
only third-party/installed dir.. 06:38
agentzh realclean is done. ;-)
Preprocessing library pugs-fps-0.7... 06:39
Building pugs-fps-0.7...
cmarcelo oh, if an error happens, try to paste as much as you can (to check if Judy C library gets compiled right..).. 06:40
agentzh hopefully Judy can make pugs much much faster. :)
cmarcelo: okay
cmarcelo agentzh: well, i'm first worried about make it working =) 06:41
agentzh yes, it's understandable.
audreyt $ time ./pugs -e 'my @x[9999999] = 1; say @x[-1]' 06:42
1
real 0m0.650s
yay
(it used to hang :)) 06:43
cmarcelo++ cmarcelo++
cmarcelo at least its faster for very large cases =o)
audreyt: now, if you remember, i was having trouble with elems and pop...
agentzh cmarcelo: judy is not Win32 friendly i'm afraid.
i'm now pasting the error.
audreyt cmarcelo: I do remember, but I'll fix win32 build first
agentzh -ljudy sucks. 06:44
audreyt ?eval my @x[9999999] = 1; say @x[-1]
06:44 evalbot_12203 is now known as evalbot_12204
evalbot_12204 OUTPUT[1 ] Bool::True 06:44
audreyt feather survived
pasteling "agentzh" at 210.22.200.67 pasted "Judy compilation failure" (10 lines, 588B) at sial.org/pbot/18973
audreyt booting to win32 now 06:45
agentzh yay. audreyt++
cmarcelo agentzh: do you have a file third-party/HsJudy/libJudy.a ?
agentzh cmarcelo: looking
"No such file or directory" 06:46
nor is .dll. 06:47
cmarcelo agentzh: try cd third-party/judy/Judy-1.0.3; ./configure; make # and see if it works.. 06:48
or win32 equiv..
agentzh trying
cmarcelo doesn't know very much about win32... =|
agentzh cmarcelo: configure is unix shell. :( 06:49
Win32's shell is not that intelligent. :(
make is also a unix-smell tool. 06:50
maybe i can get them work under win32's cygwin. but that's far from ideal.
i'd better wait for audreyt to fix it. :) 06:51
cmarcelo agentzh: would distributing a precompiled .dll be an acceptable solution for win32 people? as in: if (win32) { give .dll } else { ./configure; make bla bla }.... 06:53
agentzh hmm 06:54
sounds interesting.
binary judy is cool.
i need at least libJudy.dll and libJudy.lib.
cmarcelo agentzh: .so => .dll, .a => .lib, right? 06:55
agentzh presumably
audreyt hm. 06:56
currently with pcre we still compile it with gcc
but with judy seems there's no such luxury 06:57
since it wants to b e-l'ed
cmarcelo there's a script inside judy/J/src that could be adapted to work for win32.. 06:58
there's a build.bat there actually
agentzh yay! i've build Judy.dll and Judy.lib via build.bat mentioned by cmarcelo. 07:00
*built
cmarcelo agentzh: copy Judy.lib into t-p/HsJudy
agentzh Judy.lib == libJudy.a
t-p? 07:01
cmarcelo third-party
agentzh okay
cmarcelo comment the evil Judy section on util/build_pugs.pl and make again
the section that calls for configure... 07:02
line 76 to 81
agentzh i think i should also copy Judy.dll to make it visible to PATH.
cmarcelo agentzh: the idea is that all be statically linked...
lets try without copying Judy.dll first, if you don't mind.. ? 07:03
agentzh but i think .dll is dynamically-linked library.
cmarcelo yes... we'll use .lib, for static linking..
agentzh cmarcel: i think Judy.lib is the import library for Judy.dll. 07:04
cmarcelo agentzh: .lib files depend on .dll ?
audreyt wow, I walk away for a while and the problem solved itself :) 07:05
agentzh cmarcelo: not always. but i think Judy.lib does.
cmarcelo well, copy it to third-party/HsJudy too..
audreyt so just change build_pugs.pl to run the bat on win32
agentzh i'm editing build_pugs.pl
line 76 to 81... 07:06
hehe, i should edit build_pugs earlier.
:)
the logic is here.
where is "-ljudy"? 07:08
cmarcelo agentzh: well, is in HsJudy...
luqui heh, while @a[9999999] = 42; @a[-1] is nice, @a.elems hangs ;-p
audreyt it's in caal
HsJudy's cabal
agentzh Win32 dislikes -lJudy.
cmarcelo luqui: we are aware of that problem =)
audreyt luqui: that's because .elems coerces ot VList first
luqui: so it's .elems being stupid, not Judy's fault :) 07:09
luqui I figured
agentzh ld is unix-style linker, isn't it?
audreyt it is 07:10
agentzh but my Judy.lib is Win32 COFF format. :)
audreyt ahh.
agentzh i think i have to recompile Judy using MinGW or so.
audreyt modify the .bat?
we use the GCC in GHC's path
c:\ghc\ghc-6.4.2\bin\gcc.exe 07:11
er
agentzh ah...
audreyt c:\ghc\ghc-6.4.2\gcc.exe
agentzh k
audreyt c:\ghc\ghc-6.4.2\gcc-lib\ has the mingw tools
including ld.exe
agentzh audreyt: C:\ is not a long-term solution. 07:12
audreyt agentzh: you can get them from build_pugs config variables 07:13
so just make it work first, then do substitution later
agentzh fine
audreyt: no gcc there (D:\ghc\ghc-6.4.2\bin) 07:14
audreyt one level up
-6.4.2\
agentzh oh, sorry. stupid question. 07:15
to make things easier, i'll use cygwin's bash first. 07:16
audreyt sure. make it build first :)
agentzh build.bat needs some tweaks to adapt to gcc and ld. 07:17
audreyt *nod*
07:18 Aankhen`` joined 07:21 mjk joined
agentzh it seems to me this deserves some time. GHC's ar.exe is too stupid. i'll hack on this issue this afternoon. once i'm done, i'll commit the change. :) 07:21
if i'm blocked somewhere, i'll also ask here. 07:22
cmarcelo agentzh: thanks for helping.. 07:24
agentzh np :)
audreyt agentzh++
agentzh :) 07:25
audreyt is still in 2nd win32 reboot
security updates, etc
there's something about win32 and reboot :/
agentzh never use security updates.
audreyt wow.
07:32 baest joined, iblechbot joined
audreyt cmarcelo: meanwhile your issue is resolved 07:35
svnbot6 r12207 | audreyt++ | * Slurpyness evaluation now uses array_fetchSize, so this is
r12207 | audreyt++ | now constant time:
r12207 | audreyt++ | my @x[9999999] = 1; @x.elems
r12207 | audreyt++ | note that we still doesn't support (1..Inf).elems.
cmarcelo audreyt: in feather isn't necessary to create local branches, just checkout from mirror, right?
audreyt aye 07:36
cmarcelo (1..Inf) doesn't end up in an IArray, does it? 07:38
audreyt it doesn't.
it's a separate issue
the old code was lloking at the size of all incoming flatteneable things
and it did it with cast to VList 07:39
now I changed it to use array_fetchSize
but that still only allows finite length
in slurpy comparisons
sub f (*$x, *$y) {}
f(@z)
the code needs to know that @z is at least of length 2 07:40
but f(1..Inf) currently fails miserably
because it doens't know its length really
agentzh later & 07:41
07:41 agentzh left
cmarcelo in the future f(1..Inf) should eval as f(1,2)? 07:41
audreyt no, it should fail
sub f (*$x, *$y, *@z) {}
should work
with f(1..Inf)
cmarcelo what's the "*"? 07:42
audreyt it says, flatten and concat all collection-containers 07:43
in the arguments
also known as "slurpy"
it's what happens in perl5 when you do
my ($x, $y, @z) = (@a, %b)
07:43 xinming joined
audreyt (which in perl6 works the same) 07:44
here @a and %b are flattened as List(@a) and List(%b)
and then concatenated
the first two elements goes into $x and $y
the rest into @z
cmarcelo the default is to slurp? 07:45
audreyt the default for list assignment is to slurp
the default for function call is not to slurp
the * tells it to slurp 07:46
cmarcelo ok
xinming ?eval if 1 { "hello" }.perl; 07:48
07:48 evalbot_12204 is now known as evalbot_12207
evalbot_12207 "\\\"perl6\"" 07:48
xinming is this the correct behaviour?
xerox '.perl' ?
xinming I don't think so. :-/
audreyt xerox: "show"
xerox Crazy? :)
xinming hmm, Ok, how about this. 07:49
?eval if 1 { "hello" }.say;
audreyt xinming: that's fine
evalbot_12207 OUTPUT[perl6 ] Bool::True
audreyt it's just parsed to
if 1 {"hello"}; $_.say
it's just evalbot had a pretty bad $_
to begin with 07:50
xerox ?eval $_.say
evalbot_12207 OUTPUT[perl6 ] Bool::True
xerox ?eval $_.perl
evalbot_12207 "\\\"perl6\""
xinming audreyt: But, after the test part, It should be a closure, not a "term" :-/
audreyt it is a closure
the closure ends
and then you can write anything
including .say
which means $_.say
xinming if there is a space between closure and say, It would be much more understandable. :-) 07:51
audreyt: Ok, thanks, I understand, But just a bit confused.
audreyt compare it with perl5
$ perl -e 'sub f { if (1) {"2"}.1234 } print f()'
0.1234
same thing
xinming audreyt: can you pull using svk from pugs or parrot these days? 07:53
audreyt pugs I cn
pugs I can
did you run into some error?
xinming audreyt: md5sum mismatch in parrot. 07:54
audreyt svk revert that file
and then pull again
xinming and
pugs mirror
Syncing svn.openfoundry.org/pugs
lambdabot Title: Revision 12109: /
xinming Retrieving log information from 12102 to 12207
Incomplete data: Delta source ended unexpectedly
audreyt look at topic
svk sy -s 12103 //mirror/pugs 07:55
I've reported it
but for now use this workaround, sorry :/
xinming audreyt: thanks.
audreyt np :) 07:56
07:56 baest joined
xinming audreyt: My hard disk is corrupted by a bug in xfs, Now, I'm syncing everything. luckily, I have perlcabal.org to test something. :-) 07:56
luqui is there a lookbehind in the parser?
that is, Parser.hs 07:57
audreyt there is one char lookbehind
in e.g. getPrevCharClass 07:58
luqui that'll do
audreyt but we don't do lookbehinds beyond one char
penalty too dire
luqui I'm just trying to make a warning about {"foo"}.say 07:59
audreyt why?
luqui because it confused xinming
audreyt ugh. ok.
luqui ugh what?
xinming thinks, it wouldn't only confuse himself, but also other. 08:00
luqui: what do you 'ugh' normally?
luqui are you asking what it means?
xinming hmm, what do you mean when 'ugh' normally.
audreyt as in, go ahead :)
add the warning at the implicitmethod place
luqui ugh usually expresses some sort of annoyance
gaal dopp :: Perl -> Haskell 08:01
dopp Larry = SPJ
dopp Damian = Oleg
audreyt luqui: I ugh'ed because I thought you are adding a more general warning than just detecting .foo preceded by } 08:02
i.e. that captures all possible use of implicits
luqui oh my
gaal I wonder, who's eyespoplikeamosquito?
audreyt which will be expensive. but lookbehind } is fine
gaal: madgolfer asavige
gaal I mean, who's dopp ~~
s/~~/!!/ 08:03
s/!!/$!/, oh never mind
svnbot6 r12208 | audreyt++ | * add hash_fetchSize to unify the "get size from to-be-flattened-thing" logic 08:05
audreyt ?eval my @x[9999999999999] = 42; @x[-1] 08:06
evalbot_12207 \42
audreyt ?eval my @x[9999999999999] = 42; @x.end
evalbot_12207 1316134911
audreyt ...I wonder if it can be considered a nonbug. 08:07
cmarcelo audreyt: there's a possibility to switch to Judy.StrMap and use all that Refeable machinery when one of this big ints appear... 08:13
audreyt *nod* 08:14
08:18 buetow joined
audreyt cmarcelo: I see these lines during test 08:19
pugs: JudyziHash_ddBH: interrupted
is it the 6.5 segfault you were referring to? 08:20
it's the wrapper for Judy.Hash.mkFin
cmarcelo during pugs test or hsjudy test? i test here ./pugs t/builtins/bool/defined.t and sometimes it segfaulted.. 08:21
audreyt exactly 08:22
I can duplicate it
but it segfault afrer finishing all the tests
same for you?
svnbot6 r12210 | luqui++ | Added a warning to catch: if 1 { "foo" }.perl
cmarcelo audreyt: did you start a "nice make smoke" in feather or should I? i wanna check if judy didn't compromised smoke time..
audreyt I just did locally 08:23
cmarcelo audreyt: here after 12, and sometimes after 19... (in defined.t)
audreyt: smoke with 6.4 or 6.5?
audreyt 6.5
smoke time is virtually the same
cmarcelo audreyt: strange thing is r12100 + judy modifications, don't segfault and smoke just fine (~150 fails only) with GHC 6.5 here.. 08:25
audreyt hm
it doesn't segfault here also 08:26
I see the "intterupted" only after program exit
cmarcelo i didn't see this interrupted here.. will compile with 6.5 again to check... 08:27
audreyt I'm using my 6.5 build
fairly old, not -head
cmarcelo i'm newer than yours but not -head too.. 08:28
08:28 kane-xs joined
cmarcelo (i *think* it's newer hehe.. ghc-6.5 is 2006-07-14) 08:29
s/is/here is/ 08:30
08:35 Juerd joined, webmind_ joined, wolv joined, PerlPilot joined 08:36 pmichaud joined 08:41 wolverian joined, webmind joined, PerlJam joined
luqui ack, que paso? 08:42
08:42 luqui joined 08:43 chip joined, audreyt joined, leo joined
cmarcelo audreyt: ghc-6.5 here is 2006-07-14, I think it's newer than yours.. 08:53
09:01 cm joined, ruoso joined 09:09 iblechbot joined 09:10 HEx joined
svnbot6 r12211 | scw++ | rule2parsec.pl: a prototype of the translator 09:16
audreyt cmarcelo: nod 09:29
cmarcelo: I've incoporated interning to Pugs internals
let's see if it speeds up anything...
cmarcelo: btw, you used StrMap in JudyAtom 09:30
Hash should have exactly the same API except a bit faster, right?
(we don't need ordered traversal for atoms)
mm. apparently python autointerns all 09:35
"string_that_looks_like_identifiers"
that's a curious and interesting hack.
cmarcelo audreyt: Hash can replace StrMap
audreyt: faster depends on situation... in CheckDup test, StrMap is faster.. 09:36
audreyt really.
I'm surprised 09:37
do you have a theory for it? :) 09:38
cmarcelo btw, bool/defined.t isn't crashing here with ghc-6.5 trunk..! i'll let a smoke running..
audreyt k
cmarcelo well, I lied a bit =o), I tested with an ordered words file, so this may help StrMap a bit.. and it's a always miss situation too (for a file without dups), which may not help Hash... I'm not very familiar with Judy deepest secrets, though.. 09:40
audreyt mandelbrot.p6 09:41
showed a nearly 100% speedup after interning types
with judyhs
probably StrMap is going to give simila performance... benchamrking 09:42
luqui what does intern mean?
audreyt luqui: change all constant strings into integers
maintain an internal table of such mappings (bidi)
and carry around ints, not types, and do comparison based on them
useful when you don't need to preserve original ordering, just _any_ ordering will do 09:43
luqui ah, get rid of string compares.
cmarcelo audreyt: e/mandel.pl you mean?
audreyt e.g. when writing a type inferencer
cmarcelo: yeah
StrMap and Hash nearly indistinguishable
cmarcelo wow.. did tests/atom/*.hs helped by any means? =o) 09:44
audreyt I'll resmoke to see if I break anything :)
cmarcelo: a lot :) though I recoded them
but saved me ~Inf time
cmarcelo yay 09:46
audreyt cmarcelo++
09:52 topa joined
topa hi all.. 09:52
trying out the nre parrot VM
all tests under python/perl6 and cardinal seem to be failing for me
audreyt perl6 should fail only about 70% of its tests 09:53
(sanity tests)
the other two are expected to fail all tests, yes.
cmarcelo audreyt: i didn't get the py autointerning all... 09:54
python
audreyt (python is hosted in other repository; cardinal has just started and has no working code.)
cmarcelo: mail.python.org/pipermail/python-li...98127.html
lambdabot Title: Creating a List of Empty Lists
luqui what is cardinal? 09:56
audreyt luqui: ruby/parrot
luqui cool
09:57 topa is now known as topa_
topa_ cardinal looks cool 10:00
audreyt yeah. if Cardinal can work out on parrot, that'd be very nice
topa_ how do I use the python compiler
audreyt seems to work for me :) 10:01
audreyt pirate.tangentcode.com/
lambdabot Title: pirate (a python compiler for parrot)
10:01 cmarcelo joined
audreyt topa_: er, "work out" as in "capable of running rubygem" 10:01
topa_ audreyt :) 10:02
audreyt what about the one in languages/python of parrot ?
is that pirate ?
audreyt that was, but then pirate forked 10:03
and moved out of parro repo
svnbot6 r12212 | audreyt++ | * Before I go in and intern everything, here is Judy.Hash-interned
r12212 | audreyt++ | Pugs.Type implementation. This should have no functional changes,
r12212 | audreyt++ | except things suddenly feeling much, much faster.
r12212 | audreyt++ | (up to 2x according to selected micro benchmarks; smoke data later)
audreyt they might remerge
not sure :)
topa_ audreyt so the "python" in parrot is kinda b0rked I see 10:04
audreyt *nod*
cardinal in parrot at this moment is I think at similar state as parrot/perl6 10:05
i.e. simple function calls works with simple scalars, but not much else
topa_ audreyt i see 10:06
audreyt though it's moving fast 10:08
topa_ is there documentation on how to get parrot to inter-operate between languages, as in perl6 code calling ruby objects
10:08 cm left
audreyt tewk here will help you if you'd like to help 10:08
topa_ audreyt would like to help but I'm newbie to ruby
more comfortable with python
audreyt *nod* 10:09
10:09 Jedai joined
audreyt as for interoperation between objects, PDD21 and PDD03 covers them a bit 10:10
www.parrotcode.org/docs/pdd/ 10:11
lambdabot Title: Parrot Documentation :: Parrot Design Documents - parrotcode
svnbot6 r12213 | audreyt++ | * overlapping instances is needed for GHC 6.4. 10:12
cmarcelo bbiab &
topa_ audreyt thanks, i'll read those 10:13
10:14 robkinyon joined, norageek joined 10:17 drrho joined 10:28 norageek joined 10:51 miyagawa joined 10:53 ludan joined, luqui joined
audreyt cmarcelo: any chance you can make a bindist for me ? :) 10:58
11:05 chris2 joined
cmarcelo audreyt: i'm not $HOME and ssh to there is unreliable, but I can try.. oh, it's amd64, still interested? 11:07
11:08 foo\ joined
audreyt oh, probably not :) 11:09
won't be bincompat then
norageek $BK1$?$s(B:)
cmarcelo audreyt: there's a default procedure do make bindists? 11:13
audreyt yeah. make bindist or something 11:15
but never mind :)
cmarcelo ok. /me was just curious.. 11:18
svnbot6 r12214 | audreyt++ | * Pugs.Internals: NOINLINE to make unsafePerfomrIO interning safer. 11:34
11:44 HXanadu joined 12:04 iblechbot joined 12:16 bpphillips joined 12:17 bpphillips left 12:20 agentzh joined
agentzh sorry, my mother used the computer this afternoon. so i have to work on judy-on-win32 tonight. :) 12:21
12:22 Bit-Man__ joined, Bit-Man__ is now known as Bit-Man
agentzh i've heard from IRC log that Judy pugs is now 100% faster (and can be even *faster*), which makes me even more motivated to solve the win32 compilation problem. :) 12:23
12:26 norageek joined 12:27 norageek2 joined 12:31 bpphillip1 joined 12:33 norageek3 joined 12:36 elmex joined 12:39 Limbic_Region joined
svnbot6 r12215 | audreyt++ | * Pugs.Internals - carry the original Buf with ID, so that the cast-to-Buf 12:55
r12215 | audreyt++ | operation can be much faster still. (this shouldn't affect Type interning,
r12215 | audreyt++ | but is essential to intern Pad -- i.e. make Var into ID instead of String.)
luqui audreyt, did you get a chance to look at that FIRST problem? 12:57
Limbic_Region ahh, luqui has been lured back from the dark side 12:58
audreyt - ping if you get a sec
luqui hey, I pinged him first! 12:59
her
damnit
(everybody else has had a year to adjust... I've only had five months!)
audreyt that's okay :)
pong
Limbic_Region luqui - you go first 13:00
audreyt luqui: no, I'm still doing interning
Limbic_Region is just seeking some advice
audreyt will finish in ~10min
luqui okay, done
audreyt Limbic_Region: yes? :)
Limbic_Region ok, to improve the testing of examples, I need several modules in ext/
unfortunately, ext/ isn't in @*INC 13:01
audreyt so push them there
Limbic_Region except to do that - I have to hardcode an assumption
if I could get FindBin from ext/ I would be all set
audreyt that is correct. if they are not there, skip all
Limbic_Region that's kinda yucky don't you think
audreyt no.
examples/ is not part of t/ either
so you are depending on external things already 13:02
Limbic_Region no I wouldn't
if I had FindBin
rather
audreyt so makes most sense to bail out if once of the two {examples,ext} ismissing
Limbic_Region *shrug* - I still think it is a pretty sucky way to do it since we have FindBin and File::Find and friends but ok 13:03
Limbic_Region will try and find time this week
audreyt uhm
Limbic_Region actually has enough $work to keep him relatively busy 13:04
audreyt wait a sec...
what's stopping you from simply
use FindBin; use File::Find;
?
the tests are run only when blib is in place
so these two modules will be accessible
Limbic_Region oh - much much much better 13:05
13:05 Qiang joined
audreyt and if people want to run it by hand they just had to 13:05
./pugs -Iblib6/lib t/...
which is neccessary anyway to see Test.pm
so you are safe
luqui which I have to do anyway...
Limbic_Region cool beans - moldy chicken
definately will find an hour this week to do it then 13:06
audreyt moose!
Limbic_Region++
clkao the pugs repository sync bug is fixed in svn::mirror trunk 13:09
new release on cpan will come later today.
clkao proceed to fix parrot sync bug
13:11 hexmode joined
agentzh ah, i finally get libJudy.a using GHC's gcc...that's the first step, but took me half an hour. :/ 13:15
ghc-- 13:16
13:16 Jedai joined 13:17 c6rbon joined 13:20 HXanadu_ joined
audreyt clkao++ 13:21
(vendor support)++
agentzh audreyt: where should i put libJudy.a? GHC's ld still complaints that it can't find -lJudy when i have put libJudy.a to third-party/HsJudy.. 13:23
audreyt: where should i put libJudy.a? GHC's ld still complaints that it can't find -lJudy when i have put libJudy.a to third-party\HsJudy..
audreyt: where should i put libJudy.a? GHC's ld still complaints that it can't find -lJudy when i have put libJudy.a to third-party\HsJudy.. 13:24
audreyt: where should i put libJudy.a?
sorry...
terminal error.
sorry for the noise.
audreyt that's fine 13:25
cmarcelo wants it to be in -Lthird-party/judy/Judy-1.0.3/src/obj/.libs 13:26
agentzh audreyt: it works! 13:27
luqui why the dot?
agentzh audreyt: i put libJudy.a under GHC's gcc-lib and it links fine.
crapulous in A2 it is not said how embedded comments are counted for whitespace separation...
audreyt luqui: gcc convention
agentzh crapulous: A2 is out of date.
crapulous ho, maye 13:28
I meant S2
luqui crapulous, comments count as whitespace
i.e. you can think of them as a single space
crapulous oki
agentzh can't wait to try out JudyPugs. 13:29
crapulous my bad, I was not reading corectly
agentzh the benchmark result for t/closure_traits/first.t: 13:31
old pugs: 3.343000 sec
new pugs: 3.031000
13:31 norageek joined
audreyt yeah. microbenchmark is better than normal case 13:31
luqui agentzh, how old is the old benchmark? 13:32
agentzh let me see...
audreyt lots of function calls, or mmd, in a tight loop, will make the difference much more visible
luqui because i just made a change which slows down closure cloning by... a lot
agentzh r12161
luqui yeah, I think that is before my change 13:33
agentzh the new pugs is at r12214
luqui so it seems that the two changes canceled each other out :-)
agentzh heh
now i'd like to make my Win32-specific changes to Judy more general. 13:34
cmarcelo that strange path may be replaced by something better.. maybe moving libJudy.a|Judy.lib to third-party/installed is a good idea.. 13:35
agentzh cmarcelo: please do the change. 13:36
(if you have time)
or i'd like to try.
cmarcelo just a sec 13:37
agentzh cmarcelo++ 13:38
indeed, judypugs is a bit faster. 13:39
maybe 10% or such. 13:41
luqui you have to make sure you are running runtime speed 13:42
parsing will be no faster
s/running/measuring/
most things in t/ will be dominated by parse time
agentzh luqui: how to measure only runtime speed?
luqui either use it on a program that is dominated by runtime
or use the time builtin functions to measure 13:43
i.e. get the time at the beginning and end of the program
agentzh luqui: hmm, reasonable.
luqui and print the difference
agentzh okay, i'll do this later. first of all, prepare my win32 patch to judy. :)
Limbic_Region yeah, since Win32 is currently failing to build 13:44
it's all Judy's fault
perlbot nopaste
perlbot Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel>
cmarcelo agentzh: almost there (ssh con is slow..) 13:45
pasteling "Limbic_Region" at 129.33.119.12 pasted "Win32 failing to build" (16 lines, 1.1K) at sial.org/pbot/18975
agentzh Limbic_Region: i've already built judypugs. please let me make my changes more general and then commit. 13:46
cmarcelo: okay
clkao fglock: is PCR totally broken?
Limbic_Region agentzh - It wasn't a complaint - it was an FYI 13:48
in case my error was different than your error
agentzh Limbic_Region: really? paste it somewhere?
oh, i see. thanks. 13:50
cmarcelo agentzh: commited.. 13:52
svnbot6 r12216 | cmarcelo++ | * Put libJudy.a in third-party/installed.
agentzh cmarcelo: great! 13:53
cmarcelo i'm "nice make" now to test it for sure.. 13:54
agentzh: is Limbic_Region's error same as yours?
agentzh nope. 13:55
cmarcelo: it's different.
i don't quite follow his error message.
it seems that ld.exe wasn't in the right position. 13:56
on my machine, it's D:\ghc\ghc-6.4.2\gcc-lib\ld.exe. 13:57
anyway, i'd finish my patch first. hopefully Limbic_Region will get rid of it automatically. ;-)
13:59 HEx joined
cmarcelo agentzh: cool. and if you have progress on measuring runtime, tell us.. 14:01
agentzh cmarcelo: of course. :)
14:07 Bit-Man joined 14:09 cjeris joined
agentzh where can i get the GHC installation path from build_pugs.pl? 14:18
audreyt line 66 14:20
$1 has the path
assign it somewhere else
Limbic_Region agentzh - the ld.exe error message can safely be ignored - it is the -ljudy that is the problem 14:21
Limbic_Region & # work again
agentzh audreyt: thanks. 14:22
audreyt thank _you_ :)
cmarcelo starting with a fresh checkout, perl Makefile.PL then make, prelude generation blows.. if I copy/paste the line that blows in shell, it works.. 14:23
14:24 HXanadu joined
cmarcelo i lost the line in screen history, but could get it again.. 14:24
s/blows/not work right/
audreyt it segfaults?
cmarcelo no 14:25
but stops building..
pasteling "cmarcelo" at 200.245.119.10 pasted "after "rm blib6/lib/Prelude.pm.yml", i did make and..." (8 lines, 852B) at sial.org/pbot/18977 14:30
14:32 Eimi joined
cmarcelo audreyt: I repeat the command a few times and in the fourth it worked.. (copy/pasted the gen_prelude and repetead it).. 14:32
audreyt weird 14:35
trunk ghc?
cmarcelo this is feather.. 14:37
repeating the prelude generating line eventually pops the erros 14:41
error
audreyt what about 14:43
./pugs -CParse-YAML src/perl6/Prelude.pm > 1 ; ll 1
does that always work?
merlyn a file name "1" would be odd. :) 14:44
audreyt "z" then :)
merlyn 1 could be confused for "l" on many fonts
audreyt *nod* 14:45
it's just random filename for debugging here, but point
merlyn ahh
I always use $$ for that
sometimes even /tmp/$$
but at least $$
audreyt excellent point! 14:46
audreyt learns something new :)
merlyn then if I see any filenames with 5 digits lying around, I'll remember it's my temp file
audreyt nodnod
merlyn++
merlyn this presumes you stay within the same shell, of course. :)
audreyt luqui: so the bug is that FIRST doesn't get run upon cloning? 14:47
luqui no, it is that it closes over the wrong lexical pad if it was cloned
let me double-check the bug
audreyt I look at t/closure_traits/first.t
it fails one test
and it looks like that FIRST was not rerun
cmarcelo audreyt: tried five times and all of them give me a ~700k file.. 14:48
luqui audreyt, there are two ways that it could fail
which look identical in test output
audreyt cmarcelo: so it's a open2 thing... let me think
luqui if you say something within the FIRST blocks, you'll see that they are being run 14:49
the problem is that the second time through, $str refers from the $str from the first time through
s/from the/to the/ 14:50
audreyt minimal program for me to test that? 14:52
luqui I will add a check for that behavior in the test
14:53 jferrero joined
luqui hmm, that's tricky to test 14:54
cmarcelo bbiab... lunch time &
svnbot6 r12217 | agentz++ | added Win32 support for the Judy library. pugs should no longer fail to build on Win32 with this patch. please test.
audreyt oooooooh
agentzh++
cmarcelo agentzh++
agentzh :)
audreyt cmarcelo: are you going to blog about this? :) 14:55
(in the SoC blog and crosspost to pugs.blogs.com perhaps)
14:55 hexmode joined
cmarcelo audreyt: probably tonight (ie. in 9hrs)... 14:57
did you finish a smoke already?
audreyt no
cmarcelo gotta go, brb & 14:58
agentzh Limbic_Region: please test r12217. pugs should build on pugs now. 14:59
*on win32
[particle] agentzh: i'm checking msvc now, too 15:00
agentzh particle: pugs doesn't use cl to compile judy.
it uses ghc's gcc.
luqui audreyt, t/closure_traits/first.t has a better test in r12218 15:01
[particle] agentzh: duh. my mistake. i'm rebuilding anyway :)
agentzh particle: cool. feedback welcome! 15:02
svnbot6 r12218 | luqui++ | Expanded the closure_traits/first tests to demonstrate
r12218 | luqui++ | exactly what the bug is.
agentzh luqui++
audreyt good. I think I have a fix, so that wil let me test it
15:04 vel joined
luqui heh, I like my "needs to be global" comment next to a lexical 15:04
svnbot6 r12219 | luqui++ | Deleted stupid comment. 15:08
agentzh grins.
15:09 penk joined
agentzh hopefully the directory layouts of different versions of GHC are consistent, or my patch will simply fail to work. 15:12
15:16 HEx joined
nothingmuch luqui: pin 15:21
g
luqui pong
long time no see
nothingmuch indeed =)
would you be interested in rewriting Perl6::Classes as a Moose sugar layer? 15:22
luqui ugh, Perl6::Classes, my ugliest perl code ever
yes, with emphasis on *rewrite*
nothingmuch =)
okies, join #moose sometime and we can discuss how we can do it 15:23
i just wanted to say it before I forgot
(irc.perl.org)
luqui maybe in 30 minutes or so
nothingmuch needs to go grocery shopping, and real work doing right now
luqui ah. well, I'll be around.
nothingmuch goody =)
audreyt I've improved the Show instance for IVar and Tvar -- instead of "<ref>" 15:24
they are now
{ref:<Scalar:2b42be0>}
etc
luqui you can access that sort of thing in hs?
audreyt this should help debugging a bit :)
unsafeCoerce# :: a -> Word
;)
luqui oh my.... 15:25
audreyt (actually, unsafeCoerce# :: a -> b)
but it's only recenetly I learned that for any containers
the pointer doesn't move
so uc# it to a Word _is_ the pointer address
exactly the same as the notation perl, ruby, etc uses
luqui that's cool
audreyt weakly typed language ++ 15:26
luqui (pugs probably has the highest occurence of the word 'unsafe' from any haskell project)
audreyt so now we know that indeed, the $OUTER::x from the closure and the $x form the second time around is not the same
but instead it's the same as the first one 15:27
luqui right
audreyt but curiously that behaviour only happens in FIRST blocks
luqui apparently 15:28
probably also in BEGIN, INIT, etc.
but they never run more than once
audreyt aha, I see why
clkao where?
audreyt vcode2firstBlock code = do ... 15:29
in Parser, the FIRST block carries its own Env
it doesn't share its host's
luqui I tried putting env <- getEnvironment in vcode2firstBlock, and replacing the code's with that one 15:30
no effect
audreyt nono
you probably need to
, Syn "=" [Var "$?FIRST_RESULT", App (Syn "sub" [Val code]) Nothing []]
i.e. tell the thing to clone itself
I'm testing that
(it wa
(it was
15:30 marmic joined
audreyt Syn "=" [Var "$?FIRST_RESULT", App (Val code) 15:30
)
it works! 15:31
luqui cool 15:32
audreyt luqui++
luqui audreyt++
audreyt also, "refreshPad" is slightly wrong
luqui (hmm, by conservation of karma, two idiots somewhere else were just decremented)
audreyt you want to clone the state pad entirely, no?
i.e. you always want it to be "fresh" 15:33
luqui I think so.
audreyt and always want to clear it
the content, that is
luqui wait... don't state vars have the same freshness provisions as lexicals?
audreyt no they do not
luqui sub { state $x; BEGIN { $x = 42 } }
audreyt they are never regenned normally
so the fresh flag is ireelvant
luqui the first time through, oughtn't $x have value 42? 15:34
er, the first clone..
or something.
audreyt well... that is debatable
my $x = { state $x; BEGIN { $x = 42 } }
what exactly does this mean?
should two clones both get 42 initially? 15:35
luqui I have no idea. It would seem like it should do the same thing as lexicals in that situation though, shouldn't it?
okay, I'll dismiss it as "totally weird"
audreyt probably very wise, sir
luqui so, how is refreshPad wrong? 15:36
(I also refactored the refresh code from lexicals into that function... which made it easy to implement it the same way)
audreyt refreshPad is wrong because
it sometimes clears $x
er I mean 15:37
for 1, 2 { my $c = { state $x ::= 42 } ; say $c() }
intuitively we want "42\n42\n"
but refreshPad will get "42\n\n"
because it reallocs $x
what we want is a clone, not a refresh
luqui but my's are refreshed? 15:38
audreyt yes, surely
luqui eg?
audreyt my $c = { my $x ::= 42 }; say $c(); say $c()
it's "42\n\n" in perl5 and I think pugs as well 15:39
luqui I can't say I really understand ::= within closures
oh
I understand.
so why intuitively do we want your state example to behave that way?
audreyt yay for understanding 15:40
t's not about state it's about clone
for 1, 2 { my $c = { my $x ::= 42 } ; say $c() }
it's also intuitively 42\n42\n
I think.
[particle] looks right to me.
audreyt I may be entirely out of my mind :) but I think :)
[particle] (intuitively)
luqui nothing is intuitive to me about binding to things at compile time which don't intuitively exist at compile time 15:41
audreyt oh well... you just have to trust me then *grin*
luqui macro intu { 'intuitively' } 15:42
audreyt committing
luqui for huffman coding
[particle] prefers i9y
svnbot6 r12220 | agentz++ | [t/syntax]
r12220 | agentz++ | added tests for the invalid "\ddd" form of chars.
r12220 | agentz++ | removed hyper_latin1.t since it's meaningless given "\ddd" is invalid.
[particle] how does this change if it's my $c := ... or ::= ...
audreyt my $c := 15:43
means the same thing
[particle] good.
audreyt it's just $c then cannot be assigned to
$c ::= however, means that the second time around, $c gets refreshed
and $c() will die
it's applying undef as a closure
(same behaviour as perl5) 15:44
15:44 stevan joined
[particle] ok, as i expect. thanks 15:44
audreyt :) 15:45
agentzh end of day for me, good night &
15:45 agentzh left
luqui my i7n must not be i7e 15:45
[particle] :) 15:46
svnbot6 r12221 | audreyt++ | * AST.Internals: Introduce much improved stringification
r12221 | audreyt++ | for containers: "{ref:<Scalar:2b42be0>}" instead of "<ref>"
r12221 | audreyt++ | should make debugging much easier.
audreyt hm. another idea is for compile-time-value to always be cloned upon first entry 15:47
that will eliminate the fresh flag altogether
luqui that could be very strange
audreyt (same external behaviour; it's implementation detail)
mmm? 15:48
luqui what's a compile-time-value?
audreyt ::= value
the container's value in the bytecode
whatever value they had in CHECK time
15:49 iskorptixas joined
audreyt oh my. 15:49
15:49 iskorptixas left
luqui that seems like it would eliminate refreshing 15:49
audreyt for 1,2 -> $x { END { say $x } }
luqui uhh....
wtf does that mean?
audreyt in perl5, it closes over compile time pad 15:50
luqui so the first one again?
or undef?
audreyt undef
the "for" unconditionally refresh
lumi Does "my" so something different the first time through than the next?
audreyt seems not for "for" 15:51
luqui for 1,2 -> $x { BEGIN { $x := 3 }; say $x }; # "1\n2\n"?
audreyt in perl5
perl -e 'for (1,2) { my $x = $_; END { print $x } }'
this print 1 only
hm, currently in pugs, Param is not in Pad 15:52
luqui I dare not ask what the behavior *should* be
audreyt I'll fix that later
so you get
for 1,2 -> $x { BEGIN { $x := 3 }; say $x };
pugs: *** Bind to undeclared variable: "$x"
luqui seems like we are testing undefined behavior
audreyt I think we want them to be precisely defined... somehow :) but not tonight
in any case, the test passes, which is (at thie moemnt) what counts :) 15:54
svnbot6 r12222 | audreyt++ | * t/closure_traits/first.t passes by cloning FIRST blocks.
audreyt it's midnight now... got $job tomorrow morning
see ya!
luqui adios
svnbot6 r12223 | audreyt++ | * gen_prelude.pl: try to slurp all input at once to reduce open2 failure rate. 15:57
gaal mooses
16:00 justatheory joined
[particle] wow, that's a spactacular win32 failure when judy's not installed. 16:00
where do i write up a ticket?
gaal perlbot nopaste
perlbot Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel>
[particle] doing now... 16:01
lumi Hi gaal
gaal hello lumi!
lumi You had some sorta haskell ctags thing, right?
I've been combing your lj for it (I thought it was there but can't find it) 16:02
pasteling "[particle]" at 144.81.84.215 pasted "spectacular win32 failure when judy not installed" (838 lines, 47.6K) at sial.org/pbot/18982
lumi It's otherwise quite entertaining though, so I'm not complaining :P
gaal @google haskell ctags gaal
lambdabot www.livejournal.com/users/gaal/161104.html
lumi All hail google && lambdabot
luqui lumi, not hasktags?
lumi lumi-- for trusting his little meat brain 16:03
No.. Is that better?
luqui that's what I use. I wasn't aware of any alternative
it's not great, it gets the job done a little bit.
lumi Straight to google this time.. Thanks 16:04
gaal lumi, luqui: the advantage of a ctags mode is that a single 'ctags -R' works for all files in the project. arguable that's just more noise though :)
lumi Useful for looking up p6 prelude functions mentioned in haskell source? 16:05
gaal lol @ refaddr # if you want to be eviller, pin it!
uh, I don't know how many p6prelude funcs are mentioned in .hs source :) 16:06
lumi Thanks gaal and luqui
There are some...
I think?
I got to dash. Have fun 16:07
gaal havamoose
audreyt [particle]: weird. it's asif libHSHsJudy-0.1.a does not contain the built judy libraries 16:08
ah. I get it 16:09
pasteling "cmarcelo" at 200.245.119.10 pasted "ghc-6.5 today trunk error" (8 lines, 1K) at sial.org/pbot/18983 16:11
audreyt fixed
cmarcelo: oy. multiversioning! 16:12
[particle] svn ups
svnbot6 r12224 | audreyt++ | * AR_CALL in agentzh++'s judy/win32 building code was bogus...
audreyt [particle]: you may need to nuke third-party/installer/
[particle] didn't realize judy source was in pugs tree
okay, i'll do that 16:13
audreyt the upstream judy hashtabl can't iterate keys
gaal [particle]: the pugsy power of the glom
audreyt spinclad added that; havn't yet mergedback I think
spinclad: have you reached upstream yet?
16:14 ruz joined
[particle] audreyt: looks better, no "Could Not Find ..." messages 16:17
audreyt cool
Limbic_Region particle - did you nuck third-party/installer? 16:18
s/ck/ke/
[particle] no, it didn't exist
third-party/installed/ did exist, left it
still building
audreyt k 16:19
[particle] Setup.exe: Pugs.cabal: openFile: permission denied (Permission denied)
Build failed: 256 at util\build_pugs.pl line 216.
Limbic_Region ok, good, was afraid I was once again "different"
particle has about a 5 minute head start on me 16:20
audreyt [particle]: that's a new failure
16:20 Psyche^ joined
audreyt do you perchance have another pugs.exe running? 16:20
[particle] i'll check
audreyt it's win32 overwrite protection firing
16:20 Psyche^ is now known as Patterner
audreyt usually means you have a lock to some file we are writing in the build process 16:20
[particle] right, figured.
no pugs.exe running. hrmm. 16:22
no setup.exe either
audreyt just "make" again?
[particle] already started :) 16:23
audreyt cmarcelo: fixed. try again
cmarcelo audreyt: unix-land libHSHsJudy-0.1.o only contais HsJudy stuff, no judy object files.. maybe i missed some -optc-static and -optl-static on HsJudy.cabal? 16:24
audreyt: will test it again..
svnbot6 r12225 | audreyt++ | * Try to work with GHC 6.5 multiversioning by declaring
r12225 | audreyt++ | our Main.hs is actually part of the Pugs package.
r12225 | audreyt++ | Reported by: cmarcelo++
gaal ah, I love the funcy type annotations to cast, that allow pointsfree style and fewer parens 16:25
[particle] "The Semicolon Wars" -- good article: www.americanscientist.org/template/...etid/51982
lambdabot Title: American Scientist Online - The Semicolon Wars
audreyt pugs> VAR(my $x) 16:27
({ref:<Scalar:0x1b64bd8>},)
yay
gaal whee 16:28
audreyt [particle]: better news? :) 16:30
(sometimes "chmod -R +w" might also help, with cygwin tools)
Limbic_Region is finally catching up to particle but he is also 1 minute late for $meeting 16:32
svnbot6 r12226 | audreyt++ | * Implement VAR(). It can takes more than one variables and
r12226 | audreyt++ | evaluates them all in lvalue context.
r12226 | audreyt++ | * Also use the faster (and safer) unsafeCoerce# into Int
r12226 | audreyt++ | instead of Word for the addressOf function.
TreyHarris [particle]: i'm curious as to how Perl 6 would be placed and color-coded in that diagram :-)
luqui weren't you going to bed audreyt 16:33
16:33 weinig|sleep is now known as weinig
luqui also, how can a postfix macro work? 16:33
I suppose it just isn't allowed to change the parse of its lhs
Limbic_Region audreyt - I am not having the same problem as particle - building fine
audreyt luqui: right, but otherwise the same 16:34
Limbic_Region wanders off to catch $meeting now
audreyt luqui: yeah, but [particle] reported buildfailure :)
luqui so you implemented VAR? :-p
audreyt yeah :p 16:35
?eval VAR(my @x)
hm, is it dead? :) 16:36
...indeed it is.
luqui rushes to check, but then realized the last time he started it was six months ago
audreyt :D
gaal audreyt: link fails on colinux too: usr/bin/ld: cannot find -lJudy
audreyt gaal: buildfailure? 16:37
pasteling "gaal" at 192.115.25.249 pasted "linux" (3 lines, 1K) at sial.org/pbot/18984 16:38
gaal oh wait! I had judy build errors, investigating 16:39
16:40 cmarcelo_ joined
gaal nnnno, those are just warnings. hmmm. 16:40
though I don't really see how the linker survives them: 16:41
pasteling "gaal" at 192.115.25.249 pasted "judy warnings" (83 lines, 5.2K) at sial.org/pbot/18985
audreyt gaal: it's just lack of prototypes I think 16:46
gaal huh, funny. a second make w/o changing anything gives the unrelated: 16:47
undefined reference to `PugsziEmbedziParrot_d9bm'
now, I bet nuking the stale parrot hi/o files and rerunnign make will work
so it may be the case that a first 'make' doesn't finish installing judy?
16:48 cmarcelo_ is now known as cmarcelo
gaal yes, that's exactly what happened. 16:49
did something happen to Prelude.pm? 16:50
Generating precompiled Prelude... system: [/usr/bin/perl util/gen_prelude.pl -v -i src/perl6/Prelude.pm -p ./pugs --output blib6/lib/Prelude.pm.yml]: No such file or directory at util/build_pugs.pl line 407.
audreyt uhm
./pugs -e1
see if it segfaults for you. 16:51
gaal no, works. 16:53
luqui audreyt, in latest pugs: pugs> VAR(my $x) 16:54
pugs: Numeric.showIntAtBase: applied to negative number -1227242168
followed by death
maybe word was a good idea after all. is there an unsigned you can use?
audreyt Word is unsigned
luqui unsigned 32-bit?
audreyt unsigned native int 16:55
svnbot6 r12227 | audreyt++ | * gen_output.pl - use shell redirection to see if it makes
r12227 | audreyt++ | prelude generation work
luqui not that 30 bit business...
so, yeah, why not word then?
audreyt I had a thinko. no reason 16:56
fixed
gaal: try r12227 16:57
svnbot6 r12228 | audreyt++ | * Pointers should be shown with unsigned ints (aka Word) after all.
gaal audreyt: '27 didn't help, but did reveal that something segfaulted. 16:58
maybe '28 would help :)
pasteling "gaal" at 192.115.25.249 pasted "/usr/bin/perl util/gen_prelude" (5 lines, 521B) at sial.org/pbot/18986 17:00
audreyt yay, so I'm not the only one who got the suddent segfault
gaal and idea what that '24751' indicates? 17:01
audreyt $$ perhaps?
gaal hmm yes
17:02 weinig is now known as weinig|bbl
audreyt apparently '28 fixed it for me. 17:02
gaal I'll try a clean build, bbiab &
btw is a 10-day-old parrot still OK? 17:03
luqui oh no, segmentation fault!
I am in the build failure crowd now
audreyt should be
luqui: with r12228?
luqui yeah 17:04
17:04 Limbic_Region joined
audreyt realclean worked for me, but this is weird 17:04
luqui during ./pugs -C Parse-YAML Prelude.pm
audreyt yeah. does "./pugs -e1" segfault for you too?
pasteling "cmarcelo" at 200.245.119.10 pasted "more ghc 6.5 trunk" (7 lines, 1.1K) at sial.org/pbot/18988
luqui no 17:05
audreyt so just at prelude generation?
luqui seems so
audreyt what does gdb say?
I can't dup the segfault now; but gdb here used to say on "bt" that stack got smashed
luqui hmm, I just ran it by hand and it worked 17:06
audreyt cmarcelo: nuke src/Main.{hi,o}
luqui: and then "./pugs" at interactive shell works? (including VAR?) 17:07
luqui yep
audreyt cmarcelo: try #haskell for help... I need to sleep now. probably -main-is or something can help you 17:08
luqui I find it odd: ./pugs -C Parse-YAML Prelude.pm > blib6/lib/Prelude.pm.yml
that is the command line, but what is the working dir of that command?
there is no Prelude.pm in root
audreyt the pugs dir
it's unlinked by the end
luqui oh
audreyt of genprelude run
luqui this succeeds: ./pugs -C Parse-YAML src/perl6/Prelude.pm > blib6/lib/Prelude.pm.yml 17:09
gaal segfaults at the same place after realclean. trying to gdb it... 17:11
audreyt I wonder if it has anything to do with the temp Prelude.pm 17:12
cmarcelo audreyt: ok
audreyt I almost would think that gen_prelude line 137 didn't work with timely destruction, so Prelude.pm was empty
but that seems very unlikely
luqui I saved the temp prelude so I can try to repeat 17:13
gaal i think there's a flag to not delete the interim prelude.pm somewhere....
audreyt --keep
luqui nope
no segfault
gaal I'm trying from a core...
luqui when I run it by hand with PUGS_COMPILE_PRELUDE enabled it segfaults 17:15
(all this is completely trivial, but I'm not familiar with the compilation process) 17:16
pasteling "gaal" at 192.115.25.249 pasted "looks judy related, all right..." (30 lines, 1.1K) at sial.org/pbot/18990
audreyt gaal: ok. let me triage this a bit 17:17
svnbot6 r12229 | audreyt++ | * Segfault triage attempt #1: 17:19
r12229 | audreyt++ | - JudyHS => JudyStr for the ID table.
r12229 | audreyt++ | - meanwhile, cut down unsafePerformIO in YAML instance.
audreyt gaal: r12229?
17:19 j1 joined
audreyt (also making on feather) 17:20
17:20 j1 left
gaal yay! it works 17:22
audreyt++
audreyt whew.
gaal pugs> VAR(my $x) => ({ref:<Scalar:0xb6877828>},)
audreyt cmarcelo: I think we have a pretty good reason to think that JudyHS binding is segfault-happy somewhere :/
cmarcelo when works, try a few times more (only generating the prelude)... just in case..
gaal cmarcelo: is there some stochastic stuff going on in judy? 17:23
luqui I'm currently building
gaal, segfaults can also randomly happen based on the contents of memory and whatnot, of course
gaal (otherwise why would regening the same code trigger a segfault sometimes?)
audreyt gaal: malloc is not deterministic 17:24
luqui gaal, how much C have you written?
audreyt here gdb says "corrupt stack"
gaal luqui: some.
luqui not enough to have written code which only segfaults sometimes?
anyway... 17:25
cmarcelo audreyt: when i get $home i'll look deeper in JudyHS... meanwhile we can trust Judy.StrMap, or no?
gaal of course, but usually there's more variation in IO and the process is not so much computation based.
audreyt cmarcelo: we can, and for ID interning it's just fine
17:25 weinig|bbl is now known as weinig
audreyt since type names with \0 in it is so degenerate 17:25
we don't need to consider it
but for general IHash, sometimes people do put \0 there 17:26
and we sholud probably let them
luqui audreyt's fix works here too
it would probably be a lose to transform \0 out of the strings for Judy's sake 17:27
audreyt cool. if you are feeling adventurous
then in Pugs.Internals
change both StrMap to Hash 17:28
and see if segfault appears again
i.e. I wasn't sure if it's unsafePerformIO inlining and laziness killed it
or JustHS binding killed it
luqui: Judy has two string maps; one allows \0 but doesn't guaranteed ordered key traversal
one disallows \0 but guarantees ordered traversal 17:29
the first one is also more memory friendly
luqui interesting trade-off
gaal cmarcelo: about ten preludes generated successfully here.
cmarcelo gaal: nice..
audreyt gaal: see "adventurous" above 17:30
I still would like to use Judy.Hash if possible.
cmarcelo audreyt: i mentioned strmap just until we found the possible bug um hash..
gaal audreyt: ACK.
cmarcelo in hash
audreyt danke.
if Hash is shown to be segfaulty
cmarcelo: can you prepare another patch that switches IHash to use StrMap? :D 17:31
should be a few lines of changes
cmarcelo ok.
audreyt if Judy.Hash segfaults gaal, then we probably should switch IHash to StrMap for now
and fix Judy.Hash later
gaal yes, it segfaults. 17:32
audreyt cmarcelo: s/prepare a patch/simply commit/
:)
cmarcelo (i know)
=)
audreyt good. :) I can finally rest in peace then :)
cmarcelo little slow because of net connection here..
audreyt cmarcelo++ gaal++ luqui++ agentzh++ for 0-day judyizing :) 17:33
&
[particle] thinks audreyt needs irc-sensitive sunglasses
gaal @google limor media sensitive sunglasses
lambdabot www.makezine.com/blog/archive/2005/...itive.html
Title: MAKE: Blog: Media-Sensitive Glasses
cmarcelo gaal: in a few minutes i'll commit a StrMap version of IHash, hope you'll be here to test it.. 17:37
gaal heh, I just changed it myself :) 17:38
didn't notice audreyt asking you to
please commit ahead, I don'
t know if my s/Hash/StrMap/ is all that's needed :)
well fwiw just doing that doesn't kill prelude generation 17:40
cmarcelo: what's a reasonable test case?
cmarcelo well. the api is identical, just need to change type IHash and some imports, if you have it done commit it. 17:41
gaal: doesnt kill prelude => no errors happen? or the opposite?
gaal cmarcelo: I mean it looks good
Limbic_Region fwiw - latest rev still wasn't building on Win32 - trying a realclean now to see if that help 17:42
[particle] l_r, i'm still failing with 'permission denied'... from earlier. 17:43
gaal prove t/magicals/env.t doesn't die
[particle] i'll be rebooting as soon as i install os patches
Limbic_Region particle - interesting, I actually had a successful build after *that* round of updates
I started failing again when more Judy hackery started happening 17:44
"that" being when yours failed due to permissions - mine built successfully
svnbot6 r12230 | gaal++ | * move over IHash to Judy.StrMap, for now, until Hash is stabilized.
17:45 mauke_ joined
gaal looking good with a bunch of tests from t/... 17:49
gaal wanders off... have fun everyone! &
Limbic_Region Judy is noisy these days 17:51
cmarcelo Limbic_Region: still failing? 17:55
17:55 rindolf joined
rindolf Hi all. 17:55
audreyt: here?
Limbic_Region cmarcelo - dunno, takes a loooong time to build after a realclean
Compiling Pugs.Val <----- where I am right now and have to leave for $meeting in 4 minutes 17:56
rindolf Hi Limbic_Region
Limbic_Region: I didn't see you on #perl lately.
Limbic_Region rindolf - I have been sick with mono and only connect to IRC (via CGI:IRC) at work 17:57
or rather, I don't plug-in during non-work hours
rindolf Limbic_Region: mono...
Limbic_Region mononucleosis - got to go 17:58
rindolf Limbic_Region: bye! 17:59
18:00 mauke_ is now known as mauke 18:04 mako132 joined 18:05 shachaf joined 18:06 mako132 joined
cmarcelo bbiab & 18:09
svnbot6 r12231 | audreyt++ | * 02-dash-n.t: "say" is now spelled ".say". 18:12
rindolf audreyt: I'm now installing Jifty and going to play with it. 18:16
svnbot6 r12232 | audreyt++ | * build_pugs.pl: skip HsJudy building when it doesn't need to be built. 18:18
rindolf perlbot: top 10 karma 18:20
perlbot The top 10 karma entries: C: 1182, iblech: 227, $i: 199, C/C: 176, audreyt: 163, fglock: 148, gaal: 130, stevan: 127, putter: 121, $x: 96
tewk d 18:28
oops
scw perlbot: karma scw 18:38
perlbot Karma for scw: 10
jabbot scw: scw has karma of 63
18:46 kane-xs joined 18:49 shachaf joined
svnbot6 r12233 | scw++ | Rule to Parsec translation 18:51
r12233 | scw++ | * rule2parsec.pl finished
r12233 | scw++ | - 'use' statement and 'use Haskell'
r12233 | scw++ | - rule implies :sigspace
r12233 | scw++ | * Literal.hs can be generated (with patches)
r12233 | scw++ | Related changes
r12233 | scw++ | * perl6WhiteSpace in Haskell to handle <ws>
r12233 | scw++ | * spacing issues in perl5 and parsec emitters
18:55 asz joined 19:01 Bit-Man_ joined 19:03 Bit-Man_ joined
[particle] daydreams of japhs with anonymous mmd submethods 19:06
19:07 Bit-Man_ is now known as Bit-Man
scw Left some questions of generated code 19:09
current solution is to apply patches after generation 19:10
I'll write down problems I met in by blog tomorrow
but I have to go to bed now
I think the first several line of rule2parsec.pl is clear enougn 19:11
for those who want to test it
scw bed &
19:27 shachaf_ joined
luqui ?eval VAR(my $x) 19:31
oh crap
anyway, this is the bug:
pugs> VAR(my $x).ref 19:32
::Array
seems a little wrong
19:32 frederico joined
TimToady make smoke seems a lot noisier now. 19:34
are we duping the error comments, or losing them from the smoker, I wonder... 19:35
wolverian Juerd, I get 7% packet loss to feather (says ping -c 100 -q). is that normal?
luqui or generating a lot more errors? 19:37
TimToady they mostly look like TODO, so I think they're same errors. 19:39
we'll see when the smoke finishes whether the html has any TODOs.
incidentally, I'm gonna rename FIRST. It's badly not-the-opposite of LAST, pedogogically. 19:41
FIRST will just mean, run me on loop initialization only.
luqui and what will be the new FIRST?
TimToady something else will mean setup state vars.
lots of possibilities, but maybe, since it has to run inline anyway 19:42
it's not a FOO {...} block
possibilities:
luqui hmm, that's interesting
TimToady reallyonce {...}
latch {...}
19:42 dduncan joined
TimToady sticky {...} 19:42
unless $anonymous++ {...} 19:43
luqui not: once {...}
I suppose it would be a nightmare to have: first {...}
TimToady unless (my $anonymous)++ {...}
same problem
luqui oh, right.
dduncan fyi, I'm having a Pugs build failure ...
TimToady but it seems like the missing primitive is anonymous symbols
luqui dduncan, are you up-to-date?
TimToady dduncate: realclean?
*dduncan 19:44
dduncan following a 'make realclean' and pull of the latest (12232) ...
luqui unless my++ {...}
dduncan I get: Compiling Pugs ( src/Pugs.hs, dist/build/src/Pugs.o )
ar: creating archive dist/build/libHSPugs-6.2.12.a
*** Building: util/runcompiler -hide-all-packages -package stm -package network -package mtl -package template-haskell -package base -package pugs-fps -package pugs-HsSyck -package HsJudy -package unix -package-name Pugs-6.2.12 -idist/build -Ldist/build -idist/build/src -Ldist/build/src -optl-Lthird-party/installed -o pugs src/Main.hs -lHSPugs-6.2.12 -threaded
collect2: ld returned 1 exit status
Build failed: 256 at util/build_pugs.pl line 320.
make: *** [pugs] Error 2
TimToady state $x desugars to something like "my $x ::= $*GENSYM" 19:45
luqui dduncan, I'm guessing it's a judy error, but I can't see where the error is in your barf.
dduncan I guessed it had something to do with Judy as well
TimToady plus "unless (my $GENSYM)++ { $x = initialize }
luqui TimToady, what about closure clone? 19:46
dduncan if things work for all of you, I could try a thorough cleaning by re-checking-out to a clean directory
TimToady it's a my var, so it clones.
oh, you mean the state.
dduncan s/clean/empty/
TimToady (there's two states here, really)
the original state var
dduncan so I will try that, then
TimToady and the init state of that state var
luqui yeah, something like that 19:47
TimToady anyway, just a heads up that FIRST is changing, mostly.
need to trot off to lunch with $job buddies. &
luqui kay
oh,
I think that the present FIRST is quite useful
TimToady sure 19:48
luqui so keep it short/simple :-)
19:48 hexmode joined
TimToady cache { ... } 19:48
or whatever, can desugar to something longer
luqui state {...} ?
TimToady I think that would be confusing.
luqui have a good lunch
TimToady later & 19:49
luqui dduncan, what arch are you on? 19:50
arch/os, rather
dduncan actually, something I distinctly remember, is that yesterday, about 30 commits back, some third-party stuff was automatically rebuilt by 'make' ... there was a segfault or something with pugs, so I did a 'make realclean' yesterday, then today did a pull and clean build, which did not rebuild third-party stuff, leading to the current state ... 19:51
is 'make realclean' supposed to clean up third-party stuff?
so that is rebuilt too?
luqui it ought to be, though I have no idea
dduncan or if it is, then 'make' isn't noticing that and isn't rebuilding
luqui find -name libJudy.a 19:52
dduncan still, I just did a revert -R of my whole checkout dir (after emptying it) and will try building from that ...
19:52 lichtkind joined
luqui make realrealclean :-) 19:53
19:53 vel joined
dduncan nah ... I just did rm -r ., then svk revert -R 19:55
can't get much cleaner than that
luqui, I'm on Mac OS X 10.4.6 PPC/G4, with Perl 5.8.7, GHC 6.4.1, if that answers your question 19:58
about arch/os
luqui ah. I don't think we've tested that one yet. 19:59
but we did have a windows break and then a linux break
dduncan so, I'm now starting a fresh 'make', and we'll see how it goes 20:00
as there should be no detritus left from earlier work, this attempt should more cleanly say whether something in the repository is incompatible or not with my system 20:01
and I can see that third-party stuff is indeed rebuilding now ...
here's something that may be an issue ... though it doesn't halt the make so it may just be a warning: 20:13
Compiling Pugs.Internals ( src/Pugs/Internals.hs, dist/build/src/Pugs/Internals.o )
hmm
Compiling Pugs.Internals ( src/Pugs/Internals.hs, dist/build/src/Pugs/Internals.o ) \ /tmp/ghc22774.hc: In function 's13ka_entry': \ /tmp/ghc22774.hc:4866: warning: implicit declaration of function 'JudyLIns' 20:14
20:20 frankg joined 20:27 shachaf_ joined 20:32 bpphillip1 left 20:42 fglock joined 20:48 shachaf__ joined
dduncan alas, I still get the error at link time 20:48
it says: /usr/bin/ld: can't locate file for: -lJudy \ collect2: ld returned 1 exit status 20:49
on the cleanest possible build
luqui find . -name libJudy.a
(.a is the extension used on mac, right?) 20:50
dduncan ./third-party/judy/Judy-1.0.3/src/obj/.libs/libJudy.a
luqui okay, so it built
it just doesn't know where to look perhaps
dduncan afaik, the naming scheme is the same for Unixen in general
and/or gcc environments 20:51
luqui it sure would be nice to have somebody who had any knowledge of the build system whatsoever around
well, except for the .so/.dylib thing
dduncan does the system build for you? and what is your os? 20:53
luqui x86-linux
and yeah, it (now) works
hm, third-party/installed looks interesting 20:55
20:55 shachaf__ joined
luqui try copying or symlinking libJudy.a to third-party/installed 20:55
dduncan you mean put it in: third-party/installed/libJudy.a ? 20:57
luqui right
20:57 zgh joined
TimToady my smoke seems to have worked ok; has the todo bits. 20:57
doesn't look like the speed changed significantly though. 20:58
luqui that is explained above
judy was integrated in,
simultaneously I submitted a patch which slowed everything down
they cancelled each other out (for about a 10% speed gain)
dduncan luqui, I didn't do that yet but ... 20:59
I had previously said 'make' again (without pulling again), and while mostly skipping stuff, it did cause a change in subsequent 'find' results
rather than just that 1 location, the file is now in 3: 21:00
./third-party/HsJudy/libJudy.a \ ./third-party/installed/libJudy.a \ ./third-party/judy/Judy-1.0.3/src/obj/.libs/libJudy.a
so I never copied it there, but it just ended up there after a second 'make'
luqui interesting
it appears that libJudy.a is automatically copied to third-party/installed by build-pugs.pl 21:01
however, it is done before libJudy.a is built
(stupid)
so I'll bet putting it there will fix it
that or re-running Makefile.P 21:02
*.PL
dduncan still with no pulling or other manual editing, I will now try re-running Makefile.PL and 'make'
but it sounded like you were saying the build process is faulty 21:03
as with the second 'make' that resulted in 3 files being found, this one gives the error: /usr/bin/ld: table of contents for archive: third-party/installed/libJudy.a is out of date; rerun ranlib(1) (can't load from it) 21:05
luqui ouch
that sounds like something I don't know how to do
maybe you should run ranlib ;-p 21:06
dduncan that's also something I don't know how to do
typically I expect the makefile to "do the right thing"
well, I'll try back later ... & 21:07
21:09 chris2 joined 21:10 kanru joined 21:11 zgh joined 21:28 weinig joined 21:32 cmarcelo joined
cmarcelo is correcting the silliest mistakes of the build.. sorry folks.. 21:33
nothingmuch seen audreyt?
jabbot nothingmuch: audreyt was seen 4 hours 3 seconds ago
svnbot6 r12234 | cmarcelo++ | * Correct silly mistakes on the build process. Still copying 21:37
r12234 | cmarcelo++ | libJudy.a to third-party/HsJudy because cabal doesn't accept
r12234 | cmarcelo++ | "../installed" as a extra-lib-dir, it eats the first dot.
21:48 shachaf__ joined 21:54 shachaf_ joined 22:00 weinig joined 22:07 Bit-Man_ joined, meppl joined 22:08 fglock left, fglock joined 22:09 kolibrie_ joined 22:10 notsri_ joined, hcchien_ joined, Bit-Man_ is now known as Bit-Man, clkao joined 22:11 ruz joined, stevan joined, kolibrie joined, Psyche^ joined 22:12 Bit-Man joined 22:19 HEx joined 22:24 Psyche^ is now known as Patterner
cmarcelo luqui dduncan: sorry for the mistakes on the build. I tested on linux + ghc6.4.2 with a fresh checkout from svn: perl Makefile.PL, then "make" and it works.. 22:24
luqui thanks. cmarcelo++ 22:25
dduncan I reran Makefile.PL and 'make' but, the error did not go away 22:40
I will do a fresh checkout if that would help?
22:41 chris2 joined
dduncan doing fresh checkout ... 22:42
cmarcelo looks in logs for dduncan error.. 22:46
dduncan my rerun wasn't prefixed by a make clean or anything 22:47
and since rebuilding the Haskell takes most of the time, I'll just refresh the whole checkout dir with clean copies 22:48
cmarcelo ok.
which env are you in? unix-like, win32?
dduncan now starting to make r12234 ... 22:50
unix-like
Mac OS X 10.4.6
afaik, it may just be something that will be fixed with a clean checkout dir
so no worries unless that doesn't work 22:51
22:51 jferrero joined
dduncan now starting 'make' ... it will take an hour or so, presumably 22:51
(4-year-old machine)
cmarcelo ok.. if you can, watch it until gets to Pugs compilation (to see if HsJudy goes fine).. 22:52
dduncan there is a lot of verbiage at that stage ... anything specific to look for?
its compiling Judy now 22:53
lots of C compiler output
or rather, shell output regarding its invocation of the C compiler
afaik, the Judy compile worked fine 22:55
make has progressed to other third-party items
cmarcelo dduncan: yep.. it's just calling "./configure; make" for judy c library, but very noisy indeed.
dduncan now compiling Pugs itself ...
cmarcelo ok.. so, if it breaks will break in an hour or so, but I think it should work fine.. 22:56
dduncan the Judy make ends with: creating libJudy.la
following that: (cd .libs && rm -f libJudy.la && ln -s ../libJudy.la libJudy.la) 22:57
before the 'creating': ranlib .libs/libJudy.a
cmarcelo seems ok... I gotta go, but paste any errors you get... & 22:58
dduncan oop, my mistake ... when I said it was compiling Pugs, I meant to say it was compiling Data.ByteString
but NOW its compiling Pugs
if it fails this time, I'll nopaste the whole session following the last svk revert 22:59
23:21 cjeris left 23:23 rashakil joined 23:32 jferrero joined 23:37 diakopter joined