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++ |
09:42 | |||||||||||||||||||||||||||||||||||||
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. |
09:44 | |||||||||||||||||||||||||||||||||||||
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 |
09:57 | ||||||||||||||||||||||||||||||||||||||
nqp: MasterDuke17++ created pull request #712: Remove no longer needed $!slang override in Braid |
10:26 | ||||||||||||||||||||||||||||||||||||||
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 |
11:30 | |||||||||||||||||||||||||||||||||||||
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. |
11:50 | ||||||||||||||||||||||||||||||||||||||
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. |
13:16 | |||||||||||||||||||||||||||||||||||||
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. |
15:19 | |||||||||||||||||||||||||||||||||||||
rakudo: 5a76b7ed15 | (Daniel Green)++ | tools/templates/NQP_REVISION NQP bump to get fix for Type::EnumHOW |
15:23 | ||||||||||||||||||||||||||||||||||||||
¦ 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" "Foo" |
||||||||||||||||||||||||||||||||||||||
lizmat | vrurg moritz_ ^^ ?? | ||||||||||||||||||||||||||||||||||||||
m: my $a = FatRat.new(1,3); dd $a.^name, $a.Rat.^name # similarly, but different ? | 16:08 | ||||||||||||||||||||||||||||||||||||||
camelia | "FatRat" "Rat" |
||||||||||||||||||||||||||||||||||||||
lizmat | hmm.... guess not, since FatRat is not a Rat | ||||||||||||||||||||||||||||||||||||||
m: my $a = <666>; dd $a.^name, $a.Str.^name | 16:09 | ||||||||||||||||||||||||||||||||||||||
camelia | "IntStr" "Str" |
||||||||||||||||||||||||||||||||||||||
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 foo Str |
||||||||||||||||||||||||||||||||||||||
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:02 | |||||||||||||||||||||||||||||||||||||
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 |
18:28 | |||||||||||||||||||||||||||||||||||||
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 |
18:46 | |||||||||||||||||||||||||||||||||||||
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: postfix statement end statement modifier stat… |
||||||||||||||||||||||||||||||||||||||
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 infix stopper postfix 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" Foo.new |
||||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||
game& | |||||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||||
github.com/rakudo/rakudo/commit/5a...41006139e7 | |||||||||||||||||||||||||||||||||||||||
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
|