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
|