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.
lizmat Files=1255, Tests=75810, 338 wallclock secs (15.77 usr 5.42 sys + 2374.92 cusr 246.28 csys = 2642.39 CPU) 08:13
brrt .... 08:26
lizmat brrt o/ 08:30
m: my $a = 42; $_ = 666 if $_ == 42 with $a # sometimes I wish this would DWIM 08:31
camelia 5===SORRY!5=== Error while compiling <tmp>
Confused
at <tmp>:1
------> 3my $a = 42; $_ = 666 if $_ == 42 with 7⏏5$a # sometimes I wish this would DWIM
lizmat m: my $a = 42; $_ = 666 if $_ == 42 for $a; say $a # this does
camelia 666
brrt yay, i can talk 08:32
\o lizmat
can i haz a commit bit for rakudo
or, can anybody else apply a one-line patch 08:33
lizmat brrt: sure what is it ?
brrt we're JIT compiling p6invokeunder and we really rather shouldn't
lizmat what is the patch ? 08:34
brrt in src/vm/moar/ops/perl6_ops.c, for MVM_ext_register_extop(tc, "p6invokeunder", ...) 08:35
to make MVM_EXTOP_INVOKISH into MVM_EXTOP_NO_JIT
lizmat does 08:36
brrt ty 08:39
lizmat: you will only see a change if you comment out the merge_bbs in src/spesh/optimize.c (moar) 08:40
jnthn Or checkout the pea branch in MoarVM and build CORE.setting
Which has that change
I'll have to dig into what's wrong with merge_bbs at some point
lizmat so the rakudo change by itself is not good ?
or can I just put that in anyway ?
brrt the rakudo change by itself is necessary. but it's effectiveness is only proven if you do either of those things 08:41
otherwise, the bug is prevented by more indirect means, namely, JIT bailing out in fortunate places
lizmat ah, I thought this was a fix for the problem that is preventing App::Tasks from getting installed 08:43
brrt well, hmm, I hadn't heard about that one 08:44
would be fortunate if it were, but I don't expect so :-)
lizmat github.com/rakudo/rakudo/issues/2345 08:45
it could well be caused by the js merge btw 08:46
hmmm... seems like p6bannnerbot is not the only thing we lost 08:49
Geth is not around either ?
masak jnthn: there has to be some pun potential with basic blocks and a "bb gun"... :P 09:44
jnthn Already thought of that one :P 09:55
lizmat m: sub a("foo") { }; dd &a.signature.params[0].ACCEPTS("foo") # shouldn't this just work? 10:38
camelia Bool::False
lizmat jnthn ^^ 10:38
lizmat whee Geth! :-) 10:38
jnthn lizmat: It's awkward, I think, because didn't we define Parameter ~~ Parameter as part of the Signature ~~ Signature mechanism? 10:42
lizmat well, there *is* an .ACCEPTS(Parameter:D: Parameter:D)
jnthn m: sub a("foo") { }; dd &a.signature.params[0].constraints.ACCEPTS("foo")
camelia Bool::True
jnthn I think that's what you're after
lizmat ah
yup
jnthn That's what the Cro::HTTP::Router uses, anyway :) 10:43
Zoffix_ lizmat, how can you talk without a voice?
Oh, the channel is no longer +m. So the spam attacks stopped?
lizmat I guess...
it's been -m for a few hours now 10:44
Zoffix_ Alright
jnthn Zoffix_: The banner bot went missing, so they were -m'd...didn't see any spam *yet*...
Zoffix_ knocks on virtual wood
Geth rakudo: 0d1be77eaf | (Elizabeth Mattijsen)++ | src/core/Main.pm6
Streamline MAIN_HELPER and add some features

If no appropriate MAIN candidate was found, it would generate usage info for *all* candidates. With this change, it will only generate usage info for those candidates that match with the given *positional* parameters only. This will cause "zef install" to only show the help for the "install". ... (5 more lines)
11:24
Geth nqp/jvm-global-clean: 32d4dad0ce | 陈梓立++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/SerializationWriter.java
[jvm] clean SerializationWriter.java
11:46
Geth rakudo: 197519804a | (Paweł Murias)++ | src/core/Str.pm6
[js] Add missing NFG workaround to chomp
12:28
rakudo: 744755b0c4 | (Paweł Murias)++ | tools/build/create-js-runner.pl
[js] Add default options to perl6-js runner
rakudo: 9d4c8ddd93 | (Paweł Murias)++ | src/Perl6/Optimizer.nqp
Don't create unneeded QAST::Want
nqp/jvm-global-clean: 750e73ab13 | 陈梓立++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/SerializationReader.java
[jvm] clean SerializationReader.java
12:30
lizmat afk for a few hours& 12:50
Geth nqp/jvm-global-clean: d639909483 | 陈梓立++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/SerializationWriter.java
[jvm] fix NPE
13:16
nqp/jvm-global-clean: c60eea5ee0 | 陈梓立++ | 2 files
[jvm] clean SerializationContext.java
Geth nqp/jvm-global-clean: 8d6c86b9e9 | 陈梓立++ | 18 files
[jvm] global sixmodel clean
14:25
Geth nqp/jvm-global-clean: 4 commits pushed by 陈梓立++ 14:27
diakopter 陈梓立 14:44
wow, putty/windows copy/paste is getting better I think
pmurias are there any plans to address our weird behavior of sized int types: rt.perl.org/Public/Bug/Display.htm...et-history 14:49
they throw when the values is >64bit and overflow when it's <64bit
pmurias this test seems rather platform specific: github.com/perl6/roast/blob/master...ive.t#L382 16:02
Geth nqp/jvm-global-clean: f6f88f721d | 陈梓立++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/SerializationWriter.java
[jvm] && should be ||
16:18
Geth roast: 802755f1a4 | (Zoffix Znet)++ | 2 files
[v6.d REVIEW] Appendicies str size tests
17:21
nqp/jvm-global-clean: 121046070b | 陈梓立++ | 27 files
[jvm] partly clean REPR
17:25
rakudo: 9daac68324 | (Elizabeth Mattijsen)++ | 7 files
Make sure that .STORE only works on instances
17:35
nqp: 96714f3be1 | (Tzu-Li Chen)++ (committed using GitHub Web editor) | 66 files
[jvm] global clean (#507)

  * [jvm] clean ExceptionHandling
  * [jvm] interface is public by default
  * [jvm] clean IOOps.java
... (32 more lines)
17:42
lizmat .ask jnthn ideas about R#2360 ? 17:45
yoleaux lizmat: I'll pass your message to jnthn.
synopsebot R#2360 [open]: github.com/rakudo/rakudo/issues/2360 my %*FOO is Set = <a b c> dies
lizmat .ask jnthn is it correct that setting a default of an opaque (action 4) in object creation uses nqp::assign, rather than nqp::p6assign ? 17:51
yoleaux lizmat: I'll pass your message to jnthn.
Geth rakudo: 33c241532b | (Elizabeth Mattijsen)++ | src/core/Main.pm6
Refactor MAIN_HELPER / add support for &ARGS-TO-CAPTURE

This introduces support for an &ARGS-TO-CAPTURE to exist in the code where the MAIN also exists. It takes an array of ARGS, and is supposed to return a Capture. If there is no such sub, then it will use the default one living inside MAIN_HELPER.
This should allow GetOpt::Long type of modules to simplify their code to just supply an &ARGS-TO-CAPTURE sub without having to worry about the actual dispatch specifics.
19:04
lizmat .tell leont github.com/rakudo/rakudo/commit/33c241532b
yoleaux lizmat: I'll pass your message to leont.
Geth rakudo: 8c3a413106 | (Elizabeth Mattijsen)++ | src/core/Main.pm6
Make ARGS-TO-CAPTURE also take the MAIN as the first argument

Apparently some GetOpt modules use the information of the MAIN sub to build up structures needed for parsing the arguments. The default ARGS-TO-CAPTURE does not do that at the moment.
19:49
SyrupThinker bisect: my Str %a; try { CATCH { when X::TypeCheck::Assignment { so $_ } }; %a.AT-KEY("K") = 1 } 20:02
bisectable6 SyrupThinker, Bisecting by exit code (old=2015.12 new=8c3a413). Old exit code: 0
SyrupThinker, bisect log: gist.github.com/b694c7ba79f44ff219...88c35c4588
SyrupThinker, (2018-07-09) github.com/rakudo/rakudo/commit/92...ca720147fb
lizmat m: my Str %a; try { CATCH { when X::TypeCheck::Assignment { so $_ } }; %a.AT-KEY("K") = 1 } 20:03
camelia Cannot find method 'name' on object of type ContainerDescriptor::BindHashPos
in block <unit> at <tmp> line 1
lizmat m: my Str %a; CATCH { when X::TypeCheck::Assignment { so $_ }; %a.AT-KEY("K") = 1 20:05
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3Assignment { so $_ }; %a.AT-KEY("K") = 17⏏5<EOL>
expecting any of:
statement end
statement modifier
statement modifier loo…
lizmat m: my Str %a; CATCH { when X::TypeCheck::Assignment { so $_ } }; %a.AT-KEY("K") = 1
camelia Cannot find method 'name' on object of type ContainerDescriptor::BindHashPos
in block <unit> at <tmp> line 1
lizmat SyrupThinker: you don't need the try
SyrupThinker I know, its just a habit 20:07
Also I really can't get to writing my thing. First Shaped Arrays, now this :) 20:08
lizmat SyrupThinker: it should be relatively easy to fix, could you please make an issue ? 20:09
SyrupThinker One moment
lizmat .ask jnthn it looks like all ContainerDescriptors in the BOOTSTRAP miss a "name" method to get at the symbol that they're working for 20:15
yoleaux lizmat: I'll pass your message to jnthn.
jnthn lizmat: Hmm, maybe you mean "all the transient ones for elements of things"? But those don't really have a name of their own, they're elements of something else... 20:27
yoleaux 17:45Z <lizmat> jnthn: ideas about R#2360 ?
synopsebot R#2360 [open]: github.com/rakudo/rakudo/issues/2360 my %*FOO is Set = <a b c> dies
yoleaux 17:51Z <lizmat> jnthn: is it correct that setting a default of an opaque (action 4) in object creation uses nqp::assign, rather than nqp::p6assign ?
20:15Z <lizmat> jnthn: it looks like all ContainerDescriptors in the BOOTSTRAP miss a "name" method to get at the symbol that they're working for
jnthn lizmat: Could maybe add one that delegates to the underlying descriptor and adds "element of " at the start though; dunno how it'd look in errors
I thought I'd replaced all of the assigns with p6assign in the object creation code... :) 20:28
lizmat m: my Str %h; %h<a> = 1
camelia Type check failed in assignment to %h; expected Str but got Int (1)
in block <unit> at <tmp> line 1
lizmat m: my Str %h; %h.AT-KEY("a") = 1
camelia Cannot find method 'name' on object of type ContainerDescriptor::BindHashPos
in block <unit> at <tmp> line 1
jnthn Hm, that's not *quite* an assignment to %h
lizmat jnthn: ^^ that's the one 20:29
jnthn Ah
Yeah, that's fixable as I just described
lizmat well, true, but the error handling is trying to find the object's name for the error message
jnthn As I remember it, there's a role that all those transient ones do 20:30
lizmat ok, then I'll look at how that stuff works nowadays :-)
::Whence
jnthn And it actually has a method of() { $!nested.of } or some such
So you'd for the most basic solution just add a similar one for name
Sounds like :)
lizmat ah, ok, will try that
jnthn For a fancier fix we can now sneak in an "element of " :)
Which I don't think we do easily had the possibility to do before.
lizmat yup, looks like 20:31
MasterDuke pmurias, Zoffix: re github.com/perl6/roast/commit/8027...3ff178c0d, ISTR some discussion (i think with jnthn) about that test, but a quick search of the irc logs hasn't turned it up
lizmat "Type check failed in assignment to element of %h; expected Str but got Int (1)" # whee ! :-) 20:36
lizmat Type check failed in assignment to %h{'a'}; expected Str but got Int (1) # jnthn, isn't that even more awesome ? 20:59
for "my Str %h; %h.AT-KEY("a") = 1"
m: my Str %h; %h.AT-KEY("a") = 1 21:00
camelia Cannot find method 'name' on object of type ContainerDescriptor::BindHashPos
in block <unit> at <tmp> line 1
jnthn oh wow...and we can actually do that easily with the new design too...
lizmat yup :-)
my Str @a[2,2]; @a.AT-POS(0,1) = 2 will give: " Type check failed in assignment to [0,1]; expected Str but got Int (2)" 21:03
oddly enough, it can't find the name of @a
Geth rakudo: bf10f4c52c | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/BOOTSTRAP.nqp
Added .name methods for several autovivification classes

Fixes R#2361 . But could probably still use some further investigation improvement for some classes, as it appeared to be impossible to get at the name of the target.
21:28
synopsebot R#2361 [open]: github.com/rakudo/rakudo/issues/2361 [regression][⚠ blocker ⚠] No name method for several ContainerDescriptors
pmurias Zoffix++ # removing the moar specific str test case 21:39
Geth rakudo: 8cc3d5d7d8 | (Elizabeth Mattijsen)++ | src/Perl6/World.nqp
Fix last s/assign/p6assign/ in BUILDALL codegen

This one applied to assigning default value to an Opaque attribute.
22:25
lizmat sleep& 22:26
timotimo "opaque", huh
lizmat as opposed to native ?
m: class A { has $.a = 42 }; dd A.new # that case 22:27
camelia A.new(a => 42)
lizmat m: class A { has int $.a = 42 }; dd A.new # as opposed to this case
camelia A.new(a => 42)
jnthn Oh, that's what it meant :)
reference type :)
lizmat really sleep & 22:28
timotimo i usually just say "object", since that corresponds to the register "names"
jnthn yeah, that works too :) 22:29
I guess most objects we have have the P6opaque repr though :)
timotimo oh, that's kind of like when i call every cute animal i see a "kitty" 22:30
Kaiepi P6Opaque goofing up in moar... 22:48