00:25 sena_kun joined 00:27 Altai-man_ left 00:30 leont left 01:09 Altai-man_ joined 01:11 sena_kun left
jdv79 timotimo: is the heap profiler fixed yet? 01:39
timotimo what failure mode was it again? just that having to get the special branch from the special fork being a bad user experience? 01:41
jdv79 don't remember at hte moment
sound about right
is there a doc about how do whatever that is? 01:42
timotimo the situation is not yet better, but i've made local changes towards making it fine to merge
my local fork has nqp ops do much of the heavy lifting for performance reasons
but that's not so good for stuff in the ecosystem 01:43
one benchmark where i just read the entirety of one snapshot takes about 7 seconds with nqp ops and 11 without
i guess it's a small price to pay, though
jdv79 ok. i think i have a proc that's using too much mem. 01:46
and the heap snapshot is the best way to invesigate, right?
timotimo i think so, yes 01:47
jdv79 ok, thanks. maybe in the next few days i'll attempt it again then.
timotimo i think i'll take the performance hit so that stuff can go upstream 01:48
03:10 sena_kun joined 03:11 Altai-man_ left 05:09 Altai-man_ joined 05:11 sena_kun left
MasterDuke uh. why would github.com/rakudo/rakudo/blob/mast....pm6#L1745 show up as not jitted in a profile? the profile says it's called 169188 times, for a total of 3s, but a spesh log only has a single entry for it with `Total hits: 5` 07:01
nine Maybe inlining?
MasterDuke but i don't see any `inline of 'pull-one' (<its cuid>)`? 07:06
but something is weird, why would that take 3s anyway? not sure what to believe 07:07
07:10 sena_kun joined
MasterDuke nine: btw, don't know if you see these, but i'm getting `src/core/interp.c:3315:36: warning: variable ‘coderef’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]` when building moarvm 07:10
nine yes 07:11
07:12 Altai-man_ left
MasterDuke oh right. this code has a `.race` in it, not sure anything can be trusted 07:15
07:18 leont joined 08:38 AlexDaniel joined, AlexDaniel left, AlexDaniel joined 08:44 JJMerelo joined 09:06 lizmat_ joined 09:08 lizmat left
AlexDaniel 6c: shell 「perl6 -e 'say "oooh"; say "yeaaah"; say "there is a bug";' | head -n1」 09:09
09:09 Altai-man_ joined, gugod left
committable6 AlexDaniel, gist.github.com/8f9ad922850a486fac...c63a907a89 09:09
09:09 gugod joined
AlexDaniel head not found? O_o 09:10
6c: shell 「perl6 -e 'say "oooh"; say "yeaaah"; say "there is a bug";' | /usr/bin/head -n1」
committable6 AlexDaniel, gist.github.com/77c4f3a3564cb83e38...43ea7de96e 09:11
AlexDaniel ah it's probably true
bisect: shell 「perl6 -e 'say "oooh"; say "yeaaah"; say "there is a bug";' | /usr/bin/head -n1」
bisectable6 AlexDaniel, Will bisect the whole range automagically because no endpoints were provided, hang tight
AlexDaniel, Output on all releases: gist.github.com/12ad9704e87a6fb81f...9196183b25
AlexDaniel, On both starting points (old=2018.11 new=2017.09) the exit code is 0 and the output is identical as well
AlexDaniel, Output on all releases and bisected commits: gist.github.com/70759f99abc35f21b4...2c2016afc8
lizmat_ Files=1307, Tests=113012, 217 wallclock secs (29.29 usr 8.36 sys + 3045.75 cusr 287.29 csys = 3370.69 CPU) 09:12
09:12 sena_kun left
AlexDaniel facepalms 09:12
6c: shell 「perl6 -e 'say "oooh"; say "yeaaah"; say "there is a bug";' | /usr/bin/head -n1」 09:13
committable6 AlexDaniel, gist.github.com/1bd4253559f0be01ae...723fb80677
AlexDaniel ah, it's… a bit random? 09:14
09:14 JJMerelo left 09:20 MasterDuke left 09:51 lizmat_ is now known as lizmat 09:57 JJMerelo joined 10:03 MasterDuke joined
[Tux] Rakudo version 2020.06-6-gf470b544d - MoarVM version 2020.06-4-g06d8cdd16
csv-ip5xs0.846 - 0.865
csv-ip5xs-208.011 - 8.799
csv-parser26.041 - 26.930
csv-test-xs-200.384 - 0.388
test7.776 - 7.818
test-t1.871 - 1.925
test-t --race0.817 - 0.825
test-t-2031.241 - 31.834
test-t-20 --race9.113 - 9.297
10:43
11:10 sena_kun joined 11:11 Altai-man_ left 11:14 JJMerelo left 11:18 JJMerelo joined 11:50 Xliff left
lizmat hopes someone might be able to explain why <( and )> are implemented by creating sub-cursors with special names and then taking the $!from from them 11:57
instead of just updating the $!from / $!to in the upper cursor 11:58
jnthn moritz pmichaud ?
12:11 JJMerelo left
jnthn lizmat: I think that's how it was initially done, however it led to totally bogus results in various situations involving backtracking 12:15
lizmat ah, I see
hmmm...
I feared it would be something like that
jnthn And since the cstack has stuff dropped from it upon backtracking, it's the "natural" solution. 12:16
lizmat yeah, except that you *always* need post-processing of cursors to turn them into Match objects
jnthn I don't believe there's anything special about the choice of names matching attributes.
lizmat which is something I'm trying to prevent
jnthn But whether you have <( and )> in a regex is a static property, so you could have that as a boolean on the capture data? 12:17
lizmat it's just that having a $!cstack is *not* an indication that you actually have sub captures
jnthn And then if it's not there, you can cheaply skip looking for them.
lizmat well, I'm not sure where <( )> would be in the regex property 12:18
jnthn I think that the $!from and $!to might be in the %capnames that are passed when buliding RegexCaptures 12:22
lizmat they are
AlexDaniel jnthn: So, actually, I don't understand it. Does it mean that `s;p;d;` construct will parse one way or another depending on whether you have sub `s` or not?
jnthn lizmat: So just spot them and set a flag in that RegexCaptures object? 12:23
lizmat I'm trying to get rid of the RegexCaptures object :-) 12:24
jnthn AlexDaniel: omg, it apparently tires to behave differently if hte sub is pre-declared...
AlexDaniel ah yeah, that was my “you can't name a sub “s”” comment during perlcon last year 12:25
jnthn *tries
AlexDaniel not that you can't, but… just don't…
jnthn I'm not really in favor of this attempt to be helpful, tbh :/ 12:26
Just saying "well, if your sub names conflict with quote construct names, use the form s()" woulda probably been better.
lizmat: OK, then you'll have to work out the correct peg to hang it off, 'cus I introduced RegexCaptures precisely to give the static capture properties in an efficient to work with form. :) 12:27
lizmat yeah, I realized that
and perhaps my exercise will not prove to be more efficient 12:28
just using less memory at the expense of more CPU
jnthn I figured it'd still be needed (though no doubt refactored) at least in so far as to quickly answer "is there even a capture with this name" or "is this a list"?
AlexDaniel jnthn: another thing is how “useful” the ; delimiter is. If it was not allowed, we would've had a better error message right there in the ticket, I think. 12:29
ShimmerFairy I was just going to say, I personally feel like no good can come from using ; as a delimiter in the first place :P
lizmat well, in my patch, I'm adding the raw capnames to the Regex object
which allows you to quickly answer that question 12:30
jnthn If we disallow ; somebody will only find another one that looks tempting to disallow too, and then we end up with a list of exceptions.
I'd prefer we make the language more regular, not less.
lizmat: So...add the "do we have a <( or )>" to it also? :)
lizmat that's already in the capnames 12:31
so in that sense, it is known already
jnthn OK, so...what's the problem?
ShimmerFairy That's fair, though I feel like banning ; is one of the few, if not only, characters you could ban without running into a slippery slope.
lizmat it's just it feels like a hack using the sub-capture mechanism for that
AlexDaniel jnthn: I mean… you can't use “:”, you can't use “_”
lizmat jnthn: as you're only interested in its $!from value 12:32
AlexDaniel , is allowed though, although it makes me feel pain just looking at it x)
so _-' don't work because of identifiers 12:33
lizmat jnthn: ah, I just figured: that $!from value can also have been adapted by sub-subcaptures
jnthn _ and : aren't technically disallowed, they're just unreachable because of other things that we want to parse at those points. 12:34
So far as I remember, the only things explicitly ruled out as quote delims are whitespace and (
AlexDaniel yea? 12:35
jnthn And I'm not even sure about the last of those, or if that just falls out of LTM too
AlexDaniel m: $_ = ‘abc’; say s:g:a:b:; .say
camelia 5===SORRY!5=== Error while compiling <tmp>
Colons may not be used to delimit quoting constructs
at <tmp>:1
------> 3$_ = ‘abc’; say s:g:a:b:7⏏5; .say
expecting any of:
colon pair (restricted)
jnthn I thought that error was from a failover after failing to eat a colonpair, but I may misremember. 12:36
ShimmerFairy m: $_ = "abc"; s\ _a_b_; say $_ # :D
camelia bbc
jnthn :)
AlexDaniel whitespace isn't really disallowed, it's just eaten? 12:37
m: $_ = ‘abc’; say s / a /b/ ; .say
camelia 「a」
bbc
jnthn m: Q a 12:38
camelia 5===SORRY!5=== Error while compiling <tmp>
Alphanumeric character is not allowed as a delimiter
at <tmp>:1
------> 3Q7⏏5 a
jnthn Hm, interesting
AlexDaniel m: say Q a foo a
camelia 5===SORRY!5=== Error while compiling <tmp>
Alphanumeric character is not allowed as a delimiter
at <tmp>:1
------> 3say Q7⏏5 a foo a
AlexDaniel m: say Q # foo #
camelia 5===SORRY!5=== Error while compiling <tmp>
# not allowed as delimiter
at <tmp>:1
------> 3say Q #7⏏5 foo #
AlexDaniel m: say Q | foo |
camelia foo
AlexDaniel so # is not allowed too…
I don't think “you can use any character” is a kind of consistency to strive for :S 12:39
jnthn self.panic('Whitespace character ‘' ~ 12:40
nqp::getuniname(nqp::ord($start)) ~
'’ (0x' ~ $code ~') ' ~ $description ~ ' is not allowed as a delimiter');
This does exist, but I'm not actually sure how you reach it.
AlexDaniel :) github.com/rakudo/rakudo/blob/f470....nqp#L3446 12:41
jnthn I'm guessing maybe various of these have been added after folks managed to confuse themselves, so maybe there is precedent for disallowing `;` too. I just worry where this ends. 12:44
Everybody things exceptions to rules are worth it when it's *there* exception. :)
*thinks
*their
Gah, my brain stayed on vacation. 12:45
AlexDaniel it doesn't end, yes
would've been clearer to have a whitelist of characters instead
jnthn I think we'd just get the opposite problem. 12:48
AlexDaniel m: $_ = ‘abc’; dd s👩‍🦰a👩‍🦰b👩‍🦰 12:51
camelia Match $/ = Match.new(:orig("abc"), :from(0), :pos(1))
AlexDaniel m: $_ = ‘abc’; put s👩‍🦰a👩‍🦰b👩‍🦰
camelia a
AlexDaniel jnthn: yeah, except that everything else would've worked 12:52
right now I had to rename my s sub to ss :(
13:01 [Tux] left 13:09 Altai-man_ joined 13:11 sena_kun left 13:28 [Tux] joined
[Coke] m: "☭".uninames.say 13:34
camelia (HAMMER AND SICKLE)
[Coke] (seen on twitter earlier today)
lizmat
.oO( the unicode consortium is a communist attempt at eradicating ASCII :-)
13:40
vrurg I wonder if they have swastica alongside... :( 13:45
yep, they do. 13:46
lizmat the swastika is a *very* old symbol: www.britannica.com/story/how-the-s...was-ruined 13:53
vrurg lizmat: I know. THE swastica must actually be rotated by 45⁰. 13:58
lizmat vivid memories of my first visit to Dublin in early 80's: en.wikipedia.org/wiki/Swastika_Laundry 13:59
13:59 [Coke] left 14:01 [Coke] joined, [Coke] left, [Coke] joined 14:30 Kaeipi left 14:31 Kaeipi joined
lizmat m: use nqp; class A { has str $!a; method a() { nqp::isnull($!a) } }; dd A.new.a # jnthn, any way of making this bomb? rather than silently doing the wrong thing? 14:47
camelia 0
lizmat m: use nqp; class A { has str $!a; method a() { nqp::isnull_s($!a) } }; dd A.new.a # correct way of doing this 14:48
camelia 1
jnthn Special-case its handling in QAST -> MAST translation 14:49
Just compile the target without coercion, and if it doesn't evaluate to an object register, whine 14:50
lizmat that would be compile time, right? 14:51
what if it is actually an nqp::getattr_s with variables ? 14:52
does it become a DIHWIDT ?
lizmat wonders how this could affect Comma: www.i-programmer.info/news/90-tool...ation.html 15:05
15:10 sena_kun joined
sena_kun >DeepCode's analysis understands the intention of your code through the use of ML 15:11
15:12 Altai-man_ left 15:43 MasterDuke left 15:58 JJMerelo joined
ShimmerFairy Why should isnull() bomb there? After all, an nqp::null_s isn't an nqp::null 16:00
[Coke] n: say nqp::isnull(nqp::null_s)) 16:01
nqp: nqp::say( nqp::isnull(nqp::null_s)))
camelia Confused at line 2, near "nqp::say(
at gen/moar/stage2/NQPHLL.nqp:1053 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:panic)
from gen/moar/stage2/NQP.nqp:945 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/nqp.moarvm:comp_unit)
from gen/mo…
lizmat ShimmerFairy: well, that is true, but it is a bit of a trap 16:06
ShimmerFairy Yeah, though my beef is more generally with there being two nulls. :)
lizmat it just cost me 30 mins again to figure out I had fallen into that trap again 16:07
ShimmerFairy My only objection is that I would never expect an isThing($x) function to die if $x wasn't a Thing. 16:09
jnthn It wouldn't die, it wouldn't even compile 16:12
[Coke] nqp: nqp::say( nqp::isnull(nqp::null_s)) #oops 16:13
camelia 0
ShimmerFairy nqp: my $a := nqp::null_s(); say(nqp::isnull($a)) 16:14
camelia 0
ShimmerFairy Assuming $a was set in a more complicated mass of code, would NQP be able to detect that at compile time?
lizmat m: use nqp; my $a := nqp::null_s; dd $a
camelia chars requires a concrete string, but got null
in block <unit> at <tmp> line 1
lizmat m: use nqp; my $a := nqp::null_s; dd nqp::isnull_s($a) 16:15
camelia 1
lizmat hmmm
jnthn ShimmerFairy: No; this would only be for cases where isnull was invoked on something that compiles into a non-object register 16:19
If you already managed to box the thing, you're still in bother 16:20
ShimmerFairy yeah, that makes sense, I thought you were saying it could be done in general.
jnthn I think it could handle the case lizmat mentioned having tripped over 16:21
nine And make test succeeds with in-process precompilation :) 16:22
lizmat nine++ 16:23
[Coke] nine++ 16:24
jnthn Wow 16:25
nine++
ShimmerFairy nine++ 16:26
sena_kun nine++ 16:30
nine There's still quite a bit of work ahead, but this makes me hopeful that I can actually get it done this time 16:31
16:47 MasterDuke joined
Geth roast: 2e0bbde384 | (Elizabeth Mattijsen)++ | S05-modifier/Perl_10.t
Should be testing for Match, not Capture

The fact that currently Match is a Capture, is an implementation detail that may not be true in the future.
17:09
roast: 998d247a68 | (Elizabeth Mattijsen)++ | S06-traits/is-copy.t
Make sure we test for expected value as well
17:09 Altai-man_ joined 17:11 sena_kun left 17:25 squashable6 left 17:26 squashable6 joined 18:05 MasterDuke left 18:15 MasterDuke joined 19:10 sena_kun joined 19:12 Altai-man_ left
AlexDaniel what just happened to github? 19:17
is anybody else seeing this? Did they change the interface again?
MasterDuke yep 19:18
[Coke] looks different, aye
19:20 AlexDaniel left
AlexDaniel` aaand emacs just crashed… didn't like me trying to change the font size. All because I was forced to update to otb versions of the font I was using which is rendered absolutely incorrectly pretty much everywhere 19:22
not really my day I guess
for those unaware, pango dropped previously existing support for bitmap fonts 19:23
most distros first reverted to using an older version of pango, but now it seems most are just trying to power through the pain, so the packages are getting updated again 19:24
so if you're using a bitmap font eventually you'll see boxes instead of proper rendered characters
the solution to that? Use OTB fonts instead! So you can still use bitmap fonts, you just have to convert them 19:25
or rely on your distro to provide packages with converted fonts
there's one problem though
otb rendering is just completely broken
you'd think it'd be simple to just dump pixels defined in the bitmap font to the screen, but nooo 19:26
but it looks like very beautiful, like Hebrew 19:28
imgur.com/a/OkJhqWi 19:29
19:43 JJMerelo left 19:46 sivoais left 19:59 sivoais joined
raku-bridge <DataKinds> i want that as a bitmap font 20:03
AlexDaniel` it's just terminus, with leftmost column removed I think 21:06
or you can just install terminus-otb and try to use it in urxvt 21:07
but that's a bug specific to urxvt, other apps have different bugs!
in emacs it is rendered too wide 21:08
21:09 Altai-man_ joined 21:11 sena_kun left 22:17 squashable6 left 22:19 squashable6 joined 22:21 squashable6 left 22:23 squashable6 joined 22:41 Altai-man_ left 22:42 sena_kun joined
Geth rakudo/match-refactor: c7ae702ab2 | (Elizabeth Mattijsen)++ | src/Perl6/bootstrap.c/BOOTSTRAP.nqp
Add Regex.capnames attribute

This contains the "raw" capnames information coming from Regex parsing. This allows Match to be refactored.
23:03
rakudo/match-refactor: bde012e0ed | (Elizabeth Mattijsen)++ | src/core.c/Match.pm6
Completely refactor the Match class

The old implementation made Match a subclass of Capture. This had the advantage that it could use the Positional and Associative interface of Capture. This has the *dis*advantage of needing to set up a lot of data-structures *after* a Match object is returned from NQP. Even if these data structures are not needed. ... (14 more lines)
23:09 Altai-man_ joined 23:12 sena_kun left
Geth rakudo/match-refactor: b69a4c4f3e | (Elizabeth Mattijsen)++ | 4 files
Remove the most obvious uses of Match.MATCH
23:20
rakudo/match-refactor: a2481f0d2d | (Elizabeth Mattijsen)++ | src/core.c/Str.pm6
Oops, need to return a Callable
23:45 squashable6 left 23:47 squashable6 joined