pugscode.org <Overview Journal Logs> | smoke/win2k (occasional): xrl.us/fqum (867/3781, r2479), Mac OS X (62/4506, r2362), Linux (164/4642, 2484) | pugs.kwiki.org
Set by obra on 29 April 2005.
theorb takes a break. 00:00
ingy autrijus: sleep much? 00:03
autrijus no. :) 00:08
migration complete. 00:26
this is history-free though
so tomorrow I may still switch back
after consulting with foundry people
but for now, please commit away 00:27
Today's svn repo: tpe.freepan.org/repos/autrijus/pugs/ | pugscode.org <Overview Journal Logs> | pugs.kwiki.org 00:27
autrijus ok, r521 at tpe.freepan.org. 00:40
please help unTODO unexpected successes. :) 00:41
obra autrijus: have you thought about pugscode.org having a passthrough http proxy for the svn repo otd? 00:46
autrijus won't help because uuids differ. 00:47
and revs too.
so won't work that way.
obra point 00:49
autrijus ok. I need to sleep for real. 00:57
stevan: you can still get the svn logs from "svn log svn.perl.org/perl6/pugs/trunk"
stevan: please commit changelog to the tpe.freepan.org repo above.
zzz &
obra mm. properly nightshifted 00:59
stevan ingy: ping? 01:28
01:31 maluco_ is now known as CapoeiraA 01:37 Odin_ is now known as Odin-LAP 02:28 _meppl_ is now known as meppl
meppl of this channel here? colabti.de/irclogger/irclogger_logs/perl6 02:30
stevan meppl: yes 02:31
meppl ieks im public 02:33
stevan quick hide 02:34
meppl *hideout*
stevan autrijus: ChangeLog is done 02:38
but I cannot commit to freepan
so I emailed it to you
enjoy :)
meppl ive no new email 02:39
stevan meppl: I was refering to autrijus :)
meppl oh okee
ingy stevan: pong 03:28
autrijus svn.openfoundry.org/pugs/ back | pugscode.org <Overview Journal Logs> | pugs.kwiki.org 04:39
autrijus svn.openfoundry.org back | Preflight #1: xrl.us/fxsg | pugscode.org <Overview Journal Logs> | pugs.kwiki.org 04:54
autrijus please test Preflight #1 and report back any issues. 04:54
the full URLis
this preflight is unusual because we'll have ~8 hours of test time while I (finally) sleep. 04:55
autrijus waves &
meppl gute nacht 04:59
puetzk hmm... I sense an evil scheme to get me to look at more of the pugs code. Somehow I'd never noticed all the tolkein poetry until now :-P 05:08
puetzk supposes that gives a recommended order to look at things in :-)
gaal forum2.org/gaal/pugs/smoke-cygwin-6...ght-1.html 05:19
autrijus thanks. shortly after that I have uploaded under the same name, with the two unexpected success removed 05:21
gaal shall i resmoke? i have time for one more round. 05:22
autrijus no, I think that's just fine
thanks :)
autrijus waves & 05:23
gaal bon nuit :)
wolverian hmm, shouldn't 'for @foo { ... }' be parsed as 'for @foo -> $_ is rw { ... }', not as 'for @foo -> $_ { ... }'? 05:59
(ChangeLog says the latter)
06:58 gaal_ is now known as gaal|work
theorbtwo Is it too late to check in my haddock patches? 08:40
gaal|work theorbtwo, i think not; we've past preflight 1 but release isn't due till a few hours 08:41
08:47 castaway_ is now known as castaway
skew is there an optimized + profiled build? 09:01
does anybody here understand the stuff around primOp and op2? 09:06
gaal|work skew, i know the very basics
skew Okay
I just did a test that came up with some strange results
I'd like somebody else to help me interpret 09:07
I was slightly worried that op2 was doing the string match on the operator each time a piece of code was executed, rather than just when it was parsed
so I wrapped the right hand side of some operators mandel.p6 uses with trace 09:08
which only printed it's text once
then I wrapped op2 itself, and I'm getting lots of output 09:09
actually, I used unsafePerformIO, but I should use trace
Corion r2559 is all green on Win32 09:13
theorbtwo I'd appreciate if people could try 2560, and doing "make haddock" with it. 09:14
(Esp win32 people who nonetheless have haddock on their path, but any tests are very welcome.)
Corion Is haddock in the default ghc distribution? 09:15
NMAKE : fatal error U1073: don't know how to make 'src\IMC.hpp'
theorbtwo No. haskell.org/haddock/. There's even a win32 binary build. 09:16
I may have used a gnuisim in the makefile.
Dammit! 09:18
Anybody here understand make?
I need to convert %.hpp : %.hs @prereqs $version_h to portable make. 09:19
nothingmuch is proud of his sheep folding haskell code 09:28
but it's probably stupid
anybody want to review?
Corion autrijus: I think you broke t/pugsrun/09* - at least, it runs far fewer tests now and the commandline output still displays the any() junction instead of splitting it up into separate strings. 09:37
theorbtwo Well, I figured out how to do it... by editing the generated Makefile.
Now I have to figure out how to make Makefile.PL do it.
This makes me want to cry.
Corion theorbtwo: I guess that is why Schwern always cries "Makemaker must die" ;-) 09:40
theorbtwo Yes.
It is.
But for some reason, this blasted project is using it anyway. 09:41
Corion ... because Module::Build has even worse debugging capabilities than staring at a Makefile 09:47
(but I guess that porting it to M::B is something you could do/try, just to see how it differs from what we have now) 09:48
theorbtwo Corion: svn up and try again, please. 09:53
Corion src/Pugs/Compat.hs:15: pugs_config.h: No such file or directory 09:54
... so maybe a "make" before "make haddock" fixes that ? (trying)
theorbtwo It will.
I had to change from pattern rules to suffix rules, and suffix rules can't handle the extra dependency. 09:55
Corion theorbtwo: aah
skew I made a profiled-optimized target by copying the two lines of make for the optimized target in Makefile.PL. It seems to work, but is there anything else I was supposed to do? 09:56
Corion Yep - make && make haddock works, except that I don't have haddock installed :) 09:57
gaal|work hey. i got yaml_harness.pl -j 2 working. anyone want to test? 09:58
theorbtwo Yey!
castaway cool!
gaal|work Corion - it doesn't wokr on pure win32 though :(
castaway pats theorbtwo on the back.
Corion gaal|work: Bah. I have a machine that pretends to be 2 CPUs, so I could try, but if it doesn't work ... :)
gaal|work no fork, no fun. 09:59
Corion gaal|work: You could use "start" to start the process(es) separately. 10:00
(communication doesn't happen then though)
gaal|work patches welcome :) i won't ci this because i have to got for a few hours and this is a bad time for b0rking the build 10:01
but i'm u/ling it for tests
Corion I heard there is going to be a release ... :)
gaal|work yeah, muchos speedupos.
skew what is it, 40% total since the last one? 10:02
or was that after the 2x from strictness? 10:03
castaway strictness is faster? 10:05
Corion castaway: Yes, because strictness can use native datatypes (or that's what I think the explanation was)
skew strictness avoids indirection 10:06
and thunks
castaway sneaky
skew does pugs use laziness for anything?
lightstep yes 10:07
for almost everything
Corion ... like, lists :)
1..Inf works in Pugs. Or it should. Some day. :)
theorbtwo Well, except we should roll our own lazyness for that. 10:08
skew No, I mean in the interpreter
theorbtwo Lists currently use haskell-level lazyness, but that should change.
Corion I like to think of the interpreter as sweet syntactical candy over Haskell. That may be wrong already though.
theorbtwo Quite wrong, I think. 10:09
gaal|work forum2.org/gaal/pugs/yaml_harness.pl - concurrent yaml harness 10:11
use with util/yaml_harness.pl -j 3
env PUGS_TESTS_CONCURRENT=3 make smoke
theorbtwo Oh, BTW, I figured out why the versions from the yaml harness and src/Pugs/pugs_version.h don't always match. 10:12
gaal|work on my box at work it gave a 40% speedup for the test run.
cool! why? 10:13
Corion gaal: POSIX.pm is available on native Win32 too :)
gaal|work is fork?
Corion gaal|work: Yes, kinda. Except that it doesn't work except in specific cases.
theorbtwo The pugs_version thing generates it from .svn/entries; the yaml harness uses svn info.
Corion ... but if all you do is run the harness in parallel, it might Just work
theorbtwo .svn/entries doesn't exist if you use svk. 10:14
(Somebody who does use svk should fix that, probably... I have no idea what to do in that case.)
Corion downloads and tries
clkao should use 'svk ls' to get the entries 10:15
nothingmuch gaal++
gaal|work i have to go now. see y'all later!
Corion yah. fork emulation and system() don't play well together (resp. fork() emulation blocks all but one thread) 10:22
... just like in Pugs at the moment :)
Hah. And by inserting a judicious "sleep 200" before gather_results(), I get 100% CPU usage and the tests seem to run in parallel 10:27
theorbtwo Hm, I suppose I should get around to installing the Test::TAP::* thingies, and start actually running the tests again at some point. 10:28
Corion ... but now, the spotty fork() emulation of Win32 Perl strikes again. :(
Weird. With 2 parallel tests, one of the tests starves the other, but with three, they run pretty much round robin, as they should (100% CPU usage). So it Just works on Win32 10:38
ingy: Your Spiffy tests are newline sensitive 10:39
nothingmuch is there a nice way to specify that a graph is a supergraph of another? 10:44
i.e., g1 has all the nodes and edges that g2 has, but possibly more
basically g2 is just g1 with some elements deleted 10:45
(i'm looking for a term, or a module, or a concept, or anything to get farther than I am right now)
lightstep nothingmuch, say that an injective homomorphism exists
nothingmuch please wait while i lookup that term 10:46
lightstep חד חד ערכי
if f(x)=f(y) then x=y
theorbtwo An injected hormone?
nothingmuch lightstep: i have 3 pts of math, and no math education beyond that, so it won't help even in heb ;-) 10:47
lightstep: okay, what's the context of that thing?
lightstep a graph is a pair of sets: vertices and edges. f is a mapping of vertices from the first graph to the second
autrijus greetings. 10:48
lightstep the "injective" part is that two distinct vertices in g1 map to distinct vertices in g2
theorbtwo Greetings, autrijus.
castaway mornin autrijus
autrijus so preflight is largely uneventful?
theorbtwo make haddock should work now.
Corion a homomorphism is a function f(X) with f(x+y) = f(x) + f(y)
nothingmuch hola autrijus
autrijus theorbtwo: yes, and I improved it a bit
lightstep Corion, that depends on context
theorbtwo Even on backwards platforms that don't use GNU make.
Corion ... and gaal hacked in but didn't commit parallel smoking. And it half-works on Win32
nothingmuch lightstep: so what is the question? 10:49
works very well on OSX
autrijus why not commit?
theorbtwo: yes, like my platform :D
Corion autrijus: Dunno - he's afraid of breaking preflight :)
nothingmuch if i understand correctly it does exist
autrijus aww, that's very not pugslike :) 10:50
lightstep nothingmuch, whether an injective homomorphism exists. a homomorphism is a function f such that there is an edge <a,b> in g1 if and oonly if there is an edge <f(a),f(b)> in g2
autrijus if it breaks, we deal, or we ship the old version
lightstep nothingmuch, that's the mathematical statement that g is a subgraph of g2
nothingmuch right 10:51
now on to implementation ;-)
scook0 theorbtwo: just finished make && make haddock; works fine
autrijus I'll commit it.
theorbtwo Great, scook0! 10:52
nothingmuch basically i need an efficient way to crete a set of edges, that represents which edges of g2 are in g1
scook0 now work on the actual docs will be easier -- thanks!
nothingmuch will add make haddock to smoke 10:53
theorbtwo You should possibly CI your docs.
nothingmuch lightstep: my limitations is that I need to know: the border of the subgraph, e.g. nodes which don't inherit all of the edges, and the subgraph itself efficiently 10:54
Corion The parallel make doesn't work as-is on Win32, becuase the fork() emulation does something wrong. I'll rewrite it as parallel processes there.
... ugh. Which requires parameter/config passing to an external program. :( 10:55
lightstep nothingmuch, it seems r^Hhard
nothingmuch that's the reason i'm here ;-)
autrijus nothingmuch: Data.Graph.Inductive :)
I think it gets you those for free
scook0 theorbtwo: I don't have commit yet -- can I get it? 10:56
autrijus scook0: sure! your email?
scook0 [email@hidden.address]
autrijus invitation sent. welcome aboard!
scook0 autrijus: cheers!
autrijus scook0++
theorbtwo Don't forget to add yourself to AUTHORS. 10:57
scook0 ok
autrijus right. if you do it soon enough, you'll make the 6.2.2 list :)
welcome to be our 70th committer
theorbtwo Reminds me, I should check on the AUTHORS file before release.
autrijus sure.
autrijus is running concurrent smoke 10:58
skew autrijus, could 11:02
could you explain how opN is supposed to fit into the interpreter? 11:03
autrijus skew: gladly
skew: it goes like this
when you say
print 123
it's parsed as 11:04
(App "&print" [] [Val (VInt 123)]
skew I stuck a trace around op2 (the one that takes a string) with unsafePerformIO, and it looked like it was being called once per operator per loop in mandel
autrijus the reduction rule of App
looks up the &print in the lexical environment 11:05
and the global pad
the pad was generated with genSym
(or genMultiSym)
on Prim.hs line 1059
lightstep nothingmuch, this might be of interest: www.iam.unibe.ch/~fki/publications/...PR2002.pdf
autrijus it looks up the subBody associated with the VCode object associated with &print symbol
where it was defined as "Prim f" 11:06
where f is defined on lin 1084
ahh. I know why it's slow.
it should definitely run the case analysis outside "f"
and only return a polymorphic-to-argument version when its arity is 1
otherwise it should fetch the "op symStr" 11:07
skew I know you suggested starting with the things that took about 6%, but I figured I would look at op2 taking 50% first
autrijus much coolness.
skew let's see what my optimzied+profiled build shows
(just finished compiling)
ah, this is much more sensible 11:08
nothingmuch nothingmuch.woobling.org/pugs_test_status/ <-- parallel build takes ~55% off the time 11:09
3 jobs, 2 cpus
skew op2Number at 13.2%, findList 10.4%, reduce 8.9%, compareList 6.8%, etc. op2 down at 1.6%
-O1 and -prof seem to get along just fine, by the way
autrijus cool. 11:10
skew so was there some reason op2 would be called repeatedly? 11:11
oh, those value constraings
autrijus I think under -O0 the "f" doesn't reduce away the constraints
I'm also thinking that we should build with -O by default
skew still, op2 should only be called when building the global pad, right? 11:12
autrijus skew: the problem is "Prim f" contains the "f" which may be called repeatedly
one way to reduce it ourselves will be saying
"Prim $ case arity of ..."
skew isn't f the result of calling op2, though?
autrijus it is, but maybe ghc under -O0 doesn't optimize it
and so blindly re-call op2
skew even unoptimized it would put a thunk in the prim 11:13
and then only evaluate it once
autrijus er. I have no idea. :-/
skew oh, f is a lambda that calls prim 11:14
no wonder op2 gets called a lot
autrijus right.
I think under -O it gets optimised away.
skew I think it probably gets pulled out 11:15
okay, I understand what was being slow, and how GHC fixes it
theorbtwo Anybody know who "adehohum", "gcomnz", "mattc", and "tobez" are?
iblech pastebot.nd.edu/561 11:16
skew why does findList need to walk a tree at all?
it looks like there is a fixed class hierarchy 11:17
theorbtwo Presently, but that's a todo that should be fixed.
autrijus skew: because envClassTree may change.
and in order for it to change, we need to make it a Graph :) 11:18
nothingmuch graphs graphs graphs 11:21
theorbtwo Hm, I feel like doing something different. 11:24
castaway uhoh ;) 11:25
skew I'd like a script for keeping only the expensive parts of the call tree, leaving the ancestors 11:26
theorbtwo nm, while testing Test::TAP::Model: t/comprehensive....ok 22/113Operation `eq': no method found, 11:27
left argument in overloaded package Test::TAP::Model::Subtest,
right argument in overloaded package Test::TAP::Model::Subtest at /usr/share/perl/5.8/Test/More.pm line 1037.
Should I care? 11:28
skew If I add a new build, do I need to do anything more than adding a new target in Makefile.PL? 11:30
castaway you may need to scrifice code to the gods, or some such 11:31
skew I was hoping to avoid that, if possible
theorbtwo No, but you do have to write portable make rules.
skew I thought we lambdafolk were already pure anyway
castaway hrrm, could be tricky..
theorbtwo Also, don't forget to backslash approprately.
skew okay, well I just copied the optimized target, changed the name, and stuck in -prof 11:32
theorbtwo It's not your purity that is in question, but that of ExtUtils::MakeMaker.
You should be safe, then.
skew it corrupts everything it touches?
theorbtwo Yes.
Often through several levels of indirection, even. 11:33
autrijus * optimized build is now default.
skew does anybody have suggestions for a script to prune profiling results?
autrijus please test to see it doesn't break things.
I'll be back in ~2hr
and release 6.2.2
theorbtwo Later. 11:34
skew this is the sort of stuff perl was created for, right?
castaway See Module::Build 11:35
nothingmuch is anyone sending me messages?
castaway (some people think its the bees knees, and others go "ick" ;)
not me
nothingmuch thinks client is has become confused
theorbtwo Not me, though I did ask you a question a couple of minutes ago.
OTOH, I didn't actually say "nothingmuch", just "nm". 11:36
nothingmuch ah, i see
i think that wasn't this time the dock icon bounced
theorbtwo BTW, "make smoke" throws warnings if there is no .smoker.yml file.
nothingmuch anyway, the reason is that Test::More is prolly out of date
theorbtwo Oh. 11:37
nothingmuch i think it's doing is($obj, $obj) which works for me
that test checks the various extractions of data sets
skew A -> I 11:54
hmm, maybe I should use different terminals for different channels... 11:55
webmind ? 11:56
skew well, that A -> I was pointing out a typo to somebody in #haskell
I'm looking at a channel and the stuff I type goes in the minibuffer at the bottom, so I know irssi has focus 11:57
sometimes I forget to check if it's going to the right window, though 11:58
castaway ;)
make the "#XXX" bit in the statusbar a brighter colour?
skew has anybody written a perl pugs-profile-pruner for me yet?
webmind hmk
nothingmuch what is the name for when the universe splits in two 12:04
into two alternate universes
for each possiblity?
castaway umm, parallel universes ? 12:05
nothingmuch that's the result
autrijus er, sorry, got conflict, didn't really commit the optimnised fix
skew nondeterminism?
nothingmuch i mean the event
autrijus will do so in a bit
autrijus is @ dinner table
theorbtwo The standard interpretation of quantum physics, IIRC.
skew autrijus: has IRC @ dinner table?
theorbtwo Or is that the nonstandard interpretation?
nothingmuch autrijus: then be nice to your hosts/guests and take a break ;-)
skew that's the many-worlds interpretation 12:06
castaway autrijus has IRC/computer *everywhere*
theorbtwo Ah, thank you, skew.
skew I think the standard is the Copenhagen interpretation, where the wave function collapses
but lately I think everybody believes in unitary evoluation with classical mechanics coming from decoherence 12:07
nothingmuch i see "splitting" 12:08
nothingmuch thought there would be a cooler word 12:09
autrijus :)
it's getting more and more difficult to find a dinnerplace in taipei that has no wireless access
theorbtwo You could not take your laptop. 12:10
autrijus I think Copenhagen and Many-worlds has been disproved by Afshar's experiment? 12:11
er, maybe just copenhagen
castaway go out without hardware? the horrors!
autrijus but I know nothing about this, so it's pure hearsay :)
theorbtwo You appear to know a lot more then I do. 12:12
skew well, the big link on users.rowan.edu/~afshar/ goes to a uselessly vauge description of the experiment 12:13
autrijus skew: en.wikipedia.org/wiki/Afshar_experiment
rolling preflight #2 now 12:16
anyone has anything outstanding in progress to declare? :)
theorbtwo declares that he is horrible at tetris. 12:18
autrijus :D 12:19
try bastet some time.
I love that game.
(and, less self-abusingly, liquid wars)
iblech autrijus: Did you look into pastebot.nd.edu/561 ("Interactive Pugs forgets lexical variables")? 12:21
autrijus no I did not. 12:22
Aankhen`` 􏿽xABautrijus􏿽xBB: Hadn't you decided on that behaviour? 12:34
I seem to recall you saying that variables declared with "my" would be forgotten in the interpreter.