Zoffix uhhh.... do I have to know whe the proc finished reading $*IN before I do Proc::Async.close-stdin? :/ 00:09
:| getting reaaaly weird results from my Proc herder 00:10
m: gist.github.com/zoffixznet/df66845...e4ff051514 00:13
camelia No such method 'out' for invocant of type 'X::AdHoc'
in block <unit> at <tmp> line 76
Zoffix Which isn't that ^ but rather it's meant to output `"barBAR\n"␤"mooMOO\n"␤"meowMEOW\n"␤"berBER\n"␤"fooFOO\n"` but sporadically, some of the strings are missing the uppercase part, which comes from $*IN.slurp; and sometimes the strings are entirely empty 00:14
and the empty-string thing happens more oftener if I add `await Promise.in: 2; ` before $proc.close-stdin :S wat 00:15
MasterDuke don't think this is the problem, but it this a copy-pasto? gist.github.com/zoffixznet/df66845...p6-L25-L26 00:18
*is this
Zoffix Yeah. Thanks. 00:19
Ah, I'm a n00b. .write/.print return Promises you're supposed to await :} 00:22
Yeah, changing the STDIN print line to `await $in ~~ Blob ?? $proc.write: $in !! $proc.print: $in;` fixed all the issues 00:23
Proc::Async.kill don't work all the time :/ 01:08
hm, tho can't reproduce in smaller example :/ 01:09
Zoffix hopes it's a bug in my code
MasterDuke general fyi. i updated github.com/rakudo/rakudo/pull/1091 to not hang with lizmat's test case, and then rebased and resolved the merge conflicts. i believe it's good to go 01:50
BenGoldberg So I am attempting to create a solution for one of the feature requests I rakudobugged -- namely, something perl6ish which is equivilant to C's typedef double (*callback_t)(int); 03:49
yoleaux 03:36 EDT <AlexDaniel> BenGoldberg: oh yeah, but it doesn't mean that it will default to 2014.01, because in most cases this is not what people are looking for. irclog.perlgeek.de/perl6-dev/2017-...i_14669729
BenGoldberg Here's my code so far: gist.github.com/BenGoldberg1/19e6e...ea1dd182c9 03:50
But, when I attempt to run it, I get this: fpaste.scsys.co.uk/563988 03:52
Which is a seriously weird error message.
How does NQPMu leak out? 03:53
Oops, that was the wrong paste (and wrong error message for me to complain about)... 03:57
fpaste.scsys.co.uk/563989
===SORRY!===␤QAST::Block with cuid 1 has not appeared 03:58
samcv yay got rakudo in Sabayon (gentoo derivative binary distro) 05:21
success! take over the world perl 6
got it in the official repos i mean
[Tux] This is Rakudo version 2017.05-332-gb667e818c built on MoarVM version 2017.05-25-g62bc54e9 05:59
csv-ip5xs 3.026
test 13.331
test-t 4.493 - 4.807
csv-parser 12.943
Geth rakudo/nom: 348891488c | (Stefan Seifert)++ | src/core/Env.pm
Revert "Implement %?ENV for the core setting"

This reverts commit d3e8c82dc2f14b2bf1e41a39982644d33c8c47b2.
Baking ENV into CORE.setting.moarvm at compile time prevents packaging rakudo for openSUSE as the rpm linter rightfully complains about the BUILDROOT path being included in the compiled file. This would also include much more information about the build server than the user should be able to get.
As we don't know any use case for this unspecced and untested feature anyway, it's better to remove it.
08:04
nine lizmat: ^^^
lizmat nine: noted 09:49
fwiw, it was more a case of: now we can, let's do it :-) 09:50
afk again 10:02
Zoffix .tell BenGoldberg `===SORRY!===␤QAST::Block with cuid 1 has not appeared` is a bug and users should never see errors about QAST stuff. In this case, it looks a lot like the error you get when you try to use whatevercode in chained ops, like `5 < *.abs <7` Do you got any of that in your module? 10:22
yoleaux Zoffix: I'll pass your message to BenGoldberg.
Zoffix samcv++ great!
buggable: speed 6
buggable Zoffix, ▁▁▄▄█▃ data for 2017-05-31–2017-06-02; range: 4.364s–4.807s; 3% slower
Zoffix buggable: speed 20
buggable Zoffix, ▂▃▁▆▇▃▅▄▂▂▃▂▃▆▂▂▅▅↑▄ data for 2017-05-25–2017-06-02; range: 4.286s–4.807s; 4% slower
samcv what did i do?
Zoffix samcv │ yay got rakudo in Sabayon (gentoo derivative binary distro) 10:23
samcv │ success! take over the world perl 6
samcv oh yay
:)
Zoffix :)
samcv work domination
*world
typo but it works that way too i guess ;)
masak it worlds that way too :) 10:33
dogbert11 ZofBot: is Zoffix asleep? 11:46
ZofBot No such method 'close' for invocant of type 'Variable'
in block at <tmp> line 1
in block <unit> at <tmp> line 1

» m: multi sub trait_mod:<does>(Variable:D $v, IO ) { $
dogbert11 hmm
Zoffix No. Why? 12:05
dogbert11 had a question 12:07
m: sub grab(+@a) { "grab $_".say for @a }; grab(flat $(1, 2)) # is this correct, wasn't sure I understood your answer correctly yesterday 12:08
camelia grab 1
grab 2
Zoffix Yes, that's correct. 12:10
dogbert11 cool, then I'll have to change some docs
Zoffix The answer meant `flat` and `$( )` in that code are irrelevant.
m: sub grab(+@a) { dd @a }; grab(flat $(1, 2)) 12:11
camelia (1, 2)
Zoffix m: sub grab(+@a) { dd @a }; grab(flat (1, 2))
camelia (1, 2)
Zoffix m: sub grab(+@a) { dd @a }; grab(1, 2)
camelia [1, 2]
Zoffix ^ they all end up the same thing (basically)
dogbert11 interesting, the example I used came from here: docs.perl6.org/language/functions#...onventions 12:12
Zoffix shakes head at "...which is shorthand for something very close to:"
Explaining a thing by comparing it to a much more complex thing is a poor explanation :/ 12:13
It's a bit iffy the type @a ends up as is wobbly 12:14
m: sub grab(+@a) { dd flat @a; }; grab (1, (2, 3)).Seq
camelia (1, 2, 3).Seq
Zoffix m: sub grab(+@a) { dd flat @a; }; grab (1, (2, 3))
camelia (1, $(2, 3)).Seq
dogbert11 perhaps there are more mistakes on that page 12:15
Zoffix I'd even say that's a bug. In both cases the inner list isn't containerized, but in some instances it gets containerized when given to a +@a slurpy
mc: m: sub grab(+@a) { dd flat @a; }; grab (1, (2, 3)).Seq 12:16
committable6 Zoffix, ¦2015.12: «(1, 2, 3).Seq»
dogbert11 oO(where will this end)
Zoffix Oh wait, I see the consistency.
Oh wait, no I don't 12:17
m: sub grab(+@a) { @a[3] = 42; dd @a }; grab (1, (2, 3)) 12:19
camelia [1, (2, 3), Any, 42]
Zoffix m: sub grab(+@a) { @a[3] = 42; dd @a }; grab 1..*
camelia (1, 2, 3, 42, 5, 6, 7, 8, 9, 10... lazy list)
Zoffix m: sub grab(+@a) { @a[3] = 42; dd @a }; grab (1, 2, 3).Seq
camelia Cannot modify an immutable Str (Nil)
in sub grab at <tmp> line 1
in block <unit> at <tmp> line 1
Zoffix Has the potential for this ^ bug that'll only manifest itself for some particular input. LTA
dogbert11 this line will be changed later 'grab(flat $(1, 2)); # OUTPUT: «grab 1 2␤» '
Zoffix m: sub grab(+@a) { dd @a }; grab %(:42a, :72b); grab (1, (2, 3)); grab [1, (2, 3)]; grab (1, (2, 3)).Seq 12:22
camelia [:a(42), :b(72)]
[1, (2, 3)]
[1, (2, 3)]
(1, (2, 3))
Zoffix So looks like only Seq is affected 12:23
Filed as rt.perl.org/Ticket/Display.html?id=131483 12:26
I need Proc::Async.kill fixed for my toaster. I can think of a way to workaround it, but it's too much work and blocks most of functionality being in one shiny module 12:33
Zoffix puts on combat gear 12:34
Time to find this bug!
ZofBot: cancel all of my appointments!
ZofBot Zoffix, ^@array], @array[*-1] xx * Note that hypers promise that you don't care in what order the processing happens, only that the resulting structure ends up in a form consistent with the inputs
timotimo ZofBot: i'm looking into it a little bit right now 12:39
ZofBot timotimo, perl,
timotimo oops, i meant Zoffix 12:41
Zoffix Cool :) 12:43
timotimo it seems like the tasks are being set up with a set of ops that doesn't include a "cancel" op 12:44
wait 12:45
i might be looking at the wrong part of the whole
Zoffix possibly, the the killing works fine if it's just 1 proc 12:48
timotimo Zoffix: in what way does your Proc::Q fail?
Zoffix timotimo: I golfed it down: perl6 -e 'await ^2 .map: {start { with Proc::Async.new: $*EXECUTABLE, "-e", "sleep" -> $p { Promise.in(⅓).then: {say "Killing"; $p.kill: SIGTERM}; await $p.start } }}
^ that will more often than not hang, because one of the procs doesn't get killed, but if you change that `^2` to `^1` then it works fine all the time
timotimo "sleep" -> $p?
oh 12:49
that's a with there, k
Zoffix "sleep" is what the launched proc runs, -> 4p is the proc
timotimo yup i see it not terminate
bleh, SIGTTOU 12:51
i don't know how this works
Zoffix :)
timotimo ah! 12:52
$*EXECUTABLE
perl6-gdb-m
Zoffix ah :DF
timotimo Zoffix: you're killing before the process has started 12:58
that seems dangerous, but it shouldn't cause a hang
Zoffix Ah, right. I'll amend the final code to compensate for that. But it hangs with later periods before killings too. Original issue was discovered with kill after 4 seconds 12:59
timotimo er, huh. 13:00
the await $p.start waits for far too long
Zoffix It awaits until the process is don't doesn't it? 13:01
timotimo ah
i've not used proc::async enough
Zoffix I added some print statements to Proc::Async.kill and MVM_proc_kill_async and looks like despite two .kills being called, the op is called just once: gist.github.com/zoffixznet/7d3b2d9...ef6e68cc59 13:02
(well, MasterDuke pointed this out last night, I'm just replicating)
timotimo interesting 13:03
Zoffix "It awaits until the process is don't doesn't it?".... is "done" :|
timotimo yeah
could it be it's accidentally cancelling the task that contains the second kill? 13:04
because it's not returning from the kill op 13:05
when i lower the number of max threads, the whole thing works 13:08
Zoffix perl6 -e 'use v6.d.PREVIEW; await ^2 .map: {start { with Proc::Async.new: $*EXECUTABLE, "-e", "say qq|started \$*PID|; sleep" -> $p { Promise.in(1).then: {CATCH { default { say "murder! $_" } }; say "Killing " ~ $p.WHERE; $p.kill: SIGTERM}; await $p.start } }} 13:12
This gives me "murder! Type check failed for return value; expected return type Int cannot be itself (perhaps returning a :D type object?)"
Zoffix eyes that `once`: github.com/rakudo/rakudo/blob/3488...#L145-L151 13:13
'cause $*KERNEL wouldn't be inited until it's inside my Promise already 13:14
Zoffix tries simlififying that bit
timotimo ooh, a race in $*KERNEL being set up? 13:16
Zoffix Ahaha! Yes. This is where the bug's at! This no longer hangs: perl6 -e '$*KERNEL.signal: SIGTERM; await ^2 .map: {start { with Proc::Async.new: $*EXECUTABLE, "-e", "sleep" -> $p { Promise.in(⅓).then: {say "Killing"; $p.kill: SIGTERM}; await $p.start } }}' 13:17
'cause stuff in method signal is already setup
[Coke] in straight p6 code, I can replace stderr() with $*ERR; what about the QAST code: QAST::Op.new(:op<getstderr>) ?
Zoffix Well, thanks for help :D I'll clean it up to avoid the race and fix it.
timotimo [Coke]: what's the question? 13:20
Zoffix [Coke]: no idea; QAST::Var.new( :name('$*ERR'), :scope('dynamic') ) ?
[Coke] there are places in perl 6 that use the raw stderr, when everything should be using $*ERR
timotimo ah
yeah, what zoffix said should do it 13:21
[Coke] .. and Zoffix is probably very close there. Danke.
timotimo or maybe
DYNAMIC('$*ERR')?
that's what i get from a --target=ast
[Coke] github.com/hoelzro/p6-io-string/issues/10 13:27
timotimo: oh, right, I can make p6 tell me how to do it. :)
jnthn: does that io-string issue look like a familiar error message? 13:35
jnthn [Coke]: Well, I added it, so yes :) 13:38
[Coke]: However, it overrides method say 13:39
So I'm not really sure what'd be going on 13:40
[Coke] .seen hoelzro
yoleaux I saw hoelzro 5 May 2017 21:26Z in #perl6: <hoelzro> ok
Zoffix [Coke]: that sounds like you're using too old a version of it. 13:41
[Coke] error came off a zef install
===> Testing: IO::String:ver('0.1.0'):auth('Rob Hoelz') 13:42
which is the version in the meta json
Zoffix Infact, twice too old; this was a bug that got fixed, then it got broken again with .lines and that got fixed too :P github.com/hoelzro/p6-io-string/commits/master
[Coke] (on master)
Zoffix Ah, damn, the version never got bumped
[Coke]: I'll send a PR to fix it. In the meantime, you can do zef --force install github.com/hoelzro/p6-io-string/ar...master.zip
.ask I recall there was some thing (made by tony-o IIRC) that figures out what commit a particular version is at. Any idea where it is? Seems it needs a bit of mending to point to HEAD for latest version instead of the commit the version got bumped at. Otherwise, any bug fixes, say coming in from PRs, won't get propagated to users if the author never bumps the version in meta file,. which is an easy thing 13:45
yoleaux Zoffix: I'll pass your message to I.
Zoffix to forget to do
yoleaux: dumb ass
[Coke] Zoffix++
Zoffix .ask ugexe I recall there was some thing (made by tony-o IIRC) that figures out what commit a particular version is at. Any idea where it is? Seems it needs a bit of mending to point to HEAD for latest version instead of the commit the version got bumped at. Otherwise, any bug fixes, say coming in from PRs, won't get propagated to users if the author never bumps the version in meta file,. which is an easy
yoleaux Zoffix: I'll pass your message to ugexe.
Zoffix thing to forget to do
[Coke] wonders if $*ERR is defined early enough for me to use it in src/Perl6/Actions.nqp 13:48
(get a lot of # Cannot find method 'print' on object of type NQPMu) after trying that change locally)
Zoffix Don't know. But for record it's defined in src/core/io_operators.pm: github.com/rakudo/rakudo/blob/nom/...#L188-L189 13:50
[Coke] Zoffix: on the plus side, jnthn has already greatly reduced the amount of uncaught stderr in xt/examples* 13:51
Zoffix cool
[Coke] Down to a few "Potential Difficulties", 'useless use', and "WARNINGS" 13:53
jnthn $*ERR in Actions.nqp won't work out 13:57
However, we could potentially make it do so
The trick is to ensure that we don't screw up error reporting when CORE.setting is being built 13:58
We could in method TOP or so do `my $*ERR := stderr();`
And then in the code after we load the setting, for the case where we do, we can do $*ERR := $*W.find_symbol(['PROCESS', '$ERR']) 13:59
Or some such
Which is what $*ERR falls back to
[Coke] note that in my use case, I'm getting these out of an EVAL much later than the initial compile. 14:04
so it sounds like your approach would work there. 14:05
Zoffix Looks like most of Kernel.pm isn't thread-safe. I presume class { has $!foo; method foo { $!foo //= 42 } } isn't safe, 'cause `//=` isn't atomic? 14:12
m: dd $?BITS 14:17
camelia 64
Zoffix So $*KERNEL.bits can be replaced by $?BITS, eh? Instead of — look away if you're easily disturbed or have a pre-existing heart condition — shelling out and stuff github.com/rakudo/rakudo/blob/3488...el.pm#L101 14:20
.oO( wonder what would happen if you install rakudo on a 32-bit box, but then replace the CPU to be 32-bit... )
14:22
s:2nd/32/64/;
ZOFFLOP: t/spec/S11-modules/nested.t 14:28
timotimo no need to do any replacing. you can install a 32bit rakudo on a 64bit machine
Zoffix No, I meant $?BITS is a constant that'd get precompiled to 32-bit and then lie if you swap to 64-core 14:30
Or would it all get recompiled?
Geth rakudo/nom: 3f5cc5ad24 | (Zoffix Znet)++ | src/core/Rakudo/Iterator.pm
Use $?BITS instead of $*KERNEL.bits

Since we now[^1] have it.
  github.com/rakudo/rakudo/commit/50...5e8b4cfa4b
14:32
rakudo/nom: 34f62de854 | (Zoffix Znet)++ | src/core/Kernel.pm
Make first call to $*KERNEL.bits 21x faster

By using the now-available [^1] $?BITS instead of shelling out and stuff
  [1] github.com/rakudo/rakudo/commit/50...5e8b4cfa4b
14:34
timotimo no, it wouldn't get recompiled 14:35
um ... waitwhat
bits won't ever be 32 on moarvm
Zoffix It's calculated using `my constant $?BITS = nqp::isgt_i(nqp::add_i(2147483648, 1), 0) ?? 64 !! 32; 14:37
`
timotimo yes
and native ints on moarvm are always 64bit big
Zoffix Ah right. I thought this was fixed already
timotimo "this"? 14:38
Zoffix $?BITS not being 32 on 32-bit boxes
timotimo ah
Zoffix .ask dogbert11 do remember the story about $?BITS not being 32 on 32 bit boxes? I recall pmurias was fixing something in that area. 14:39
yoleaux Zoffix: I'll pass your message to dogbert11.
Zoffix Hm, well, there's a commit saying a fix for $?BITS but it don't appear to fixed stuf: github.com/rakudo/rakudo/commit/d0...f0c15e6839 14:40
timotimo well, the comment is correct for what the variable represents 14:41
"the number of bits a native int has"
Zoffix Ahh 14:42
I thought it was OS bits
timotimo also: integers are usually also 32bit on 64bit systems 14:43
that's why so many programs exploded when attempted to run as 64bit; pointers became 64bit, but int remained 32bit
thus trying to go from pointer to int and back tore your addresses to pieces
Geth rakudo/nom: b879060100 | (Zoffix Znet)++ | src/core/Kernel.pm
Revert "Make first call to $*KERNEL.bits 21x faster"

This reverts commit 34f62de854de0baed2eb1e22262a7f7038fb29d0.
  $?BITS is how many bits a native int is, not the bits of the architecture
14:44
Zoffix .tell dogbert11 never mind, turns out $?BITS isbits in an int, not OS bits 14:45
yoleaux Zoffix: I'll pass your message to dogbert11.
timotimo i'd still call that pretty misleading
all of it 14:46
is it bits of the architecture? what if we're running in 32bit mode on a 64bit system?
is it size of "native int", as in "my int $foo", or native int as in "C compiler's and ABI's idea of what an int is"?
one of those would pretty much always give 32, another one of those would pretty much always give 32, another one would give you 64bits on a 64bit system and 32bit on a 32bit system, another one would give 32 on 32bit and 64bit systems, and 32 on 32bit systems 14:47
ugexe timotimo: would you happen to know if a nqp json parser would likely be significantly faster than, say, JSON::Fast? 15:00
yoleaux 13:45Z <Zoffix> ugexe: I recall there was some thing (made by tony-o IIRC) that figures out what commit a particular version is at. Any idea where it is? Seems it needs a bit of mending to point to HEAD for latest version instead of the commit the version got bumped at. Otherwise, any bug fixes, say coming in from PRs, won't get propagated to users if the author never bumps the version in meta file,. which is an easy
Zoffix Basically, IO::String has been fixed for ages, but zef still installs the pre-bug-fix commit. github.com/hoelzro/p6-io-string/is...-305794168 15:02
Uhh... or is it 15:05
Nope
ugexe: never mind, I've just installed it and it's all good.
[Coke]: then, I'd guess it got installed from your zef cache or something 15:06
ugexe git log -G '"version"\s*:\s*"' -- META6.json
i thikn that will do it
oh wait, you would also have to find the last commit of each version 15:07
Zoffix I've just installed IO::String and ran this test file and it all passed, so yeah, it fetches the right stuff
ugexe i see
Zoffix ugexe: nah, never mind. I think it works fine as it is.
I just assumed it was installing some old commit because [Coke] still had buggy version despite just installing the module, but I can't repro taht issue and I think the reason [Coke] had it is because of older version of the module in cache 15:08
ugexe ah good call 15:09
Geth rakudo/nom: 79b8ab9d3f | (Zoffix Znet)++ | src/core/Kernel.pm
Make $*KERNEL.signal 64% faster, overall

First call faster by: 628.50x (Signal arg),
   70% (Str arg), 3.78x (overall), (no change for Int arg)
Cached calls: 10.46x (Signal arg),
   14% (Str arg), 64% (overall), (no change for Int arg)
16:14
rakudo/nom: 4 commits pushed by MasterDuke17++, (Zoffix Znet)++ 16:47
Zoffix looks like Proc::Async.kill's default value isn't tested. 17:00
There's one indirect test that would've caught the mistake I made (forgetting .kill() candidate), but it don't check what the default value is
Or even tries to kill; just checks .kill on unstarted process complains about unstarted process 17:01
doesn't-hang wants regexes for output instead of smartmatching.... what n00b wrote this routine 17:03
Some Zoffix guy
uhh 17:09
m: $*KERNEL.signal('SIGSEGV')
camelia Type check failed for return value; expected return type Int cannot be itself (perhaps returning a :D type object?)
in block <unit> at <tmp> line 1
Zoffix did I break that :|
mc: $*KERNEL.signal('SIGSEGV')
committable6 Zoffix, ¦2015.12: «»
Zoffix c: HEAD~100 say $*KERNEL.signal('SIGSEGV') 17:10
committable6 Zoffix, ¦HEAD~100: «11»
Zoffix oops :}
Guess there ain't no tests for this either :) 17:12
huh, I see some. Wonder why they didn't run 17:14
Ah. They did, but previous tests removed the condition that caused the bug
Geth rakudo/nom: 01d948d2d2 | (Zoffix Znet)++ | src/core/Kernel.pm
Fix regression in Kernel.signal: Str:D

Previous commit[^1] made the mistake of accessing @!signals before they're initialized in `method signals`
  [1] github.com/rakudo/rakudo/commit/79b8ab9d3f
17:30
roast: cbfd23d197 | (Zoffix Znet)++ | S02-magicals/KERNEL.t
Test $*KERNEL.signal: Str:D works

  ...with un-initialized $*KERNEL.signals
Rakudo regression: github.com/rakudo/rakudo/commit/79b8ab9d3f Rakudo fix: github.com/rakudo/rakudo/commit/01d948d2d2
17:31
roast: d6be186791 | (Zoffix Znet)++ | packages/Test/Util.pm
Make doesn't-hang smartmatch stdout/stderr

Instead of just taking a regex
17:32
roast: 2c724fa3fd | (Zoffix Znet)++ | S02-magicals/KERNEL.t
Add commit reference to test
17:34
Zoffix Stage parse : Error while compiling, type X::Undeclared::Symbols 17:36
routine_suggestion: 17:37
post_types: 'StrDistance': (33372,33381)
damn
That don't look like my changes
oh wait, yeah, it's my changes. 17:40
That's what I get for coping files out of the checkout and then git pulling and then copying them back :P 17:41
Guess I need to lookup wtf git stash is about
Looks simple nough 17:42
ZOFVM: Files=1253, Tests=138321, 128 wallclock secs (24.81 usr 3.35 sys + 2679.06 cusr 140.39 csys = 2847.61 CPU) 17:52
I hope that's just my VM being sluggish + more tests :/
buggable: speed 6 17:53
buggable Zoffix, ▁▁▄▄█▃ data for 2017-05-31–2017-06-02; range: 4.364s–4.807s; 3% slower
Zoffix buggable: speed 60
buggable Zoffix, ▃▂▂▂▂▂▂▂▂↑▂▁▁▃▁▁▂▁▁▂▁▁▃▃▃▃▂▃▂▂▁▂▅▆▂▂▂▁▃▂▂▄▂▅▆▄▅▄▃▃▄▃▄▆▃▃▅▅█▄ data for 2017-05-07–2017-06-02; range: 4.194s–6.181s; 4% slower
Geth rakudo/nom: 99421d4caa | (Zoffix Znet)++ | 2 files
Fix Proc::Async.kill failing to kill sometimes

Fixes RT#131479: rt.perl.org/Ticket/Display.html?id=131479 Fixes roast/#158: github.com/perl6/roast/issues/158
The observed problems are due to multiple .kills in separate threads ending up calling $*KERNEL.signal, which isn't thread safe, ending ... (9 more lines)
17:57
roast: e484c9f27e | (Zoffix Znet)++ | S17-procasync/kill.t
Test Proc::Async.kill kills all the things

RT#131479: rt.perl.org/Ticket/Display.html?id=131479 Rakudo fix: github.com/rakudo/rakudo/commit/99421d4caa
17:58
Zoffix Sweet. It's now full-steam ahead for the ecosystem toaster \o/
travis-ci Rakudo build failed. Zoffix Znet 'Make $*KERNEL.signal 64% faster, overall 18:10
travis-ci.org/rakudo/rakudo/builds/238816737 github.com/rakudo/rakudo/compare/b...b8ab9d3f9a
buggable [travis build above] ☠ Did not recognize some failures. Check results manually.
Zoffix You're trolling me, robot! It's just a failed nqp clone 18:15
m: my $x; $x ~= Blob.new: 1, 2, 3; dd $x 19:17
camelia Cannot use a Buf as a string, but you called the Stringy method on it
in block <unit> at <tmp> line 1
Zoffix This sucks
m: my $x; $x ~= 'x'; dd $x
camelia Str $x = "x"
Zoffix Looks like this bottoms out at Blob.Stringy coercing self into Str like an idiot 19:24
Zoffix leaves it as is for now
I notice Proc.exitcode is busted (always returns zero; there's a ticket for it) when both :out and :err are subscribed to, however, the Proc returned from Proc::Async's .start Promise doesn't have this problem, even if you tap to both stdout and stderr 19:50
Perhaps the issue is something easy
Zoffix relocates
jnthn Zoffix: I'm planning to rewrite Proc and friends in terms of Proc::Async anyway 19:51
Zoffix: So that should make the bug go away :)
Zoffix A baby beaver (I think) just came up to me at the bus stop and was following me around :D mobile.twitter.com/zoffix/status/8...6524787713 20:19
kinda sad, since it's likely die soon, but it's sooooo cuute :)
moritz cute indeed 20:21
[Coke] Zoffix: (zef cache) it was a fresh rakudo (with one line of code changed), a fresh zef installed into that, and then a fresh install of IO::String from that. 20:42
if there's a zef cache that is cross-zef install, that's bad. I'm willing to believe it was somehow related to my rakudo change, however. 20:43
Zoffix [Coke]: yeah, you need to nuke ~/.zef to nuke the cache as well 20:48
[Coke] urk. ok. 20:49
Zoffix cache is a more likely explanation, since the binary thing is IO::Handle.say complaining and latest IO::String provides own .say, avoiding the bug
binary thing = error about .say in binary mode
Geth rakudo/nom: aebd0fab2e | (Zoffix Znet)++ (committed using GitHub Web editor) | src/core/Kernel.pm
Add note for future humans

If they make Kernel.signal thread safe to toss lock in P::A.kill
21:01
[Coke] Prock ? 21:02
Zoffix damn... I guess using my phone to make a commit wasn't as awesome of an idea :p 21:03
Zoffix will fix when home
jnthn: is this thread-unsafe? class { has $!x; method x { $!x //= 42 } }.new.x ? 21:10
timotimo that snippet alone doesn't tell enough about your question 21:11
you can do this in two separate threads just fine, because nothing in there is shared
do you mean running .new once and then .x two or more times in parallel?
Zoffix yes
I guess a more prexise question is: what's a good way to thread-safely lazily initialize attributes 21:13
japhb Zoffix: Make the class into a monitor instead? 21:14
Zoffix No idea what that is. Is ot like OO::Monitor module or sonething? 21:15
buggable: eco monitor
buggable Zoffix, Found 2 results: OO::Monitors, Monitor::Monit. See modules.perl6.org/#q=monitor
Zoffix buggable: eco monitors
buggable Zoffix, OO::Monitors 'Objects with mutual exclusion and condition variables': github.com/jnthn/oo-monitors
timotimo japhb: OO::Monitor is not in core, so a bad fit for the core setting ;) 21:17
Zoffix japhb: that just locks each method call, would be preferable not to lock since only initialization is unsafe
jnthn Zoffix: Well, it doesn't promise the RHS won't be evaluated more than once
Zoffix jnthn: OK. That's kinda LTA for Kernel then, due to it shelling out on instantiation 21:18
jnthn Yeah
For CORE.setting code I'd use a Lock to guard it
Is it for the set of signals available, though?@
jnthn wonders if we can grab 'em at compile time 21:19
Zoffix hole bunch of stuff... most of kernel, in fact
good idea. gonna look into that 21:20
jnthn Yeah...I wonder how much of it can actually change dynamically
Zoffix debuses and goes home
jnthn Like, can you have a situation where Rakudo is packaged, and then installed on some system using a package manager and then there are a different set of signals there...
(That where it was compiled) 21:21
For things that call uname of course it can vary
Geth rakudo/nom: ef9872de9e | (Zoffix Znet)++ (committed using GitHub Web editor) | src/core/Kernel.pm
Fix typo in comment
21:33
Zoffix looks over Kernel code once more. 21:34
timotimo .o( a kernel written in perl6 ) 21:35
Zoffix Yeah, I think I'll leave it, as is and play the "unskilled to fix" card. I know nothing about uname, signals, any other kernel stuff, or async.
Geth tap-harness6: 5654dcd94a | (Zoffix Znet)++ (committed using GitHub Web editor) | META6.json
Bump version

Pre-emptively, "just in case," since core-rakudo version got removed.
21:51
ugexe m: say Version.new(v6.c) cmp Version.new(v0.0.2); # if it is a problem it might still be one 21:54
camelia More
AlexDaniel ugexe: ? 22:00
ugexe core modules are all version 6.c
when you upgrade rakudo, do those get uninstalled? if not then that TAP will be a higher version than the ecosystem until v6 or some such 22:01
Zoffix Bump it to v6.0.2? :) 22:03
m: say Version.new(v6.c) cmp Version.new(v6.0.2);
camelia Less
Zoffix m: say Version.new(v6.c) cmp Version.new(v6.0.1);
camelia Less
Zoffix ugexe: what's your advice? Should we bump it to 6.0.1? 22:04
ugexe if someone complains. otherwise i wouldnt do anything
Zoffix ok
Zoffix is slightly worried the "someone complains" might be someone who's using releases or something... 22:05
ugexe possible problem for someone to chew on re: how to version core modules though
Zoffix I've no idea how people "upgrade" their rakudos, since I nuke stuff
ugexe like if Test is ever removed from core it will be the same thing
Zoffix IIRC this "throw tap out" thing started because some users were using buggy ecosystem TAP::Harness. I guess that means `zef install TAP::Harness` was still installing the ecosystem version even tho there was one with higher version in core. 22:08
ugexe that is a side effect of its renaming to just TAP, and there not being a includes with a lib/Tap/Harness.pm 22:09
Zoffix Alright. This is my last long-weekend-thanks-to-vacation-days of the year. Gonna de-socialize for three days and enjoy some peace and quiet :) See ya Tuesday
ugexe zef install TAP would have actually had to choose
i think anyway 22:10
this assume TAP::Harness has a TAP.pm 22:11
[Coke] Zoffix: have fun! 22:41
MasterDuke m: class :: { method foo {} }.new.fob 23:03
camelia No such method 'fob' for invocant of type '<anon|76060416>'. Did you mean 'foo'?
in block <unit> at <tmp> line 1
MasterDuke m: class C { method foo { self!bar }; submethod bar { say "hey, Im right here, too!" } }; C.new.foo 23:04
camelia 5===SORRY!5=== Error while compiling <tmp>
No such private method 'bar' for invocant of type 'C'
at <tmp>:1
------> 3class C { method foo { self!7⏏5bar }; submethod bar { say "hey, Im righ
MasterDuke my recent PR implemented the first case, but ^methods isn't returning anything in the second 23:06
timotimo of course, private methods are entirely distinct
MasterDuke right, but `for $!invocant.^private_method_table.keys -> $method_name {` isn't either 23:07
those don't seem to be populated at compile time
timotimo oh? 23:08
huh.
MasterDuke seethe SORRY! in the second
timotimo oh
i meant the other way around
when you're doing a private method call, it wouldn't ever hit a submethod
MasterDuke m: class C { method foo { self!bar }; method bar { say "hey, Im right here, too!" } }; C.new.foo 23:09
camelia 5===SORRY!5=== Error while compiling <tmp>
No such private method 'bar' for invocant of type 'C'
at <tmp>:1
------> 3class C { method foo { self!7⏏5bar }; method bar { say "hey, Im right h
MasterDuke it's the same submethod or method