02:52 vendethiel joined 03:39 lucs joined 04:05 sortiz joined 04:13 ugexe joined 04:18 ugexe joined 04:36 ugexe joined 05:11 skids joined
[Tux] This is Rakudo version 2016.03-131-gbd44009 built on MoarVM version 2016.03-108-gca1a21a 06:14
test 22.047
test-t 12.635
csv-parser 25.626
06:52 RabidGravy joined 07:43 lizmat joined 07:48 azawawi joined
azawawi hi 07:48
moritz: it seems that the recently added AppVeyor badge is not working for some reason github.com/rakudo/rakudo 07:49
moritz: ci.appveyor.com/project/rakudo/rak...branch/nom # Project not found or access denied 07:50
moritz azawawi: probably because I only managed to enable it in the appveyor/moritz account
azawawi i see 07:51
moritz ci.appveyor.com/project/moritz/rakudo
lizmat m: use nqp; my $b = Blob[uint64].new(42); nqp::rebless($b,Blob[uint8]); dd $b # was hoping this would be a cheap way for converting an int64 into its constituent bytes 07:57
camelia rakudo-moar bd4400: OUTPUT«This REPR cannot change type␤ in block <unit> at /tmp/BJqG9pylgh line 1␤␤»
moritz lizmat: possibly with nativecast? 07:58
lizmat looks up nativecast 07:59
bartolin azawawi moritz: with my PR from yesterday AppVeyor started a build after more than one hour -- but at least the jvm builds timed out after 59 min 59 sec :-( 08:00
nine_ lizmat: won't this lead to problems with endianness?
08:00 TimToady joined
lizmat nine_: I'll pass that bridge when we get to that :-) 08:01
azawawi bartolin: it is fairly slower than travis ci given that it is one per build 08:03
moritz: i guess we can disable some builds for windows. Which do you recommend?
lizmat looks at cranes passing by smoothly 08:09
moritz azawawi: disable JVM builds 08:17
azawawi moritz: sure 08:31
09:29 brrt joined
azawawi would be cool if we have something like `rakudobrew build moar --stable' 09:32
psch fwiw, none of getattr{,_i,_n,_s} works for accessing the $!call Attribute of a Sub+{Native[...]} 09:38
i'm not exactly sure what that means, but i think it's probably codegen, plus maybe precomp 09:39
ahh 09:41
the mixin doesn't work right
the object that get passed to getattr has a REPRData that includes 4 nameToHintMaps, of which the last one is for role Native 09:42
the hints start at 15 for $!setup
oh, wait, delegates... 09:43
yeah, that was wrong. the delegate has enough fields, the obj itself doesn't, but that's what a mixin does :/
10:06 pmurias joined
dalek ast: 4d61fbd | usev6++ | integration/weird-errors.t:
(Re-)fudge test for RT #127878 for JVM
timotimo psch: forgetting some "REAL_DATA" like thing? moar has those all over the place to follow the delegate whenever something's gotten mixed-into 10:36
dalek ast: 70af688 | usev6++ | S (6 files):
Fudge for JVM to prevent UnwindExceptions
timotimo i expected liz would have already written that mail about floats and bufs, but it seemed not so
so i went ahead and shared that knowledge with the mailing list 11:12
psch timotimo: i don't think that's the problem. as mentioned, there's no way to getattr for $!call (which has repr('NativeCall')) that doesn't complain 11:45
timotimo: that makes me think that codegen doesn't work out, somehow
timotimo oh, it's repr nativecall! 11:46
have you looked at how the nativecall repr is implemented on the jvm to handle attribute access?
psch the nativecall repr is the attribute, fwiw 11:47
timotimo oh!
not the thing, OK
psch and that's where it gets extra complicated, kinda :P
timotimo one thing we do during code gen is try to get a hint to supply for the given attribute
psch like, nqp-m can use nqp::getattr for a native attribute
timotimo can you try making it non-obvious to the compiler/optimizer what the value is, or turn optimization off altogether?
then we wouldn't try to give it a hint for the attribute index 11:48
and we may hit a different code path
psch --optimize=off does the exact same 11:49
m: use nqp; class A { has int $.x }; say my int $x = nqp::getattr(A.new, A, '$!x') # this i think matters 11:50
camelia rakudo-moar bd4400: OUTPUT«0␤»
psch 'cause r-j can't use nqp::getattr for a native attribute
and inlineBind codegen stuff that wants a native_j
anyway, i also tried with 'use lib ...' just now, that also dies the same way 11:52
timotimo: i think attr hinting isn't on nqp-j at all. getattr and friends are all hard-coded with STable.NO_HINT 11:53
timotimo the optimizer may supply the hint, though? 11:54
dalek ast: c264eab | usev6++ | S0 (4 files):
Fudge (skip) some tests for JVM

all of those tests die with
  'Cannot access a native attribute as a reference attribute'
psch i don't know how: github.com/perl6/nqp/blob/master/s...java#L2716 11:56
oh duh
half a page down... :)
timotimo a-ha! something java has that C doesn't! :)
psch ...half pages down? 11:57
i mean, there's a getattr candidate that takes a hint
timotimo yup, i saw those
psch hrm 11:59
i'm just getting more confused
that snippet above with getattr for a native int also works on r-j
oh wait, that's because i hacked that in there
it doesn't help for repr NativeCall, though 12:00
timotimo oh no we got hacked!
psch yeah, i mean, i'm calling it "hacked" because it's terrible :P
timotimo i don't understand why the getattr without a _ wouldn't work for your case
psch gist.github.com/peschwa/386df8991a...9e664b379e
i am perfectly correct calling that a hack :P
timotimo :D
yup, seems legit 12:01
psch so, repr NativeCall says it has a 64 bit wide inlined storage spec
...we don't have a getattr for tc.native_j 12:03
hm, i don't get it 12:05
12:06 b2gills joined
psch huh, i think that might be the actual problem 12:08
timotimo i .. don't even know what native_j is or why we'd have to have a getattr for that?!? 12:09
psch .oO( that i don't get it )
native_j is a java object in the TC
like, tc.native_i has the result of a obj.get_attribute_native 12:10
and tc.native_j is the same for java objects
still curious how that hasn't mattered before 12:12
but then it's probably like 4 or so months that it was somewhat broken 12:13
with lots of other breakage inbetween, which might make it hard to find out what caused it... :)
timotimo oh, huh
dalek ast: dc23077 | usev6++ | S06-advanced/wrap.t:
Skip another test on JVM
psch well then 12:32
how oh how do i instantiate a JavaWrap
'cause i think that's what i have to do to return the nativecall body from getattr
dalek ast: 5534e7e | usev6++ | S12-coercion/coercion-types.t:
Skip test for RT #127841 on JVM
psch hm, although that might be wrong. BOOTJava is involved with jvminterop only... 12:34
oh, i think i know what caused this 12:36
hm, no :P 12:37
12:50 skids joined
dalek ast: ecf35bc | usev6++ | S32-str/pack.t:
Skip tests for 'pack' for JVM
ast: 96409d3 | usev6++ | S32-io/socket-recv-vs-read.t:
Skip two more tests on JVM
ast: da9be7b | usev6++ | S32-str/encode.t:
Fudge utf-16 tests for JVM
[Coke] p6 release should happen tonight. 14:02
dalek ast: 14a9efd | usev6++ | S10-packages/precompilation.t:
Fudge (todo) some precomp tests for JVM
bartolin S02-types/resolved-in-setting.t does not run at all on rakudo-j. would it make sense to mark that file as 'moar only' in t/spectest.data? 14:11
moritz bartolin: yes 14:12
14:20 lizmat joined
dalek ast: b0bdd90 | usev6++ | S02-types/int-uint.t:
Fudge tests for native int overflow/underflow for JVM
kudo/nom: 75b8966 | azawawi++ | appveyor.yml:
Disable JVM CI builds on Windows (AppVeyor) for performance reasons
kudo/nom: 1da9193 | lizmat++ | appveyor.yml:
Merge pull request #749 from azawawi/nom

Disable JVM CI builds on Windows (AppVeyor) for performance reasons
kudo/nom: 4bc967a | bartolin++ | t/spectest.data:
Run S02-types/resolved-in-setting.t on moar only

This file produces an IllegalArgumentException on rakudo-j
kudo/nom: baf8ac3 | lizmat++ | t/spectest.data:
Merge pull request #750 from usev6/patch-1

Run S02-types/resolved-in-setting.t on moar only
14:44 lizmat joined 14:55 [Sno] joined
[Sno] ah - this channel was meant by lizmat 14:56
[Sno] is so not-up-to-date :)
dalek ast: 32110a6 | usev6++ | S17-supply/Channel.t:
Skip test for RT #127629 on JVM

  ... because it often hangs in spectests
[Sno] www.netbsd.org/~sno/talks/nrpm/Cros...andout.pdf <-- jnthn, timotimo, nine_ ... :)
perlpilot: as lizmat suggested, better here :) 15:04
15:04 lizmat joined
perlpilot ah, good point 15:04
[Sno] perlpilot: 9/10 talks about host-files vs. build-sysroot vs. target-sysroot 15:05
perlpilot [Sno]: Are you going to mention "cross compiling for Perl 6 hackers" too? :) 15:06
[Sno] given you take a "normal" debian-linux to cross-compile yourself a tiny system to run perl6 on it :D
than you first have to make some choices: bootloader, kernel, toolchain (binutils, gcc, ...) 15:07
for those toolchain, you first build yourself the toolchain using the host-toolchain but the version you're going to use to cross-compile (build-toolchain) 15:08
this build-toolchain is used to compile yourself the cross-toolchain
the build-toolchain is further used to compile build-tools (perl5: miniperl, perl6 - maybe the lua used in configure stage ...) 15:09
in my example project I'm going to demonstrate a later niederrhein.pm, I cross-build p6 using a cross-build OpenJDK8
but the cross-openjdk8 is bootstrapped on build-host using jikes -> ecj -> java6 -> java7 -> java8 15:10
it got the "which stdlib.h"? from that long explanation? 15:11
dalek p: 125eb32 | (Stefan Seifert)++ | src/HLL/World.nqp:
Allow for subclasses of HLL::World to use a subclass of CompilationContext
perlpilot [Sno]: How long are they going to let you speak? Sounds like you've got a lot of ground to cover 15:14
[Sno] perlpilot: we have the entire evening :)
I think, after dinner for around 90min-2hrs 15:15
perlpilot neat. I hope you inspire some people to try their hand at cross-compiling. 15:16
[Sno] perlpilot: the motivation is finally to enlighten more people wrt. cross-building (or at least be aware of that)
p6 is more important than p5 - but I have much more examples for p5, since I fight with lot's of details in cross-compiling perl6 15:17
perl6 build fails the "don't run from target build" rule 15:18
and the configure stage doesn't clarify / log properly
I wonder if a patch using metacpan.org/release/Config-AutoConf will be accepted for configuring MoarVM, NQP and Rakudo :D 15:19
jnthn [Sno]: Note that all the artefacts you build in NQP are platform-agnostic, and in Rakudo only one thing (written in C) is platform-specific. 15:25
[Sno] jnthn: that's true but wrong :) 15:26
jnthn Virtual machines are wrong? Wow! :P
[Sno] jnthn: slide 15 explains a little bit why the artifacts must not run in build-environment 15:27
nine_: better here than there ;) 15:29
nine_: was my fault - I didn't read lizmat's mail not carefully enough
jnthn: did you read the slides and get the sysroot-fiasco? 15:30
and read my explanation about host vs. build vs. target environment above? 15:31
bartolin spectests rakudo-j and hopes for a clean run (after some heavy fudging and with his patches from PR 748 applied) 15:35
dalek rakudo/fix_eval_in_precomp: efe73eb | (Stefan Seifert)++ | src/ (4 files): 15:42
rakudo/fix_eval_in_precomp: Fix EVAL during precompilation
rakudo/fix_eval_in_precomp: EVALed code is considered an independent compilation unit that gets compiled
rakudo/fix_eval_in_precomp: using a new World which contains an independent serialization context. It also
rakudo/fix_eval_in_precomp: gets its own QAST compiler.
rakudo/fix_eval_in_precomp: When a BEGIN time EVAL is run during precompilation of a module, the
rakudo/fix_eval_in_precomp: independent SC would not be written into any file but would still be referenced
rakudo/fix_eval_in_precomp: from the outer compilation unit. We therefor use the outer world's
rakudo/fix_eval_in_precomp: CompilationContext which contains the SC. We also need to share a couple of
rakudo/fix_eval_in_precomp: other attributes that keep track of the compilation's state.
rakudo/fix_eval_in_precomp: The QAST compiler's frames are shared by adding them to the hash that's used
nine_ for initializing the QAST compiler's frames lookup hash. 15:43
Fixes RT #124324
commit 17523cecfbb2e4e6093cd5bd38c7a554063a1457
Refactor sharing the compilation context
Put the shared attributes into a subclass of NQP's CompilationContext to get
rid of the fragile binding hack.
Please, please review: github.com/rakudo/rakudo/commit/ef...9ede4aa8ab github.com/rakudo/rakudo/commit/17...54063a1457 15:44
psch yes! t/04-nativecall/01-argless.t passes on r-j \o/ 16:03
still plus debug output, and fixed in a terribly clutchy way, but at least i found the spot to tweak
s/clutchy/kludgy/ # probably, according to the jargon file at least i think 16:04
bartolin psch++ 16:05
nine_ psch++ # enjoy that moment! 16:06
17:30 vendethiel joined
dalek kudo/nom: e1e1811 | (Salve J. Nilsen)++ | / (2 files):
Make usage text fit in 80 columns

Also, update running.pod usage text example to match actual usage text.
kudo/nom: 2d6f5c8 | niner++ | / (2 files):
Merge pull request #751 from sjn/usage-text-1

Make usage text fit in 80 columns
p: 6b71554 | (Pawel Murias)++ | src/vm/js/nqp-runtime/reprs.js:
[js] Remove old TODO.
p: f6b5db3 | (Pawel Murias)++ | src/vm/js/nqp-runtime/reprs.js:
[js] Avoid setting the REPR names manually.

Throw meaningful things from badReference and badNative.
We need to distinguish them for native-capable getattr, because catching all RuntimeExceptions there muddles the ones we care about (which is badReference) up with e.g. "No such attribute".
18:11 dalek joined
psch something tangentially related i found while hunting the jvm NC bug: 18:27
m: my $name = "foo"; say "$name.{1+1}"
camelia rakudo-moar 2d6f5c: OUTPUT«Type Str does not support associative indexing.␤ in block <unit> at /tmp/_MiGDdfart line 1␤␤Actually thrown at:␤ in block <unit> at /tmp/_MiGDdfart line 1␤␤»
psch that apparently used to work, 'cause that's how $*VM.platform-library-name does it in the jvm path
in any case, i'm still kinda stuck how to make this a good solution 18:38
the problem as it exists is that $!call is codegen'd to be accessible with get_attribute_native, but we don't lead into that get_attribute_native anywhere 18:39
so either i hack around that in Ops.getattr somehow, which would either be able to learn the native type of the attribute (which we don't have a means of finding out, afaict) or would catch and throw up to 4 layers of exceptions 18:40
or there's a smart solution that gets closer to emulating the "chasing pointers" style of moar
...at least that's what i understand moar is doing
timotimo :S 18:42
psch my hunch would something akin to P6OpaqueBaseInstance.resolveAttribute, a la resolveAttributeType maybe 18:43
which could be ref, int, str, num, obj
i don't know how well that fits into sixmodel, though 18:44
and, well, moar doesn't even need it so maybe it's a bad idea..? vOv
timotimo to be honest i'm still confused why native attributes are even a thing
psch timotimo: huh? like, int? 18:45
timotimo no, i mean java native 18:48
psch oh 18:49
the comments and commit messages seem to suggest inlining..?
timotimo hm, right 18:50
but how come we don't just box it into a proper object on the way out?
like, p6opaque can inline other things's REPRs and REPRData
that's enough to turn it into a normal object on the way out?
i must be missing something 18:51
psch well, it needs to have a StorageSpec.INLINED to be inlined i suppose
and nqp-j codegen says that that already means it gets accessed by REPR.get_attribute_native
timotimo huh
how would things change when we claim NativeCall *isn't* inlinable? 18:52
psch then my first idea for fixing it could probably work
'cause that was to fix inlineGet and inlineBind to add/strip NativeCallInstance around the NativeCallBody
but then it probably also wouldn't get inlined... vOv 18:53
i do lean towards "just hack it together while relying on exceptions figuring out the type" 18:56
because it fixes two problems here, which is the NC bug as well as general access to native attrs via nqp::getattr
s/figuring/to figure/
but that's only from a "it'll at least be solved" perspective, because it'd probably make native attr access via nqp::getattr completely not worth it at all because really slow 18:57
as mentioned, in the worst case that's throwing and catching 4 exceptions
oh duh 19:04
tc.native_type exists
which means there's only one catch involved 19:05
timotimo hooray
psch well, figuring out the boxing type for the NATIVE_JVM_OBJ case is kinda iffy, but otherwise it should be fine i think 19:07
i mean, assuming a general case where it's not known that it's a NativeCallBody and needs a NativeCallInstance 19:15
19:20 sortiz joined
psch gist.github.com/peschwa/1339399161...9bea6ca6ec 19:47
i think i'll take that for today 19:48
timotimo that's better than exclusively fails :) 19:49
which is what it was before, right?
psch yeah, previous was exclusively "No subtests run" iirc 19:50
timotimo excellent!
psch 'cause the BUILDPLAN for a Sub+{Native[...]} always failed
p: 5981bf0 | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
Handle all kind of attribute access via getattr.

The NATIVE_JVM_OBJ case is clearly a bit brittle like this, but I haven't come across a case where that's not what we want. Of course this doesn't mean there isn't one...
kudo/nom: abfb8da | peschwa++ | tools/build/NQP_REVISION:

This gets us a more moar-like handling of nqp::getattr, which is transparent to native attributes.
psch huh, dalek didn't mention d6ed4c1 and didn't get floodkicked either..? 19:57
timotimo huh
psch 'cause there's another commit after the NQP_REVISION bump 19:58
well, it shows in the GH web interface, so there vOv 20:00
jnthn nine_: Really tired right now, but got all day for Perl 6 things tomorrow, so will review your two commits then :)
nine_ ok :) 20:04
dalek ast: 68a55df | usev6++ | S0 (3 files):
Unfudge tests for JVM

fixed by nqp commit 5981bf0439, psch++
21:19 geekosaur joined 21:21 hankache joined 21:40 lizmat joined 21:55 synopsebot6 joined 22:48 ugexe joined
lizmat intriguing: arxiv.org/abs/1604.03641 23:03
[Coke] starting release. 23:13
dalek p: 804fdec | coke++ | tools/build/MOAR_REVISION:
bump MOAR revision
p: 4011515 | coke++ | VERSION:
[Coke] is nqp-js good enough to run as part of the release now? 23:17
(i'll find out soon enough...)
guess not. 23:20
nqp 2016.04 done, tagged, tarballed 23:54
rant: instructions suggest "perl6 tools/contributes.pl6" but that will never work if you have an installed p6 and a fresh dev. 23:56