00:17 Kaiepi left, Kaiepi joined, vrurg joined 00:22 vrurg left 00:54 vrurg joined, vrurg left, vrurg joined 01:20 kvw_5_ joined 01:23 kvw_5 left 02:23 bisectable6 left, statisfiable6 left, greppable6 left, tellable6 left, benchable6 left, unicodable6 left, linkable6 left, evalable6 left, releasable6 left, quotable6 left, coverable6 left, notable6 left, sourceable6 left, bloatable6 left, shareable6 left, nativecallable6 left, committable6 left, squashable6 left 02:24 greppable6 joined, linkable6 joined, quotable6 joined, benchable6 joined, squashable6 joined, sourceable6 joined 02:25 committable6 joined, evalable6 joined, bisectable6 joined, notable6 joined, statisfiable6 joined, unicodable6 joined 02:26 shareable6 joined, coverable6 joined, tellable6 joined, bloatable6 joined, releasable6 joined, nativecallable6 joined
vrurg . 02:30
02:52 softmoth_ is now known as softmoth 03:50 sxmx left 06:52 domidumont joined 06:57 patrickb joined, sxmx joined
patrickb o/ 07:38
07:43 linkable6 left 07:45 linkable6 joined 08:10 softmoth left 08:40 linkable6 left 08:43 linkable6 joined 08:56 frost-lab joined
Geth nqp: 8b2fd66c11 | (Elizabeth Mattijsen)++ | tools/templates/MOAR_REVISION
Bump NQP to get latest MoarVM fixes, MasterDuke++ nine++
MasterDuke oh, should i merge nqp #711 now? 09:43
Geth nqp: 531ac3007e | (Daniel Green)++ | 6 files
Finish getting rid of NQPCursor

Once its use is removed from the tests, the shim and constant aren't needed anymore.
nqp: 0bc2117497 | MasterDuke17++ (committed using GitHub Web editor) | 6 files
Merge pull request #711 from MasterDuke17/finish_getting_rid_of_NQPCursor

Finish getting rid of NQPCursor
rakudo: a9490436e6 | (Elizabeth Mattijsen)++ | tools/templates/NQP_REVISION
Bump NQP for latest fixes, MasterDuke++ nine++

  - MoarVM memory fixes
  - NQP getting rid of NQPCursor
nqp: MasterDuke17++ created pull request #712:
Remove no longer needed $!slang override in Braid
11:29 MasterDuke left, MasterDuke joined
Geth rakudo: 7a77b39791 | (Elizabeth Mattijsen)++ | src/core.c/allomorphs.pm6
Make sure Allomorph.(comb|chop|chomp|substr) return Str
rakudo: 85e7e63dd5 | (Elizabeth Mattijsen)++ | src/core.c/traits.pm6
Mention "is implementation-detail" as option

For Routine trait
nqp: 37d1498f43 | (Daniel Green)++ | src/QRegex/Cursor.nqp
Remove no longer needed $!slang override in Braid

It's been long enough that modules should have been fixed by now.
nqp: 622e888b48 | MasterDuke17++ (committed using GitHub Web editor) | src/QRegex/Cursor.nqp
Merge pull request #712 from MasterDuke17/remove_no_longer_needed_slang_override_in_Braid

Remove no longer needed $!slang override in Braid
lizmat MasterDuke should I do a bump for this? would allow for easier bisectability 11:52
MasterDuke sure
lizmat ok, will do
12:08 frost-lab left
Geth rakudo: ba814fde4f | (Elizabeth Mattijsen)++ | 3 files
Make sure Allomorph.substr-rw returns Str

This was a little more involved. First of all, the Cool: candidates missed a the invocant type:D, which caused a weird interaction with the sub versions.
Finally fixed with adding an implementation-detail candidate that takes an additional type with which to create the string. The other candidates have been adapted to call that candidate with the intended type.
Also added some more candidates for better dispatchability.
vrurg MasterDuke: It's quite a fallout: gist.github.com/vrurg/ef54cb5f45f8...be1ba3f8c5 13:28
MasterDuke: I'll re-run it again following lizmat's NQP bump. 13:29
13:29 softmoth joined
MasterDuke looks like only one is obviously mine 13:31
vrurg MasterDuke: I didn't look into it. 13:33
nine MasterDuke: the "This type (Array) does not support elems" are probably because of your array truth check optimization 14:14
MasterDuke hm, could be. i'll try reverting and seeing what happens 14:15
14:15 b2gills left 14:27 patrickb left
MasterDuke yep 14:36
i guess that optimization just has to be reverted 14:57
nine fastest way to fix it 15:11
Geth nqp: 97e37481a7 | (Daniel Green)++ | src/NQP/Optimizer.nqp
Revert "Optimize truth checks of arrays in whiles and ifs"

This reverts commit 2f1d41aa8026a769cefa525b0741ac69880b0ccf.
Causes `This type (Array) does not support elems` in Type::EnumHOW. Maybe I'll figure out a way to safely do this, but for now just revert.
rakudo: 5a76b7ed15 | (Daniel Green)++ | tools/templates/NQP_REVISION
NQP bump to get fix for Type::EnumHOW
¦ rakudo: tbrowder self-unassigned A DateTime object should output a real number for its posix method github.com/rakudo/rakudo/issues/4286 15:24
nine So, as I guessed, Lumberjack simply expects a certain number of call frames it needs to skip when generating a Backtrace to get to the interesting one. That magic number is now supposed to be 3 instead of 4. 15:29
Thing is, before my change Lumberjack failed its test exactly like the spectest did when run with MVM_SPESH_NODELAY=1 MVM_SPESH_BLOCKING=1. 15:30
Now the test failure with non-standard options itself may sound harmless, but the same would happen in a long running process that generated a bunch of log messages. At some point it would suddenly start to find the wrong frame. 15:31
So the code has always been fragile and would fail in some real world cases. But what to do about it now? 15:32
MasterDuke i think we should have add an azure pipeline config that sets those in the environment
(not to fix anything now, just as a way to hopefully find problems sooner) 15:33
nine Well that known spec test failure with backtraces was the one thing always keeping us from running NODELAY regularily
MasterDuke but that wouldn't have prevented us from setting it in the azure pipelines, they don't run a spectest 15:34
nine Of course I could just create a PR for adjusting that number. It should be rather stable now. 15:40
Well I did just that. Let's see how it goes. 15:49
MasterDuke add Backtrace.number-of-frames-to-skip-to-get-to-the-ones-you-probably-want(--> 3) {} and PR it calling that? 15:50
committable6: 2021.03,HEAD say DateTime.new(now).second.chars 15:54
committable6 MasterDuke, ¦2021.03: «9␤» ¦HEAD(5a76b7e): «12␤»
MasterDuke that's the Games::TauStation::DateTime fail
committable6: 2021.03,HEAD say DateTime.new(now).second 15:55
committable6 MasterDuke, ¦2021.03: «1.215775␤» ¦HEAD(5a76b7e): «1.643846244␤»
nine MasterDuke: actually Backtrace::Frame already has an is-setting method which would be perfectly suitable for skipping those frames
There's also Backtrace.next-interesting-index which among other things skips is-setting frames 15:57
MasterDuke better (shorter) names than i proposed...
nine Well, this makes me a whole lot more confident about calling this not actually a rakudo regression 15:59
16:00 finsternis left
lizmat m: class Foo is Str { }; my Foo() $a = "foo"; dd $a.^name, $a.Str.^name # I'd argue the second one should be Str 16:05
camelia "Foo"
lizmat vrurg moritz_ ^^ ??
m: my $a = FatRat.new(1,3); dd $a.^name, $a.Rat.^name # similarly, but different ? 16:08
camelia "FatRat"
lizmat hmm.... guess not, since FatRat is not a Rat
m: my $a = <666>; dd $a.^name, $a.Str.^name 16:09
camelia "IntStr"
nine The Foo is Str and FatRat examples look perfectly fine to me. 16:20
lizmat ok, so a coercion of a subclass of Str to Str should be identity ? 16:26
nine yes 16:27
Since the thing already is a Str, there's just nothing to do
lizmat so, how would one coerce a subclass of Str to Str ? 16:28
do we have a HLL way of doing that ?
dinner& 16:30
nine m: class Foo is Str { }; my Foo() $f = "foo"; my $s = Str.new(:value($f)); say $f.^name; say $s; say $s.^name;
camelia Foo
nine lizmat: ^^^ 16:31
Geth nqp: ee7d600d8c | (Tom Browder)++ (committed using GitHub Web editor) | docs/ops.markdown
Update ops.markdown

Show the actual time reference.
17:17 domidumont left 17:23 b2gills joined 17:40 sena_kun left 17:41 sena_kun joined 18:20 sena_kun left, sena_kun joined
Geth rakudo: bd900c9db7 | (Elizabeth Mattijsen)++ | src/core.c/Match.pm6
Remove potentially unnecessary boxing from NQP
vrurg lizmat: I guess nine has answered your question. 18:42
lizmat about the .Str question, I presume? 18:43
Geth rakudo: a26ff404ff | (Elizabeth Mattijsen)++ | 2 files
Make Str.comb handle subclasses of Str properly
vrurg lizmat: yes 18:48
lizmat ack
vrurg MasterDuke: Another run with the latest NQP bump. At the first glance it looks the same. gist.github.com/vrurg/d824dc212991...45e5c2e7be
lizmat vrurg: in the new coercion protocol, is there a way to add a method to class Foo to make .Foo coerce to it? 18:52
m: class Foo is Str { }; say "aaa".Foo
camelia No such method 'Foo' for invocant of type 'Str'
in block <unit> at <tmp> line 1
lizmat except adding:
vrurg lizmat: of course. `method COERCE(Any $val) { self.new: .... }`
lizmat m: class Foo is Str { method Foo() { Foo.new(:value(self)) }; say "aaa".Foo
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3{ Foo.new(:value(self)) }; say "aaa".Foo7⏏5<EOL>
expecting any of:
statement end
statement modifier
vrurg lizmat: But not the way you want it. 18:53
Don't forget that techincally .Foo is a method call and nothing else. Foo("aaa") is the way.
lizmat m: class Foo is Str { }; say Foo("aaa")
camelia aaa
vrurg Or `sub bar(Foo() $a) { }`
lizmat m: class Foo is Str { }; say Foo("aaa").^name
camelia Foo
lizmat so I guess we need to move away from x.Foo in general, towards Foo(x) ? 18:54
vrurg m: class Foo { method COERCE(Str $s) { note "coercing from ", $s.raku; Foo.new }; }; say Foo("aa")'
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3 ", $s.raku; Foo.new }; }; say Foo("aa")7⏏5'
expecting any of:
infix stopper
statement end
vrurg lizmat: you're right. That's what I started doing recently. 18:55
m: class Foo { method COERCE(Str $s) { note "coercing from ", $s.raku; Foo.new }; }; say Foo("aa")
camelia coercing from "aa"
lizmat well, you don't actually need the COERCE 18:56
m: class Foo is Str { }; sat Foo("aa")
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
sat used at line 1. Did you mean 'set', 'say'?
lizmat m: class Foo is Str { }; say Foo("aa")
camelia aa
lizmat m: class Foo is Str { }; say Foo("aa".^name) 18:57
camelia Str
lizmat m: class Foo is Str { }; say Foo("aa").^name
camelia Foo
vrurg lizmat: actually, yes. I prefer COERCE for it makes my intentions more clear. But the first try is given to `.new($coercee)`. 18:58
lizmat m: dd Str.new("foo")
camelia Default constructor for 'Str' only takes named arguments
in block <unit> at <tmp> line 1
lizmat ?
vrurg m: class Foo { multi method new(Str:D $s) { note "WITH STR"; nextsame } }; say Foo("bar")
camelia WITH STR
Impossible coercion from 'Str' into 'Foo': no acceptable coercion method found
in block <unit> at <tmp> line 1
vrurg m: class Foo is Str { multi method new(Str:D $s) { note "WITH STR"; nextsame } }; say Foo("bar") 18:59
camelia bar
vrurg m: class Foo is Str { multi method new(Any:D $s) { note "WITH ANY"; nextsame } }; say Foo("bar") 19:00
camelia bar
vrurg Curios. Ok, I need to see which `new` it eventually finds and uses.
m: class Foo is Str { method new(Any:D $s) { note "WITH ANY"; nextsame } }; say Foo("bar")
camelia Too few positionals passed; expected 2 arguments but got 1
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
vrurg Heh, I miss something. Need to go now, will be back in 1-2hrs. 19:02
lizmat oki 19:03
don't get me wrong, I'm glad: my Foo() $a = "foo" works out of the box with just class Foo is Str { } 19:04
I just don't understand how :-)
19:21 patrickb joined
[Tux] I hope this is a one-off, as I do not see high resource use on my box, but it is slower than usual: 19:29
Rakudo v2021.03-140-ga26ff404f (v6.d) on MoarVM 2021.03-39-gba124ad12
csv-ip5xs0.831 - 0.873
csv-ip5xs-208.364 - 8.625
csv-parser25.896 - 27.394
csv-test-xs-200.375 - 0.378
test8.124 - 8.206
test-t2.356 - 2.387
test-t --race0.954 - 0.960
test-t-2042.617 - 45.073
test-t-20 --race11.448 - 11.846
lizmat yeah, that's pretty significant 19:32
:-( 19:33
I wonder if it is my Str subclassing work that's doing this :( 19:41
vrurg lizmat: I think I know what happens. It falls back to Str.COERCE. 19:43
But anyway it doesn't change the fact that if there is new which .cando($coercee) then it'll be invoked instead of COERCE. 19:44
by 'new' I mean method 'new'
lizmat ack 19:46
vrurg m: class Foo is Str { multi method new(Any:D $v) { note "VIA NEW"; self.new(:value($v)) } }; say Foo("aa").WHICH 19:50
camelia Foo|aa
vrurg My bad, `new` is the fallback, COERCE is the priority. Which is the right way as `new` may has coerce-incompatible semantics. 19:52
lizmat indeed
really afk&
19:56 maggotbrain left
MasterDuke vrurg: that doesn't make sense. locally Type::EnumHOW works fine 20:10
vrurg MasterDuke: dunno. I was in a similar situation once or twice too.
Could be a flapper? Perhaps sena_kun can tell more. 20:11
MasterDuke vrurg: nope, you're one commit behind it looks like
there was an nqp bump after github.com/rakudo/rakudo/commit/ba...cdba85a036
vrurg MasterDuke: I'm not choosing what commit to use, blin does. Perhaps I was too fast and there was no build for HEAD yet. 20:12
MasterDuke committable6: HEAD say "hi"
committable6 MasterDuke, ¦HEAD(a26ff40): «hi␤»
vrurg I'll try again now. Will see if it changes anything.
Is running. Gonna take 1-1.5hr. 20:17
MasterDuke cool, thanks
vrurg np. :) 20:20
20:24 samebchase-6 joined 20:25 eater joined 20:26 eaterof left, samebchase- left 20:56 linkable6 left 20:57 linkable6 joined 21:12 patrickb left 21:43 Kaiepi left 21:55 Geth left 21:56 Geth joined 21:58 sxmx left 22:03 sxmx joined