01:24 FROGGS_ joined
[Coke] m: my $foo; "" ~~ m/$foo=(.)/; # distilled from t/spec/S05-capture/alias.t 01:35
camelia rakudo-moar 05f006: OUTPUT«===SORRY!===␤QAST::Block with cuid cuid_1_1408325735.46198 has not appeared␤»
[Coke] r: my $foo; "" ~~ m/$foo=(.)/; # distilled from t/spec/S05-capture/alias.t 01:37
camelia rakudo-jvm 05f006: OUTPUT«(timeout)»
..rakudo-parrot 05f006: OUTPUT«===SORRY!===␤Could not find sub cuid_1_1408325832.00691␤»
..rakudo-moar 05f006: OUTPUT«===SORRY!===␤QAST::Block with cuid cuid_1_1408325845.5924 has not appeared␤»
03:48 itz joined
nwc10 jnthn: PASS (except just t/spec/S32-io/IO-Socket-Async.rakudo.moar and t/spec/integration/advent2009-day06.t) 05:24
05:33 dalek joined
sergot hi o/ 06:56
06:58 zakharyas joined
FROGGS jnthn: morning... v5 works now out of the box on windows, though, I cannot reproduce the problem as of yesterday 07:03
timotimo [Coke]: that looks like we've optimized away a block (possibly through inlining) but didn't create the stub block that the compiler wants - we have to do that to get rid of this exact error message 07:07
07:09 brrt joined
dalek arVM: 0cc88e4 | jimmy++ | src/moar.c:
cleans up
07:21
07:35 klaas-janstol joined 08:12 FROGGS[mobile] joined
dalek arVM: 9843995 | jimmy++ | src/moar.c:
cleans up
08:30
08:32 jimmyz joined
jimmyz sorry, I pushed an email which I don't want to open, if you can't pull moarvm, please do 'git reset HEAD^ --hard' 08:34
FROGGS[mobile] s/email/commit/ and s/pull/build/? 08:38
jnthn so confuse... 08:43
nwc10: Yay, guess that means the use-after-free is gone :) 08:44
nwc10 it sure seems so
dalek arVM: 0e29ce6 | jimmy++ | .gitignore:
update .gitignore
09:03
09:07 brrt joined
brrt uhm, is there a reason for me to fail the underscores spectest? 09:07
dalek arVM/moar-jit: c3670a2 | (Bart Wiegmans)++ | src/6model/reprs/P6 (3 files):
Create storagespecs as needed for P6num and P6int
09:08
brrt or,in other words, what are the 'usual sins'? 09:12
nwc10 brrt: what I saw earlier was just 2: irclog.perlgeek.de/moarvm/2014-08-18#i_9201881 09:13
and I was a bit surprised
there's an async IO test that I didn't think had been fixed yet
it flaps
jnthn brrt: I've not seen that fail... 09:14
brrt hmm
maybe my rakudo is out of date with the specs 09:15
nwc10 www.theregister.co.uk/2014/08/18/or..._sparc_m7/ -- “32 of these chips can be connected in an SMP configuration. A potential system with 32 chips will have 1024 cores and 8192 threads and 64 TB of RAM.”
(does not say how much blood you need to pay that Larry to run Oracle on it)
however, lots-of-cores appears to be the future
jnthn :D 09:16
nwc10 actually, El Reg author fail - that's usually the sort of cynicism that they bring to a story. This suggest that it's a recyled press release, rather than actual work 09:18
brrt works now 09:20
the failing spectest, that is 09:21
brrt is seeing much the same errors 09:25
dalek arVM/moar-jit: a77b86a | (Bart Wiegmans)++ | src/jit/graph.c:
Re-enable objprimspec
09:29
brrt i'm happy about this branch. if nwc10++ or any others can test it, i'll merge it with master 09:30
also, this has objprimspec
09:53 klaas-janstol joined
nwc10 brrt: Odd. Build of NQP for me blows up pretty soon with 09:54
Unhandled exception: This representation (P6int) cannot unbox to a native num
10:04 brrt joined
brrt nwc10: really? 10:05
that's odd indeed
nwc10 RLY 10:06
this is where I miss a sarky bot
I have checked between the keyboard and the chair, and I don't think that the problem lies there 10:07
brrt hmmm
you have commit a77b86afce147c784b7cb390ec66bb6db05ea6bb 10:08
?
just checking to be absolutely super sure :-)
nwc10 I'm at a77b86afce147c784b7cb390ec66bb6db05ea6bb
This is MoarVM version 2014.07-417-ga77b86a built with JIT support 10:09
brrt maybe if i build without optimize=0
nwc10 this is also a full clean build
jnthn hm, I checked out moar-jit, nmake, and did a clean build of NQP and it worked... 10:10
nwc10 odd
brrt hmm 10:11
nwc10 OK, optmised build past NQP into Rakudo 10:12
brrt huh, whcih commit is that? ga77b86a
nwc10 so, strange
This is MoarVM version 2014.07-417-ga77b86a built with JIT support
I don't know why git likes the g, but it seems to be standard
brrt yeah i have the same commit
oh i see 10:13
nwc10 brrt: OK, build with the --asan flag for MoarVM 10:17
that seems to be what is making NQP behave differently
arse 10:25
git submodules @expletives git clean @more-expletives half-arsed-bodge-job 10:26
OK, actually that's not it this time 10:28
but the rant stands
brrt hmmm 10:29
nwc10 OK, now that rant applies as I retry different build configs
brrt: try adding --asan flag to MoarVM Configure.pl line 10:30
that seems to be all that is needed to create unhappiness
brrt yeah, i'm trying :-) 10:37
i see
hmm
ok, that's good to know 10:38
nwc10 you can recreate it? (even though it's not yet clear why)
brrt yes, i can
hmm 10:39
jnthn ASAN causing a behavioral change is...weird. 10:40
brrt ASAN zeroes stuff out
jnthn ah, true 10:42
timotimo maybe there's a way to fill stuff with random values instead to make it extra-explode
brrt hmm, that's not necessary i hope 10:44
nwc10 valgrind...
paste.scsys.co.uk/416440 10:45
(was running, finished just as I was about to paste the partial results)
that might be the problem
anyway, it needs fixing
timotimo you check repr_data->bits and storage_spec->bits? i suppose that's correct, though 10:48
maybe that should be if (!repr_data->storage_spec) 10:49
11:10 brrt joined
brrt aha, i see 11:11
that is probably it 11:12
but, where are all repr_data's allocated?
timotimo i thought it gets allocated together with the stable that first uses that "kind" of the repr in question? 11:13
brrt hmm 11:14
timotimo type_object_for does it 11:15
brrt i'mma be fixing that 11:18
timotimo .o( do we build super many repr_data instances, instead of re-using them? ) 11:19
jnthn The point of repr_data is stuff that varies between types goes in it 11:20
timotimo right, but we probably have many instances of 64bit P6int
well, the repr_data is usually pretty small 11:21
jnthn Uh, it's per *type* 11:22
Not per instance.
timotimo er... i meant instance of repr ...
anyway, forget what i'm saying; i'm probably confused 11:23
jnthn NQP has an int type, and Perl 6 has an int type, so we're maybe looking at a tiny bit of duplication. :)
But yeah, we're looking at a handful of bytes.
I'd imagine the code to reliably cache/share them would take more bytes :)
timotimo aye, probably would 11:24
jnthn On the JVM it's a little different, because we generate a JVM class per P6opaque. That's a good bit more heavyweight, so those do get shared.
(The sharing is related to the "form" and ignorant of stuff like attribute names, though) 11:25
timotimo ah
brrt nwc10++ 11:28
timotimo would it be sensible to mention in the weekly that you're working on asynchronous Subprocess management in preparation of your next talk, jnthn?
nwc10 me? I thought all I did was drink too much coffee and heckle :-) 11:29
brrt jnthn: i should note, though, is there a good reason for having separate p6int and p6num and nqpnum and nqpint and whatever types
i.e.
boxing native objects; why should we have more than 1 implementation?
timotimo is that because you can mix into the Int and Num classes that are built around p6int and p6num? 11:30
brrt having only a single implementation is pretty much more efficient accross the board - no pointer lookups, no setting them up, no deserialization / serialization
jnthn timotimo: Well, "in prep for the talk" I dunno, but async process management is in place and, afaict, working. :) 11:34
timotimo oke :)
brrt: wait, don't we actually use p6int and p6num in both nqp and rakudo?
well, we have BOOTInt and p6int i suppose
jnthn brrt: int in Rakudo should inherit from Mu - as a type object, at least. Granted it flattens away elsewhere.
timotimo oh, p6int is the repr, but we have our own class using that repr in nqp and rakudo 11:35
jnthn The NQP type can't do that :)
Right
One REPR, multiple types based on it.
timotimo why am a so derp right now?
jnthn It's Monday.
brrt that is a good reason 11:36
dalek arVM/moar-jit: 96878fc | (Bart Wiegmans)++ | src/6model/reprs/ (4 files):
Fix unitialized use in P6int / P6num
brrt nwc10 :-) if you would
nwc10 anything to avoid thinking too hard about logging :-) 11:37
(was considering "make tea")
brrt whats wrong with logging? www.tgbuildings.co.uk/uploads/backg...d_logs.jpg 11:39
nwc10 nothing. I'd like it if we had it already, rather than needing to work out how to retrofit it 11:40
timotimo oh, is the jit still ignorant of OSR? 11:41
brrt no
jnthn No, it knows it well
brrt jit knows OSR all ight
timotimo nice
brrt right
timotimo when moar-jit gets merged, i'll probably run benchmarks again :)
jnthn nwc10: Mostly I'd just say try to use an existing logging framework, rather than inventing Yet Another One. :)
nwc10 jnthn: oh yes, it's "which existing wheel is the best fit?" not "everything sucks. We must make a new one" 11:42
jnthn remembers $client that wanted to use a flexible, extensible logging framework AND wrap it up in their own API too "just in case"...
nwc10 brrt: NQP tests all pass. Starting on Rakudo 11:43
brrt \o/
jnthn Cool
brrt++
nwc10 jnthn: oh, nice. And they didn't think that they could meet all their requirements by having the name of the logging class(es) in a config file (or one place) and, if the future needed it, faking up the bits of the API that they actually used?
brrt OT: how nice is it that the EU is paying farmers 125 million to destroy vegetable crops? 11:45
(euros, that is)
timotimo do we have a plan yet for how to allow jitting of extops? would we have one jit function per extop or one per extop library?
brrt because vegetables are /soooooo/ cheap
jnthn nwc10: Apparently not. Nor that, given they're in C#, things are static enough you can find all use cases anyway...
brrt jnthn++ fixed extop jitting 11:46
jnthn s/use cases/usages/
brrt as long as they all take register arguments
jnthn All the Rakudo ones do.
brrt well, that's solved then
is there any other user of moarvm? :-P 11:47
timotimo wait ... do we jit extops already?
jnthn brrt: I'm guessing this is due to the reduction in demand due to counter-sanctions?
timotimo: yes
brrt yeah
timotimo how did i miss that?!
nwc10 oh. They could make vodka from it
brrt they could make $anything from it
timotimo they could catapult it to africa or south america
nwc10 pigs! Lots more lovely bacon
brrt frankly i'd say that vegetables are expensive enough as it is
i can't concur with the bacon argument due to environmental conscience :-) 11:48
nwc10 yes, I was thinking as I typed that, that it would need a bunch of other resources
brrt basically, if we all just didn't eat meat, we'd have 50% less environmental problems, just like that
nwc10 vodka probably does too, but hopefully not as much
brrt no
jnthn I'd much rather they were sold at a subsidy rather than destroyed. On the other hand, EU invervention to support farmers is better than a bunch of bankrupt farmers and the social consequences that go with it. 11:49
brrt (i say this as a meat-eater)
well, yeah, i'd rather have that too
timotimo oh, did we get closer to figuring out what caused the p6bool + decont thing? where the decont should have been eaten? 11:50
brrt or make soup out of it
also off-topic: my experiences with clang on linux aren't nearly as nice as those with gcc 11:53
i.e. missing symbols even without optimization
much slower compilation
jnthn brrt: Hm, according to the BBC article I'm reading on it, "The funding is compensation for fresh produce which will not be sold. Instead it will be distributed free to schools, hospitals and other institutions." 11:57
brrt hmm
that's better than the earlier plans, in which it would be destroyed 11:58
yes, dutch media actually discussed destroying food so as to not let market prices drop
brrt is now looking at jnthn++'s reactive programming talk 12:03
nwc10 brrt: PASS (t/spec/S32-io/IO-Socket-Async.rakudo.moar failed) 12:04
timotimo nice!
brrt yay, merge time methinks
dalek arVM: c86ee62 | (Bart Wiegmans)++ | src/ (51 files):
Refactor get_storage_spec

Return pointer rather than struct, which is very difficult to JIT correctly due to ABI differences between windows an posix.
Doesn't work entirely because somehow we end up with a zeroed- out storage spec for p6num. Will continue investigation tomorrow.
12:05
arVM: c3670a2 | (Bart Wiegmans)++ | src/6model/reprs/P6 (3 files):
Create storagespecs as needed for P6num and P6int
arVM: a77b86a | (Bart Wiegmans)++ | src/jit/graph.c:
Re-enable objprimspec

Add a GC debugging aid.
Allows extra checks to be turned on that trap some bogus additions to the GC worklist. Got tired of re-doing this each time I debugged GC issues, so now it can be turned on with a #define.
brrt dalek died?
timotimo yeah, excess flood ;) 12:06
brrt :-)
who did that :-o
jnthn hopes the continual rain here doesn't cause excess flood... 12:07
timotimo aye
brrt sofia, for one, should be warm still 12:08
jnthn Aye. It's warm enough that I'm glad my hotel has air con :) 12:10
lizmat forecast for Fri/Sun: 27C and rain 12:19
nwc10 brrt: master PASS (t/spec/S32-io/IO-Socket-Async.rakudo.moar failed) 12:23
brrt yay 12:24
12:31 jnap joined
brrt bbiab 12:38
12:54 klaas-janstol joined 12:56 jnap joined
nwc10 I guess I'm seeing the progress of the JIT as the "Stage parse" times on an ASAN build drop 13:10
because that means progressively more code that gets run is JIT generated, without all the ASAN overhead :-) 13:11
13:12 ggoebel11111111 joined
timotimo oh, is that actually how asan works? o_O 13:13
jnthn So JITted code is unsanitry? :) 13:14
jnthn And the Panda explosion is in MVMCompUnit, adding an SC...
13:30 brrt joined
jnthn Gah. Turns out that duplicate entries in the gen2 -> nursery set is not actually OK... 13:37
In the addition needs guarding
nwc10 jnthn: PASS at 12a0a5ba88af27164184f53376a823a3651a1122 (other than t/spec/S32-io/IO-Socket-Async.rakudo.moar) 13:42
dalek arVM: 31723cd | jnthn++ | src/ (2 files):
Avoid duplicate additions to inter-gen set.

This was wrongly handled in one place, and handled with duplicate code in two others.
13:48
jnthn grr 13:51
brrt still broken? 14:00
jnthn No, what I'm moaning about on #perl6
Panda works now 14:01
And I wanted to install NativeCall
FROGGS: ^^ probably deal with v5 too
14:03 klaas-janstol joined
FROGGS ohh, nice :o) 14:04
jnthn++ # makes the world a little bit better while others are stuck in $dayjob
(btw, I hate ssl/tls and certs)
jnthn Enjoy it; I'll be stuck in a $dayjob gig in September... 14:05
14:06 pmichaud_ joined
FROGGS :/ 14:17
14:19 avuserow joined 14:21 FROGGS[mobile] joined
brrt does anybody here think arriving at the airport 15 minutes before the plane will fly is a good idea? 14:22
it /ought/ to be doable
jnthn Uh, unless your airport is really tiny that sounds like a bad idea...
Most of the time they want you to be boarding 15-20 mins before the flight... 14:23
brrt yeah, i think so too
problem is i can't get there earlier from my home
jnthn Which airport, ooc? 14:25
brrt eindhoven
jnthn How far are you from it? 14:26
I'm guessing your flight is at some terribly early hour?
brrt 3 hours of train travel
yes
tadzik it's a pretty bad idea :/ 14:27
especially if you consider things like "train may be late"
brrt uhm yeah
14:28 klaas-janstol joined
jnthn Well, seems its second largest airport in NL too, so it ain't going to be small :) 14:29
Can somebody try this: 14:34
perl6-m -Ilib -MNativeCall -e "say +OpaquePointer.new(8791697968848)"
tadzik 8791697968848 14:35
jnthn m: my int $x = 8791697968848; say $x
camelia rakudo-moar ddfb57: OUTPUT«8791697968848␤»
jnthn Windows, y u print 4194881232...
14:36 klaas-janstol joined
klaas-janstol brrt: you need to calculate about 1 hour to get from the train station to the airport. 14:38
brrt integer overflow jnthn? 14:40
yeah, i imagined as much
brrt bbiab
jnthn Overflow, yes...just...where...
FROGGS jnthn: I'm already sorry :o( 14:41
have no time to help right now though 14:42
jnthn Oh noes...
get_int in P6bigint uses:
unsigned long mp_get_long(mp_int * a);
Guess how long a long is in MSVC? :/
dalek arVM: 97c8e02 | jnthn++ | src/6model/reprs/P6bigint.c:
Fix P6bigint.get_int portability bug.

This also unbusts the NativeCall pointers test on Win32.
14:49
lizmat testing++ :-)
15:15 brrt joined
brrt btw, why is long 32 bits in msvc? 15:24
moritz because the specs only say it must be >= int 15:27
TimToady and all the world is a Vax 15:28
but hey, can't complain, Perl was written on a Vax 15:29
brrt really? :-o 15:32
jnthn The only Vax of my childhood really sucked... 15:36
brrt i had a commodore 64 that was old by the time i got it 15:37
but it was awesome 15:38
the BASIC that came with it was not so much awesome
jnthn (For those who don't have the UK household association with Vax: www.vax.co.uk/vacuum-cleaners :-))
brrt and i really wish someone had handed me an assembler back then, because the things that BASIC did for you on a C64 are truly minmal
(lol) 15:39
jnthn My first dialect of basic was the BBC Micro one
brrt that was a 6502 machine, right/ 15:40
TimToady BASIC/PLUS, but that was on a PDP-11, not a Vax
jnthn Yes 15:41
TimToady I wrote a disassembler in BASIC and disassembled the RSTS/E operating system
brrt it's funny how the UK had it's own computer universe in the 80s 15:42
TimToady also wrote a BASIC decompiler call BACBAS, since the extension of the compiled form was .BAC
brrt and that tought you anything?
TimToady it taught me that once information is thrown away, it's hard to get it back again :) 15:43
it also taught me that the PDP-11 instruction set was extremely well thought out
brrt unfortunately, not for being a mass market success 15:45
TimToady well, but it did dominate the market it was in 15:47
brrt true 15:48
TimToady we don't use SAP in every household either :)
or Oracle, shudder
well, except for Java 15:49
but that's really still Sun
16:01 jnap joined
brrt also true 16:12
TimToady Sending vegetables to schools to be eaten is just another way of destroying them; in fact, it's inevitable that vegetables will be destroyed eventually... :) 16:51
we once got bumped from a British Air flight for arriving only 57 minutes before the flight; one hour was the limit... 16:55
tadzik wow 16:56
TimToady darn, we had to spend an extra day in a lovely b-and-b...
well, we were flying into Heathrow and out of Gatwick, and we allowed time for 3 things to go wrong. Unfortunately, 4 things went wrong. 16:57
enormous ticket line for bus, traffic jam, dropped at wrong terminal, insane checkin policy 16:58
any one of those things could have given us back the three minutes 16:59
17:09 klaas-janstol joined
timotimo brrt: i'd like to build a perf map file for the mvm jit; do you have a suggestion how to best generate the names for the symbols? for now, i just copy-pasted the code that is responsible for the debug output that encodes the spesh graph's name to an ascii string from there to the piece of the jit that actually knows the starting address and size of the generated machine code 17:20
brrt thinks
timotimo also, it seems like the jit would always encode the name of the function and the cuid even if logging is turned off; maybe that's something worth putting into a branch?
brrt i don't know how expensive that really is 17:21
but yeah,we could put that in a branch
timotimo oh, and what was a much bigger problem: how do i best handle 1) the pid of the process (i guess getpid is sufficiently cheap?) and 2) only generate the map if we're on linux and maybe only if some env var is set?
brrt getenv() will do? :-) 17:22
also, you can add it as a variable to the threadcontext
or the instance, rather
timotimo do i have to handle any kind of multitreading serialization?
nwc10 jnthn: PASS (other than just t/spec/S32-io/IO-Socket-Async.rakudo.moar) 17:42
brrt timotimo: no, why? 17:45
anyway, i suppose the difficult bit is mapping bytecode addresses to the bits of the jit graph 17:46
because i wouldn't know how to get the offsets of these bits without adding a dynamic label for every node
18:08 klaas-janstol joined
brrt brrt-to-the-future.blogspot.nl/2014...ssons.html blog :-) 18:23
brrt is going afk for most of tonight
18:24 brrt left 18:27 Ven joined
lizmat brrt++ for blogpost 18:28
[Coke] m: say so ?NaN 18:31
camelia rakudo-moar ddfb57: OUTPUT«True␤»
18:34 dalek joined 18:35 dalek joined
timotimo oh, i was looking into something as you were writing that post? i must have seemed more dedicated than i actually was %) 18:42
19:06 jimmy_ joined
jimmy_ brrt: s/interator-specific/iterator-specific/ ? 19:06
timotimo .o( i don't yet know what brrt was refering to there, but i suppose we'll have some more fun with spesh ) 19:11
brrt, i think you misunderstood what exactly goes into the perf map; we'd only put the start address and length of a complete jitted frame in there with the name of the function that was jitted (if we have it) 19:18
we don't need to annotate all the generated instructions in there
dalek arVM: 49cecc3 | (Timo Paulssen)++ | src/main.c:
moar --version will point out if jit got disabled via Env Vars.
19:45
timotimo should moar --version say "without jit support" if it was compiled without jit support?
19:53 Ven joined 19:56 colomon_ joined 19:57 retupmoc1 joined, ingy1 joined, daxim_ joined, avuserow_ joined
TimToady don't think it needs to get that fancy, unless we port to a lot of architectures that can't support JIT 20:23
but then it should say "no JIT support yet on this arch" or some such 20:24
20:42 Ven joined 21:05 colomon joined 21:35 Ven joined 21:49 Ven joined 21:53 avuserow_ joined 22:12 lue joined 22:40 colomon joined