lizmat good night, #perl6-dev 00:00
jnthn 'night lizmat
samcv Alphabetic = Lowercase + Uppercase + Lt + Lm + Lo + Nl + Other_Alphabetic
but our <alpha> is not like that 00:01
that is intended
?
j: say so 'šŸ…' ~~ /<alpha>/ 00:03
camelia rakudo-jvm fb4f16: OUTPUTĀ«Falseā¤Ā»
jnthn Not sure... :) 00:06
Bed time for me...'night
samcv this is weird. we make it way more complicated than it needs to be.... 00:07
no wonder it' slower
there is an alphabetic property we can just check :P 00:08
we check Lo, Ll, Lu, Lt, Lm
so that does seem like an error
i can make a lot of our things like \d and \w a lot faster 00:10
i guess it doesn't make it much faster here because we hold onto the property values between queries 00:17
alpha can def get faster tho. but \d is gonna stay the same
are we getting failures in Inline::perl5? 00:58
.ask TimToady aside from <alpha> also matching underscore, is it intentionally different from Unicode property Alphabetic? 01:02
yoleaux2 samcv: I'll pass your message to TimToady.
samcv .ask TimToady at the moment it does not cover all of Unicode property Alphabetic in MVM it only covers some of them (Lo, Ll, Lu, Lt, Lm) Per Unicode spec: Alphabetic = Lowercase + Uppercase + Lt + Lm + Lo + Nl + Other_Alphabetic 01:04
yoleaux2 samcv: I'll pass your message to TimToady.
TimToady I'm sure all those distinctions didn't exist when we started. :) 01:47
yoleaux2 01:02Z <samcv> TimToady: aside from <alpha> also matching underscore, is it intentionally different from Unicode property Alphabetic?
01:04Z <samcv> TimToady: at the moment it does not cover all of Unicode property Alphabetic in MVM it only covers some of them (Lo, Ll, Lu, Lt, Lm) Per Unicode spec: Alphabetic = Lowercase + Uppercase + Lt + Lm + Lo + Nl + Other_Alphabetic
samcv ah ok
yeah i thought
that was likely
TimToady and when bootstrapping, we were doing everything by enumeration; c.f. the brackets and such 01:48
samcv though 'fixing it' breaks Nl's
because i guess it assumes they won't match <alpha>
TimToady I doubt there are many people using P6 on roman numerals yet 01:50
samcv yeah 01:52
u: { my $chr = .chr; ($chr ~~ /\s/).Bool != ($chr ~~ /<:ws>/).Bool } 01:59
unicodable6 samcv, U+0009 <control-0009> [Cc] (control character) 02:00
samcv, U+000A <control-000A> [Cc] (control character)
Geth nqp: fe0dd2f24d | (Samantha McVey)++ | src/QRegex/P6Regex/Grammar.nqp
Make <ws> ~4% faster

We don't need the `+` on the \s because we already have a * on the group.
02:54
MasterDuke samcv++ 02:58
samcv BLAZING FAST
brokenchicken Sweet. That doesn't affect Rakudo though, does it?
MasterDuke samcv *= 1.04 02:59
samcv probably
brokenchicken Awesome.
samcv brokenchicken, github.com/rakudo/rakudo/blob/nom/...#L598-L617 is this using <ws>
but yeah it affects <ws. in regex generally
not sure what we do in that link ^
brokenchicken samcv: don't we override it here? github.com/rakudo/rakudo/blob/nom/...#L595-L617 03:00
samcv i just linked that :p
brokenchicken Oh you linked to same page :)
samcv not sure what we do there. also not convinced that would be faster than just <ws>
brokenchicken m: for ^100000 { if 0 { 1 } else { 5 } }; say now - INIT now 03:01
camelia rakudo-moar f799a0: OUTPUTĀ«WARNINGS for <tmp>:ā¤Useless use of constant integer 1 in sink context (line 1)ā¤Useless use of constant integer 5 in sink context (line 1)ā¤0.0612390ā¤Ā»
brokenchicken m: for ^3000000 { if 0 { $ = 1 } else { $ = 5 } }; say now - INIT now
camelia rakudo-moar f799a0: OUTPUTĀ«2.642503ā¤Ā»
samcv well i went from 135.97s to 130s compile time
brokenchicken m: for ^3000000 { 0 ?? $ = 1 !! $ = 5 }; say now - INIT now
camelia rakudo-moar f799a0: OUTPUTĀ«5===SORRY!5=== Error while compiling <tmp>ā¤Precedence of = is too loose to use inside ?? !!; please parenthesizeā¤at <tmp>:1ā¤------> 3for ^3000000 { 0 ?? $7ā5 = 1 !! $ = 5 }; say now - INIT nowā¤ expecting any of:ā¤ infixā¤ ā€¦Ā»
samcv just one test of each tho;ugh
brokenchicken m: for ^3000000 { 0 ?? ($ = 1) !! ($ = 5) }; say now - INIT now
camelia rakudo-moar f799a0: OUTPUTĀ«1.50586049ā¤Ā»
brokenchicken m: say 2.64/1.5 03:02
camelia rakudo-moar f799a0: OUTPUTĀ«1.76ā¤Ā»
brokenchicken samcv: ^ seems changing the if/else in method ws to a ternary gives a win
samcv nice
i'll change that and then bench again :) 03:03
wow 03:05
down to 105 seconds compile time! 03:06
actually dunno if i did a make clean
gonna make clean and then time it
ok 128s 03:13
so i'm seeing about 5% improvement in compile times
MasterDuke awesome! 03:15
japhb m: say 1.05 ** 10 03:21
camelia rakudo-moar f799a0: OUTPUTĀ«1.628894626777441ā¤Ā»
Geth rakudo/nom: 0bb7c20637 | (Samantha McVey)++ | tools/build/NQP_REVISION
Bump NQP to get a 4% speed increase for <ws>

perl6/nqp@fe0dd2f2
03:22
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....-gfe0dd2f2
d5262e6c44 | (Samantha McVey)++ | src/Perl6/Grammar.nqp

With the NQP bump and this change I am seeing a 5% decrease in Rakudo compile times.
samcv \o/
Geth Ā¦ rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....-gfe0dd2f2
MasterDuke i'll try to profile another build 03:24
japhb Why is it useful for token unsp to recurse? 03:32
TimToady: ^^
MasterDuke TimToady, japhb: FWIW, a rakudo built with this line ( github.com/rakudo/rakudo/blob/nom/...r.nqp#L620 ) commented out passes spectest 04:00
samcv MasterDuke, nice 04:04
MasterDuke, does it make it any faster though? 04:05
MasterDuke not noticeably 04:06
samcv yeah that's what i thought 04:07
s/thought/guessed
MasterDuke newest --profile-compile of a rakudo build sorted by exclusive time: gist.github.com/MasterDuke17/b694b...20bcb71392 04:11
samcv u: { (.chr ~~ /\v/).Bool } 04:13
unicodable6 samcv, U+000A <control-000A> [Cc] (control character)
samcv, U+000B <control-000B> [Cc] (control character)
japhb .tell jnthn Just submitted RT #130716, LTA behavior of unbounded supply {} + react/whenever. This is blocking my progress on treating raw terminal input (an unbounded source) as a supply, because any calling code that uses react/whenever instead of .act will appear to hang. :-( 05:25
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130716
yoleaux2 japhb: I'll pass your message to jnthn.
lizmat Files=1175, Tests=55871, 166 wallclock secs (10.13 usr 4.17 sys + 967.04 cusr 103.78 csys = 1085.12 CPU) 06:51
samcv u: { .uniprop('Upper') and .uniprop ne 'Lu' } 07:56
unicodable6 samcv, U+2160 ROMAN NUMERAL ONE [Nl] (ā… )
samcv, U+2161 ROMAN NUMERAL TWO [Nl] (ā…”)
samcv, gist.github.com/e499976aa394f0f7aa...864327c9bd
samcv j: say 'ā…”' ~~ /<alpha>/ 08:07
camelia rakudo-jvm fb4f16: OUTPUTĀ«ļ½¢ā…”ļ½£ā¤ alpha => ļ½¢ā…”ļ½£ā¤Ā»
samcv m: say 'ā…”' ~~ /<alpha>/
camelia rakudo-moar d5262e: OUTPUTĀ«Nilā¤Ā»
samcv so i think i am going to change Character Class Alpha === Unicode property Alphabetic 08:08
since jvm it already does that
gotta make sure nothing breaks first though 08:09
if we really want the old functionality we can use <:L> instead 08:10
m: say 'ā…”' ~~ /<:L>/
camelia rakudo-moar d5262e: OUTPUTĀ«Nilā¤Ā»
samcv i think <:Letter> == <:L> as well 08:13
@TimToady, in case you wanted to know what I have decided 08:14
m: sub ā…” { } 08:24
camelia rakudo-moar d5262e: OUTPUTĀ«5===SORRY!5=== Error while compiling <tmp>ā¤Missing blockā¤at <tmp>:1ā¤------> 3sub7ā5 ā…” { }ā¤ expecting any of:ā¤ new name to be definedā¤Ā»
samcv j: sub ā…” { } 08:25
camelia rakudo-jvm fb4f16: OUTPUTĀ«5===SORRY!5=== Error while compiling <tmp>ā¤Missing blockā¤at <tmp>:1ā¤------> 3sub7ā5 ā…” { }ā¤ expecting any of:ā¤ new name to be definedā¤Ā»
samcv say "ā…·".Int 08:46
m: say "ā…·".Int
camelia rakudo-moar d5262e: OUTPUTĀ«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3ā5ā…·' (indicated by ā)ā¤ in block <unit> at <tmp> line 1ā¤ā¤Actually thrown at:ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
samcv m: say "ā…·".Num
camelia rakudo-moar d5262e: OUTPUTĀ«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3ā5ā…·' (indicated by ā)ā¤ in block <unit> at <tmp> line 1ā¤ā¤Actually thrown at:ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
samcv m: say ā…·
camelia rakudo-moar d5262e: OUTPUTĀ«8ā¤Ā»
samcv j: say "ā’¶" ~~ /<alpha>/ 08:51
camelia rakudo-jvm fb4f16: OUTPUTĀ«ļ½¢ā’¶ļ½£ā¤ alpha => ļ½¢ā’¶ļ½£ā¤Ā»
Geth roast: c029e7f258 | (Samantha McVey)++ | S15-unicode-information/uniprop.t
Add some more tests for East_Asian_Width

Now that East_Asian_Width has been added in MoarVM, add some tests which currently pass and allow us to return the abbreviated property values but also add tests which want the full property value.
09:04
timotimo i actually thought giving \s a + inside the []* was a performance optimization 11:51
MasterDuke: gist.github.com/timo/43777e12adc6a...cccc5c698a 11:57
jnthn m: say (-42)\ \ .abs 12:10
camelia rakudo-moar d5262e: OUTPUTĀ«42ā¤Ā»
yoleaux2 05:25Z <japhb> jnthn: Just submitted RT #130716, LTA behavior of unbounded supply {} + react/whenever. This is blocking my progress on treating raw terminal input (an unbounded source) as a supply, because any calling code that uses react/whenever instead of .act will appear to hang. :-(
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130716
jnthn MasterDuke: I think eval above is why <.unsp> recurses
And the various places <.unsp> is called don't quantify it 12:11
So looks like a case of missing spectest
timotimo i think what japhb is running into is that there's no whenever at all inside the supply block and so it ... doesn't finish? but it *does* finish in the first example ā€¦ 12:13
i mean, the supply block is supposed to run to completion before it creates the supply, right? 12:14
RabidGravy yeah 12:15
jnthn There's a misunderstanding at line 12, but that probably doesn't affect things
MasterDuke timotimo++, did you get that fancy formatting just by making it a tsv?
jnthn (A role is not a closure)
timotimo yes
i just replaced all | with \t, and then replaced a bunch of \t back to | when they were inside < > 12:16
RabidGravy a roll is not brioche
jnthn Oh, also
Spot the other bug on line 29
I suspect it meant to call $s2.done
timotimo oooh s1 :)
RabidGravy can you lot type bigger please, I'm not getting my new glasses until tomorrow :) 12:17
timotimo normally, you'd put a QUIT { } in place where japhb is using the "method done" trick, right?
MasterDuke timotimo: nice, i'll figure out how to get sqlite to use \t as the delimiter 12:18
jnthn CLOSE, perhaps
Though even more likely is a `last` in the whenever block 12:19
Even with the issues fixed, there's still the original reported issue, however.
timotimo _ _ _ _ _ _ _
(_)___ | |_| |_ (_)___ | |__ ___| |_| |_ ___ _ _
| (_-< | _| ' \| (_-< | '_ \/ -_) _| _/ -_) '_|
|_/__/ \__|_||_|_/__/ |_.__/\___|\__|\__\___|_|
MasterDuke: sqlite> .mode csv 12:20
also, .output test.csv
MasterDuke timotimo++
timotimo you may also want .headers on
jnthn It's a bit of a tricky issue in general, in so far as supply/react aren't really meant to introduce concurrency on their own, but they are meant to offer mutual exclusion 12:21
timotimo apparently there's also .once which will turn .output back to what it was directly after running your next sql statement
RabidGravy timotimo, perfect! cheers!
MasterDuke yeah, i was using .once so that just the next query i ran would get output to a file 12:22
jnthn Could I get a sorted-by-inclusive-time version of that gist also? 12:23
MasterDuke jnthn: `say (-42)\ \ .abs` still works with that line commented out
jnthn: sure, i'll put it up in a min
jnthn Ah, that may not be a good example 12:24
timotimo i'm surprised the github tsv/csv viewer won't let you sort stuff
jnthn m: $*OUT.say\ \ (42) 12:25
camelia rakudo-moar d5262e: OUTPUTĀ«42ā¤Ā»
jnthn MasterDuke: That one might be more upset with it commented out :)
The thing one ends up in <.ws> I guess
jnthn didn't finish his coffee yet :)
MasterDuke `No such method 'CALL-ME' for invocant of type 'Bool'` 12:26
timotimo m: $*OUT.say (42) 12:27
camelia rakudo-moar d5262e: OUTPUTĀ«5===SORRY!5=== Error while compiling <tmp>ā¤Two terms in a rowā¤at <tmp>:1ā¤------> 3$*OUT.say7ā5 (42)ā¤ expecting any of:ā¤ infixā¤ infix stopperā¤ statement endā¤ statement modifierā¤ statement modā€¦Ā»
timotimo i wonder how it gets that
jnthn So, that gets us our spectest that needs it to recurse, I guess :-) 12:30
MasterDuke jnthn: gist.github.com/MasterDuke17/dad51...519123da8b 12:33
jnthn: should i add `$*OUT.say\ \ (42)` to roast? 12:34
jnthn MasterDuke: Yes, lets 12:37
Well, not that precise example
But something of that form
Interesting, compile_in_context is actually less of a time sink than I expected
MasterDuke didn't dogbert17++ ask about some error in libuv? was it with uv_fs_scandir_next? 12:38
jnthn He did, I don't *think* it was that function 12:39
< dogbert17_> o/ has anyone seen ever this message? moar: 3rdparty/libuv/src/unix/stream.c:1499: uv_read_start: Assertion `((stream)->io_watcher.fd) >= 0' failed.
Was that 12:40
MasterDuke i just noticed that libuv updated on my machine, looks like the current version is `2017.02.02, Version 1.11.0 (Stable)`, but MoarVM has `2015.12.15, Version 1.8.0 (Stable)`
ah, ok, i just noticed in their changelog something about a bug fix for uv_fs_scandir_next and thought it looked familiar 12:41
m: use Test; is "a".parse-base\ \ (16), 10 12:46
camelia rakudo-moar d5262e: OUTPUTĀ«ok 1 - ā¤Ā»
MasterDuke i get `Too few positionals passed; expected 2 arguments but got 1`
better for roast?
jnthn Yes :) 12:50
MasterDuke jnthn: `unspace can recurse`, is that a sufficient and correct test description? 12:59
jnthn Yeah, I'd say so 13:04
Geth roast: cf59588ddb | (Daniel Green)++ | S02-lexical-conventions/unspace.t
Add a test that unspace can recurse

Some discussion a little before and after here:
  irclog.perlgeek.de/perl6-dev/2017-...i_14042069
13:09
jnthn rt.perl.org/Ticket/Display.html?id=130716 ended up with a meaty answer, fwiw 15:11
away for a bit 15:13
dogbert17 MasterDuke: as jnthn wrote, it pops up when I run spectest with HARNESS_TYPE=6. 15:25
jnthn, timotimo: does the following gist give any clues wrt the spectest failure (HARNESS_TYPE=6)? gist.github.com/dogbert17/069bf4c7...e3a1a9293a 15:31
timotimo doesn't ring a bell 15:52
Geth roast: 1d5e4c25aa | (Daniel Green)++ | S02-lexical-conventions/unspace.t
Whoops, add missing semi-colon
16:27
brokenchicken .ask [Coke] BTW is it just a typo on this grant approval page that it says "Test2 Manual" news.perlfoundation.org/2017/01/jan...votes.html ? I just thought... what if that vote was actually for Test2 Manual 17:01
yoleaux2 brokenchicken: I'll pass your message to [Coke].
brokenchicken Which is done by someone else for Perl 5's Test2
IOninja :) 17:12
MasterDuke oooh, should we expect some IO+line coverage related commits soon? 17:14
IOninja In 3-5 weeks. 17:40
Geth rakudo: jonathanstowe++ created pull request #1012:
Sort the binaries by version
17:42
RabidGravy that had me scratching my head for a few minutes 17:51
there's still the possibility that the script might get the wrong version of the module but I think that's least surprising 17:53
IOninja Kinda overelaborate code... .sort(-> $a { $a<ver> }).reverse[0] -> .sort(*<ver>).[*-1] 17:55
RabidGravy right 17:58
amended thusly 18:01
IOninja RabidGravy++
I know nothing of that area of the code, so I'll wait for someone who does to review and merge :)
TimToady jnthn: putting $*W into the braid worked okay for nqp, but for rakudo turned into a complete mess, so that's gonna stay out for now 18:06
there are just too many routines that have no access to the current cursor
though I suppose some of them could still get at it through some node or other 18:11
but it was getting awful cluttery, so it needs a bit of a rethink on how to access world from anywhere if we eventually go that route 18:12
timotimo maybe eliminating half the lookups via $*W would already help performance a bit? 18:24
TimToady there are a lot of routines that could benefit from my $W := $*W, though why do that when we should fix the dynvar cache? 18:25
not to mention, the compiler should eventually figure out if a routine has multiple refs to the same dynvar as cache its own copy 18:27
*and cache
I mean, that's another possible cache approach, just automatically cache a dynvar in the lexpad of where its used such that multiple uses in this lexpad or in calls further down find this one instead of using up precious frame cache 18:30
though, again, with this scheme we'd probably have to outlaw rebinding of dynvars 18:31
(or invalidate the cache on a rebind, anyway)
I'm guessing we've been lucky not to have been bitten by that in nqp, where we can only rebind...and we just kind of assume that the dynvar cache will catch up at some point 18:34
it's rebinding from deep down that is dangerous, and we avoid that currently by making %*LANG its own namespace 18:35
in other words, %*LANG gets away with it by passing itself around as a container 18:51
jnthn TimToady: Rebinds work OK wiht the current cache, because we cache the pointer to the register where the lexical is stored 18:56
TimToady: So we hold it an extra level of indirection off from the bound value, to rebinds work OK 18:57
We'd be in bother with various things if not :)
OK on leaving $*W out for now
TimToady okay, thanks for the clarification
we could presumably do something similar if we cached in the lexpad of a dynvar user at compile time 18:58
then you could force a shallower level of caching just by mentioning a dynvar 19:00
and a routine would automatically share all its refs to $*W
and the frame cache could be reserved for situations where the lexpad cache doesn't help 19:01
so basically the compiler would throw in a my $*FOO := CALLERS::<$*FOO> at the top of such a routine, only with the extra indirection beyond := (if that's possible) 19:05
(wouldn't need the indirection for SSAish (SSBish?) dynvars, if we ever get 'em) 19:10
jnthn I suspect most folks call what we call binding assignment. 19:49
I'm just a tad uneasy about the extra declaration in so far as it'll probably be introspectable...and yeah, how to handle the LoI 19:50
It does make neat use of lexical storage though
And pre-allocates the space
MasterDuke .ask lizmat given your recent work with .tail(), are there any circumstances where it isn't faster than [*-1]? if not, should we replace all [*-1] in the settings with .tail()? 19:54
yoleaux2 MasterDuke: I'll pass your message to lizmat.
jnthn MasterDuke: Be careful of the small semantic difference when doing so (of course, cases where it's [*-1]:delete or so are clear, but indexing will cache a Seq, while .tail I believe will not) 19:58
(That may mean .tail is a memory improvement in some of those places)
Which is double reason to do it where we can 19:59
MasterDuke jnthn: is that the only difference?
jnthn I think there's also a difference when the thing is empty 20:00
m: dd (gather {}).tail
camelia rakudo-moar d5262e: OUTPUTĀ«Nilā¤Ā»
jnthn m: dd (gather {})[*-1]
camelia rakudo-moar d5262e: OUTPUTĀ«Failure.new(exception => X::OutOfRange.new(what => "Effective index", got => -1, range => "0..^Inf", comment => Any), backtrace => Backtrace.new)ā¤Ā»
jnthn m: my @a = 1,2,3; @a[*-1] = 42; say @a 20:01
camelia rakudo-moar d5262e: OUTPUTĀ«[1 2 42]ā¤Ā»
jnthn m: my @a = 1,2,3; @a.tail = 42; say @a
camelia rakudo-moar d5262e: OUTPUTĀ«[1 2 42]ā¤Ā»
jnthn Seems those two work out the same.
dogbert17 thinks he knows why './perl6-m -Ilib t/harness6 --fudge --tests-from-file=t/spectest.data' fails on his machine
jnthn m: my @a = 1,2,3; @a.head = 42; say @a
camelia rakudo-moar d5262e: OUTPUTĀ«[42 2 3]ā¤Ā»
jnthn Good that's consistent at least :)
m: my @a = 1,2,3; @a.head(2) = 42, 43; say @a 20:02
camelia rakudo-moar d5262e: OUTPUTĀ«Cannot modify an immutable Seqā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
jnthn m: my @a = 1,2,3; @a.head(2).list = 42, 43; say @a
camelia rakudo-moar d5262e: OUTPUTĀ«[42 43 3]ā¤Ā»
jnthn m: my @a = 1,2,3; @a.tail(2).list = 42, 43; say @a
camelia rakudo-moar d5262e: OUTPUTĀ«[1 42 43]ā¤Ā»
jnthn All looks fine :)
MasterDuke cool
jnthn Can't think of anything else :) 20:03
MasterDuke there are only ~12 instances of *-1 in the setting anyway, should be easy to test
jnthn :) 20:04
dogbert17 .oO (spam warning)
[pid 26813] socketpair(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0, [1021, 1022]) = 0
[pid 26813] pipe2(0xb5036b18, O_CLOEXEC) = -1 EMFILE (Too many open files)
[pid 26813] close(1021) = 0
[pid 26813] close(1022) = 0
[pid 26813] write(2, "moar: 3rdparty/libuv/src/unix/st"..., 111) = 111
[pid 26813] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7250000
[pid 26813] rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
[pid 26813] tgkill(24455, 26813, SIGABRT) = 0
[pid 26813] --- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=24455, si_uid=1000} ---
[pid 26813] +++ killed by SIGABRT +++
jnthn Think the second line is the money shot... :) 20:05
Wonder if we're failing to close something somewhere :)
That's useful info, anyways
dogbert17++
dogbert17 did you see my gist above? 20:06
might possibly contain more clues
jnthn Yes, I was a bit confused by it 20:07
Because it looks like it's synchronously reading a pipe
But I thought TAP::Harness used Proc::Async everywhere
So will have to dig a bit deeper into that 20:08
oops, forgot something for lunch tomorrow 20:10
grocery hunting & 20:11
timotimo we're also clearly not passing on the EMFILE error
or does it immediately fail thereafter with that assertion and we can't get our foot in between those events? 20:12
dogbert17 it looks like this on stdout: 20:14
t/spec/S32-num/unpolar.t .......................................... ok
moar: 3rdparty/libuv/src/unix/stream.c:1499: uv_read_start: Assertion `((stream)->io_watcher.fd) >= 0' failed.
Aborted
MasterDuke timotimo: there have been several libuv releases since the version we're using, maybe upgrading that would help? 20:16
timotimo could help, but too many open files is a problem that you can't fix just by updating your library :) 20:18
MasterDuke maybe version n+1 comes with a small gremlin to count your open files and close some when it thinks you have too many? could have sworn i saw that in the changelog 20:22
timotimo haha 20:24
MasterDuke eyes his coffee. could it be too good/strong? is that even a thing? 20:25
dogbert17 looking at /proc/$PID/fd it seems as if the number of open sockets grows larger the longer the spectest continues 20:49
the seem to be opened like this (spam warning) 20:50
==31826== Open AF_UNIX socket 27: <unknown>
==31826== at 0x45D6A47: socketpair (socket.S:63)
==31826== by 0x42004AD: uv__make_socketpair (process.c:122)
==31826== by 0x4200719: uv__process_init_stdio (process.c:203)
==31826== by 0x4200E66: uv_spawn (process.c:428)
==31826== by 0x4137A0C: MVM_proc_spawn (procops.c:309)
==31826== by 0x40EB403: MVM_interp_run (interp.c:3821)
==31826== by 0x410C6DC: start_thread (threads.c:77)
==31826== by 0x4206895: uv__thread_start (thread.c:49)
==31826== by 0x46E4F71: start_thread (pthread_create.c:312)
==31826== by 0x45D4F8D: clone (clone.S:129)
geekosaur something to keep in mind: "socketpair" is BSDese for "pipe" 21:00
dogbert17 geekosaur: thx, didn't know that 21:01
timotimo hm, so we spawn all the processes and we never close their shit? 21:10
Geth rakudo: MasterDuke17++ created pull request #1013:
Don't constant fold x op when the result is big
21:12
MasterDuke with that PR, `my str $a = "a" x 2**29; say $a.chars` goes from 9s to 0.14s for me 21:13
RabidGravy cool 21:16
MasterDuke heh, and max rss (according to time -v) went from 1116364 to 67576 21:19
timotimo maybe someone needs to .slurp-rest(:close) :P 21:21
MasterDuke timotimo++ 21:23
afk again
timotimo just kidding, though 21:27
if that were the case, failing tests wouldn't be noticed, or do we just rely on tap parsing for that? 21:28
Geth rakudo: AlexDaniel++ created pull request #1014:
Better error message for invalid ā€œreturnā€ trait mod
AlexDaniel oh. That's very nice of you, Geth 21:29
dogbert17 dogbert@dogbert-VirtualBox ~/repos/rakudo $ ls -l /proc/32112/fd/ | wc -l 21:42
1022 [seconds before it aborts]
timotimo hahaha 21:46
IOninja AlexDaniel: did you run spectest? 21:50
AlexDaniel IOninja: yes. Is there something wrong with it?
Geth rakudo/nom: acae345d73 | (Aleks-Daniel Jakimenko-Aleksejev)++ | src/Perl6/Grammar.nqp
Better error message for invalid ā€œreturnā€ trait mod

Previously it either complained about a missing block or spewed some internal gibberish. Now it suggests ā€œreturnsā€.
Resolves RT #130712
21:51
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130712
rakudo/nom: 661a1b3bb2 | (Zoffix Znet)++ | src/Perl6/Grammar.nqp
Merge pull request #1014 from AlexDaniel/lta-returns

Better error message for invalid ā€œreturnā€ trait mod
IOninja AlexDaniel: just wasn't sure whether `return` option would start matching anything that isn't even a trait mod
AlexDaniel to be honest I'm surprised that trait mods are parsed this way 21:54
m: my $x returns Nil;
camelia rakudo-moar d5262e: OUTPUTĀ«5===SORRY!5=== Error while compiling <tmp>ā¤Cannot resolve caller trait_mod:<returns>(Variable, Nil); none of these signatures match:ā¤ (Routine:D $target, Mu:U $type)ā¤at <tmp>:1ā¤Ā»
Geth rakudo/nom: 8878af83fe | (Daniel Green)++ | src/Perl6/Optimizer.nqp
Don't constant fold x op when the result is big

If the resulting string is very large, it can take a long time to encode it on the string heap and then decode it when needed.
Some discussions:
  irclog.perlgeek.de/perl6/2017-02-04#i_14040978
  irclog.perlgeek.de/perl6/2017-02-04#i_14042387
Fixes RT #127972, rt.perl.org/Public/Bug/Display.html?id=127972
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127972
rakudo/nom: cea6a93990 | (Zoffix Znet)++ | src/Perl6/Optimizer.nqp
Merge pull request #1013 from MasterDuke17/dont_constant_fold_infix_x_when_result_is_big

Don't constant fold x op when the result is big
AlexDaniel note that in the snippet above it generally accepts it, but blows up later 21:55
raiph .ask samcv Have you read github.com/apple/swift/blob/master...ifesto.md? 22:04
yoleaux2 raiph: I'll pass your message to samcv.
Geth rakudo: MasterDuke17++ created pull request #1015:
Convert [*-1] to the faster .tail
23:07
rakudo/nom: ed4ef3b582 | (Daniel Green)++ | 5 files
Convert [*-1] to the faster .tail
23:39
rakudo/nom: f325eebcd9 | (Zoffix Znet)++ | 5 files
Merge pull request #1015 from MasterDuke17/replace_whatever-1_with_tail

Convert [*-1] to the faster .tail