Geth rakudo: 91543fe310 | (Elizabeth Mattijsen)++ | src/core/io_operators.pm
Channel/Supply to also be closed with sub close()

  - rather than having to use the method, TIMTOWTDI
  - somewhere between 2015.11-554-g3b4964b and 2017.08 this regressed
  - spotted in www.nntp.perl.org/group/perl.perl6...g4550.html
00:01
rakudo: f72ad227fb | (Elizabeth Mattijsen)++ | lib/Telemetry.pm6
Add Telemetry.supervisor

  - number of supervisor threads running (expected values: 0 or 1)
  - use Telemetry; signal(SIGINT).tap: &exit; say Telemetry.supervisor # 1
  - use Telemetry; say Telemetry.supervisor # 0
00:04
rakudo: 4b4429cccb | (Elizabeth Mattijsen)++ | lib/Telemetry.pm6
Add support for Telemetry.general-workers

  - the number of general worker threads active
  - also some stuff about supervisor I forgot just now
00:31
rakudo: 58249a529c | (Elizabeth Mattijsen)++ | lib/Telemetry.pm6
Add support for Telemetry.timer-workers

  - the number of timer worker threads active
00:42
rakudo: f51a3efc7d | (Elizabeth Mattijsen)++ | lib/Telemetry.pm6
Add support for Telemetry.affinity-workers

  - the number of affinity worker threads active
01:05
travis-ci Rakudo build canceled. Elizabeth Mattijsen 'Add support for Telemetry.timer-workers
travis-ci.org/rakudo/rakudo/builds/295122291 github.com/rakudo/rakudo/compare/4...249a529c27
buggable [travis build above] ☠ Did not recognize some failures. Check results manually.
lizmat hmmm... que?
Geth rakudo: 8a0eb7fa6a | (Elizabeth Mattijsen)++ | lib/Telemetry.pm6
Introducing Telemetry snapper

  - runs a repeated snap() in a separate Thread
   - outside the ThreadPoolScheduler, as to prevent interference
  - defaults to once every .1 second, can be adjusted with snapper($sleep)
  - can be run in a BEGIN or INIT phaser
  - will only allow one snapper to be running at any time
01:27
lizmat and that concludes my hacking for today& 01:35
Zoffix m: use Telemetry; snap; await start { snap for ^10000000 } xx 4; snap; say periods[0].cpus 02:28
camelia (signal ABRT)*** Error in `/home/camelia/rakudo-m-inst-1/bin/moar': double free or corruption (!prev): 0x000000000451ee10 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x721af)[0x7f83af9e21af]
/lib64/libc.so.6(+0x77706)[0x7f83af9e7706]
/l…
Zoffix (prolly don't matter, but just something I noticed)
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Introducing Telemetry snapper 03:54
travis-ci.org/rakudo/rakudo/builds/295131160 github.com/rakudo/rakudo/compare/f...0eb7fa6afc 03:55
[Tux] Rakudo version 2017.10-53-g8a0eb7fa6 - MoarVM version 2017.10-29-g116c7a13
csv-ip5xs1.119 - 1.242
csv-ip5xs-2013.362 - 14.590
csv-parser12.326 - 13.482
csv-test-xs-200.451 - 0.452
test12.142 - 12.583
test-t3.210 - 3.231
test-t-2058.408 - 60.402
test-t-20 --race20.461 - 20.701
07:30
lizmat Files=1229, Tests=74217, 321 wallclock secs (14.49 usr 5.29 sys + 2196.22 cusr 217.02 csys = 2433.02 CPU) 07:44
Geth rakudo: bc00894fd7 | (Elizabeth Mattijsen)++ | lib/Telemetry.pm6
Add support for Telemetry.general-jobs

  - the number of jobs waiting for handling by general-workers
08:41
DrForr Does anyone here have recommendations for an alternate window manager for Ubuntu that likes multiple screens? E17 is the closest I've come so far, and wil probaby switch back to that. 08:50
Geth rakudo: e95b02f158 | (Elizabeth Mattijsen)++ | lib/Telemetry.pm6
Add support for Telemetry.timer-jobs

  - the number of jobs waiting for handling by timer-workers
08:55
travis-ci Rakudo build errored. Elizabeth Mattijsen 'Add support for Telemetry.general-jobs 09:13
travis-ci.org/rakudo/rakudo/builds/295206891 github.com/rakudo/rakudo/compare/8...00894fd7f6
buggable [travis build above] ☠ Did not recognize some failures. Check results manually.
lizmat "An error occurred while generating the build script." ??? 09:17
Geth nqp/master: 9 commits pushed by pmurias++ 09:23
AlexDaniel DrForr: what do you mean by “likes multiple screens”? 09:39
e.g. I'm using i3wm and it works just fine with multiple screens, but I don't know if it “likes” them
lizmat afk for a few hours& 09:42
DrForr The real issue here, I guess, is that it needs to recognize the second display consistently when it's plugged in. I need to leave the laptop in a "secure location" when I leave for the night, which means unplugging and isolating it, then plugging in when I get to work. I've only found the stock Ubuntu WM that can handle that consistently. 09:44
Zoffix DrForr: using E17 at work without issues. Even got a key to switch between screens. Though it's E21 now. Haven't used more recent verions but Bodhi Linux folks weren't happy with their direction so they forked it. Called Moksha. Using it at home but only on 1 srceen and it seems to be the same as E17 10:12
timotimo hm, does telemetry work with multiple ThreadPoolScheduler instances active? 10:22
nope, only looks at the currently set $*SCHEDULER 10:24
which is okay i guess?
lizmat: currently the roads between germany and the netherlands are absolutely clogged nearby; the fastest route takes 40 minutes for 40 km, the others have 35 or 55 minutes of congestion added to that 11:08
DrForr Zoffix: I think I'll settle back on E. 11:25
lizmat timotimo: is it a holiday in DE today ? 11:36
DrForr From what I gather it may as well be :/ We got clipped by the tail end of the storm, apparently. 11:48
timotimo lizmat: it is :) 11:49
lizmat ah, so they're all in line for the Mall in Roermond
timotimo okay, the congestion is now 20 mins more than when i first told you about it
lizmat yeah, that's only going to get worse 11:50
timotimo why? it's already so late in the day …
lizmat most people don't start shopping until after lunch
timotimo anyway, the 40 minute route is still at 40 minutes because it bypasses the fast routes that everybody's taking
should i nom something before i come over? 11:51
lizmat well, it just turns out we need to be at our GP at 15:10 11:52
getting our flu shots
timotimo i see, should i come over afterwards instead? 11:53
lizmat so maybe we should aim for a time *after* that
yes
let's say 16:00 at our place ?
timotimo OK, that's the address that's on dijkmat.nl?
Geth rakudo: ccbfaaa0ab | (Elizabeth Mattijsen)++ | lib/Telemetry.pm6
Introducing Telemetry report

  - first version, showing: utilization, supervisor, general-threads,
   general-jobs, timer-threads, timer-jobs, affinity-threads
  - will be noted at program exit if there are still snaps around
12:11
rakudo: 2f963b14a9 | (Elizabeth Mattijsen)++ | lib/Telemetry.pm6
Various Telemetry report improvements
12:51
[Coke] m: use Telemetry; report;
camelia Effective index out of range. Is: -1, should be in 0..^Inf
in sub report at /home/camelia/rakudo-m-inst-1/share/perl6/sources/522BE83A1D821D8844E8579B32BA04966BAB7B87 (Telemetry) line 344
in sub report at /home/camelia/rakudo-m-inst-1/share/pe…
lizmat m: use Telemetry; BEGIN snapper; rimes = ^10000 .hyper.grep: *.is-prime 12:56
camelia 5===SORRY!5=== Error while compiling <tmp>
Preceding context expects a term, but found infix = instead
at <tmp>:1
------> 3use Telemetry; BEGIN snapper; rimes =7⏏5 ^10000 .hyper.grep: *.is-prime
Telemetry Report of Process #9640 (201…
lizmat m: use Telemetry; BEGIN snapper; my @primes = ^10000 .hyper.grep: *.is-prime
camelia Telemetry Report of Process #9644 (2017-10-31T12:56:29.224068Z)
util% sv gt gj tt tj at
34.27 1 1 2
44.35 1
49.82
65.32 1 -1
79.82 1 -1 …
Zoffix neat 12:57
timotimo m: use nqp; my $foo = (1, 2, 3).List; say nqp::attrinited($foo, List, '$!todo')
camelia P6opaque: no such attribute '$!todo' in type List when trying to check if it's initialized
in block <unit> at <tmp> line 1
timotimo m: use nqp; my $foo = (1, 2, 3).List; say nqp::getattr($foo, List, '$!todo') 12:58
camelia P6opaque: no such attribute '$!todo' in type List when trying to get a value
in block <unit> at <tmp> line 1
timotimo mhh, huh?
Zoffix decont
lizmat nqp::decont($foo)
Zoffix m: use nqp; my $foo := (1, 2, 3).List; say nqp::getattr($foo, List, '$!todo')
camelia (Mu)
timotimo oh!
it should probably note in the exception message what type it's being tried on 12:59
Zoffix Yeah
lizmat but it does? 13:00
timotimo it says "List" there, but it should also say "Scalar"
lizmat it should have an nqp::iscont() check though
timotimo i was under the impression that i was successfully getting at the List rather than the Scalar around it
lizmat yeah, but the error message doesn't see the Scalar, unless it checks with nqp::iscont :-)
timotimo m: use nqp; my $foo := (1, 2, 3).List; say nqp::attrinited($foo, Perl, '$!ohmygosh') 13:02
camelia P6opaque: no such attribute '$!ohmygosh' in type Perl when trying to check if it's initialized
in block <unit> at <tmp> line 1
timotimo ^- see? it just tells you whatever type it is that *you* passed
not what actual type the object in question had
lizmat still, the error message is correct, as e.g. you can have a List attribute in an Array 13:03
timotimo of course 13:06
but you can't have a '$!ohmygosh' attribute from Perl in a List :)
lizmat nope 13:07
timotimo and the error message doesn't tell you you're trying to access an attribute from Perl in your List object
Zoffix lies 13:08
m: class Perl { has $!ohmygosh = 42 }; class List is Perl {}; use nqp; my $foo := List.new; say nqp::attrinited($foo, Perl, q|$!ohmygosh|)
camelia 1
Zoffix m: class Perl { has $!ohmygosh = 42 }; class List is Perl {}; use nqp; my $foo := List.new; say nqp::getattr($foo, Perl, q|$!ohmygosh|)
camelia 42
Zoffix :)
timotimo right, i didn't specify that i meant the List we have in core
Zoffix >:D
timotimo P6opaque: no such attribute '$!todo' on type List in a <anon|424329104> when trying to check if it's initialized 13:09
now this is much more helpful
(not)
lizmat gist.github.com/lizmat/7c38c6dea8b...82c6837893 # note line 21 13:11
somehow it registered *4* jobs in the general workers queue, whereas I would think we only ever need 2 jobs for hypering 100 elements 13:12
at the default batch size of 64
jnthn It's not quite that simple. The batcher/joiner at the end are also scheduled workers. 13:13
*ends
lizmat aah, ok, that would explain 13:14
Geth nqp/master: 5 commits pushed by pmurias++ 14:20
6.d-prep: eb5e248b59 | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/README.md
Update status of naming discussion
14:30
6.d-prep: 2dcf623eb5 | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/README.md
Some language tweaks
14:35
travis-ci NQP build failed. pmurias 'Test that CONTROL catches labeled control exceptions' 14:41
travis-ci.org/perl6/nqp/builds/295318482 github.com/perl6/nqp/compare/62d48...e2f81c694f
lizmat just committed github.com/rakudo/rakudo/commit/c1...a19d72a161 16:15
is Geth unresponsive ? 16:16
Zoffix Geth: help 16:20
Geth Zoffix, Source at github.com/perl6/geth To add repo, add an 'application/json' webhook on GitHub pointing it to geth.niner.name:8888/?chan=#perl6 and choose 'Send me everything' for events to send | use `ver URL to commit` to fetch version bump changes
Zoffix Hack is hung 16:24
timotimo oh crap 16:27
did you restart it, Zoffix?
Zoffix timotimo: no; can you restart it?
timotimo i'll do it
Zoffix Thanks.
Geth rakudo: 8e4d3248f6 | (Elizabeth Mattijsen)++ | lib/snapper.pm6
SNAPPER= environment variable to set snap period
16:36
Zoffix lizmat: perhaps the env var should be "RAKUDO_SNAPPER", to keep up the pattern of all our other env vars: docs.perl6.org/programs/00-running..._Variables 16:41
all rakudo ones that is; (We also have PERL6_ and MVM_) 16:42
Or PERL6_SNAPPER, if that stuff is gonna be part of the spec.
lizmat
.oO( so much more typing )
but I hear you :-)
Zoffix "PERL6_" is a pain in the butt to type; 'cause you have to release shift in the middle of typing to type "6" 16:43
ZofBot: clearly it should be named PERL^_
ZofBot Zoffix, It's too surprising for it not to
lizmat that's an advantage the Belgians have
upload.wikimedia.org/wikipedia/com...layout.png 16:44
:-)
Zoffix :D
Geth rakudo: 0a8096989d | (Elizabeth Mattijsen)++ | lib/snapper.pm6
s/SNAPPER/RAKUDO_SNAPPER/
16:47
nine Zoffix: that's what capslock is for 17:05
Zoffix nine: it doesn't help tying "_" :)
Geth rakudo: dcf3e28c50 | (Elizabeth Mattijsen)++ | lib/Telemetry.pm6
s/x-jobs/x-jobs-waiting/

  - because they show the number of jobs still waiting to be executed
  - makes logical room for x-jobs-completed
17:06
Zoffix *typing
nine Zoffix: you still need shift for "_" but it'd be weird otherwise anywy
Zoffix
.oO( PSIX_SNAPPER )
17:07
timotimo .o( WHIPPER_SNAPPER ) 17:08
lizmat
.oO( RED_SNAPPER )
timotimo .o( SNAPPER_IN_THE_RYE ) 17:18
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Add snapper.pm6 18:26
travis-ci.org/rakudo/rakudo/builds/295367974 github.com/rakudo/rakudo/compare/2...867ba19d72
buggable [travis build above] ✓ All failures are due to: GitHub connectivity (2 failures).
Zoffix Some string concat in Perl will soon be "a *lot* faster: 4x or more": www.nntp.perl.org/group/perl.perl5...46844.html 19:35
Above my paygrade, but maybe someone will see some ideas we could steal from that work. 19:36
samcv Zoffix, probably would be in our optimizer i'd think. optimize multiple calls to a join or something 19:38
and make join not have to make a flat string all the time. oh hey i was going to do that. maybe i should start work on the join thingy..
Zoffix :) 19:39
DrForr It's yaks all the way down. 19:45
samcv gonna start by moving more stuff into functions that is used often in the join function. it used to be pretty long and i've ben separating things out of it 19:46
to make it more managable
jnthn Hm, didn't we make ~ list-assoc already so we can do that opt? 19:50
Maybe not
src/core/Str.pm:multi sub infix:<~>(*@args) { @args.join } 19:51
The candidate exists
But my %concatenation := nqp::hash('prec', 'r=', 'assoc', 'left', 'dba', 'concatenation'); 19:52
samcv looks like i can speed up join by making it into a series of concats in a loop. looks like over 500 codepoints it's faster to go with concat than with flat copy 20:49
and it can be ridiculous if we have hundreds of thousands of codepoints how much faster it is the new way
for obvious reasons
running spectest now :)
timotimo "a series of concats in a loop" generates a rope rather than copying the data into one place? 20:50
samcv yes
i did tests and over 500 codepoints it's faster to do concat
though i might want to test the upper limit regarding if we have a ton of very small ones
timotimo "speed up join" refering to method join/sub join or nqp::join?
samcv nqp::join
timotimo OK
huge ropes can have noticable gc overhead 20:51
as it has to go through the entire array of strands and update their pointers
samcv what is huge
timotimo dunno :)
samcv well we have a limit on the number of strands
timotimo oh, we do, yeah 20:52
samcv i mean i'm going to do some way to avoid if we have 500 elements of one codepoint each. it may be faster to do the old method
but for joining 2 strings of 500 codepoints or 3 strings of 250 codepoints it's faster to do a series of concats
may be even lower if there's no separator i've only tested with a separator 20:53
woo spectest pass :) 20:54
Geth rakudo: 9381ffbc90 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
Add Worker.total, total # jobs completed by worker

  - $!completed is the number of jobs completed since last supervisor check
  - which is useless for telemetry purposes
21:30
buggable New CPAN upload: Test-Color-1.001001.tar.gz by HOLLI cpan.metacpan.org/authors/id/H/HO/...001.tar.gz 21:36
samcv looks like we want an average string length of 300, or we want to have less than 4 elements and average string length of 150. to be faster doing concats instead of normal join 21:47
timotimo you could graph that on a 2d plane 21:49
we can train a neural network to make the right decisions every time 21:51
samcv heh
timotimo m: say "so ... 500 frames in 52 seconds; each frame has { 85 * 65 } tiles to update" 21:52
camelia so ... 500 frames in 52 seconds; each frame has 5525 tiles to update
timotimo so 55k tiles updated per second?
without rendering it takes 40 seconds instead of 52 21:53
Geth rakudo: 0bdda0866f | (Elizabeth Mattijsen)++ | lib/Telemetry.pm6
Latest set of Telemetry improvements

  - s/jobs/tasks/ as we use the word "task" in ThreadPoolScheduler code
  - s/waiting/queued/, so that we can use the "w" for "working" later
  - add (general|timer)-tasks-completed info
  - add wallclock back into report for now (so we can see period size)
22:04
timotimo 22.8s instead of 40 seconds if moarvm is optimized (by gcc i mean) 22:05
25.2s if rendering is also turned on 22:07
nice.
yes, i like this. 22:08
would like another easy 2x please :)
gfldex m: my @a = $*IN.IO.lines; 22:27
camelia No such method 'lines' for invocant of type 'IO::Special'
in block <unit> at <tmp> line 1
Geth rakudo: 697e4ecff5 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
Use prefix ++ instead of postfix ++ where possible

This seems to have a few % positive effect on test-t --race 20
22:46
bartolin for some reasons, the rakudo-jvm is unhappy with the assignment to @last-utils in ThreadPoolScheduler.pm: github.com/rakudo/rakudo/blob/697e...er.pm#L494 22:50
it complains about 'Unhandled exception: VMArray representation does not implement bind_pos_native'
could it be that we don't create a native array there -- even with 'my num @last-utils'? 22:51
jnthn bartolin: Sounds like that's what is somehow happening, yes 22:52
bartolin even on moar a debug statement (with dd) below that lines gives me: Array @last-utils = [0e0, 0e0, 0e0, 0e0, 0e0] 22:53
lizmat bartolin: could you try changing that to: "my num @last-util; nqp::setelems(@last-utils,NUM_SAMPLES);" ? 22:54
oops, my num @last-utils; 22:55
bartolin lizmat: I'll try, but I doubt that will really help. will take some minutes ... 22:58
lizmat ok, well, I'm pretty confident it will 22:59
but then again, I'm also very tired
so I will see the result tomorrow
&
bartolin o/
jnthn Rest well, lizmat o/
bartolin well, on moar we have a native array as expected. my earlier message was a false alarm (I mixed things up) 23:14
on jvm, using nqp::setelems instead of assigning avoids the direct explosion. but still, I can see an error (VMArray representation does not implement shift_native) when running with RAKUDO_SCHEDULER_DEBUG=1 that seems to be caused by @list-utils not being a native array. The error is is caught here, if i'm not mistaken: github.com/rakudo/rakudo/blob/697e...er.pm#L537 23:17
given that I have no idea why we don't get a native array on jvm, let alone how to fix that issue: would it be acceptable to add another '#?if jvm' and just using 'my @last-utils' for the jvm backend? 23:21
jnthn bartolin: Might be the best thing to do, in that busted scheduler = busted everything, pretty much 23:22
bartolin jnthn: thanks, will do that
buggable New CPAN upload: Test-Color-1.001002.tar.gz by HOLLI cpan.metacpan.org/authors/id/H/HO/...002.tar.gz 23:56