01:22 sena_kun joined 01:23 Altai-man_ left 03:08 linkable6 left, evalable6 left 03:10 evalable6 joined 03:11 linkable6 joined 03:21 Altai-man_ joined 03:23 sena_kun left 05:22 sena_kun joined 05:23 Altai-man_ left
AlexDaniel sena_kun: looks promising :) github.com/Raku/Blin/pull/23 06:30
greppable6: \.\..*\.reverse 06:32
greppable6 AlexDaniel, 24 lines, 15 modules: gist.github.com/66034742de35b4d630...7faba1f25a
AlexDaniel Xliff: well, you can add arguments to the one you did before 06:34
Xliff: for example, JSON::Fast is likely to pass tests everywhere so it'll be `OK`
Xliff: I think module Sum is AlwaysFail 06:36
Xliff: basically pick anything from here: gist.github.com/AlexDaniel/acf237b...e5abb8a785 06:38
just keep in mind that some of them have dependencies :)
[Tux] Rakudo version 2020.02.1-291-g30e7a67c5 - MoarVM version 2020.02.1-73-gc7e75be60
csv-ip5xs0.694 - 0.694
csv-ip5xs-205.839 - 5.879
csv-parser23.546 - 24.095
csv-test-xs-200.376 - 0.388
test7.565 - 7.620
test-t1.949 - 1.961
test-t --race0.948 - 0.986
test-t-2031.316 - 31.357
test-t-20 --race9.519 - 9.575
07:06
07:08 maggotbrain left 07:21 Altai-man_ joined 07:23 sena_kun left
MasterDuke is geth down? don't think i saw 30e7a67c55546e934ae46ed600e04c1c503cece5 go by 08:27
linkable6 (2020-04-04) github.com/rakudo/rakudo/commit/30e7a67c55 Add s/PERL6/RAKU test environment variables
tyil MasterDuke: I'll kick him 08:34
MasterDuke woohoo, got my branch building rakudo and passing nqp's `make m-test` and rakudo's `make m-test m- spectest`. compile times seem unchanged, but heaptrack reports ~4gb less allocated 08:35
tyil considering to just kick him on a daily basis at this point, tbh
08:35 Geth_ joined, Geth left
tyil it doesn't report anything in particular in the logs as to why it's having troubles 08:35
lizmat Files=1306, Tests=111228, 213 wallclock secs (28.90 usr 8.27 sys + 3009.80 cusr 267.12 csys = 3314.09 CPU) 08:46
MasterDuke oom killer?
tyil the process runs just fine 08:47
if the OOMkiller were to come around, kubernetes would restart the process somewhere
and there would be no problem
09:05 Voldenet joined, Voldenet left, Voldenet joined
Xliff m: use NativeCall; class A repr<CPointer> {}; my $a = A.new; +$a.say 09:14
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse class definition
at <tmp>:1
------> 3use NativeCall; class A7⏏5 repr<CPointer> {}; my $a = A.new; +$a.s
expecting any of:
generic role
Xliff m: use NativeCall; class A is repr<CPointer> {}; my $a = A.new; +$a.say
camelia WARNINGS for <tmp>:
A.new
Useless use of "+" in expression "+$a.say" in sink context (line 1)
Xliff m: use NativeCall; class A is repr<CPointer> {}; my $a = A.new; (+$a).say
camelia Cannot resolve caller Numeric(A:D: ); none of these signatures match:
(Mu:U \v: *%_)
in block <unit> at <tmp> line 1
Xliff ^^ What would it take to get that to work? 09:15
09:22 sena_kun joined 09:24 Altai-man_ left 09:35 hungrydonkey left, hungryd80 joined
Geth_ rakudo: 3983b4f8f2 | (Elizabeth Mattijsen)++ | src/core.c/Range.pm6
Make (1..-Inf).reverse) work as intended

Fixes R#3595
09:43
linkable6 R#3595 [open]: github.com/rakudo/rakudo/issues/3595 [ranges][regression] (1 .. -Inf).reverse is wrong
Xliff AlexDaniel: Do you really want both .output-old and .output-new? 09:45
AlexDaniel: gist.github.com/Xliff/a9bb1b058123...d46f609f29 09:47
AlexDaniel Xliff: markdown in tickets is different from markdown that is in gists
so test your stuff in comments :D
I know, I know, but that's how it is :D 09:48
Xliff Um. No. 09:49
It's how YOU want it. Not necessarily how it is.
AlexDaniel Xliff: I mean that github parses markdown differently 09:50
depending on whether it's in tickets, gists or wikis
Xliff It looks fine. See PR
I'm more concerned about comment length with both .output-new AND .output-old
AlexDaniel Xliff: yeah… we can have nested collapsible things but it gets kinda ridiculous 09:52
Xliff: btw here's the source of my comment (in case you can't see it): gist.github.com/AlexDaniel/ae88320...0a25ba7f78 09:53
Xliff: ``` instead of <pre> so that there's no need to escape stuff, also the whole thing is indented so that it's part of the todo item
Xliff <summary> + ``` does not work 09:56
AlexDaniel Xliff: you need a newline before ``` I think
like an empty line
Xliff And this whole indenting stuff might be taking this too far.
AlexDaniel but it does need to be part of the todo item 09:57
Geth_ rakudo: c588323e51 | (Elizabeth Mattijsen)++ | src/core.c/Range.pm6
Make (foo .. foo).reverse correctly

Fixes R#3597
linkable6 R#3597 [open]: github.com/rakudo/rakudo/issues/3597 [ranges] (Inf ^.. Inf).reverse is wrong
AlexDaniel otherwise you can't drag'n'drop todo items
Xliff ``` Does not work. Destroyes formatting. 10:00
Also, can't drag and drop TODO items at all. 10:01
Old Output will indent, New Output will NOT
AlexDaniel Xliff: but it works here? github.com/Raku/Blin/pull/23#issue...-609363030 10:02
I can drag'n'drop but maybe just for my own comment
lizmat: I wonder, wouldn't it be simpler for everything if .reverse on a Range just returned a reversed Range object? 10:06
lizmat: that's fully not backward compatible but I'm not sure if it matters
lizmat well, I guess you could consider a dedicated Range.reverse to be a premature optimization 10:07
as you could probably easily replace (a .. b).reverse by b ... a 10:08
AlexDaniel what optimization
it's a completely different behavior
lizmat but the latter is like 10 times slower
m: say (1..10).reverse
camelia (10 9 8 7 6 5 4 3 2 1)
Xliff Got it!
lizmat m: say 10...1
camelia (10 9 8 7 6 5 4 3 2 1)
lizmat AlexDaniel: not very different in most cases 10:09
AlexDaniel ah, I see what you're saying
lizmat so, I'm fixing those tickets now
AlexDaniel yeah for now that makes sense for sure
lizmat once ... is optimized, I will look and see how much we can rip out
AlexDaniel lizmat: I'm just trying to make sense of the behavior and right now “I don't know” is the only short explanation I have :) 10:11
so .reverse is like, uhm, having a range with sides reversed but it's allowed to count down ? 10:12
on a Range that is 10:13
lizmat m: say (1..10).reverse # indeeed
camelia (10 9 8 7 6 5 4 3 2 1)
AlexDaniel on everything else it's just iterating backwards
lizmat m: my @a = 1..10; say @a.reverse # functional equivalent 10:14
camelia (10 9 8 7 6 5 4 3 2 1)
AlexDaniel m: say (1..10.5).reverse
camelia (10.5 9.5 8.5 7.5 6.5 5.5 4.5 3.5 2.5 1.5)
AlexDaniel m: my @a = 1..10.5; say @a.reverse
camelia (10 9 8 7 6 5 4 3 2 1)
AlexDaniel not exactly…
lizmat hmmm... that would be a bug :-) 10:15
care to make a ticket?
AlexDaniel lizmat: it's by design, this is why we have this conversation
:)
lizmat hmmmm 10:16
premature optimization :-(
AlexDaniel lizmat: now you *can* fix this particular case with maths, I think 10:17
but then what about Num ranges? :)
m: dd $_ for 10e0..15e0
camelia 10e0
11e0
12e0
13e0
14e0
15e0
AlexDaniel lizmat: but if we say that .reverse is supposed to produce exactly the same values just in reverse, then maybe there's a way to get there eventually 10:19
m: say (Inf ^.. Inf).reverse[^10] 10:21
camelia (Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil)
AlexDaniel e: say (Inf ^.. Inf).reverse[^10]
evalable6 (Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil)
AlexDaniel lizmat: I'm a bit confused as to why it still prints what it prints, but either way the fix for R#3597 is possibly not right 10:24
linkable6 R#3597 [open]: github.com/rakudo/rakudo/issues/3597 [ranges][tests needed] (Inf ^.. Inf).reverse is wrong
AlexDaniel ah
now that I squinted a bit harder it's probably right 10:25
lizmat m: dd ("1"..9).reverse.head(10) # another case :-( 10:27
camelia This type cannot unbox to a native string: P6opaque, Int
in block <unit> at <tmp> line 1
AlexDaniel lizmat: oh I have not even considered mixed types 10:30
lizmat yeah... I think some cleanup is needed :-(
AlexDaniel Xliff: it looks pretty good! 10:32
Xliff: don't put the sha in `` because in rakudo/rakudo repo github will automatically create links for shas 10:33
Xliff: and you don't even need to substr it I think
it's a bit ugly in plaintext but as a ticket it'll be fine
Xliff *shrug* 10:34
Is it enough to do for now?
Getting tired and need to accomplish something on my own stuffs before I pass out. :/ 10:35
Oh, you want me to finish before merge. See? tired.
AlexDaniel well, I dunno. There's also output that is not in ``` ```, meaning all html stuff needs to be escaped
escaping ``` is probably significantly easier :) 10:36
Xliff Again, ``` does not work.
Dunno why, but inside of <details>, using ``` destroys the formatting. <pre> was the only alternative.
AlexDaniel Xliff: I just edited your comment with ``` 10:37
Xliff Checking
Hmmm... newline before ```? 10:38
Did you already mention that?
See? tired. :P
lizmat m: dd (NaN..NaN).head(10) 10:39
camelia (NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN).Seq
lizmat this feels... weird... I sorta expected this to produce a single NaN value ?
AlexDaniel m: dd (NaN...NaN).head(10) 10:40
camelia (NaN,).Seq
AlexDaniel lizmat: I don't even know what to expect now, really. Cognitive overload because of all edge cases
lizmat yeah... anyways, lunch has arrived& 10:41
Xliff AlexDaniel: Committed. 10:42
10:43 hungryd80 left, hungrydonkey joined
Xliff m: use NativeCall; class A is repr<CStruct> { has uint32 $!a }; my $a = $a.new; say cast(Pointer[A], $a); 10:45
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot use variable $a in declaration to initialize itself
at <tmp>:1
------> 3r<CStruct> { has uint32 $!a }; my $a = $7⏏5a.new; say cast(Pointer[A], $a);
expecting any of:
ter…
Xliff m: use NativeCall; class A is repr<CStruct> { has uint32 $!a }; my $a = A.new; say cast(Pointer[A], $a);
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
cast used at line 1. Did you mean 'cas', 'last'?
Xliff m: use NativeCall; class A is repr<CStruct> { has uint32 $!a }; my $a = A.new; say nativecast(Pointer[A], $a);
camelia NativeCall::Types::Pointer[A]<0x3b40910>
Xliff m: use NativeCall; class A is repr<CStruct> { has uint32 $!a }; my $a = A.new; my $b; nativecast(Pointer[A], $a); my $c = nativecast(Pointer, $a); $b.deref.say 10:46
camelia No such method 'deref' for invocant of type 'Any'
in block <unit> at <tmp> line 1
Xliff m: use NativeCall; class A is repr<CStruct> { has uint32 $!a }; my $a = A.new; my $b = nativecast(Pointer[A], $a); my $c = nativecast(Pointer, $a); $b.deref.say 10:47
camelia A.new
11:20 Kaiepi left 11:21 Altai-man_ joined 11:24 sena_kun left 11:25 Kaiepi joined 11:30 hungryd2 joined 11:31 hungrydonkey left 11:36 hungryd2 left 11:37 hungrydonkey joined 11:40 hungryd68 joined 11:42 hungrydonkey left 12:11 Kaiepi left 12:13 Kaiepi joined 12:21 brrt joined 12:24 hungrydonkey joined, hungryd68 left 12:32 hungryd77 joined, hungrydonkey left 12:36 hungrydonkey joined, hungryd77 left
lizmat AlexDaniel: I'm stopping with trying to fix the Range anomalies 12:50
AlexDaniel lizmat: it simply never ends, right?
lizmat I think we need a discussion on how these edge cases should work
or apply some simple rules as: if startpoint and endpoint are the same, then only 1 value will be generated for .. 12:51
and no values will be generated for ^.. ..^ and ^..^
m: dd (NaN..NaN).head(10)
camelia (NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN).Seq
lizmat m: dd (NaN^..NaN).head(10) 12:52
camelia (NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN).Seq
lizmat m: dd (NaN..^NaN).head(10)
camelia ().Seq
lizmat m: dd (NaN^..^NaN).head(10)
camelia ().Seq
lizmat there's currently a test depending on the current NaN .. NaN behaviour
Altai-man_ yay 12:54
AlexDaniel lizmat: IMO we just need to define some predictable and easy to understand behavior for ..
currently it does magic 12:55
lizmat: I actually had a draft of a ticket proposing changes to the string behavior with .., and it all made sense until I realized that people often want to have single-letter ascii string ranges 12:58
lizmat maybe we should re-read "Range and RangeIter semantics" in the specs
AlexDaniel and I couldn't make myself propose to use (‘a’.ord..‘z’.ord)».chr insead :D
lizmat basically, if a type support .succ that should be used to create the range 12:59
m: dd NaN.succ # the reason NaN..foo produces (NaN,NaN....) 13:00
camelia NaN
AlexDaniel lizmat: yeah, both .. and ... relying on .succ was my conclusion also, if I'm not mistaken 13:03
lizmat ok, I thought I could fix this quickly, but am not now with ... refactoring in my head 13:04
Geth_ ¦ rakudo: lizmat self-unassigned (Inf .. Inf) is wrong github.com/rakudo/rakudo/issues/3596
¦ rakudo: lizmat self-unassigned Reversed ranges with NaN are wrong (maybe?) github.com/rakudo/rakudo/issues/3599 13:05
¦ rakudo: lizmat self-unassigned (Inf ... Inf) is wrong github.com/rakudo/rakudo/issues/3600
¦ rakudo: lizmat self-unassigned Run time SORRY when dividing an Inf range by 0 github.com/rakudo/rakudo/issues/3598
Altai-man_ m: use nqp; my $code = start { my $c := nqp::getcomp('Raku') || nqp::getcomp('perl6'); my $g := nqp::findmethod($c,'parsegrammar')($c); my $actions := nqp::findmethod($c,'parseactions')($c); $g.parse('', :p(0), :$actions); }; await $code; 13:06
camelia An operation first awaited:
in block <unit> at <tmp> line 1

Died with the exception:
existskey requires a concrete object (got a NQPMu type object instead)
in block at <tmp> line 1
Altai-man_ bisectable6, use nqp; my $code = start { my $c := nqp::getcomp('Raku') || nqp::getcomp('perl6'); my $g := nqp::findmethod($c,'parsegrammar')($c); my $actions := nqp::findmethod($c,'parseactions')($c); $g.parse('', :p(0), :$actions); }; await $code; 13:07
bisectable6 Altai-man_, Bisecting by output (old=2015.12 new=c588323) because on both starting points the exit code is 1
Altai-man_, bisect log: gist.github.com/f5a3a4774d6fb77af9...3ee64a8f49
Altai-man_, (2016-05-12) github.com/rakudo/rakudo/commit/33...d4efe221de
13:22 sena_kun joined 13:24 Altai-man_ left
AlexDaniel lizmat: so my thought process was like this: 1) remove magical string special-casing and just let .succ do the work, this is fairly obvious and it also has a bonus of making ‘ab’.IO .. ‘ba’.IO and ‘ab’..‘ba’ function the same way. If we decide that magical pattern generation is very useful we can have a separate sub for that 2) however, IO-like .succ still counts the wrong way for negative numbers, so let's just admit that .su 13:35
can't be well defined, ban it and let users choose the behavior they want explicitly 3) OK, cool, but now people can't do simple stuff like ‘a’..‘z’ which is extremely common
maybe instead of banning Str.succ we can make it more magical to count the right way, but uhh… 13:36
Xliff m: ('ab'.IO .. 'ad'.IO).gist.say 13:37
camelia IO::Path.new("ab", :SPEC(IO::Spec::Unix), :CWD("/home/camelia"))..IO::Path.new("ad", :SPEC(IO::Spec::Unix), :CWD("/home/camelia"))
AlexDaniel m: say (‘ab’..‘ba’)[^10]
Xliff m: ('ab'.IO..'ad'.IO).gist.say
camelia (ab aa bb ba Nil Nil Nil Nil Nil Nil)
IO::Path.new("ab", :SPEC(IO::Spec::Unix), :CWD("/home/camelia"))..IO::Path.new("ad", :SPEC(IO::Spec::Unix), :CWD("/home/camelia"))
AlexDaniel m: say (‘ab’..‘ba’)[^10]
camelia (ab aa bb ba Nil Nil Nil Nil Nil Nil)
AlexDaniel m: say (‘ab’.IO..‘ba’.IO)[^10]
camelia ("ab".IO "ac".IO "ad".IO "ae".IO "af".IO "ag".IO "ah".IO "ai".IO "aj".IO "ak".IO)
13:38 brrt left
Xliff m: ('ab'.IO..'ad'.IO)[^4] 13:38
camelia ( no output )
Xliff m: ('ab'.IO..'ad'.IO)[^4].say
camelia ("ab".IO "ac".IO "ad".IO Nil)
Xliff m: ('ab'.IO...'ad'.IO).say
camelia ("ab".IO "ac".IO "ad".IO)
AlexDaniel another example from my wall of text: 13:39
m: say (‘-5’...*)[^10]
camelia (-5 -6 -7 -8 -9 -10 -11 -12 -13 -14)
AlexDaniel m: say (-5...*)[^10]
camelia (-5 -4 -3 -2 -1 0 1 2 3 4)
AlexDaniel same with .. btw
(why is it counting down? It's not counting down, it's doing .succ on Str!) 13:40
.oO( which in this case .succs )
lizmat well, that's why you should use dd rather than say 13:41
AlexDaniel lizmat: as if output printing can fix bad design? :) 13:43
that said I have no clue what would be a better one 13:44
lizmat m: dd "-5".succ, (-5).succ, -5.succ # shit happens 13:45
camelia "-6"
-4
-6
Geth_ nqp: MasterDuke17++ created pull request #612:
Write large chunks of bytecode to a file on the fly instead of doing it all in memory first
AlexDaniel lizmat: well yeah, and the shittier shit is that .. and ... also do something completely different for strings :) 13:48
13:48 Altai-man_ joined
AlexDaniel sourceable6: ‘foo’.succ 13:48
sourceable6 AlexDaniel, github.com/rakudo/rakudo/blob/c588...r.pm6#L770
13:51 sena_kun left
AlexDaniel Xliff: btw $bisected is unused 13:52
lizmat afk& 13:53
Xliff AlexDaniel: :P 14:25
nine So, I've decided to ditch Inline::Perl5::Object and use generated wrapper classes only (using my custom meta class). Not only does this unify a lot, which unveiled a hand full of bugs as it's now exercised by all tests and gives you proper type names for all P5 objects you encounter. 14:36
It also got rid of the severe memory leak in our application which now has pretty stable memory usage (~1G after 20K requests instead of >6G). 14:37
And it's a _lot_ faster. Those 20K requests took less than 1/6 of the CPU time on the backend application.
MasterDuke wow, nice all around
timotimo oh wow 14:39
very impressive
nine Nothing like production code to show you where you went wrong ;) 14:40
Altai-man_ nine, impressive! If you are around, anything in github.com/rakudo/rakudo/issues/3579 rings a bell? 14:55
nine Altai-man_: no 14:58
15:24 ufobat__ joined 15:28 ufobat_ left 15:49 sena_kun joined 15:51 Altai-man_ left
sena_kun m: use nqp; await start nqp::getcomp('Raku').parse('say 42;'); 15:51
camelia An operation first awaited:
in block <unit> at <tmp> line 1

Died with the exception:
existskey requires a concrete object (got a NQPMu type object instead)
sena_kun 59 characters now. 15:52
Geth_ rakudo: patrickbkr++ created pull request #3602:
Fix issue 3581
16:11
sena_kun narrowed it further... 16:17
github.com/rakudo/rakudo/blob/b787...r.nqp#L529 <- it seems `%*COMPILING<%?OPTIONS>` isn't initialized... 16:18
16:25 TheAthlete joined 17:46 hungrydonkey left 17:48 Altai-man_ joined 17:50 sena_kun left
jnthn Altai-man_: I'm not sure you can just call "parse" and expect it to have all the required compilation state in place...should probably be calling .compile and giving a target 18:17
m: use nqp; dd await start nqp::getcomp("Raku").compile("say 42;", target => "parse", :compunit_ok); 18:18
camelia Perl6::Grammar.new() #`[139978152996144]
jnthn That looks like it's doing the right kind of thing
Altai-man_ takes notes 18:19
jnthn I suspect it works on the main thread 'cus it just steals the state in dynamic scope of the entrypoint
Which is not exactly robust
Altai-man_ jnthn, thanks.
jnthn Maybe Perl6::Parser wants patching to use this instead, if it's calling .parse
Geth_ rakudo: 2e60552099 | (Elizabeth Mattijsen)++ | src/core.c/Exception.pm6
Add Exception.message stub
18:25
19:01 patrickb joined
lizmat bisectable6: class C is Exception { }; C.new.throw 19:06
bisectable6 lizmat, Bisecting by output (old=2015.12 new=2e60552) because on both starting points the exit code is 1
lizmat, bisect log: gist.github.com/f6078fb7ff7c40b0e2...a3449e46bf 19:07
lizmat, (2017-07-08) github.com/rakudo/rakudo/commit/1a...2246c4c26c
lizmat bisectable6: old=2020.02.1 class C is Exception { }; C.new.throw
bisectable6 lizmat, On both starting points (old=2020.02.1 new=2e60552) the exit code is 1 and the output is identical as well
lizmat, Output on both points: «Died with C␤ in block <unit> at /tmp/0KmXCd7r2_ line 1␤␤»
19:13 TheAthlete left
Geth_ ¦ problem-solving: FCO assigned to jnthn Issue No easy way of getting the N highest/lowest items on a list github.com/Raku/problem-solving/issues/172 19:25
19:33 vrurg left, vrurg_ joined 19:36 vrurg_ left 19:39 vrurg joined 19:49 sena_kun joined
Geth_ rakudo: patrickbkr++ created pull request #3604:
Fix building non-moar backends on Windows
19:49
19:50 Altai-man_ left 19:52 vrurg_ joined 19:53 vrurg left 20:03 patrickb left 20:16 patrickb joined
[Coke] #172 there seems like something very specific to add to the language. 20:18
20:28 vrurg_ left 20:29 vrurg joined 21:41 patrickb left 21:48 Altai-man_ joined 21:50 sena_kun left
Geth_ roast: 755e5f208b | (Elizabeth Mattijsen)++ | S03-sequence/exhaustive.t
Some more ... tests ported
21:53
23:49 sena_kun joined 23:50 Altai-man_ left