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.
tbrowder_ AlexDaniel: not long ago i offered a server to do continuous toasting but no one was interested 00:24
AlexDaniel tbrowder_: yeah, the server is not an issue
nine Wow! The patch for getting a working (including JIT) explicitly-managed trait for NativeCall is really quite small: gist.github.com/niner/7d30269263f0...5e82bbd552 07:43
Can then be used like this: sub SetString(Str is explicitly-managed) returns int32 is native('./02-simple-args') { * } 07:44
nine While explicitly-managed will already cover a lot, there's still the take-a-string-and-keep-it-for-a-while-but-still-expect-you-to-free-it-by-yourself-when-im-done-with-it(char*) case 08:14
That's neither covered by explicitly-managed nor by explicitly-manage($str)
Oh, actually that is covered by explicitly-manage($str)! 08:16
There's another oddity about explicitly-manage($str). It doesn't return the string it was originally passed, but the CStr attached to it. So the set_version(explicitly-manage('1.0.0')); in the docs does something very different from my $str = '1.0.0'; explicitly-manage($str); set_version($str); 08:27
Also...as discovered earlier, even explicitly-manage()'d strings will be freed eventually by the GC (when the CStr attached to the Str is collected). So while code like the set_version(explicitly-manage('1.0.0')); is safe by virtue of the string constant being kept indefinitely, it is a bit misleading. 08:31
set_version(explicitly-manage('1.0.0'.substr(1))) would be unsafe 08:32
I've yet to find out why passing the CStr to the sub actually works. That's not even a Str. 08:35
Ah, probably because the CStr unboxes to a str, too and that's what ends up in the signature of the generated sub. 08:38
And the generic CALL-ME that NativeCall originally uses doesn't check argument types.
Btw. a CStr keeps a reference to the original MVMString. This...sounds like an intriguing opportunity. I guess test-csvip5xs is not the only program that gets some strings from native code just to pass them back to other native code. Wouldn't it be nice if we could forgo the decoding/encoding in such cases? 09:07
Guest5503 | ; ; ; ; / / .\ : 11:17
| ; ; /` .\ _,==" \ .'
\; ; ; .'. _ ,_'\.\~" //`. \ .'|
| ; .___~' \ \- | | /,\ ` \ _.' |
~ ; ; ;/ _,.-~'|`| | | _,-''\..--'| 'o
~ /; ;/="" |`| |`| _="`| | | /|
~..==` \\ |`| / /_="`| o' | 'o /'\
~` ~ /,\ / /_,)") 'o /|\ o' /|\
~ ~~ _,.-)") /|\ /'\ /|\ /'\
~ ~ _,=~"| /'\ /'\
~ =~"|; ;| KKKbird
~ ~ | ; | =======
~ ~ |;|\ |
|/ \|
tbrowder_ hi. i just finished my thoughts on the current state of p6 pod and changes i believe are needed. see the wiki on the rakudo repo. comments welcome. 11:55
tbrowder_ with those changes, i would change table handling so cells would become Pod::Block::Paras after being layed out so formatting code would be easily accessible as well as unformatted text. 11:58
jnthn nine: Wow, that is a satisfyingly small patch :) 12:33
AlexDaniel ehhh… how come a PR starts with “Thank you for submitting a module to the Perl 6 Ecosystem!”… 12:52
timotimo that's the issue template we have :) 12:54
it's basically displayed to the user from the beginning
so we're kind of using that to say "hello"
AlexDaniel yes but IIRC you can have comments in comments? 12:56
i.e. text that is in the message but not displayed
timotimo what? :)
oh
no clue about that
sounds like a good thing to have
AlexDaniel fixed github.com/perl6/ecosystem/commit/...3992bb92e8 13:01
AlexDaniel timotimo: so what do you do to restart hack? 13:03
and also, any chance way we can figure out why it keeps doing that? 13:04
timotimo i connect to [email@hidden.address] with X11 forwarding and start virt-manager :) 13:06
AlexDaniel timotimo: cool. So besides you, who has access to that? 13:07
timotimo: also, it needs some help now 13:09
timotimo i can kick it 13:11
[Tux] Rakudo version 2018.06-481-g5d1cec5a4 - MoarVM version 2018.06-435-g9601ac45b
csv-ip5xs0.955 - 0.961
csv-ip5xs-207.613 - 7.634
csv-parser25.173 - 25.838
csv-test-xs-200.438 - 0.454
test10.109 - 10.236
test-t2.149 - 2.240
test-t --race0.967 - 1.068
test-t-2038.047 - 39.346
test-t-20 --race12.052 - 12.195
14:05
timotimo wowza 14:11
that's a bad result
[Tux] runs it again ... 14:15
sjn [Tux]: have you considered using unicode block elements to visualize changes in speed over time? 14:20
timotimo sjn: we do have that! 14:23
buggable: speed :3
buggable timotimo, █↑▄ ▃ ↑↑ ▄ ▂▃ dates: 2018-08-07–2018-08-25
timotimo, ███▇▅█▆▇██▇▆▁ ▃▆▆ █ ██▃▃▃▇▄▇ ▁▃▇▆ ▃ ▁ ▂▃ range: 11.410s–13.909s
timotimo, █████████████▆███▇▅█▇████████▄▅████▆▄▅▃▄█▆▄▆▆█▁███ speed: 7% faster (widths: 9/3)
sjn aw, too wide :-( 14:24
timotimo buggable: speed :3 10
sjn no?
buggable timotimo, Try larger period. Could not calculate using period : Index out of range. Is: -1, should be in 0..^Inf
timotimo huh 14:26
buggable: speed :3 20 14:27
buggable timotimo, Try larger period. Could not calculate using period : Index out of range. Is: -1, should be in 0..^Inf
timotimo buggable: speed :3 30
buggable timotimo, Try larger period. Could not calculate using period : Index out of range. Is: -1, should be in 0..^Inf 14:28
timotimo i don't know how?!
buggable: help
buggable timotimo, tags | tag SOMETAG | eco | eco Some search term | author github username | speed | testers CPANTesters report ID
timotimo :|
[TuxCM] Rakudo version 2018.06-481-g5d1cec5a4 - MoarVM version 2018.06-435-g9601ac45b
csv-ip5xs0.952 - 1.004
csv-ip5xs-207.690 - 7.886
csv-parser24.076 - 24.484
csv-test-xs-200.417 - 0.499
test8.838 - 8.987
test-t2.086 - 2.120
test-t --race0.873 - 0.928
test-t-2036.930 - 36.945
test-t-20 --race11.240 - 12.319
14:30
[Tux] sjn, no I have not, and have no plans to
sjn aw 14:32
AlexDaniel sjn: fwiw there's a graph here: tux.nl/Talks/CSV6/speed4.html 14:39
sjn yeah, those aren't useful
well
limited usefulness 14:40
[Tux] and the complete log: tux.nl/Talks/CSV6/speed-all.log so you can build your own
and the complete log: tux.nl/Talks/CSV6/speed-all.log so you can build your own
(whatevah)
sjn oh, there's sooo much wrong with those graphs.. :-( :-( :-( 14:41
ok, I'll shut up now
nice to see the speedups! :-D \o/ 14:42
[Tux] tux.nl/Files/speed.pl ← suggestions welcome (I guess). As long as you follow my style 14:44
And note that this was all created when the graphs still made sense. All zoomed images were generated when the time/speed showed the need for it 14:45
it was just another tool to show the development of perl6 in my Granade talk 14:46
Granada
robertle how are these not useful? I think they are awesome and show so much! 15:10
timotimo i'm also kind of confused 16:25
brrt some benchmark results: brrt-to-the-future.blogspot.com/201...hmark.html 18:30
tl;dr - boxing is slow. Natives don't work in Perl6, but do in NQP. postrelease-opts can be a factor 5 improvement. Replacing assignment with bidning another 20%, quite consistently 18:31
nine Wait a minute... there's actually nothing explicit about explicitly-manage($str). All that does is ensure that the char* passed to the native function is not free()d immediately after the call. It will however be freed by the garbage collector. At least it may be (as GC is not guaranteed). The only control the user has is to keep a reference to the string around. 18:57
timotimo that's much better than nothing 18:58
pmurias brrt: it's a good sign that at least nqp supports high performance 19:07
brrt well, the truth of that benchmark is that at some point, the FPU is slower than the terrible code generated by the MoarVM JIT :-) 19:08
but yes
If we can make native scalars Just Work, throughout the code, then it'll be possible to write performant perl6 code.
timotimo the kind of escape analysis jnthn and masak are working on will help a decent bit, i'm sure 19:10
brrt yes, I expect so as well 19:14
japhb buggable: speed 30:3 22:47
buggable japhb, ██ ▄ ▄ ▄▃ dates: 2018-08-12–2018-08-25 22:48
japhb, ██▆▆▆███ ▄▇██ ▆ ▄ ▃▅▆ range: 11.240s–12.940s
japhb, ████████▅▆█████▅▇▄▅█▇▅▇██▁███↓ speed: 2% faster (widths: 9/3)
japhb timotimo: ^^ # You had the arguments out of order