Zoffix Ah, k, think I see what's up with the hang 00:01
timotimo i can't go completely without 00:04
i also can't read books, that also hurts, for example
but i've reduced my keyboard/mouse time significantly. will try to decrease even more
bedtime now. seeya!
Zoffix \o
On 2017.09 t/spec/S17-channel/stress.t takes 7s 00:14
On HEAD it basically hangs and eats all RAM on 4-core/4GB box. With my patch it takes 29s
Ohhh.. yeah, now I see what it's doing 00:15
(the test) 00:16
interesting... stage parse was from 100s all day but now it's consistently mid-80s 00:18
solved half the problem on channel/stress test 00:20
Gotta go to bed. Slept like 8hr in the past 48hr 00:21
ZOFFLOP: t/spec/MISC/bug-coverage-stress.t 00:33
(test 1)
Geth rakudo/nom: e95eb42c91 | (Zoffix Znet)++ | src/core/ThreadPoolScheduler.pm
Test for deadlock heuristic more

Check for deadlock even if we have some completed jobs but still have a ton of total uncompleted ones.
t/spec/S17-channel/stress.t on 4-core/4GB RAM VM takes:
  - On 2017.09, 7s to run
... (8 more lines)
00:44
Zoffix .tell jnthn S17-channel/stress.t was hanging on HEAD when run on its own (and box doesn't have load). I fixed that with github.com/rakudo/rakudo/commit/e95eb42c91 if you wanted to check it. The first half of S17-channel/stress.t is still 3x slower than what it were on 2017.09. I looked but don't really see any problems and it might be just how it works with the new scheduler. Here's the code: 00:47
yoleaux Zoffix: I'll pass your message to jnthn.
Zoffix gist.github.com/zoffixznet/70cb09f...1755575459 you can use committable to see timing diff: c: HEAD,2017.09 gist.githubusercontent.com/zoffixz...a25d/p6.p6
.tell jnthn gist.github.com/zoffixznet/70cb09f...1755575459 you can use committable to see timing diff: c: HEAD,2017.09 gist.githubusercontent.com/zoffixz...a25d/p6.p6
yoleaux Zoffix: I'll pass your message to jnthn.
Zoffix Well, looks like we're release-ready to me. 00:48
Zoffix drops to bed
FWIW, native_array.pm is largely a generated file: github.com/rakudo/rakudo/blob/nom/...#L338-L357 01:41
ZOFFLOP: t/spec/S17-procasync/kill.t 02:00
ZOFVM: Files=1283, Tests=152771, 150 wallclock secs (21.29 usr 3.24 sys + 3217.30 cusr 165.19 csys = 3407.02 CPU) 02:01
Geth rakudo/nom: f3b497c85e | (Zoffix Znet)++ | 2 files
Fix accidentally-edited auto-generated part

The auto-generated part was accidentallyu edited[^1] directly. Propagate the change to generator script. I'm only assuming the same change was needed (or at least is not detrimental) to other types that are now included.
  [1] github.com/rakudo/rakudo/commit/71...ea889ab144
02:04
Zoffix .ask timotimo you commited the original commit. Would you double check that the change propagated to other native array types is OK and doesn't harm anything: github.com/rakudo/rakudo/commit/f3b497c85e 02:05
yoleaux Zoffix: I'll pass your message to timotimo.
Geth rakudo/nom: a85c8d486c | (Zoffix Znet)++ | 2 files
Fix .STORE leaving behind elements on native arrays

  - Occurs when non-Iterable value is assigned
  - Occurs when native-Iterable is assigned
02:07
roast: ab9668d5e7 | (Zoffix Znet)++ | S09-typed-arrays/native.t
Test .STORE on native arrays

Rakudo fix: github.com/rakudo/rakudo/commit/a85c8d486c
02:08
Zoffix man, that's been broken for year and a half :S people don't use native arrays much it seems
Zoffix re-drops to bed
Geth rakudo/ugexe-patch-1: 5a5482e77d | (Nick Logan)++ (committed using GitHub Web editor) | src/core/CompUnit/RepositoryRegistry.pm
Fix multiple options passed to include specs

Previously passing multiple options would result in the first option set (in %options) containing all the values for all the keys.
03:07
rakudo: ugexe++ created pull request #1213:
Fix multiple options passed to include specs
03:08
pmurias to we want to specific/unify across backends the exact way floating point numbers are stringified? 08:01
yoleaux 01:54Z <MasterDuke> pmurias: are you planning to implement nqp::eqatim and nqp::eqaticim for js and jmv? that would be great if so, then this block (repeated a couple times later) could be removed: github.com/rakudo/rakudo/blob/nom/...#L355-L395
pmurias moar takes 15 digits of precision (and chops of trailing zeros) 08:03
lizmat Files=1229, Tests=75749, 315 wallclock secs (14.77 usr 5.40 sys + 2181.34 cusr 211.85 csys = 2413.36 CPU) 08:13
Geth nqp: ff9b9ff1f7 | pmurias++ | src/vm/js/nqp-runtime/container-specs.js
[js] Coerce native refs to string more correctly
08:20
nqp: 119826e200 | pmurias++ | src/vm/js/nqp-runtime/coercions.js
[js] Coerce num to strings more like MoarVM does
pmurias MasterDuke: I think I'll have to implement those ops too 08:21
MasterDuke: I think if we are going that to have all the backends coexisting properly we need to minimize the amount of backend specific #ifdefs 08:22
AlexDaniel` good * everyone 08:42
lizmat AlexDaniel` o/ 08:43
looks like perl6book.com needs an update again 08:48
www.springer.com/in/book/9781484232279
deeptext.media/using-perl6 08:49
Geth rakudo/nom: 2c4868b859 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
Remove one division from supervisor loop

Since the number of elements sampled is now always constant, we can factor that into the per-core calculation at compile time, so that we only need to sum it at runtime.
08:50
lizmat afk for a few hours& 08:55
|Tux| This is Rakudo version 2017.09-513-g2c4868b85 built on MoarVM version 2017.09.1-622-g6e9e89ee 09:08
csv-ip5xs 1.141 - 1.165
test 11.469 - 11.557
test-t 3.064 - 3.078
csv-parser 11.653 - 11.662
AlexDaniel` this looks better, why? 09:12
anyway, so I'll kick off the toaster in a few moments, and hopefully we'll get somewhere soon :)
please report any critical problems if you see anything 09:13
|Tux| Second run
test-t 3.097 - 3.099
AlexDaniel` oh. That's getting noisy :) 09:14
|Tux| you don't want the timings posted here anymore?
AlexDaniel` |Tux|: of course 09:17
|Tux|: but any chance of increasing the input size? Like test-t-big or something? 09:18
or is that what other numbers are for? :)
|Tux| oké, I'll add a new test once we get under 3 :P 09:20
AlexDaniel` deal 09:21
:)
|Tux| my reason to stick to 10000 rows is to have the graphs make sense. If I up the counts, the time will rise
AlexDaniel` sure, but keep this test and just add another one 09:22
|Tux| doing so right now
AlexDaniel` |Tux|++
lizmat [Tux]: could you also show the result of --race ? 09:35
aka, start a test-t-race column ?
nine A larger input size would make sense for csv-ip5xs, too. There's a lot of startup in that second. 09:37
|Tux| lizmat, I'll try 09:39
Zoffix pmurias: FWIW IIRC moar is missing one digit of precision. There are several bug reports involving that. And yeah, IMO we should have unified stringification of nums across backends. One reason is the strignification is used in .WHICH, which affects stuff like sets (and Moar's chopping currently introes a bug into sets with nums that differ by small amount) 10:06
s/one digit/some/; # I didn't check if it's just one 10:07
m: my ($a, $b) = set(1e0), set(1e0 + 4e-15); say $a ~~ $b, $a.keys »≅« $b.keys; say 1e0.WHICH; say (1e0 + 4e-15).WHICH 10:09
camelia True(False)
Num|1
Num|1
Zoffix From here: rt.perl.org/Ticket/Display.html?id...xn-1501046
MasterDuke: so what's the plan for Int.new with yor MoarVM patch? :) 10:10
Also, I'm not seeing any Int.new's in S02-types/set.t FWIW :/ 10:13
ilmari m: int.new.say
camelia Cannot find method 'perl' on object of type NQPMu
in block <unit> at <tmp> line 1
ilmari m: Int.new.say 10:14
camelia 0
Zoffix oops
m: int32.new.say
camelia Cannot find method 'perl' on object of type NQPMu
in block <unit> at <tmp> line 1
Zoffix m: int32.new 10:15
camelia Cannot find method 'perl' on object of type NQPMu
in block <unit> at <tmp> line 1
Zoffix m: int32.new(42)
camelia ( no output )
Zoffix did I break it
bisect: int32.new
bisectable6 Zoffix, Bisecting by output (old=2015.12 new=2c4868b) because on both starting points the exit code is 1
Zoffix, bisect log: gist.github.com/959c50f6319ebe5bda...ee07fbfbfe
Zoffix, (2016-09-27) github.com/rakudo/rakudo/commit/22...0f14b9c05c
Zoffix bisect: old=2017.09,new=HEAD int32.new
bisectable6 Zoffix, Bisecting by output (old=2017.09 new=2c4868b) because on both starting points the exit code is 1
Zoffix, bisect log: gist.github.com/9860493594aae4bfd0...5c3c7ab83c 10:16
Zoffix, (2017-10-14) github.com/rakudo/rakudo/commit/9d...457fb442cf
Zoffix c: 2017.09 int32.new
committable6 Zoffix, ¦2017.09: «No such method 'BUILDALLPLAN' for invocant of type 'Perl6::Metamodel::NativeHOW'␤ in block <unit> at /tmp/CJOeuqa3Pb line 1␤ «exit code = 1»»
pmurias bartolin: when I find bugs in rakudo.js that have the same cause in rakudo.jvm should I write them down somewhere? 10:17
AlexDaniel c: 2017.09..HEAD int32.new.say
committable6 AlexDaniel, Too many commits (514) in range, you're only allowed 500
AlexDaniel c: 2017.09..HEAD~14 int32.new.say
Zoffix ah, k, easy fix
(for those watching: it's currently emitting deprecation warning; the fix would be just to make it work right until deprecation expires and we make .new throw) 10:19
The bot just has deprecations turned off
committable6 AlexDaniel, «hit the total time limit of 180 seconds» 10:20
AlexDaniel slaps committable6
Zoffix ZOFVM: Files=1283, Tests=152776, 161 wallclock secs (23.05 usr 3.48 sys + 3475.94 cusr 178.61 csys = 3681.08 CPU) 10:32
AlexDaniel oops. Touching the dates in the release guide ahead of time is a bad idea. releasable6 thinks that the next release is in 23 days :D 10:35
buggable New CPAN upload: Sparrowdo-0.0.35.tar.gz by MELEZHIK cpan.metacpan.org/authors/id/M/ME/....35.tar.gz 10:36
Geth rakudo/nom: 9554a97c50 | (Zoffix Znet)++ | 2 files
Throw useful error with .new with no args on natives

This form never worked, so we don't need to bother passing it via deprecation period. Just start throwing same error all forms will be throwing once deprecation period expires.
10:38
pmurias shouldn't cpan uploads be on #perl6 instead of #perl6-dev? 10:48
Zoffix pmurias: they're there: irclog.perlgeek.de/perl6/2017-10-26#i_15356066 10:52
|Tux| extended run: gist.github.com/Tux/c6d0bd1f1c0a13...ce065d9661 10:53
Geth rakudo/nom: 5d4ca586b0 | (Aleks-Daniel Jakimenko-Aleksejev)++ | docs/ChangeLog
Remaining ChangeLog entries

Deliberately not logged: 7277aa54 d10d6977 3f595acf 50be159f 76017036 50324bb0 b19e352e eb1febd5 ce7e5444 794235a3 f3b497c8
10:54
|Tux| the -20 extension means 20 times as big
Zoffix buggable: speed 100 :2 10:56
buggable Zoffix, ▃▅▂▄↑▃ ▂ ▂▃▄▂▁ ▅▄ ▃ ↑ ▁ ▇ ▂ ▄▂ ▄↑ ↑▅▂▃▃▇ ↑█ dates: 2017-10-01–2017-10-26
Zoffix, ██████▆▅▇▇██████████▇█▆▅▇▅▆▆█▇▃▅▃▅▂▂▂▃▂▃█▇█▆▆▆█▃▁▃▃▄██▃▃▅▅██▆▇██████▆▄▇▇██▃▅▂▂▃▃▃▃▂▃▆▃▂▃▄▃▃▂▅▃▃▃▃▅▂▃ range: 3.044s–3.631s; speed: 6% faster (widths: 10/3)
|Tux| Rakudo version 2017.09-513-g2c4868b85 - MoarVM version 2017.09.1-622-g6e9e89ee
csv-ip5xs1.155 - 1.166
csv-ip5xs-2013.860 - 14.259
csv-parser11.566 - 11.789
csv-test-xs-200.441 - 0.450
test11.436 - 11.599
test-t3.067 - 3.094
test-t-2056.192 - 57.096
test-t-20 --race19.341 - 19.486
Zoffix neat
Zoffix |Tux|++
|Tux| that will be the new report
AlexDaniel awesome
Zoffix m: say 56.192/20
camelia 2.8096
|Tux| so, all -20's have been added
AlexDaniel |Tux|: will we have a graph for it also? like tux.nl/Talks/CSV6/speed4.html 10:57
|Tux| which includes csv-test-xs-20 which is perl5 + Text::CSV_XS
No graph (yet). That will need a new log, a new cron job and time to automate this 10:58
and $work is pulling
pmurias Zoffix, MasterDuke: re div_I optimization shouldn't that also check if the type is the same?
AlexDaniel kk
|Tux| the new list is ordered by run-time of the first run
Zoffix pmurias: good point 11:01
m: use nqp; class Meow is Int {}; dd nqp::div_I(<42>, 1, Meow).^name
camelia "Meow"
pmurias nqp-m: say(nqp::eqaddr(1, 1)); say(nqp::eqaddr(20, 20)); 11:06
camelia 1
0
pmurias btw. rakudo actually depends on 1 and 0 being cached for parameterizing Foo:U to work properly
jnthn That sounds fragile... 11:12
yoleaux 00:47Z <Zoffix> jnthn: S17-channel/stress.t was hanging on HEAD when run on its own (and box doesn't have load). I fixed that with github.com/rakudo/rakudo/commit/e95eb42c91 if you wanted to check it. The first half of S17-channel/stress.t is still 3x slower than what it were on 2017.09. I looked but don't really see any problems and it might be just how it works with the new scheduler. Here's the code:
00:47Z <Zoffix> jnthn: gist.github.com/zoffixznet/70cb09f...1755575459 you can use committable to see timing diff: c: HEAD,2017.09 gist.githubusercontent.com/zoffixz...a25d/p6.p6
jnthn It should probably declare a couple of symbols 11:14
Instead of using 0/1
lunch & 11:15
pmurias jnthn: maybe it should just use True and False instead of 1 and 0? 11:41
ahh it's nqp not perl6 11:42
Geth rakudo/nom: 5f73579b23 | (Aleks-Daniel Jakimenko-Aleksejev)++ | 2 files
Generated announcement and fixed date
11:58
Zoffix AlexDaniel: did you do anything special to contributors list? 12:03
I don't see my special treatment applied despite code still being there... wondering if it's a bug in rakudo somewhere.
AlexDaniel Zoffix: actually yes, it looked weird that your name is last so I put it first, is it wrong? 12:04
haha
Zoffix lol
timotimo m)
Zoffix AlexDaniel: doesn't matter anymore
But when I was release manager, I placed myself last if I were first, so people wouldn't think I put myself first on purpose while releasing or something :)
Geth rakudo/nom: 10e7af0091 | (Zoffix Znet)++ (committed using GitHub Web editor) | tools/contributors.pl6
Zoffix isn't speshul anymore
12:05
AlexDaniel today I received an email with subject “why delay ?” 12:10
there was no body
Zoffix heh 12:11
Geth rakudo/nom: 4b60df8f84 | pmurias++ | src/Perl6/Metamodel/DefiniteHOW.nqp
Parameterize using type objects instead of native ints

Native int pointer equality in parameterization depends on int caches and as such is fragile.
12:12
AlexDaniel obviously that ↑ won't be toasted :) 12:13
Zoffix m: my int $orig = 2; my int $new = Int.new: 2; $new does role Meows {}; say $orig.^name 12:14
camelia Int+{Meows}
Zoffix so even with div_I hack don't look like it fully fixes this action-at-a-distance thing 12:15
timotimo well, there you have a native int
the moment you call the "does" it'll box that into an Int object which it gets from the int cache 12:16
you'll see that $new won't actually have changed at all after that
Zoffix Ah ok
"So I've been away from the Perl 6 scene partly because y'all can't stop fighting about it. One thing I've noticed after reading through these comments: there seems to be more optimism about Perl 6 (yes, name and all) outside the Perl community than what y'all got going on. So smarten up, call it Whatever, something marketable, don't listen to you-know-who and press on. PLEASE." 12:28
+1 :)
That's from www.reddit.com/r/perl/comments/78l...amed_perl/ 12:29
Zoffix & for $n hours 12:31
ugexe I like this quote myself: 12:54
“BIP: What’s the level of interest for Perl 6 in the Brazil Perl community?”
“Garu: Quite a lot, actually! We are super excited at the current stage of Perl 6 and what we can achieve with it today. So much so that we have even seen brazilians get into our local Perl community *through* Perl 6, instead of the other way around.” 12:55
DrForr ugexe: Nod. It looked very positive. 12:58
AlexDaniel errr, there's a segfault in BSON module 13:00
it was there since forever I think
but I can't get it locally for some reason
toaster catches it two times, once when instlaling BSON and once when installing MongoDB 13:01
RT#132316 is probably exactly about that 13:02
synopsebot RT#132316 [open]: rt.perl.org/Ticket/Display.html?id=132316 [SEGV] Crash while running program (MongoDB module) 13:03
Zoffix Looks like there's a bunch of branches that likely were recently merged already and can be deleted: github.com/rakudo/rakudo/branches/active 13:28
AlexDaniel Zoffix: feel free to clean it up 13:31
Zoffix I was thinking more: the authors of the branches who already know whether their work was merged can deleted them. 13:33
Much easier than me trying to guess.
travis-ci Rakudo build failed. Aleks-Daniel Jakimenko-Aleksejev 'Remaining ChangeLog entries
travis-ci.org/rakudo/rakudo/builds/293088961 github.com/rakudo/rakudo/compare/9...4ca586b0a3
buggable [travis build above] ✓ All failures are due to: GitHub connectivity (1 failure).
Zoffix reproed BSON SEGV on HEAD. After second `zef test .` run in the checkout 13:34
AlexDaniel it's not a HEAD issue, it was there since 2017.09 at least 13:35
and I'm pretty sure it's even older than that
Zoffix ok
"MoarVM panic: Internal error: invalid thread ID 133073 in GC work pass" 13:38
with while perl6 -Ilib t/300-document.t; do true; done in BSON checkout
AlexDaniel has hopes that maybe eventually one of the fixes for this kind of issues will sidefix RT#131003 13:40
synopsebot RT#131003 [open]: rt.perl.org/Ticket/Display.html?id=131003 [SEVERE][SEGV] Heap corruption when using Gumbo
AlexDaniel Zoffix: what did you do to repro it? Does it need extra CPU load? 13:42
Zoffix AlexDaniel: nothing special. 13:43
I golfed it now to this: gist.github.com/zoffixznet/6d2e8ea...f3103c6b9a The crash seems to happen in "subtest "Big, wide and deep nesting"; strangely, if I remove previous tests, I get errors about doing stuff with `Any` despite not really seeing previous tests making anything the "deep nesting" test needs 13:45
An eagle-eye's view tells me that module is just doing thread-unsafe things. I see a bunch of stuff like `Promise.start( { @!values[$idx] = ` 13:51
AlexDaniel ahhhhh 13:52
Zoffix Maybe it's fine, but I just see Promises all over the place, so I wouldn't be surprised if it's a problem in the module and not rakudo
AlexDaniel that could be it, yeah
toaster looks clean, appveyor is green, travis was green some time ago and should be ok now 14:04
Zoffix \o\ \o/ /o/ 14:05
AlexDaniel releasable is doing the local release now, and I'm not expecting to see any issues there (spectests should be fine)
so I'll just wait for s_a_m_c_v and we'll get the thing going
jdv79 Zoffix: thanks! i think you fixed my bug. at least my golf can run for 10 mins now.. i'll try the real app in situ before i close out my ticket.
Zoffix w00t cool :) 14:06
AlexDaniel what bug is that by the way?
jdv79 i would like to understand the exact issue. i have yet to examine your commits though.
AlexDaniel ticket id? 14:07
Zoffix jdv79: which ticket is it?
jdv79 AlexDaniel: RT#132287 i think
synopsebot RT#132287 [open]: rt.perl.org/Ticket/Display.html?id=132287 [REGRESSION][CONC] stall/block in async heavy code
jdv79 yup
which got morphed into GH#1202 i think
AlexDaniel huh!
synopsebot GH#1202 [open]: github.com/rakudo/rakudo/issues/1202 [severe] Async qqx sometimes hangs or dies ( await (^5).map({start { say qqx{… …} } }) )
jdv79 anyway, have to repark for the second time today. nyc and cars don't mix:(
AlexDaniel well, 1202 still hangs here 14:08
m: say 42
camelia 42
lizmat 1202 is still not fixed 100%
I only managed to cover the race conditions in Perl 6 code
(I think)
I'm still not sure about: nqp::clone being threadsafe, and nqp::elems 14:09
if nqp::clone is not, some more tuning of the ThreadPoolScheduler is needed
(which I could do relatively quickly)
Zoffix jdv79: my fixes might've fixed hangs, but I see some comments about crashes and I don't rember fixing anything about crashes
timotimo clone is unlikely to be threadsafe 14:10
i'd flat-out say it's not
lizmat I'll take that as my cue then :-)
timotimo if another thread changes its size while clone is going on, bad things happen
lizmat but nqp::elems should be ok ?
timotimo yes, but whether or not the result is still correct on the next instruction is up to luck
AlexDaniel jdv79: indeed, so far no hang here
lizmat actually, all the nqp::clones are protected blocks, as are the pushes 14:11
hmnmm...
brb
AlexDaniel Zoffix: well, it was bisected to better-sched merge, so that particular part of the issue seems to be resolved indeed
GH#1202 provides a better way to reproduce the rest of problem I think 14:12
Zoffix Nothing hangs or crashes for me with `while perl6 -e 'await (^5).map({start { say qqx{echo -n foo $_} } })'; do :; done` even while running spectest on the same box. 14:25
AlexDaniel :( why am I the only one seeing the hang 14:26
Zoffix k, it hung almost right away on my 24-core box 14:28
Zoffix tries 64-core :}
on 24-core: hung once, but doesn't seem to want to hang again 14:29
AlexDaniel fwiw it hangs within 15 seconds on my 2 core old laptop 14:30
Zoffix 3x hangs. I see a new data point :} 14:31
"[SCHEDULER] Supervisor thinks there are 64 CPU cores" i.imgur.com/vztc6Bw.gif :P 14:34
64-core stresstest: Files=1270, Tests=152681, 82 wallclock secs (22.96 usr 3.63 sys + 3710.80 cusr 232.80 csys = 3970.19 CPU) 14:40
t/fudgeandrun ................................... ===SORRY!=== 14:41
Could not find warnings
huh?
oh, nm, bad command
ZOFFLOP: on 64-core: t/spec/S17-procasync/kill.t t/spec/S10-packages/precompilation.t t/spec/S32-io/IO-Socket-Async-UDP.t 14:42
hung on 64 too. Though I bumped await to await (^50) 14:45
ugexe anyone see an issue with github.com/rakudo/rakudo/pull/1213 ? if i write an advent post on CUR it would require this, otherwise Star would not be able to run the code 14:48
Zoffix has no knowledge of that part of code base and has no comments
ugexe nine: lizmat: ^
although im not sure why it was getting the wrong result to begin with 14:49
%options contains all the right keys, but all the values are associated with a single key
Geth rakudo/nom: 5a5482e77d | (Nick Logan)++ (committed using GitHub Web editor) | src/core/CompUnit/RepositoryRegistry.pm
Fix multiple options passed to include specs

Previously passing multiple options would result in the first option set (in %options) containing all the values for all the keys.
rakudo/nom: fa69e4a3c5 | lizmat++ (committed using GitHub Web editor) | src/core/CompUnit/RepositoryRegistry.pm
Merge pull request #1213 from rakudo/ugexe-patch-1

Fix multiple options passed to include specs
lizmat ugexe: is that an answer :-) (although I was just going by your description of before/after, not necessarily looking at the code) 14:50
dogbert2 Zoffix: wrt t/spec/S17-procasync/kill.t, it's seems to be test #8 which is failing from time to time
ugexe lizmat: the best kind of answer
lizmat ugexe: you could also consider getting a commit bit ? 14:52
:-)
Zoffix ugexehas it :)
ugexe i have one, but i didn't want to shove that in at the last second myself
AlexDaniel good
:)
Zoffix hm, looks like t/spec/S17-supply/syntax.t hang on my buntu box and almost ate all the resources :P killed it in a nick of time after noticing mouse lagging 14:53
lizmat is testing a ThreadPoolScheduler without nqp::clone 14:54
so far, it doesn't seem to fix GH #1202 :-(
synopsebot GH#1202 [open]: github.com/rakudo/rakudo/issues/1202 [severe] Async qqx sometimes hangs or dies ( await (^5).map({start { say qqx{… …} } }) )
jnthn ...without nqp::clone? 14:55
Zoffix lizmat: does it hang or crash for you? I haven't seen any crashes. Currently tailing the hang issue
lizmat crash
MoarVM panic: Heap corruption detected: pointer 0x10d0fa1e0 to past fromspace
jnthn o.O
Zoffix Hangs for me here: github.com/rakudo/rakudo/blob/nom/...nc.pm#L338
lizmat note: I'm doing this while a spectest is running
Zoffix debug prints in affinity worker makage show it just completing and debug prints after that line never turn up (when it hangs) 14:56
lizmat Zoffix: fwiw, I've seen print / say interfere with multi-threaded issues 14:58
nine Ah lizmat++ beat me to merging that PR
Geth rakudo/nom: 6eb576ba70 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
Make sure we don't use nqp::clone

  - as that's guaranteed to not be threadsafe after all
  - instead, introduce a "push-worker" sub
   - which copies the workers safely *and* adds the given worker
15:03
jnthn huh, nqp::clone does exactly that o.O 15:05
lizmat ah? so it *is* threadsafe ??
timotimo jnthn: does clone ask for the elems over and over again?
jnthn timotimo: No, but doing that isn't threadsafe either 15:06
But worker lists are NEVER meant to be changed
lizmat so 6eb576ba70 is unnecessary ?
jnthn We only ever install a new one
Yeah, or at least, if it is, something odd is going on
lizmat well, it doesn't fix MoarVM panic: Heap corruption detected: pointer 0x11284eb20 to past fromspace errors 15:07
jnthn Yeah, I'd expect it to make no difference
lizmat the code I run: time while perl6 --ll-exception -e 'await (^5).map({start { qqx{echo -n foo $_} } })'; do :; done
MoarVM panic: Internal error: zeroed target thread ID in work pass # rare one 15:09
Zoffix For me that code hangs on nqp::spawnprocasync op. And based on my extra debug prints, looks to hang when 2 threads reach for it at the same time
Geth rakudo/nom: 2aaa32c961 | (Elizabeth Mattijsen)++ | src/core/ThreadPoolScheduler.pm
Turns out we can nqp::clone after all

  - but keep the nice helper function :-)
15:13
ilmari presumably that does fork+exec, which needs to be _very_ careful with what it does between the two in the child in multi-threaded programs
calling any non-async-signal-safe function is undefined behaviour 15:14
timotimo so having a process-wide lock for that seems like a good idea? 15:16
lizmat and something that kills the worker queues ? 15:17
(in the child)
ilmari that's not really going to help, since anything another thread is doing could deadlock (taking the malloc() lock is a prime example)
timotimo we could force a gc before we fork, but that seems expensive and shitty 15:18
of course if i had built that "gc-syncup-but-without-gc" mechanism i had been desiring ... :) 15:20
ilmari I see moarvm uses uv_spawn, which _should_ take care of it 15:21
timotimo can it do everything that's necessary? 15:22
ilmari it does the forking and execing and everything inbetween
libuv 1.11 has «unix: use async-signal safe functions between fork and exec» in the changelog
timotimo oh i thought you said all other threads have to cooperate, too 15:24
anyway, bbl
ilmari I was talking about the lowest-level fork+exec stuff. there might be higher-level issues as well 15:25
Geth rakudo/nqp-spawnprocasync-debug-prints: e6d32deb17 | (Zoffix Znet)++ | 2 files
Stash debug prints
15:26
Zoffix (gonna play with it later tonight; FWIW, swapping affinity workers to general queue did nothing about fixing the hang and it hangs right after two threads print "made envh" one after another) 15:28
Zoffix &
ilmari Zoffix: at that point I'd try strace 15:29
and correlate that output with the syscalls made by uv_spawn 15:30
AlexDaniel does anybody want something do go in before the release?
Zoffix ilmari: thanks. I'll do that 15:31
AlexDaniel: I'm good.
AlexDaniel to*
lizmat AlexDaniel: I'm also good 15:34
afk& 15:52
ugexe bisect: old=2017.07 my %seen of Int is default(0 but role :: { method Str() {'NULL'} }); say Int.new(%seen<not-there>); 16:01
bisectable6 ugexe, Bisecting by output (old=2017.07 new=2aaa32c) because on both starting points the exit code is 0
ugexe, bisect log: gist.github.com/ba628acd47123b9771...f96f47ea3f
ugexe, (2017-09-19) github.com/rakudo/rakudo/commit/08...1a4f5186dd
Zoffix Int.new returns a new Int 16:03
ilmari m: say (Int but role :: { method Str() { 'wat' } }).new(42) 16:09
camelia wat
Zoffix Int+{whatever}.new returns a new Int+{whatever} :)
ilmari yeah 16:10
ugexe m: my %seen of Int is default(0 but role :: { method Str() {"NULL"} }); say int.new(%seen<not-there>); # heh 16:15
camelia NULL
ilmari m: int.new("wat").WHAT.say 16:16
camelia (Str)
ugexe (to be fair there is a deprecation warning camelia doesn't show) 16:17
Zoffix That's just a deprecation kludge so code relying on natives .new doesn't break. The method will throw eventually
AlexDaniel e: int.new("wat").WHAT.say
evalable6 (Str)
Saw 1 occurrence of deprecated code.
===============================================…
AlexDaniel, Full output: gist.github.com/4a04b1f45ca5cd1b0d...1f5f52b980
Zoffix So it's not 100% accurate. Just enough to not break stuff
(it just returns the arg as is)
"Please use (my int $ = "wat") instead." hehe 16:21
m: (my int $ = "wat")
camelia This type cannot unbox to a native integer: P6opaque, Str
in block <unit> at <tmp> line 1
Zoffix This is the code that handles this stuff, FWIW: github.com/rakudo/rakudo/blob/2aaa...#L119-L125 16:22
[Coke] nine: github.com/perl6/doc/issues/1631 might be up your alley. 17:24
AlexDaniel .tell samcv let me know when you're here 18:37
yoleaux AlexDaniel: I'll pass your message to samcv.
AlexDaniel or just cut the release, that works too :) 18:38
samcv AlexDaniel, i'm here 19:34
AlexDaniel, will do 19:39
AlexDaniel cool
samcv i'm getting failing tests in t/02-rakudo/09-rakudo-module-debug.t 20:43
ugexe what test is that? 20:51
samcv in rakudo 20:57
ugexe github.com/rakudo/rakudo/tree/nom/t/02-rakudo I dont see 09-rakudo-module-debug.t 20:58
samcv hmm i have that. weird 20:59
anyway never mind then
Zoffix m: dd (<a b>, <c d e>)».uc 21:45
camelia ($("A", "B"), $("C", "D", "E"))
Zoffix Kinda weird it's returning containerized lists 21:46
(will change that, unless it breaks tests or I forget to)
samcv MoarVm has been released 21:49
Zoffix \o/
samcv++ 21:50
samcv nqp has no changelog right?
Zoffix Right
samcv ok i will release that now 21:51
MasterDuke samcv: i think releasable6 does nqp 21:53
samcv oh ok
that's fine then
Zoffix m: dd ((1, 1), (1, (1, 1)))».squish 21:54
camelia ((1,).Seq, (1, (1, 1)).Seq)
Zoffix nodality is sure a can of worms :/
zoffix@VirtualBox~/CPANPRC/rakudo (zoffer-post-release)$ grep -FR 'is nodal' src/core/List.pm | wc -l
15
zoffix@VirtualBox~/CPANPRC/rakudo (zoffer-post-release)$ grep -FR 'is nodal' src/core/Any* | wc -l
75
So we got 60 methods that are supposed to be nodal, but currently ». method op only nodalizes them if the `is nodal` method is provided by `List` 21:55
I mean 60 extra methods (or candidates rather) are nodal in Any, but they're not working 21:56
AlexDaniel samcv: congratulations with your first release! 21:58
samcv :-D
u: confetti
unicodable6 samcv, U+1F38A CONFETTI BALL [So] (🎊)
AlexDaniel samcv: yeah, that's basically it, but timotimo's joke about a point release applies :D 21:59
Zoffix m: use nqp; dd nqp::can(List.can('squish').AT-POS(0),"nodal") 22:00
camelia 1
Zoffix Oh nm, the 60 methods isn't the problem 'cause List is Any doh
AlexDaniel I think the release date on en.wikipedia.org/wiki/MoarVM is outdated? 22:02
Zoffix "However, Rakudo on the Java Virtual Machine is still faster for longer running programs." really? 22:03
AlexDaniel citation needed :S
samcv Zoffix, nope! 22:04
ugexe i imagine their JIT warms up a bit better than ours still
samcv Zoffix, i've timed it and it's slower
it may have once been true a long time ago... 22:05
jnthn Was probably true before spesh and such :) 22:08
It's probably still true for some artificial benchmarks 22:09
ugexe m: for 1..5 { KEEP " ".print; .print; } # this is a bug right? the second .print is True, but KEEP never fires 22:20
camelia 12345
Zoffix looks like it, yeah 22:22
m: for 1..5 { KEEP " ".print; .print; True }
camelia WARNINGS for <tmp>:
1 2 3 4 5 Useless use of constant value True in sink context (line 1)
Zoffix m: for 1..5 { KEEP " ".print; .print; $ = True }
camelia 1 2 3 4 5
jnthn m: for (1..5).list { KEEP " ".print; .print; True } 22:23
camelia WARNINGS for <tmp>:
1 2 3 4 5 Useless use of constant value True in sink context (line 1)
ugexe m: for 1..5 { KEEP " ".print; .print; False; }
camelia WARNINGS for <tmp>:
1 2 3 4 5 Useless use of constant value False in sink context (line 1)
jnthn m: (1..5).map: { KEEP " ".print; .print; True }
camelia 1 2 3 4 5
jnthn Hm, actually
m: for 1..5 { KEEP " ".print; say .print; } 22:25
camelia 1True
2True
3True
4True
5True
jnthn m: for 1..5 { KEEP " ".print; .print; }
camelia 12345
jnthn Odd
ugexe m: for 1..5 { KEEP " ".print; .print; Nil; }
camelia 12345
Zoffix What's a "successful block exit" again? 22:26
The docs have it plastered all over phasers page, but I'm having a hard time finding what that means 22:27
ugexe m: for 1..5 { KEEP print(" "); UNDO print("_"); .print; } # well, it fires UNDO 22:29
camelia 1_2_3_4_5_
gfldex my guess would be no (control-)exceptions fired 22:30
jnthn Zoffix: .defined 22:33
Zoffix ah 22:34
jnthn KEEP/UNDO are just forms of LEAVE that are conditional on the result value
m: for 1..5 { LEAVE " ".print; .print; } 22:35
camelia 1 2 3 4 5
Geth nqp: ddcbaba2be | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/build/MOAR_REVISION
[release] Bump MoarVM revision to 2017.10
22:43
nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2......2017.10
488cd2fcfd | (Aleks-Daniel Jakimenko-Aleksejev)++ | VERSION
rakudo/nom: f32033e385 | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/build/NQP_REVISION
[release] Bump NQP revision to 2017.10
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017.......2017.10
e6c6ed2b5b | (Aleks-Daniel Jakimenko-Aleksejev)++ | VERSION
Zoffix w00t 22:44
AlexDaniel++
AlexDaniel Zoffix++ 22:45
also (everyone who helped make this release happen)++
jnthn \o/ 22:47
AlexDaniel++, (many others)++ :)
Zoffix ZofBot: shake it \o/ www.youtube.com/watch?v=XIf6QfdrHiM 22:58
ZofBot Zoffix, It seems there's a kidnapper well known to the police all over the country as Dick the Snatcher
Zoffix ZofBot: what a Dick!
ZofBot Zoffix, He Moves in Society It was one of those things which are really nobody's fault
Zoffix Ah
Geth rakudo: zoffixznet++ created pull request #1215:
"Do. Or do not. There is no try."
23:02
rakudo/nom: 738908be4d | (Zoffix Znet)++ | src/core/Str.pm
"Do. Or do not. There is no try."

Fixes RT#126721: rt.perl.org/Ticket/Display.html?id=126721
Do not silence errors when failing to assign to $/ as that introduces action-at-a-distance bugs that can be very hard to debug:
... (9 more lines)
synopsebot RT#126721 [resolved]: rt.perl.org/Ticket/Display.html?id=126721 $/ in closure arg of subst 23:03
jnthn 'night, all o/
Geth rakudo/nom: b07e7b1d0f | (Zoffix Znet)++ (committed using GitHub Web editor) | src/core/Str.pm
Merge pull request #1215 from rakudo/zoffer-post-release

  "Do. Or do not. There is no try."
roast: zoffixznet++ created pull request #350:
Zoffer post release
roast/master: 4 commits pushed by (Zoffix Znet)++
synopsebot RT#71514 [resolved]: rt.perl.org/Ticket/Display.html?id=71514 Calling .subst in a reduction method destroys the effect of make()
Zoffix \o
m: my $o1 = {my class Foo {method meow { say "meow" } }.new}; $o1.Foo::meow 23:12
camelia Cannot dispatch to method meow on Failure because it is not inherited or done by Block
in block <unit> at <tmp> line 1
Zoffix Was wondering whether this should work:
m: my $o1 = {my class Foo {method meow { say "meow" } }.new}; my $o2 = {my class Foo {method meow { say "moo" } }.new}; $o1.Foo::meow; $o2.Foo::meow
camelia Cannot dispatch to method meow on Failure because it is not inherited or done by Block
in block <unit> at <tmp> line 1
Zoffix But I guess the first error kinda puts a damper on it... 23:13
m: my $o1 = {my class Foo {method meow { say "meow" } }.new}(); my $o2 = {my class Foo {method meow { say "moo" } }.new}(); $o1.Foo::meow; $o2.Foo::meow
camelia Cannot dispatch to method meow on Failure because it is not inherited or done by Foo
in block <unit> at <tmp> line 1
Zoffix This I mean
Basically fixing nodality deletction for method calls other than plain ». and the ».:: dispatch is kinda tricky 23:14
*detection 23:15
Zoffix joins timotimo in the RSI camp 23:18
timotimo FFS, i took RSI so y'all don't have to
Zoffix :D 23:19
AlexDaniel OK, so I added the master branch, and changed the default in github settings. When dealing with pull requests you can click “Edit” and change the base branch before merging 23:22
what else do we have with “nom” hardcoded?
Geth rakudo: f40babb81e | (Aleks-Daniel Jakimenko-Aleksejev)++ | 6 files
⚠ “nom” → “master”

  language_versions.md has a very interesting definition of “nom” and
  “master”, for now “master” is replaced with “some branch”.
23:33
Zoffix AlexDaniel: so what's changing? Just s:g/nom/master/ and the rest is business as usual? 23:35
AlexDaniel yes
Zoffix I'm guessin rakudobrew does the `nom` thing. 'cause you can specify as one of the params 23:36
AlexDaniel right now it means that everything that was using “nom” directly will keep using 2017.10 release
well, + your post-release branch :)
and whatever gets into nom accidentally :) 23:37
MasterDuke isn't there a way to mark branches as read-only in github? 23:39
AlexDaniel oooooooooh
what a great idea
done, but I don't think it's going to help much 23:42
because it seems that you can still push given enough privs
Zoffix We need to post a notice on rakudo.org and add a message into nom branch builder as I imagine there's a ton of people who just pull and rebuild (all of my boxes except for the home one do that for example) 23:44
Zoffix does the builder message
AlexDaniel nom: say 42 23:46
camelia 42
AlexDaniel m: say 42
camelia 42
AlexDaniel ok. Whateverable needs no change, camelia also 23:50
(I did tweak camelia anyway but it wasn't necessary) 23:51
Zoffix "read_fhb requires a native array of uint8 or int8"
How to get one in nqp?
Or alternatively, how to do `get` in nqp? I got nqp::readfh(nqp::getstdin(), @a, 1) so far 23:52
ugexe decoder is in rakudo, so not sure you can 23:53
Zoffix Don't need to decode, just want to wait for user to press ENTER 23:54
Geth roast/6.c-errata: fd286d3c45 | (Aleks-Daniel Jakimenko-Aleksejev)++ | VERSION
“nom” → “master”

There are many TODOs with “nom regression” comment but I won't be touching these because I don't want to make 「git blame」 harder. Doesn't really matter anyway.
AlexDaniel wait what
did I just commit to… errata… :S
.oO( yeah, should've applied that bashrc thingy… )
Zoffix fussake... how to make a native array 23:57
Geth roast: a36e55eacd | (Aleks-Daniel Jakimenko-Aleksejev)++ | VERSION
“nom” → “master”

There are many TODOs with “nom regression” comment but I won't be touching these because I don't want to make 「git blame」 harder. Doesn't really matter anyway.
Zoffix hate when the most mundane of things are the biggest time waster
buggable: zen whatthehellisitalready
buggable Zoffix, “This is the real secret of life -- to be completely engaged with what you are doing in the here and now. And instead of calling it work, realize it is play.”
Zoffix Good plan.
Let's play "How to make a native uint8 array in nqp" 23:58
AlexDaniel hehe
Zoffix nqp::readfh(nqp::getstdin(), nqp::create($NQPBuf), 1) 23:59
I win the game