Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by Zoffix on 27 July 2018.
00:17 tbrowder left 00:49 tbrowder joined 03:00 vrurg left 03:01 vrurg joined 07:11 sivoais_ joined, sivoais left
bartolin haha, it looks like the implementation of bindlexdyn on the JVM backend expects its arguments in the wrong order: github.com/perl6/nqp/blob/7a28dfc6...java#L1581 vs. github.com/perl6/nqp/blob/7a28dfc6....nqp#L2719 08:10
since bindlexdyn is used that way in github.com/perl6/nqp/blob/7a28dfc6....nqp#L4543 changing this requires a rebootstrap. I'm struggling to get instruction list right, so I'll commit a workaround first. 08:11
Geth nqp: db3e4a043f | usev6++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java
[JVM] Add second version of bindlexdyn as bandaid

nqp::bindlexdyn expects the name as the first and the value as the second argument (on MoarVM, too). It looks like that op wasn't used in rakudo-j -- until github.com/rakudo/rakudo/commit/69c535ecfb
Since bindlexdyn is currently used in NQP's src/vm/jvm/QAST/Compiler.nqp we need a change there and a rebootstrap in order to remove the old version of bindlexdyn. For now, this should fix the Rakudo build.
08:12
08:43 sivoais_ left, sivoais joined 11:43 MasterDuke left
jnthn bartolin++ # taking care of JVM 11:57
12:03 MasterDuke joined, MasterDuke left, MasterDuke joined
Geth rakudo: 056e45527c | usev6++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java
[JVM] Fix small-ish typos
13:02
rakudo: 0990ecc4b7 | (Elizabeth Mattijsen)++ | src/core/CompUnit/Repository/Installation.pm6
Don't copy the ENV hash into precomp files

By assigning, rather than binding, we appear not to keep the environment hash alive. Fixes #2838
14:29
synopsebot RAKUDO#2838 [open]: github.com/rakudo/rakudo/issues/2838 [BLOCKER][regression] Precomp files contain ENV variables breaking packaging and reproducible builds
Geth rakudo: e84845ad05 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
First attempt at %e support

WIP: Seems to die for very small values still...
14:48
16:48 titsuki_ left, tailgate left, masak left 17:05 titsuki joined 17:06 masak joined, tailgate joined
Geth rakudo: ad8b5a6497 | (Elizabeth Mattijsen)++ | src/core/Main.pm6
Warn when reading from keyboard in a MAIN-powered script

Inspired by www.reddit.com/r/perl6/comments/bc...h/ekq6khy/ .
It basically mixes in specific versions of the slurp/lines/words methods that put a hopefully understandable message on STDERR.
17:06
17:06 masak is now known as Guest47580
lizmat afk& 17:08
nine lizmat: "which is usually only done when debugging" is just not true. It's also done, when I'm pasting stuff into the terminal or even when I type it in manually. 17:19
That's just how UNIX tools have worked for many decades 17:20
17:29 Kaiepi left 17:40 lucasb joined
nine .tell jnthn I fear identify-mixin-types broke Inline::Perl5: New type P6Bar for Foo is not a mixin type in method new at /home/nine/Inline-Perl5/lib/Inline/Perl5/ClassHOW.pm6 (Inline::Perl5::ClassHOW) line 48 18:34
yoleaux nine: I'll pass your message to jnthn.
nine .tell jnthn And 45e2902d0210cc24376229800569e1dbb7856093 (Generate an empty BUILDALL for class with no attrs) may have broken it some more: This representation (VMArray) does not support attribute storage (for type IterationBuffer) at src/Perl6/World.nqp:3374 (/home/nine/rakudo/install/bin/../share/nqp/lib/Perl6/World.moarvm:generate_buildplan_executor) 18:41
yoleaux nine: I'll pass your message to jnthn.
MasterDuke m: $_ = "foo"; s/(o)/$999999999999999999999999999999999999999999999999999999999999999/; .say 18:48
evalable6 (exit code 1) Index out of range. Is: -9223372036854775808, should be in 0..^Inf
in block <unit> at /tmp/lQDdoiH97f line 1
MasterDuke AlexDaniel++ an example that's fixed in my default-int branch (it gives `Use of Nil in string context in code at -e line 1 fo`) 18:49
AlexDaniel and that's it? Just one example? 18:50
MasterDuke: also, are you sure it is not broken for other huge numbers? 18:54
MasterDuke just the first one i've looked at 18:56
it still is for another example
m: $_ = "foo"; s/(o)/$9999999999999999999999999999999999999999999999999999999999999/; .say
evalable6 (exit code 1) Index out of range. Is: -6917529027641081856, should be in 0..^Inf
in block <unit> at /tmp/lu05zpREnn line 1
18:57
MasterDuke my branch gives `Index out of range. Is: -6917529027641081857, should be in 0..^Inf`
AlexDaniel soo… maybe not really fixed 18:58
[Tux] Rakudo version 2019.03.1-202-gad8b5a649 - MoarVM version 2019.03-76-gc10fee65c
csv-ip5xs0.733 - 0.808
csv-ip5xs-205.955 - 6.007
csv-parser23.291 - 23.791
csv-test-xs-200.440 - 0.455
test7.248 - 7.904
test-t1.709 - 1.852
test-t --race0.849 - 0.962
test-t-2028.693 - 29.278
test-t-20 --race9.961 - 11.921
19:12
19:46 vrurg left
MasterDuke AlexDaniel: i think there's something unrelated to my branch. github.com/rakudo/rakudo/blob/mast....nqp#L1769 might be it, using nqp::radix instead of nqp::radix_I 19:50
AlexDaniel yeah 20:11
Geth nqp: 0610e04ed2 | usev6++ | 10 files
[JVM] Rebootstrap for new version of bindlexdyn
20:28
nqp: 56efbb0700 | usev6++ | 2 files
[JVM] Switch to new version of bindlexdyn

There should be a cleaner way to achieve this than swapping the two values on top of the stack, but I was unable to come up with a better solution.
lizmat .ask nine would you rather see a rephrasing of the message, or a revert of the commit ? 21:13
yoleaux lizmat: I'll pass your message to nine.
MasterDuke can a QAST::IVal have something bigger than a native int in it? 21:24
timotimo it can not
must be a WVal with an Int object for that 21:25
MasterDuke thanks
timotimo: btw, did you find anything useful in rr? 21:30
21:31 Guest47580 is now known as masak
timotimo i didn't actually run it yet, but i definitely should 21:31
i'm worried the recording could explode my hard drive :D
but i bet it'll let me put the recording on my other hard drive
MasterDuke ha 21:33
btw, `Object of type Int in QAST::WVal, but not in SC` ?
jnthn .tell nine If you're going to use a type as the target type in an nqp::rebless, then :is_mixin now needs to be passed to ClassHOW.new_type.
yoleaux jnthn: I'll pass your message to nine.
18:34Z <nine> jnthn: I fear identify-mixin-types broke Inline::Perl5: New type P6Bar for Foo is not a mixin type in method new at /home/nine/Inline-Perl5/lib/Inline/Perl5/ClassHOW.pm6 (Inline::Perl5::ClassHOW) line 48
18:41Z <nine> jnthn: And 45e2902d0210cc24376229800569e1dbb7856093 (Generate an empty BUILDALL for class with no attrs) may have broken it some more: This representation (VMArray) does not support attribute storage (for type IterationBuffer) at src/Perl6/World.nqp:3374 (/home/nine/rakudo/install/bin/../share/nqp/lib/Perl6/World.moarvm:generate_buildplan_executor)
timotimo MasterDuke: at some point it was necessary to $*W.add_object before putting it into a WVal's value 21:36
i thought that'd mostly be done implicitly by now
jnthn .tell nine No guesses on the second; unfortunately the line number just points at the generate_buildplan_executor method. Don't suppose --ll-exception gives a better trace? Or I can try it out when I get some time to do that :) 21:37
yoleaux jnthn: I'll pass your message to nine.
MasterDuke m: $_ = "foo"; s/(o)/$9999999999999999999999999999999999999999999999999999999999999/; .say 21:41
evalable6 (exit code 1) Index out of range. Is: -6917529027641081856, should be in 0..^Inf
in block <unit> at /tmp/G5GeYFU3OU line 1
MasterDuke is `Cannot unbox 203 bit wide bigint into native integer at SETTING::src/core/Capture.pm6:58 (/home/dan/Source/perl6/install/bin/../share/perl6/runtime/CORE.setting.moarvm:AT-POS)` better? 21:42
jnthn Can we make it "What on earth are you doing????!!!1" :) 21:45
But yeah, the second is probably better 21:46
MasterDuke heh
this is the patch gist.github.com/MasterDuke17/60a7a...ed361de85f 21:47
lizmat m: dd sprintf("%#b",0) # unexpected, is there a reasoning behind this? Perl 5 does the same 21:51
evalable6 "0"
MasterDuke jnthn: should i have it throw if nqp::isbig($val)? 21:53
timotimo the explosion in the rr run i've got right now happens when it's trying to free a callsite object that looks pretty bogus 21:57
lizmat m: dd sprintf("%+b",0) # Perl 5 says "0"
timotimo it has a few thousand flags and about 800 arguments
evalable6 "+0"
MasterDuke timotimo: ha!
timotimo so i've now got a watchpoint on one of those values to see when it was last written
uv_signal_init (loop=0x3400e00, handle=handle@entry=0x34af368) at 3rdparty/libuv/src/unix/signal.c:324 21:58
324 uv__handle_init(loop, (uv_handle_t*) handle, UV_SIGNAL);
um, yes, that is absolutely not a place where a callsite's values should be updated 21:59
MasterDuke does seem suspect
timotimo it's quite possibly a use-after-free thing
unfortunately there's not really a good way to break when a specific address is freed, apart from putting a conditional breakpoint in MVM_free, which is slow :( 22:01
ok, that's weird, the time before that that memory location was part of a VMArray that got resized while evaluating an argument guard 22:03
MasterDuke timotimo: have you every used github.com/gperftools/gperftools ? if so, any good? 22:04
*ever
22:05 squashable6 left
timotimo i don't think i have 22:05
MasterDuke timotimo: i think some of the valgrind output i posted the other day had VMArray stuff in them
timotimo MasterDuke: looks like if you want to move an rr trace across machines you can use "rr pack" to make it system-independent (by making it a lot larger) 22:09
MasterDuke cool
22:10 squashable6 joined, ChanServ sets mode: +v squashable6
timotimo _RR_TRACE_DIR is also a thing 22:10
MasterDuke how about `===SORRY!=== Error while compiling -e Cannot declare a match variable at -e:1 ------> 9999999999999999999999999999999999999999⏏/; .say`
22:35 MasterDuke left
AlexDaniel .tell MasterDuke “Cannot declare a match variable” why not? 22:40
yoleaux AlexDaniel: I'll pass your message to MasterDuke.
AlexDaniel .tell MasterDuke I mean why should it behave differently than say $99999 22:41
yoleaux AlexDaniel: I'll pass your message to MasterDuke.
AlexDaniel a pessimistic one github.com/perl6/problem-solving/issues/9 22:49
23:12 MasterDuke joined, MasterDuke left, MasterDuke joined
MasterDuke . 23:12
yoleaux 22:40Z <AlexDaniel> MasterDuke: “Cannot declare a match variable” why not?
22:41Z <AlexDaniel> MasterDuke: I mean why should it behave differently than say $99999
MasterDuke AlexDaniel: because that's really shorthand for $/[99999] and arrays can only be so long 23:13
i'm open to suggestions for other exceptions, that just seemed the closes at first glance 23:14
AlexDaniel m: say $/[9999999999999999999999999999999999999999999999]
evalable6 Nil
AlexDaniel a shorthand that's not really a shorthand?
just make it work, maybe?
MasterDuke m: my @a = 1,2; say @a[9999999999999999999999999999999999999999999999] 23:17
evalable6 (exit code 1) Cannot unbox 153 bit wide bigint into native integer
in block <unit> at /tmp/ldjuzMCrIl line 1
MasterDuke what do you mean just make it work? don't throw and just give the unbox error i showed earlier?
AlexDaniel hm, why $/ behaves a bit differently… 23:19
MasterDuke: yeah, I guess that qualifies as “work”, yes…
MasterDuke down the rabbit hole...
AlexDaniel MasterDuke: wait but, does that happen at run time or compile time? 23:20
MasterDuke AlexDaniel: which? the "cannot declare" or the "cannot unbox"?
AlexDaniel cannot unbox
MasterDuke compile time
AlexDaniel MasterDuke: oh well… then I don't know 23:23
in my mind it shouldn't behave differently than this: 23:24
m: $_ = "foo"; s/(o)/$99999/; .say
evalable6 Use of Nil in string context
fo
in code at /tmp/j2bGYSkLGI line 1
AlexDaniel I'd also accept the unbox error at run time, I guess…
but compile time is better?… I don't know, actually. I'm very confused now :)
MasterDuke problem-solving repo? 23:25
AlexDaniel yeah, you can try that
MasterDuke AlexDaniel: github.com/perl6/problem-solving/issues/10 23:34
23:39 lucasb left 23:45 llfourn left
dogbert17 lizmat: wrt your sprintf examples, perhaps it has something to do with how P5 handles True/False 23:47
23:57 llfourn joined, Kaiepi joined 23:59 Kaiepi left, Kaiepi joined