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.
00:00 reportable6 left
vrurg There're few locations in World where nqp::getcomp is used. Why isn't it pre-cached in an attribute? 00:00
Wouldn't it be slightly faster?
00:00 reportable6 joined
timotimo i could imagine that getcomp is fast 00:09
it's a hash lookup, i see
though i suppose with the typical number of compilers registered at the same time being probably between 2 and 5 a little list could be faster 00:10
00:34 lucasb left
vrurg timotimo: World only deals with "perl6". So, I gues this one could be pre-cached in an attribute. 00:57
Just hope that attribute access is optimizied. 00:58
timotimo do you have a benchmark or measurement or something? 01:04
i've got some outputs 01:05
hm. while running, every time INITIALIZE-DYNAMIC is called, eh? 01:07
ah, that is to get at language version 01:08
my code uses array access and runs into the "out of range" condition quite often 01:09
which wants to see if $*INDEX is there to put in the exception
vrurg timotimo: I didn't do any testing so far. Just completing new subtest semantics for 6.e and stumbled upon this. 01:10
It was just thinking aloud.
timotimo right 01:11
vrurg BTW, I postponed my games with gdb. I realized that it was hanging before even reaching any mutex on the thread context. Moreover, the freezing point is deeply inside utf8 processing, where it walks over graphemes. 01:12
I tried to debug it and it was even more confusing because as long as I tried to step opver the macro ā€“ it was freezing. But step into ā€“ and it worked!
So long, as I don't currently have direct need in debuging moar, I decided to postpone it for better times. :) 01:13
timotimo in some places getcomp is used to check if the backend is moar or jvm or whatever 01:14
in files that use gen-comp, we could replace that with #?if pieces
get-cat*
gen-cat*
vrurg BTW, I never seen #? been documented. Is it somewhere? 01:15
timotimo hm, dunno 01:16
it's entirely a thing gen-cat.pl does, though, so not sure where that doc would go
vrurg Oh, ok, sure. 01:18
I didn't know gen-cat does it. Now the meaning of what you said above makes better sense. 01:19
timotimo oops, the gist makes my browser kind of freeze up 01:21
vrurg And I found the backend piece. Makes total sense replacing it with #?if
timotimo well, many places that do it 01:22
i don't think it's exceptionally slow, but it could be 100% faster
vrurg A little bit here, a little bit there... 01:23
timotimo gist.githubusercontent.com/timo/15...tfile1.txt - this is a very very large text file
it has a stack trace whenever nqp::getcomp is called
during the compilation and running of a little script, rc-forest-fire
hm, actually 01:24
about 1/3rd in the compiler ends
the rest is almost all just DYNAMIC -> INITIALIZE-DYNAMIC
vrurg Method calls on getcomp are definitely not the fastest thing even if getcomp itself is fast enough. 01:32
So, in some cases it worth caching not the compiler itself, but method output if it's persistent per-unit.
03:02 pamplemousse left
Geth rakudo/master: 21 commits pushed by (Vadim Belman)++
review: github.com/rakudo/rakudo/compare/7...9d1354979a
03:10
roast/master: 5 commits pushed by (Vadim Belman)++ 03:11
vrurg Almost half a year marathon is finally over. Perhaps... 03:13
03:54 travis-ci joined
travis-ci Rakudo build passed. Vadim Belman 'Merge pull request #2946 from vrurg/problem-solving-3 03:54
travis-ci.org/rakudo/rakudo/builds/572575092 github.com/rakudo/rakudo/compare/7...9d1354979a
03:54 travis-ci left 04:12 Kaiepi left, Kaiepi joined 06:00 reportable6 left 06:03 reportable6 joined, ChanServ sets mode: +v reportable6
Geth nqp: cygx++ created pull request #573:
Enable DLL-releated MoarVM ops
06:52
rakudo: cygx++ created pull request #3123:
implement Nativecall::DLL
06:54
06:55 lizmat joined 06:56 lizmat left 08:57 lizmat joined
Geth problem-solving/path-to-raku: 31a00384a6 | (Elizabeth Mattijsen)++ | solutions/language/PATH-TO-RAKU.md
Refince external references section

Add specific mention of Rosetta Code
09:04
lizmat s/refince/refine/ duh :-( 09:05
09:30 Kaiepi left 09:34 Kaiepi joined
Geth problem-solving/path-to-raku: 92fd411b67 | (Elizabeth Mattijsen)++ | solutions/language/PATH-TO-RAKU.md
Open the door to a joint rename / next version event

Also fix some erroneous backslashes
09:37
problem-solving/path-to-raku: cfd072d974 | (Elizabeth Mattijsen)++ | solutions/language/PATH-TO-RAKU.md
Mention a "Raku Foundation" as part of YAS
09:47
10:04 patrickb joined
patrickb o/ 10:04
10:16 lizmat left
kawaii \o 10:53
|Tux| Rakudo version 2019.07.1-160-gef9d13549 - MoarVM version 2019.07.1-74-g5b174f528
csv-ip5xs0.679 - 0.738
csv-ip5xs-204.966 - 4.970
csv-parser21.629 - 22.302
csv-test-xs-200.437 - 0.440
test6.539 - 7.056
test-t1.662 - 1.692
test-t --race0.785 - 0.807
test-t-2029.532 - 29.689
test-t-20 --race9.014 - 9.165
11:05
patrickb .tell AlexDaniel I keep extending one of my "Perl 6 rename discussion" posts that contains a list of steps to do. It believe it can serve as a good starting point for the actual work given we do decide to rename. 11:09
.tell AlexDaniel But I'm reluctant to put that in a more formal place, as that might be seen as taking the second step before the first one. (First one being actually deciding on the rename.) 11:11
And with that I'm back to vacationing. o/ 11:13
11:13 patrickb left 11:14 patrickb joined
patrickb .tell AlexDaniel Forgot the link, here it is: github.com/perl6/problem-solving/i...-520216031 11:15
11:15 patrickb left 11:19 lizmat joined 12:00 reportable6 left 12:04 reportable6 joined 12:11 lizmat left 12:14 lizmat joined
AlexDaniel hmm 12:33
lizmat: ā†‘ see that list 12:34
lizmat AlexDaniel: sorry, what list (was offline for a bit) 12:43
AlexDaniel lizmat: colabti.org/irclogger/irclogger_lo...08-16#l102 12:44
lizmat: this comment: github.com/perl6/problem-solving/i...-520216031 12:45
lizmat Ah, hadn't noticed it is being expanded... wlll look at that
AlexDaniel lizmat: how about we close the thread for a week? 12:46
lizmat: I'm tired waking up to a pagefull of notifications
lizmat I'm fine, if you can... seems I can not :-) Just close it, but that wouldn't stop comments
AlexDaniel there are still some useful bits being mentioned, but you have to look really close to see them 12:47
reason ā€œtoo heatedā€ that sounds about right
lizmat yeah, thanks 12:50
AlexDaniel lizmat: do you see the comment box right now? 12:51
jnthn Yes, but...some folks (like moritz++) who will vote on it are still chiming in, among those who are being unpleasant. But maybe those who are part of the perl 6 org can still post?
lizmat I think moritz can still post now
AlexDaniel lizmat: but can you?
I think I made you the owner of perl6 org a few days ago 12:52
lizmat seems I can
jnthn Ah, it's limited to collaborators
I guess that's folks in the Perl 6 org?
If so, I'm fine with it. 12:53
I think I've heard enough from the outside by now. :P
(Also, I marked a couple of them that were general rants about Perl 6 as off-topic because, well, they are.) 12:54
AlexDaniel thank you
kawaii: hello 12:55
kawaii AlexDaniel: hello to you too friend
AlexDaniel kawaii: can you tell me if you can still see the comment box here? github.com/perl6/problem-solving/issues/81 12:56
kawaii: like, can you still leave comments on that thread or not?
kawaii AlexDaniel: doesn't look like I can! 12:57
AlexDaniel kawaii: ok, I see. Thanks! 12:59
anyway github.com/perl6/problem-solving/i...-522000319
AlexDaniel takes a deep breath 13:02
jnthn: I think it's limited to this list: github.com/orgs/perl6/people?utf8=...le%3Aowner 13:03
btw toddr is in it because there were some potential limitations for repo management for the upcoming old-issue-tracker repo 13:05
kawaii It was an excellent thread with some really good discussion points 13:06
AlexDaniel: do you know about the status of the star release?
AlexDaniel kawaii: no, you need to ask hankache and clarkema 13:07
kawaii: or maybe open a new ticket here? github.com/rakudo/star/issues
asking for a new release
kawaii I'm sure one of them will be notified by you mentioning their names, no need for me to harass further :)
AlexDaniel kawaii: not exactly 13:09
kawaii: clarkema is on #perl6 but not here
kawaii ah then I must be annoying it seems :( 13:10
oh looks like you already poked him in #perl6
:)
AlexDaniel maybe today is the day when I'll finally bring tellable6 up 13:12
wish me luck x)
vrurg AlexDaniel: good luck! :)
greppable6: use v6\.\* 13:15
greppable6 vrurg, 6 lines, 3 modules: gist.github.com/5d3859367f37a5561e...03ae59883a
vrurg greppable6: use v6\.e 13:16
greppable6 vrurg, Found nothing!
13:31 Kaiepi left, Kaiepi joined
lizmat AlexDaniel jnthn looks like you cannot add emojis to comments anymore 13:33
AlexDaniel lizmat: yeah
there's no fine-grained control over this
13:52 lucasb joined
[Coke] wonders how many gists Whateverable has at this point 13:58
Oh: 10,147
[Coke] wasn't expecting that to be public for some reason. :)
moritz jnthn, lizmat: yes, I can still comment (I'm org owner as well) 14:03
AlexDaniel [Coke]: it's weird, there are several ways I'm abusing github yet the only complaint I got so far was that I have more than two accounts 14:45
[Coke] regarding nuance comment on the ticket: I think we already lost the nuance battle, and this will not make it worse. 14:47
AlexDaniel it's more like using than abusing, but I'm surprised I didn't trigger any automated ban hammer
14:56 pamplemousse joined
timotimo vrurg: did the list of "every place that calls getcomp" end up helping more than what we already discussed? 15:12
Geth rakudo: 238f8e5739 | (Timo Paulssen)++ | src/core/CompUnit/PrecompilationRepository.pm6
Show stagestats for dependent precompilation

This way you can get much more info when your "stage parse" takes long, and you can more easily see the dependency structure of your projects (though of course modules that were already precompiled won't show up here)
15:48
rakudo: 960e5b4a43 | (Timo Paulssen)++ | src/core/CompUnit/PrecompilationRepository.pm6
flush stderr in stagestats report
timotimo ^- stagestats just became a whole lot funkier
rakudo: 0fbf92ca32 | (Timo Paulssen)++ | src/core/CompUnit/PrecompilationRepository.pm6
Merge branch 'nested_stagestats'
timotimo i'd kind of like a RAKUDO_COMPILER_REPORT_PORT=9999 where it'd spit out like udp messages or something at different points in compilation, including when it precompiles dependent modules and such 15:51
15:59 pamplemousse left, pamplemousse joined
vrurg timotimo: I didn't get time for this. Finished with subsets at 11pm. 16:15
timotimo no problem at all :) 16:17
vrurg But I have noted it alongside some other stuff. And if things go this way, in few months my personal task list would be the size of issues list on rakudo... ;) 16:18
timotimo i know that feeling 16:19
vrurg m: subset SS of Int where { .defined }; my SS $v;
camelia ( no output )
vrurg Which bot follows master, I don't remember?
MasterDuke benchable6: HEAD compare sub foo($a, $b, $c, $d) { my $e = $a; my $f = $b; my $g = $c; my $h = $d; $e++; $f++; $g++; $h++; $e+$f+$g+$h }; my $s1 = 0; for ^1_000_000 -> $a, $b, $c, $d { $s1 = foo($a, $b, $c, $d) }; say $s1; ||| sub bar($a is copy, $b is copy, $c is copy, $d is copy) { $a++; $b++; $c++; $d++; $a+$b+$c+$d }; my $s2 = 0; for ^1_000_000
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke -> $a, $b, $c, $d { $s2 = bar($a, $b, $c, $d) }; say $s2;
benchable6 MasterDuke, No new data found
vrurg m: use v6.e.PREVIEW; subset SS of Int where { .defined }; my SS $v; 16:20
camelia ( no output )
MasterDuke benchable6: compare HEAD sub foo($a, $b, $c, $d) { my $e = $a; my $f = $b; my $g = $c; my $h = $d; $e++; $f++; $g++; $h++; $e+$f+$g+$h }; my $s1 = 0; for ^1_000_000 -> $a, $b, $c, $d { $s1 = foo($a, $b, $c, $d) }; say $s1; ||| sub bar($a is copy, $b is copy, $c is copy, $d is copy) { $a++; $b++; $c++; $d++; $a+$b+$c+$d }; my $s2 = 0; for ^1_000_000 16:21
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke -> $a, $b, $c, $d { $s2 = bar($a, $b, $c, $d) }; say $s2;
benchable6 MasterDuke, gist.github.com/10b2bab00c6eeb58f3...ef43f91e49
timotimo oh no, the message was too long 16:22
MasterDuke benchable6: compare HEAD sub foo($a,$b,$c,$d){my $e=$a;my $f=$b;my $g=$c;my $h=$d;$e++;$f++;$g++;$h++;$e+$f+$g+$h};my $s1=0; for ^1_000_000 -> $a,$b,$c,$d {$s1=foo($a,$b,$c,$d)}; say $s1; ||| sub bar($a is copy,$b is copy,$c is copy,$d is copy) {$a++;$b++;$c++;$d++;$a+$b+$c+$d};my $s2=0; for ^1_000_000 -> $a,$b,$c,$d {$s2=bar($a,$b,$c,$d)};say $s2; 16:23
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, Ā¦HEAD: Ā«Benchmark: ā¤Ā«timed out after 10 secondsĀ»Ā» 16:24
AlexDaniel vrurg: ā€œWhich bot follows master, I don't remember?ā€ any bot that's not broken xD
MasterDuke benchable6: compare HEAD sub foo($a,$b,$c,$d){my $e=$a;my $f=$b;my $g=$c;my $h=$d;$e++;$f++;$g++;$h++;$e+$f+$g+$h};my $s1=0; for ^500_000 -> $a,$b,$c,$d {$s1=foo($a,$b,$c,$d)}; say $s1; ||| sub bar($a is copy,$b is copy,$c is copy,$d is copy) {$a++;$b++;$c++;$d++;$a+$b+$c+$d};my $s2=0; for ^500_000 -> $a,$b,$c,$d {$s2=bar($a,$b,$c,$d)};say $s2;
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, Ā¦HEAD: Ā«Benchmark: ā¤Ā«timed out after 10 secondsĀ»Ā»
AlexDaniel moritz: I think camelia is still not fixed
MasterDuke: maybe try committable first? 16:25
MasterDuke AlexDaniel: can you increase benchable6's timeout?
AlexDaniel aaah sorry it's `compare` thing
benchable6: vars
benchable6 AlexDaniel, timeout=10
AlexDaniel benchable6: timeout=30
benchable6 AlexDaniel, timeout is now set to ā€œ30ā€ (default value is ā€œ10ā€)
AlexDaniel try again?
MasterDuke ah ha, forgot about that!
benchable6: compare HEAD sub foo($a,$b,$c,$d){my $e=$a;my $f=$b;my $g=$c;my $h=$d;$e++;$f++;$g++;$h++;$e+$f+$g+$h};my $s1=0; for ^500_000 -> $a,$b,$c,$d {$s1=foo($a,$b,$c,$d)}; say $s1; ||| sub bar($a is copy,$b is copy,$c is copy,$d is copy) {$a++;$b++;$c++;$d++;$a+$b+$c+$d};my $s2=0; for ^500_000 -> $a,$b,$c,$d {$s2=bar($a,$b,$c,$d)};say $s2;
benchable6 MasterDuke, starting to benchmark the 1 given commit
AlexDaniel I'm not sure if that thing works, actually
but let's see
benchable6 MasterDuke, gist.github.com/0e4acc92e80490b6ee...27093f08b4
AlexDaniel wow it does work xD 16:26
16:26 lizmat left
MasterDuke occasionally i write some code that works some of the time 16:26
timotimo so "is copy" is a lot faster?
MasterDuke other way around
timotimo oh? 16:27
damn.
16:27 lizmat joined, lizmat left
AlexDaniel timotimo: yeah, I've seen that somewhere in real code 16:28
MasterDuke benchable6: timeout=120
benchable6 MasterDuke, timeout is now set to ā€œ120ā€ (default value is ā€œ10ā€)
MasterDuke benchable6: compare HEAD sub foo($a,$b,$c,$d){my $e=$a;my $f=$b;my $g=$c;my $h=$d;$e++;$f++;$g++;$h++;$e+$f+$g+$h};my $s1=0; for ^1_000_000 -> $a,$b,$c,$d {$s1=foo($a,$b,$c,$d)}; say $s1; ||| sub bar($a is copy,$b is copy,$c is copy,$d is copy) {$a++;$b++;$c++;$d++;$a+$b+$c+$d};my $s2=0; for ^1_000_000 -> $a,$b,$c,$d {$s2=bar($a,$b,$c,$d)};say $s2;
benchable6 MasterDuke, starting to benchmark the 1 given commit
MasterDuke, gist.github.com/85051c7cf2fe0fab83...a26b5c94f6 16:29
MasterDuke hm, i didn't see quite that big a difference locally
16:32 Ven`` joined
MasterDuke jnthn: fyi, ^^^ 16:32
jnthn MasterDuke: Is the `is copy` itself slower, or is it to do with an effect it has on how the ++ and + can be optimized? 16:35
MasterDuke jnthn: dunno. that was just the first thing i thought of that would exercise the need for `is copy` (or the equivalent) 16:36
same different if i assign `rand` to the variables instead of increment them 16:40
*difference in time taken
16:45 Kaiepi left, Kaiepi joined
MasterDuke c 16:49
moritz m: say $*PERL.version 16:55
camelia v6.d
moritz m: say $*COMPILER.version
camelia Dynamic variable $*COMPILER not found
in block <unit> at <tmp> line 1
moritz the version number at start looks stuck, yes. Will need to look at this in more detail 16:57
17:07 Ven`` left 17:09 Ven`` joined 17:13 Ven`` left
vrurg m: say $*PERL.compiler.version 17:14
camelia v2019.07.69.gecf.2.b.1.e.4.f
17:17 lucasb left
vrurg jnthn: do you mind of introducing CORE::<lang-rev>:: pseudo-packages? 17:34
R#3112
synopsebot R#3112 [open]: github.com/rakudo/rakudo/pull/3112 [6.e] Implement CORE::<lang-rev> pseudo-packages
17:43 samcv left 17:48 samcv joined 18:00 reportable6 left 18:02 reportable6 joined, ChanServ sets mode: +v reportable6 18:21 lucasb joined
Geth rakudo/master: 8 commits pushed by (Vadim Belman)++ 18:47
synopsebot RAKUDO#2178 [open]: github.com/rakudo/rakudo/issues/2178 .wrap of a method breaks callsame/nextsame/etc.
roast/master: 5 commits pushed by (Vadim Belman)++
19:10 grayrider joined 19:33 grayrider left 19:42 Ven`` joined 19:56 pamplemousse left 20:07 pamplemousse joined 20:26 pamplemousse left 20:32 pamplemousse joined 21:25 epony left 21:51 Ven`` left
vrurg AlexDaniel: since you're available yet, I'm not really happy about `CORE::v6d` naming as it's rather long. Besides, it is not decided yet if we keep or drop 6. version prefix, even though I'd be strongly opposed to changing versioning model. 22:20
AlexDaniel vrurg: it is not yet decided if we're going to drop it or not, yet you're dropping it :) 22:25
and what do you mean ā€œlongā€ 22:26
two characters?
honestly, that doesn't sound very convincing to me :)
vrurg AlexDaniel: No, I'm not. Terminlogy-wise we have version (6.e, v6.e) and we have revision (e).
jnthn I don't think it'll be used often enough to justify making it especially short 22:27
vrurg I'm not dropping.
AlexDaniel if not dropping, then it should also work with 7.d even if we never bump the version to 7 22:28
vrurg Another point for just letter is readability. CORE::v6c::Class, CORE::v6d::Class vs CORE::c::Class, CORE::d::Class
AlexDaniel v6d is more readable in this case to me
stands out a bit more
jnthn agrees with AlexDaniel
Though I still wonder about the adverb approach (CORE:ver<6.d>) 22:29
vrurg My braing is still in all-uppercase variant of CORE::V6D which looked really ugly.
jnthn: CORE:ver<6.d>::PseudoStash ā€“ pretty much line noise looking. 22:30
jnthn I parse "line noise" as "I don't need to consider this argument" :P
vrurg is just trying to formulate it properly. 22:31
jnthn But seriously, if adverbs - with feature all over Perl 6 - are line noise, well... :)
*which
The argument for it is regularity, I guess.
vrurg I like PseudoStash:ver<6.d> for direct reference. But for introspection CORE::v6d:: is better.
AlexDaniel jnthn: actually, I kinda agree that it is a bit too symbol-y
jnthn use Foo:ver<1.2>
AlexDaniel but I wouldn't say it's too badā€¦ 22:32
jnthn m: use v6.d
vrurg TIMTOWTDI
camelia ( no output )
jnthn m: use v6d
camelia ( no output )
jnthn Huh, I'd forgotten you can write the second :)
AlexDaniel O_o
vrurg We can have both and use depending on personal taste and task. 22:33
AlexDaniel youā€¦ canā€¦?
jnthn Maybe I hadn't forgot :P
AlexDaniel m: say v6d
camelia v6.d
vrurg m: say Version.new('v6d')
camelia vv.6.d
jnthn Anyway, there goes my argument that it's different from what you write in the `use` statement :P
AlexDaniel ok then I don't see anything wrong with ::v6d::
vrurg besides that it does it this way.
AlexDaniel I thought it wasn't really a valid version, but turns out it is
vrurg Ok, I rename it. The only thing made me using ::D is to follow all-uppercase standard. 22:34
But since it's second level, it can be treated differently. 22:35
Thanks! I get it fixed and merge. This will unblock R#3103 22:36
synopsebot R#3103 [open]: github.com/rakudo/rakudo/pull/3103 [6.e][tests needed] Return Failure from failed P6-level .parse on 6.e
jnthn I'm still just a tiny bit...discontented, I guess...that we're introducing a discontinuity where CORE::foo means a lookup in CORE, except when it's followed by a specific pattern.
I agree that we're not going to have a symbol v6d or so on
vrurg jnthn: consider it a lookup too. It's like symbols containting the specific cores. Why not?
jnthn vrurg: Well, how is it actually implemented? :) 22:37
If it's by each CORE.setting saying `my constant v6c := UNIT` or something I guess I can buy it...kind of :)
timotimo CORE::v6d::v6c::v6e::... :) 22:38
jnthn :P
Anyway, I can go with CORE::v6d, I think 22:39
MasterDuke but, eventually, how will distinguish between CORE::v60 and CORE::v6d in casual conversation!?!?!
vrurg jnthn: Because it has to work compile time, it's supported by World::find_symbol_in_setting
And run-time is provided by PseudoStash.
jnthn Hm, OK
vrurg timotimo: v6e will be a Failure 22:40
jnthn Hm, compile time?
What if I say CORE::v6d::.keys, for example?
Or are you saying it resolves up to the v6d bit at compile time? 22:41
MasterDuke btw, in case anybody wants something else to work on, `--profile-compile` of the rakudo build still dies
vrurg jnthn: It will be handled by run-time. :)
jnthn OK
22:47 MasterDuke left
vrurg Now, I can't get rid of the idea of installing the actual symbols on COREs... 22:49
Ah, nevermind, it won't work... 22:50
23:02 pamplemousse left 23:07 pamplemousse joined 23:11 pamplemousse left
AlexDaniel Dogbert4711 dogbert11 dogbert17 dogbert17_ dogbert2 dogbert21 dogbert2_ 23:40
:D