01:40 TimToady joined 01:47 ilbot3 joined 06:26 lizmat joined
lizmat waves from FRA 06:26
timotimo heyo liz
hope your flight will go well :)
lizmat too :-) 06:27
it's only an 11 hour flight :-)
but in the newest, largest passenger jet on the planet: the A380 06:28
timotimo i'm not good at long flights :|
oh
is that the one that has a mcdonalds restaurant built in? :D
lizmat somewhere: haven't found it yet
timotimo oh, i meant the airbus, not the airport ;) 06:30
lizmat yeah, I also meant the A380 06:32
timotimo so it *is* true!
lizmat first time we flew it, we got on on the wrong floor... 06:33
timotimo you can't change floors once you're in the machine?
lizmat had to walk all the way to the back, go up the spiral staircase, and then walk all the way to the front again
timotimo ah
lizmat only one staircase in the back
and I guess elevators for personnel in between 06:34
it *is* a massive plane
timotimo what's the destination airport? 06:35
lizmat IHA
eh, IAH :-) 06:36
timotimo ah, houston
hm, we don't yet have a way to store pod comments on enum values with just the enum syntax? 06:38
i've never tried, too distracted to actually look&try
lizmat further commuting& 06:53
nine m: use Test; say ::("Test"); 08:08
camelia rakudo-moar ad8265: OUTPUTĀ«(Test)ā¤Ā»
08:10 RabidGravy joined 08:20 Ven joined
nine update on the JVM: I've got it as far as correctly picking apart the precomp file and the embedded JAR file and at least calling defineClass with the .class file's content. But the IgnoreNameClassLoader's getResourceAsStream then never gets called. 08:27
Yep, there's no call to deserialize 08:37
The deserialization QAST is definitely part of the class file though. 09:06
So I wonder: whose job would it be to run the deserialization code? 09:08
psch nine: afaict Ops.deserialize is the only bit that calls getResourceAsStream 09:36
nine psch: yep, and AFICT the deserialization QAST is the only bit that calls Ops.deserialize
I'm curreltly getting this output: gist.github.com/niner/4e96011348c2...d223f8f22c 09:37
With the deserializeQbid and desCodeRef related messages being from CompilationUnit.initializeCompilationUnit 09:38
psch World.load_module_early builds a deserialization ast 09:39
maybe there's a discrepency between what the r-j and r-m module loader return there? 09:40
nine Isn't load_module_early just for loading the setting?
psch i'd say load_setting is probably for the setting :)
that does a similar call though
well, "build a similar ast", i suppose 09:41
[Tux] This is Rakudo version 2016.04-200-gad82657 built on MoarVM version 2016.04-134-g9879233 09:44
test 20.196
test-t 13.125
csv-parser 34.794
nine Yes, load_module_early is _only_ for loading Perl6::Bootstrap 09:57
hence the "early"
What's so confusing is that everything points to the deserialization code being run, except for that it actually isn't run. 09:58
psch hm 10:00
nine: can you gist your diff? 10:01
10:08 pmurias joined
dalek p: 85ff6b7 | (Pawel Murias)++ | src/vm/js/nqp-runtime/deserialization.js:
[js] Fix serializing closures.

Mark the array of code refs passed to a serialization context properly.
10:10
p: 729734c | (Pawel Murias)++ | src/vm/js/nqp-runtime/core.js:
[js] Tweak the reprname for Captures.

Rakudo hardcodes it.
nine gist.github.com/niner/44ab8449ab5b...9e525a59f3 10:12
gist.github.com/niner/48daf2fef50e...1e4b3eef03
psch hm so the invokeArgless for the desCodeRef just does nothing, am i understanding that correctly? 10:17
'cause the output you gave before states it survived that, and the desCodeRef probably should look into the serialization and do things with it..? 10:18
nine Yes, I would guess that desCodeRef should run the deserialization QAST, but somehow it doesn't. 10:23
psch ...huh 10:51
so, i'm running < perl6-jdb-server -e'use nqp; BEGIN nqp::debugnoop(1); use Test' > 10:52
and the bp in Ops.debugnoop gets hit *after* the last call to CompilationUnit.initializeCompilationUnit 10:53
...did i mix up the "when does what run" thingies again?
wait 11:00
doesn't that actually mean that we don't even initialize the Test CU?
nine: github.com/perl6/nqp/blob/master/s...r.java#L43 to line 49 is missing on the loadPrecompiled path 11:11
well, to line 52, actually
as in, we never do anything with the loaded class
not sure how we'd handle L52 when it comes from a buffer
well, except with handing the file name down from the nqp op invocation in Perl 6-land 11:12
nine oooh! 11:15
How could I be so blind?
[Tux] a new fail example in utf8-c8 vice versa: 11:16
# expected: Buf.new(61,147,135,8,82,78,208,66,205,164,204,162,140,97,175,37,108,194,27,192,119)
# got: Buf.new(61,147,135,8,82,78,208,66,204,162,205,164,140,97,175,37,108,194,27,192,119)
205-164 vs 204162
psch probably a mixture between "unfamiliar part of the code base", "non-habitual language" and "distracted" :)
[Tux] 205,164,204,162 => 204,162,205,164 11:17
11:19 [TuxCM] joined
RabidGravy odd 11:19
nine psch: yes that's it! And again we're one step further 11:46
Loading a precompiled Test works now
bartolin \o/ nine++ psch++ 11:47
nine Newest issue: setcodeobj can only be used with a CodeRef 12:02
dalek p: f6670c8 | niner++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/ (2 files):
Working implementation of loadbytecodebuffer on JVM

Nothing about the previous attempt was actually correct or working :( Instead of calling just loadNew, we need to unpack the JAR file embedded in precomp files and actually create a CompUnit for the loaded class. Also the buffer passed to loadbytecodebuffer is more likely an uint8 Buf
12:07
12:20 [Tux] joined
nine Ok, I think what's now missing is my BEGIN time EVAL fix. I did that only for MoarVM. 12:23
Shouldn't be much work though
13:00 Ven joined
nine Of course that's true only so long as the JVM implementation is quite similar to the one for moar... 13:02
13:47 mst joined
mst please can we move this to #perl6-dev? 13:47
'p6dev' is not a top level freenode accredited project, so we're currently (a) inconsistent with the naming of our other channels (b) violating freenode guidelines (c) making it impossible for me to fix this channel if it breaks 13:48
(and this was created in march, after I'd already got rights to fix channels, so PLEASE would people remember to talk to me before doing stuff) 13:49
(if you're intentionally trying to hide then we need to move to ##p6dev btw) 13:54
psch i'm fine with either, fwiw
although i don't think intentionally hiding is particularly fitting for the community
tadzik I vote for consistent naming :)
mst I vote for "you can be inconsistent if you must, but you're going to do it intentionally, and without breaking the freenode guidelines, and if not you can bloody well do it right in the first place" (*adjusts british army moustache, buffs monocle*) 13:56
stmuk_ is there a recommended JDK for rakudo (openjdk or oracle)? 14:42
psch stmuk_: i'm using openjdk, fwiw 14:50
nine same here 14:55
15:29 sortiz joined
pmurias mst: I don't think we are trying to hide as perl6-dev points here 15:36
mst pmurias: that didn't exist when I asked
pmurias: so, er, that makes no sense at all :P 15:37
Channel #perl6-dev created Sun May 15 14:47:33 2016
pmurias ok
mst I mean, I didn't expect you to be trying to hide 15:38
but a channel created after the fact isn't really evidence, except that timotimo decided you probably weren't 15:39
bartolin psch: I tried to understand the weird behaviour of 'slurp-rest' after 'get' you found. it happens with nqp::readlinechompfh and nqp::readallfh on nqp-j too. I think the culprint is here: github.com/perl6/nqp/blob/master/s...e.java#L62 15:52
readBuffer seems to have the old content and we copy it along with the newly read content. 15:54
could you take a look, whether this patch makes sense? gist.github.com/usev6/a721447b0978...76ecffd38f 15:55
psch bartolin: does it fix anything? 'cause from the docs for the two .wrap candidates it looks like you're doing the same after the patch as before..? 15:57
bartolin yep, it fixes the issue. 15:58
psch oh, yeah, you're copying 15:59
that's probably it
hm, unless readBuffer.array() also returns a copy :/
bartolin: well, if it works it works... :)
yeah, .array() returns the actual array behind the ByteBuffer 16:00
bartolin I assumed that readBuffer.get starts to take values from current position 16:01
but I'm not sure if the patch breaks something else :-(
ah, I updated the gist with an addition test for t/nqp/19-file-ops.t 16:03
psch huh, the javadoc says .get(byte[]) is eqv to .get(byte[], 0, a.length)
so it's "get everything, from start to finish", not "get from .position to end"
bartolin oh.
psch which just makes it more confusing, honestly... :) 16:04
i think the original issue is that .array() gets you the reference to the original array backing the ByteBuffer
and wrapping a different ByteBuffer around that gets somewhat racey, because now you have to ByteBuffers that clobber over the same array
well, except not really racey (as in "race condition", of course :P ) 'cause it's not async or parallel 16:05
16:08 cognominal joined
bartolin however, the problem you found seems to be caused by that code block. if you could come up with a clean solution, that would be great :-) 16:09
psch yeah, i'll look a bit closer later on 16:10
bartolin ++psch 16:11
psch: I understood from the docs that offset and length in .get(byte[], offset, lenght) are about the destination array. since the problem went away it looks like the bytes where indeed read from the current position of the source. 16:17
psch bartolin: oh, you're right! the offset is for the destination 16:19
bartolin: i think the easier patch is just replacing "readBuffer.position()" with 0 16:35
bartolin: 'cause afaict you're still shoving the whole buffer into newBytes
bartolin tries that 16:40
yes, seems to work. (though I don't understand why) 16:50
oh, no, it does not work! (still get the first line twice)
bartolin is confused and tries again 16:54
nine A SiXModelObject with a null st? 16:55
How is that possible? And is there any other way of finding out what kind of object it actually is? 16:56
psch nine: i think it shouldn't be possible..? o.o
nine It's the object that gets passed to setcodeobj when trying to run the EVAL during precompilation 17:06
Oh, another odd thing is that it happens during the actual EVAL, not during serialization or even loading of the precompiled file. So it may be a side effect of my BEGIN time EVAL fix a couple of weeks ago 17:08
psch bartolin: fwiw, the only alternative to your patch i can think of is using java.util.Arrays, which just pulls in an additional dependency...
bartolin btw, it only helps with the .slurp-rest() call. with .slurp-rest(:bin) the data is still missing 17:10
I'll open a PR then ... 17:11
psch hrm, SyncHandle is quite a thing :/ 17:24
i mean, i don't get all the flip()ing we do, but i have a feeling it has something to do with getting reset to the start of the FH
cause that's part of what .flip() does
ohh. but we don't flip the channel (if that even works...) 17:25
hmm, now how do i get a VMArrayInstance_i8 (or _u8) in nqp code :/ 17:42
nine: i forgot where debugname hangs, but i don't think it's the STable 17:44
nine: i wanna say REPR, but...
nine public String debugName; is in runtime/org/perl6/nqp/sixmodel/STable.java 17:45
psch ah shucks :<
typeName also needs the st :/
...wait, the REPR and REPRData also hang on the st, don't they 17:46
nine I guess, I'm just gonna spend some time again with my good old friend, finish_code_object.
Everything of interest seems to do
psch d'you have a jdb dump of the object?
hm, i think the problem with readlinechompfh followed by readfh (that's the .get, .slurp-rest :bin case) might be that the ByteChannel we have isn't seekable? 18:11
as in, a ByteChannel doesn't seem to care what's been read before, maybe? :/ 18:13
i probably should test that...
19:45 dalek joined 19:46 dalek joined 19:47 dalek joined 19:48 dalek joined
timotimo moritz: i consider you dalek's maintainer, so: i removed #november-wiki and #perl6-lwp-gsoc from the list of channels to auto-join on freenode. if that's not okay, feel free to ping me and i'll remove them 19:50
moritz: on top of that, could you make ilbot3 join #perl6-dev ? mst and me are moving stuff from here to there to adhere to freenode's naming policies and such 19:51
moritz timotimo: wait what? it's not in here yet? 19:52
timotimo moritz: note the difference between #perl6-dev and #p6dev 19:53
#p6dev being here, #perl6-dev being over there :)
moritz oh noez
this is starting to get confusing
timotimo well, we're kicking out #p6dev 19:54
so it's not increasing the number of channels, but the channels get more systematically named
19:55 ilbot3 joined
mst once we get a bit further along I can setup a forward so anybody trying to join here ends up over there 19:55
should make things at least differently confusing
timotimo oh, forwards, neat. 19:57
20:04 timotimo left 20:11 bartolin left 20:24 psch left 20:38 cognominal joined